<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Hello! Mr.L]]></title><description><![CDATA[Do or Die]]></description><link>https://blog.youkuaiyun.com/JonsTank2013</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JonsTank2013]]></copyright><item><title><![CDATA[博客迁移到 www.imlzq.com]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/79318306</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/79318306</guid><author>JonsTank2013</author><pubDate>Mon, 12 Feb 2018 18:33:21 +0800</pubDate><description><![CDATA[博客迁移到 www.imlzq.com

优快云的博客就不再维护了，网站安全性太低，老是被脱裤]]></description><category></category></item><item><title><![CDATA[Android重构记录及其模块化]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/56833462</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/56833462</guid><author>JonsTank2013</author><pubDate>Fri, 24 Feb 2017 13:11:41 +0800</pubDate><description><![CDATA[本文仅为个人观点，不完全符合模块化的标准定义及其拓展。思路类似，仅此而已。不可当做模块化的标准理解。

如果各位对于本博客中提到的任何思路或者架构有任何看法，欢迎讨论。以下仅是这3天的个人考虑，基于个人能力及视野的限制，很有可能不完善，欢迎批评指正，共同进步。

转载请注明出处：http://blog.youkuaiyun.com/jonstank2013?viewmode=contents]]></description><category></category></item><item><title><![CDATA[个人知识点总结——Java并发]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/51145184</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/51145184</guid><author>JonsTank2013</author><pubDate>Wed, 13 Apr 2016 17:55:08 +0800</pubDate><description><![CDATA[Java并发实在是一个很深的问题，这里只简单记录一下Java并发的知识点。水太深，如果不花大量的时间感觉完全hold不住，但是目前的精力完全不够，兴趣也不在这]]></description><category></category></item><item><title><![CDATA[Rxjava原理探索：切换线程，变换]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50981404</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50981404</guid><author>JonsTank2013</author><pubDate>Fri, 25 Mar 2016 16:11:30 +0800</pubDate><description><![CDATA[在之前的几篇博客中，我编写了一篇有关Rxjava学习笔记的，还有一个是RxJava使用示例（一）： 实现Rxbus代替eventbus（这篇博文其实还不算完善，因为没有对被观察者发出的时间进行一个筛选，一次发送所有订阅者都会收到，这样不太好，可以再新加一个筛选器，等以后有空或者是遇到的时候再来改一改，现在不急）。之前在写那边Rxjava学习笔记的时候，就突出了一点是只涉及使用，不涉及原理，现在就对R]]></description><category></category></item><item><title><![CDATA[Android推送（长连接）探索]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50962292</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50962292</guid><author>JonsTank2013</author><pubDate>Wed, 23 Mar 2016 13:01:12 +0800</pubDate><description><![CDATA[android推送的方式存在几种，包括轮询，长连接等方式，由于其他的方式用户体验并不是特别好（耗电或者是消耗资源），所以现在大部分的推送都使用的是socket长连接的方式。]]></description><category></category></item><item><title><![CDATA[JVM原理及底层探索]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50922958</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50922958</guid><author>JonsTank2013</author><pubDate>Fri, 18 Mar 2016 14:05:09 +0800</pubDate><description><![CDATA[JVM是Java程序运行的环境，但是他同时也是一个操作系统的一个应用程序的一个进程，因此JVM也有他自己的运行生命周期，也有自己的代码和数据空间。]]></description><category></category></item><item><title><![CDATA[设计模式_状态模式]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50904903</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50904903</guid><author>JonsTank2013</author><pubDate>Wed, 16 Mar 2016 14:36:09 +0800</pubDate><description><![CDATA[状态模式中的行为是由状态来决定的，不同的状态下有不同的行为。状态模式把对象的行为包装在不同的状态对象里，每一个状态对象都有一个共同的抽象状态基类。意图是让一个对象在其内部状态改变的时候，行为也随之改变。使用场景
一个对象的行为取决于它的状态，并且它必须在运行时根据状态改变它的行为
代码中包含大量与对象状态有关的条件语句，例如if-else, switch-case且这些分支依赖于该对象的状态
状态模]]></description><category></category></item><item><title><![CDATA[设计模式_原型模式]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50904467</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50904467</guid><author>JonsTank2013</author><pubDate>Wed, 16 Mar 2016 13:46:07 +0800</pubDate><description><![CDATA[原型模式： Prototype Module顾名思义，这个模式有一个样板实例，用户从这个样板对象中复制出一个内部属性一致的对象，这个过程也就是我们俗称的克隆。被复制的实例就被成为“原型”。定义用原型实例指定创建对象的种类，并通过拷贝这些原型创建新的对象使用场景
类初始化需要消耗非常多的资源，包括数据，硬件资源，通过原型拷贝可以避免这些消耗
通过new产生一个对象需要非常繁琐的数据准备或访问权限
一个]]></description><category></category></item><item><title><![CDATA[设计模式_Builder模式]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50903915</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50903915</guid><author>JonsTank2013</author><pubDate>Wed, 16 Mar 2016 12:13:50 +0800</pubDate><description><![CDATA[Builder模式是一步一步创建一个复杂对象的创建型模式，他允许用户在不知道内部构造细节的情况下，可以更精细地控制对象的构造流程。该模式是为了将一个复杂对象的构建与他的表示分离，使得同样的构建过程可以创建不同的表示。使用场景例如，在创建一个对象时，如果该对象的构造方法需要多个参数，而多个参数势必会增加开发者调用该构造方法时的难度，一两个参数还好，如果说参数有5个，甚至是更多的时候，开发者在调用方法的]]></description><category></category></item><item><title><![CDATA[设计模式_单例模式]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50903830</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50903830</guid><author>JonsTank2013</author><pubDate>Wed, 16 Mar 2016 11:56:34 +0800</pubDate><description><![CDATA[顾名思义，单例对象的类必须保证只有一个实例存在，这有利于我们协调系统整体的行为。例如在Volley框架中，存在一个RequestQueue队列，这个队列中含有线程池，缓存系统，网络请求等，很消耗资源，因此我们最好不要让它构造多个实例。使用场景确保某个类有且只有一个对象的场景，避免多个对象消耗过多的资源，或者某种类型的对象只应该有且只有一个。例如：要创建的对象消耗过多的资源，访问IO和数据库等资源等等]]></description><category></category></item><item><title><![CDATA[子字符串查找算法_归纳及汇总]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50898473</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50898473</guid><author>JonsTank2013</author><pubDate>Tue, 15 Mar 2016 17:44:31 +0800</pubDate><description><![CDATA[字符串的一种基本操作就是子字符串查找：给定一段长度为N的文本和一段长度为M的模式字符串，在文本中找到一个和该模式相符的字符串。
  模式-> ABCDE 
  正文-> SJAHDJKS”ABCDE”QWIYUE
上文加引号处就是被搜索出来的结果。 
相信这个大家肯定是经常遇到的吧，不管是使用　“CTRL+F”　搜索还是在一些搜索栏中搜索一段文字，将包含该文字的书籍输出中，我们都会遇到，所以在这里对]]></description><category></category></item><item><title><![CDATA[二叉树， 二叉查找树，二分查找算法]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50895542</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50895542</guid><author>JonsTank2013</author><pubDate>Tue, 15 Mar 2016 13:05:35 +0800</pubDate><description><![CDATA[二叉树二叉树跟树有区别，最大的一点就是：树的度没有限制，而二叉树最多则不能超过２个度基础二叉树由结点组成，结点包含的链接可以为空( null)或者指向其他结点，在二叉树中，每个结点只能有一个父结点(只有根节点例外)，　而且每个结点都只有左右两个链接，分别指向他们自己的左子节点和右子节点。类型
完全二叉树：若设二叉树的高度为h，除第 h 层外，其它各层 (1～h-1) 的结点数都达到最大个数，第h层有]]></description><category></category></item><item><title><![CDATA[快速排序_归纳]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50888208</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50888208</guid><author>JonsTank2013</author><pubDate>Mon, 14 Mar 2016 17:22:13 +0800</pubDate><description><![CDATA[算法思路
选取一个初始值
将所有比该初始值大的数置于初始值的右边，所有比该初始值小的数置于初始值的左边
循环以上操作，直到完成排序为止。
初级算法实现首先，第一轮循环时分为两步。 
第一步：从最右边向左依次遍历，查找比初始值小的数，找到之后，更改arr[left]的值, 同时 left ++，即把小的数扔到左边去 
第二步：从最左边向右依次遍历，查找比初始值大的数，找到之后，更改arr[right]]]></description><category></category></item><item><title><![CDATA[MVP 深引用方式的简单实现]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50777614</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50777614</guid><author>JonsTank2013</author><pubDate>Wed, 02 Mar 2016 09:55:05 +0800</pubDate><description><![CDATA[每个框架都有各自的使用领域，要根据项目的实际情况合理的选择对应的框架以及设计模式。]]></description><category></category></item><item><title><![CDATA[Python学习笔记(四) 多重继承及内部算法解析]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50754834</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50754834</guid><author>JonsTank2013</author><pubDate>Sat, 27 Feb 2016 13:23:35 +0800</pubDate><description><![CDATA[多重继承Python]]></description><category></category></item><item><title><![CDATA[Python学习笔记（三）]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50753529</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50753529</guid><author>JonsTank2013</author><pubDate>Sat, 27 Feb 2016 00:50:28 +0800</pubDate><description><![CDATA[安装第三方模块python 2.7.9版本内置pip，官方推荐。在命令行中使用 
 - pip install xxx.py　安装第三方模块 
 - 命令行输入python，进入python的命令行模式 
 - import xxx使用futurePython的新版本会引入新的功能，但是，实际上这些功能在上一个老版本中就已经存在了。要“试用”某一新的特性，就可以通过导入future模块的某些功能来实]]></description><category></category></item><item><title><![CDATA[Python学习笔记(二)  装饰器decorator]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50752833</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50752833</guid><author>JonsTank2013</author><pubDate>Fri, 26 Feb 2016 22:26:45 +0800</pubDate><description><![CDATA[装饰器decoratordecorator 本质上就是一个高阶函数，它接收一个函数作为参数，然后，返回一个新函数。例如，现在存在一个函数A(),但是里面没有Log，没有打印出相关的信息，现在我又想添加一个Log方法，就可以使用装饰器了，这样的话就不用直接修改源代码。只需要只用@标识符import timedef performance(f):
    def fn(*args, **kw):]]></description><category></category></item><item><title><![CDATA[Python学习笔记(一)　高阶函数，偏函数，闭包]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50752775</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50752775</guid><author>JonsTank2013</author><pubDate>Fri, 26 Feb 2016 22:12:18 +0800</pubDate><description><![CDATA[Python中高阶函数可接受其他的函数作为参数。常用高阶函数map(function, list) 让list的每一个元素依次调用function函数，并获取返回值存入一个新的list中。def format_name(s):
    return s.capitalize() #将首字母大写，其余小写print map(format_name, ['adam', 'LISA', 'barT'])结]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记（一）：Linux下的安装与配置]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50750241</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50750241</guid><author>JonsTank2013</author><pubDate>Fri, 26 Feb 2016 15:37:47 +0800</pubDate><description><![CDATA[下载https://golang.org/dl/ 进入这个网址，选择对应的版本进行下载，需要翻墙。安装默认是建议安装到/usr/localsudo tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz验证进入/usr/local/gobin/go version 查看版本号是否对应设置环境变量需要设置4个环境变量: GOROOT, GOPATH, GOBIN]]></description><category></category></item><item><title><![CDATA[总结及梳理 : Fragment]]></title><link>https://blog.youkuaiyun.com/JonsTank2013/article/details/50731379</link><guid>https://blog.youkuaiyun.com/JonsTank2013/article/details/50731379</guid><author>JonsTank2013</author><pubDate>Wed, 24 Feb 2016 15:46:13 +0800</pubDate><description><![CDATA[开始的话Fragment，中文译为碎片。被设计为在一定程度上可代替activity部分功能的组件（但是必须依赖于某一activity）。较之于Activity来说，Fragment更为轻量级，也可以适应不同平板和手机的分辨率，实现响应式UI。这也是谷歌比较推崇的一种方式->一个Activity对应多个fragment来构建app。 虽然现在fragment存在着许多的坑，但是在一定程度上是一种趋势吧]]></description><category></category></item></channel></rss>