<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Tracy1024的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Tracy1024</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Tracy1024]]></copyright><item><title><![CDATA[Android Arcgis 优化--------道格拉斯-普克抽稀算法]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/118209806</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/118209806</guid><author>Tracy1024</author><pubDate>Fri, 25 Jun 2021 10:25:44 +0800</pubDate><description><![CDATA[最近偶然接触到抽稀相关的算法。发现道格拉斯抽稀算法很适合目前项目某一个功能优化。所以我抽空看了一下，也写了针对经纬度路径点抽稀的工具类。下面我们先看看该算法的结束。

介绍

道格拉斯-普克算法(Douglas–Peucker algorithm，亦称为拉默-道格拉斯-普克算法、迭代适应点算法、分裂与合并算法)是将曲线近似表示为一系列点，并减少点的数量的一种算法。该算法的原始类型分别由乌尔斯·拉默（Urs Ramer）于1972年以及大卫·道格拉斯（David Douglas）和托马斯·普克（Thomas ]]></description><category></category></item><item><title><![CDATA[浅谈 Flutter 空安全]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/116201531</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/116201531</guid><author>Tracy1024</author><pubDate>Wed, 28 Apr 2021 09:16:45 +0800</pubDate><description><![CDATA[浅谈 Flutter 空安全介绍使用使用过程容易出现的问题常用场景总结
介绍
空安全（Sound null safety）是Flutter 更新之后 Dart 中新增的一项特性，它并不是独有的，像Kotlin、swift等语言也有此特性。有了空安全，Dart 分析器可以进行更好的检查。例如：它将在您读取一个可空的变量前提示您进行空检查。由于 Dart 的空安全是十分有效的， Dart 编译器和运行环境也同时可以通过优化减少内部的空安全检查， 这样应用就可以更快且更小。与空安全相关的新操作符和关键字有 ?、!]]></description><category></category></item><item><title><![CDATA[Flutter 之 Dart 基础 ----- 函数]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/106208482</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/106208482</guid><author>Tracy1024</author><pubDate>Tue, 19 May 2020 20:36:05 +0800</pubDate><description><![CDATA[前言

上一篇我们了解到Dart的变量声明方式和区别以及一些常见操作，也都比较的基础。我们今天再来讲一讲。

在Dart语言中，函数（方法）相当于一个对象。定义函数的方法，也跟Java非常类似，
不过也有一些区别。比如返回类型跟参数类型可以省略，不过我自己还是比较建议显示去指定类型。毕竟
代码可读性和调试会方便点。看一下代码，两个函数的效果是一样的。


main() {
  String s1 = printStr("李雷");
  print('s1:'+s1);
 
}
String printStr]]></description><category></category></item><item><title><![CDATA[Flutter 之 Dart 基础语言入门]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/106188270</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/106188270</guid><author>Tracy1024</author><pubDate>Tue, 19 May 2020 08:38:26 +0800</pubDate><description><![CDATA[前言

接下来一段时间自己可能要慢慢接触Flutter,Flutter采用Dart语言开发。因为前些时间开发过微信小程序，
对于我这种不怎么接触前端语言的人来说，学习起来还是需要花费一定的时间和精力。而Flutter开发的话
对于原生开发来说比较容易接受。

介绍

Dart在静态语法方面和Java非常相似，如类型定义、函数声明、泛型等。
而在动态特性方面又和JavaScript很像，如函数式特性、异步支持等。
总的来说，个人理解Dart有以下几点好处
1、Dart可基于AOT（Ahead Of Time）]]></description><category></category></item><item><title><![CDATA[Android Jetpack 之 ViewModel]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/105650458</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/105650458</guid><author>Tracy1024</author><pubDate>Tue, 21 Apr 2020 11:45:26 +0800</pubDate><description><![CDATA[简介：

官方解释：ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。
ViewModel 类让数据可在发生屏幕旋转等配置更改后继续存在。
其实简单来讲就是解决下面的问题：

1、Activity配置更改重建时(比如屏幕旋转)保留数据；
2、UI组件(Activity与Fragment、Fragment与Fragment)间实现数据共享。

第一种情况下我们一般是通过onSa...]]></description><category></category></item><item><title><![CDATA[Android Jetpack 之 LiveData]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/105407052</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/105407052</guid><author>Tracy1024</author><pubDate>Thu, 09 Apr 2020 14:26:13 +0800</pubDate><description><![CDATA[简介：
LiveData 是一个有生命周期感知 &amp; 可观察数据持有者类。作用：
持久化的观察数据的更改和变化。特点：
1、感知对应的Activity的生命周期，只有生命周期处于onStart、onResume时，LiveData处于活动状态，
才会把更新的数据通知至对应的Activity。
2、当生命周期处于onStop 或 onPause 时，不回调数据更新，直至处于onResume时...]]></description><category></category></item><item><title><![CDATA[Android Jetpack 之 DataBinding]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/105388541</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/105388541</guid><author>Tracy1024</author><pubDate>Wed, 08 Apr 2020 16:40:13 +0800</pubDate><description><![CDATA[简介

DataBinding 是 Google 在 Jetpack 中推出的一款数据绑定的支持库，利用该库可以实现在页
面组件中直接绑定应用程序的数据源。使其维护起来更加方便，架构更明确简介。

个人理解

DataBinding 是以声明的方式，将布局中组件与应用程序数据源绑定在一起的框架库。

作用：

1，将布局组件与源数据绑定，使数据源变化的同时布局组件及时同步更新。
2，减少Activ...]]></description><category></category></item><item><title><![CDATA[设计模式之代理模式]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/100885694</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/100885694</guid><author>Tracy1024</author><pubDate>Mon, 16 Sep 2019 13:55:05 +0800</pubDate><description><![CDATA[前面的几篇文章讲了简单工厂模式、工厂模式、建造者模式几种设计模式，其中这几种设计模式分创建型
设计模式。设计模式分为三大类：
第一类：创建型设计模式，常见的有单例模式、简单工厂模式、工厂模式（抽象工厂模式），建造者模式......
第二类：结构型设计模式，常见的适配器模式、装饰模式、代理模式、外观模式......
第三类：行为型设计模式，策略模式，模板方法模式，观察者模式、迭代器模式......
...]]></description><category></category></item><item><title><![CDATA[设计模式之建造者模式]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/99817543</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/99817543</guid><author>Tracy1024</author><pubDate>Tue, 20 Aug 2019 09:16:09 +0800</pubDate><description><![CDATA[今天我们来说说设计模式中的建造者模式。

日常开发中我们见过的建造者模式应该还不算少，平常用的Dialog和一些第三方框架，挺多一部分正是用了建造者模式。

建造者模式是创建一个复杂对象的创建型模式，有人也称它为生成器模式，它将其构建复杂对象的过程和它
的组件解耦，使得构建过程和组件分离开来。比如我们自己DIY一部手机，我们可以根据自己的喜好去选择
它的CPU，是麒麟的还是骁龙的，还有它的屏幕， ...]]></description><category></category></item><item><title><![CDATA[设计模式之工厂模式]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/99723978</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/99723978</guid><author>Tracy1024</author><pubDate>Mon, 19 Aug 2019 14:13:27 +0800</pubDate><description><![CDATA[上篇的话我们简单介绍了简单工厂模式。

这篇的话是介绍工厂模式。

首先我们还是来了解一下工厂模式的定义。

定义：定义一个用于创建对象的接口，让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。

IProduct：抽象产品类。
Product：具体产品类，继承IProduct或实现IProduct接口。
Factory：抽象工厂类，该方法返回一个IProduct类型的对象。
Conc...]]></description><category></category></item><item><title><![CDATA[设计模式之简单工厂模式]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/99713909</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/99713909</guid><author>Tracy1024</author><pubDate>Mon, 19 Aug 2019 10:04:53 +0800</pubDate><description><![CDATA[简单工厂模式（又叫作静态工厂方法模式），其属于创建型设计模式。首先先看看它的定义。
定义：简单工厂模式属于创建型模式，其又被称为静态工厂方法模式，这是由一个工厂对象决定创建出
哪一种产品类的实例。
在简单工厂模式下有如下角色：
Factory : 工厂类，这是简单工厂模式的核心，它负责实现和创建所有实例的内部逻辑。工厂类的创建产
品类的方法可以被外界直接调用，创建所需产品对象。
IProduct：...]]></description><category></category></item><item><title><![CDATA[工作中图片的三级缓存机制介绍]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/93590859</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/93590859</guid><author>Tracy1024</author><pubDate>Tue, 25 Jun 2019 09:38:52 +0800</pubDate><description><![CDATA[现在android应用中不可避免的要使用图片，有些图片是可以变化的，需要每次启动时从网络拉取，这种场景在目前市场的应用以及纯图片应用（比如百度美拍）中比较多。
实现图片缓存也不难，需要有相应的cache策略。这里我采用 内存（memory）-本地(local)-网络(Internet) 三层cache机制，其实网络不算cache。
当根据url向网络拉取图片的时候，先从本应用内存中找，如果内存中没...]]></description><category></category></item><item><title><![CDATA[设计模式之单例模式]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/80781296</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/80781296</guid><author>Tracy1024</author><pubDate>Sat, 23 Jun 2018 10:48:36 +0800</pubDate><description><![CDATA[挺久没更新博客。趁着最近不太忙。打算写一下设计模式方面的一些知识。今天写的时平时工作中比较常用的设计模式-----单例模式。定义：保证一个类仅有一个实例，并提供一个访问它的一个全局访问点。平时我们工作中比如需要经常的调用一个实例做某件事情时，并且这个实例只能有一个的时候，会用到这个模式。比如图片加载器，持久化存储等等情况下使用。单例模式有多种写法，每种有利有弊。需要我们自己权衡利弊去使用。第一种：...]]></description><category></category></item><item><title><![CDATA[利用Jsoup爬取糗事百科数据]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/78911806</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/78911806</guid><author>Tracy1024</author><pubDate>Wed, 27 Dec 2017 14:22:06 +0800</pubDate><description><![CDATA[在开始之前先日常介绍一波 Jsoup:
jsoup 是一款Java 的HTML解析器，可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API，可通过DOM，CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下：
1. 从一个URL，文件或字符串中解析HTML；
2. 使用DOM或CSS选择器来查找、取出数据；
3. 可操作HTML元素、属性]]></description><category></category></item><item><title><![CDATA[简单进阶随手指移动的View]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/78789377</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/78789377</guid><author>Tracy1024</author><pubDate>Wed, 13 Dec 2017 11:49:17 +0800</pubDate><description><![CDATA[因为公司新开项目，好久没空更新博客，今天稍微练练手写了一个简单的小Demo,手指移动View。是很简单，所谓难点只是需要清楚控件TouchEvent的几个Action的了解及控件位置X坐标Y坐标和偏移量的计算。
我们自定义一个class 继承View ,然后重写onTouchEvent方法，看下代码：
@Override
    public boolean onTouchEvent(Moti]]></description><category></category></item><item><title><![CDATA[Kotlin学习（一）基础语法]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/72902372</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/72902372</guid><author>Tracy1024</author><pubDate>Thu, 08 Jun 2017 10:17:55 +0800</pubDate><description><![CDATA[玩了一整天的kotlin，发现根本停不下来，语法写的好痛快。今天就来写写Kotlin那些基本语法，其实跟Java有些一样又有些不一样，我们来看看：
函数
首先看一个基本的函数：
基本函数
    fun add(a: Int, b: Int): Int {
        return a + b
    }
    简易写法
    fun add(a :Int,b :Int) = a+b]]></description><category></category></item><item><title><![CDATA[AndroidStudio上第一个Kotlin项目]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/72522455</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/72522455</guid><author>Tracy1024</author><pubDate>Fri, 19 May 2017 13:31:10 +0800</pubDate><description><![CDATA[2017 Google爸爸的IO大会刚结束，想必小伙伴也知道了，谷歌宣布Kotlin语言将作为Android开发的一级编程语言，我自己也研究了一下，确实可以像网上吹的那样，减少3倍代码量。。。Kotlin有着新时代语言的各种新特性，但是现在想要自身完全脱胎换骨是不可能的，所以，Kotlin还有一个非常牛X的优势：完全兼容java,也就是说项目中可以同时具备java和Kotlin两种语言。我们老旧代]]></description><category></category></item><item><title><![CDATA[运行第一个python简单hello world脚本]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/72358448</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/72358448</guid><author>Tracy1024</author><pubDate>Wed, 17 May 2017 11:20:43 +0800</pubDate><description><![CDATA[Python环境安装好之后我们就可以愉快写脚本了，如果上篇没看的话的话小伙伴可以看环境安装的介绍。传送门在这里：http://blog.youkuaiyun.com/tracy1024/article/details/72179323
python脚本有IDE可以写，今天的话我只是用很原始的方式运行第一个python脚本，请见谅。
首先的话我们新建一个文本文档，里面添加：
#!/usr/bin/pyth]]></description><category></category></item><item><title><![CDATA[Python Windows下环境安装]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/72179323</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/72179323</guid><author>Tracy1024</author><pubDate>Mon, 15 May 2017 17:19:16 +0800</pubDate><description><![CDATA[Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性，相比其他语言经常使用英文关键字，其他语言的一些标点符号，它具有比其他语言更有特色语法结构。




Python 是一种解释型语言： 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。


Python 是交互式语言： 这意味着，您可以在一个P]]></description><category></category></item><item><title><![CDATA[粒子动画显示文字的Android控件]]></title><link>https://blog.youkuaiyun.com/Tracy1024/article/details/71634636</link><guid>https://blog.youkuaiyun.com/Tracy1024/article/details/71634636</guid><author>Tracy1024</author><pubDate>Thu, 11 May 2017 16:13:26 +0800</pubDate><description><![CDATA[偶然在github上看到用粒子动画显示文字的一个控件，觉得挺有意思。今天介绍一下怎么用。github 原地址：https://github.com/Yasic/ParticleTextView


首先在build.gradle中 添加上依赖：

compile 'com.android.support:appcompat-v7:23.4.0'


这里需要注意的是要求最低sdk版]]></description><category></category></item></channel></rss>