<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PdKingLiu]]></title><description><![CDATA[这是一个不该停留太久的地方。]]></description><link>https://blog.youkuaiyun.com/CodeFarmer__</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CodeFarmer__]]></copyright><item><title><![CDATA[TCP可靠传输再回顾]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103110494</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103110494</guid><author>CodeFarmer__</author><pubDate>Sun, 17 Nov 2019 18:52:37 +0800</pubDate><description><![CDATA[文章目录概述数据校验数据分片回顾滑动窗口超时重传流量控制拥塞控制慢启动拥塞避免快重传快恢复
概述
总体来说TCP通过以下方式保证数据的可靠传输：

确认重传
数据校验
数据分片和排序
流量控制
拥塞控制

数据校验
TCP校验和是一个端到端的校验和，由发送端计算，然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错，则TCP段会被直接丢...]]></description><category></category></item><item><title><![CDATA[LeetCode——第163场周赛]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103107565</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103107565</guid><author>CodeFarmer__</author><pubDate>Sun, 17 Nov 2019 13:38:00 +0800</pubDate><description><![CDATA[文章目录5263. 二维网格迁移5264. 在受污染的二叉树中查找元素5265. 可被三整除的最大和5266. 推箱子
5263. 二维网格迁移

题目很简单，看下面代码
 public List&lt;List&lt;Integer&gt;&gt; shiftGrid(int[][] grid, int k) {
     List&lt;List&lt;Integer&gt;&gt; list...]]></description><category></category></item><item><title><![CDATA[操作系统笔记——死锁]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103033352</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103033352</guid><author>CodeFarmer__</author><pubDate>Tue, 12 Nov 2019 21:09:58 +0800</pubDate><description><![CDATA[文章目录死锁必要条件死锁处理方法鸵鸟策略死锁检测与死锁恢复每种类型一个资源的死锁情况每个类型多个资源的死锁检测死锁恢复死锁预防破坏互斥条件破坏占有和等待条件破坏不可抢占条件破坏环路死锁避免安全状态单个资源的银行家算法多个资源的银行家算法
操作系统中的死锁是指多个进程在运行过程中因为争夺资源造成的一种相互等待的情况。
死锁必要条件
如果一个系统中下面四个条件同时满足，那么会引起引起死锁。

互斥：至...]]></description><category></category></item><item><title><![CDATA[操作系统笔记——进程同步、进程通信]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103022407</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103022407</guid><author>CodeFarmer__</author><pubDate>Tue, 12 Nov 2019 14:00:44 +0800</pubDate><description><![CDATA[文章目录进程同步临界资源临界区同步和互斥信号量互斥量经典进程同步问题生产者消费者问题读者写者问题进程通信匿名管道通信命名管道通信(FIFO)信号信号量共享存储套接字消息队列
进程同步
临界资源
一次仅允许一个进程使用的资源称为临界资源。
临界区
对临界资源进行访问的那段代码称为临界区。
同步和互斥
同步： 多个进程因为合作产生的直接制约关系，使得进程有一定的先后执行关系。
互斥： 多个进程在同一时...]]></description><category></category></item><item><title><![CDATA[操作系统笔记——进程、线程、进程调度]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103019324</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/103019324</guid><author>CodeFarmer__</author><pubDate>Mon, 11 Nov 2019 23:06:40 +0800</pubDate><description><![CDATA[文章目录进程和线程进程线程进程和线程的区别进程状态进程调度算法批处理系统先来先服务短作业优先最短剩余时间优先交互式系统时间片轮转优先级调度多级反馈队列
进程和线程
进程
进程是资源分配的基本单位。
进程控制块（PCB）描述进程基本信息和运行状态，创建进程和撤销进程。
线程
线程是独立调度的基本单位。
一个进程可以有多个线程。他们共享进程资源。
QQ 和浏览器是两个进程，浏览器进程里面有很多线程，例...]]></description><category></category></item><item><title><![CDATA[LeetCode——第162场周赛]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102998303</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102998303</guid><author>CodeFarmer__</author><pubDate>Sun, 10 Nov 2019 16:22:30 +0800</pubDate><description><![CDATA[文章目录5255. 奇数值单元格的数目5256. 重构 2 行二进制矩阵5257. 统计封闭岛屿的数目5258. 得分最高的单词集合
今天周赛时间没赶上，有高中学生参观实验室，我代表安卓组给他们介绍我们的项目。
忙完都11:40了，原本都不想做了，一看第一题很简单，然后一做就停不下来了···

5255. 奇数值单元格的数目
5255. 奇数值单元格的数目 显示英文描述 
	
	用户通过次数948...]]></description><category></category></item><item><title><![CDATA[热更新原理总结]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102990603</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102990603</guid><author>CodeFarmer__</author><pubDate>Sat, 09 Nov 2019 22:04:43 +0800</pubDate><description><![CDATA[文章目录Instant Run概述Gradle TransformInstant Run修复原理ClassLoader 修复代码
Instant Run概述
Instant Run 是 Android Studio2.0 之后新增的一个运行机制，能够减少开发人员第二次及以后的构建时间。
在没有Instant run之前，编译部署应用程序的流程如下图：

传统的编译部署，需要重新安装APP和重启 A...]]></description><category></category></item><item><title><![CDATA[Android个人项目插件化总结——插件apk资源加载]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102986882</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102986882</guid><author>CodeFarmer__</author><pubDate>Sat, 09 Nov 2019 16:20:05 +0800</pubDate><description><![CDATA[文章目录为什么加载不了资源如何加载资源
为什么加载不了资源
我们知道获取资源时实际都是使用了Resource。
mResource这个变量在Activity父类ContextThemeWrapper中。
ContextThemeWrapper的mResource的获得是通过Context的实现类得到的。
Context实现类ContextImpl中获得Resources 是通过
 Resource...]]></description><category></category></item><item><title><![CDATA[Android个人项目插件化总结——方式二（Hook Instrumentation）]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102985211</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102985211</guid><author>CodeFarmer__</author><pubDate>Sat, 09 Nov 2019 12:33:09 +0800</pubDate><description><![CDATA[文章目录概述代码补充
概述
第二种方式思路非常清晰，直接Hook Instrumentation。
由activity启动流程知道，startActivity会交给Activity的mInstrumentation.execStartActivity()来处理。
最终会调用ActivityThread里面的performLaunchActivity()方法。performLaunchActivit...]]></description><category></category></item><item><title><![CDATA[Android个人项目插件化总结——方式一（Hook IActivityManager）]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102969535</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102969535</guid><author>CodeFarmer__</author><pubDate>Fri, 08 Nov 2019 12:10:43 +0800</pubDate><description><![CDATA[文章目录整体流程实现
整体流程
本篇主要基于Hook代理对象IActivityManager，Activity启动流程不清楚的可以看看我分析Activity流程的文章。
public ActivityResult execStartActivity(
            Context who, IBinder contextThread, IBinder token, Activity ta...]]></description><category></category></item><item><title><![CDATA[Java虚拟机学习笔记（六）——GC机制补充（安全点、OopMap、触发条件、收集器）]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102965513</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102965513</guid><author>CodeFarmer__</author><pubDate>Fri, 08 Nov 2019 00:43:01 +0800</pubDate><description><![CDATA[文章目录GC触发条件OopMap安全点新生代收集器Serial（串行）收集器ParNew 收集器Parallel Scavenge 收集器老年代收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器
GC触发条件
Minor GC触发条件

当Eden区满时，触发Minor GC。

Full GC触发条件

调用System.gc时，系统建议执行Full GC，但是...]]></description><category></category></item><item><title><![CDATA[Activity启动流程总结]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102961826</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102961826</guid><author>CodeFarmer__</author><pubDate>Fri, 08 Nov 2019 00:39:23 +0800</pubDate><description><![CDATA[学习插件化首先要清楚Activity启动流程。此篇文章对Activity整体的启动流程做一个总结。SDK版本基于25，项目的插件化适配也只做了API 25的。
通常使用startActivity来启动一个Activity
@Override
public void startActivity(Intent intent) {
    this.startActivity(intent, null)...]]></description><category></category></item><item><title><![CDATA[关于AIDL和Binder]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102962932</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102962932</guid><author>CodeFarmer__</author><pubDate>Thu, 07 Nov 2019 21:56:21 +0800</pubDate><description><![CDATA[文章目录BinderAIDL机制使用服务端客户端继承Binder实现继承间通信服务端客户端
AIDL是一种跨进程通信的方式，通信基于Binder。
直接继承Binder也可以实现跨进程通信。
Binder
Binder是一个类，它实现了IBinder接口，而IBinder接口定义了与远程对象的交互协议。通常在进行跨进程通信时，不需要实现IBinder接口，直接从Binder派生即可。
除了实现IB...]]></description><category></category></item><item><title><![CDATA[Android四大组件之Service、ContentProvider、BroadcastReceiver]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102914782</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102914782</guid><author>CodeFarmer__</author><pubDate>Wed, 06 Nov 2019 15:01:03 +0800</pubDate><description><![CDATA[文章目录Service生命周期IntentService关于startService和bindServiceAndroidManifest.xml本地Service和远程Service关于bindService的特点Content ProviderBroadcast Receiver分类注册
Service
Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。
生命周期
...]]></description><category></category></item><item><title><![CDATA[Android——ANR]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102912259</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102912259</guid><author>CodeFarmer__</author><pubDate>Tue, 05 Nov 2019 11:31:09 +0800</pubDate><description><![CDATA[文章目录概述场景如何避免
概述
ANR（Application Not Responding）是指应用无响应。
Android系统对于一些事件都在在一定时间内完成，如果超过预订时间没有得到相应就会在成ANR。
ANR机制是对应用程序主线程的限制，要求主线程在限定的时间内处理完一些最常见的操作(启动服务、处理广播、处理输入)， 如果处理超时，则认为主线程已经失去了响应其他操作的能力。
场景
导致AN...]]></description><category></category></item><item><title><![CDATA[Java知识回顾（二）]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102907121</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102907121</guid><author>CodeFarmer__</author><pubDate>Tue, 05 Nov 2019 09:32:05 +0800</pubDate><description><![CDATA[文章目录泛型是什么泛型如何工作泛型中的限定通配符和非限定通配符编写泛型方法异常异常关键字异常的层次结构throw和throwsOutOfMemoryError注解注解分类反射动态代理
泛型是什么
集合存储对象并在使用先进行类型转换很不方便，泛型是为了那种情况的发生。他提供了编译器的类型安全，确保你只能把正确类型的对象放入集合中，避免了在运行时出现ClassCastException。
泛型如何工作...]]></description><category></category></item><item><title><![CDATA[Java知识回顾（一）]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102887222</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102887222</guid><author>CodeFarmer__</author><pubDate>Mon, 04 Nov 2019 22:37:39 +0800</pubDate><description><![CDATA[文章目录面向对象和面向过程的区别Java语言有哪些特点JVM JDK 和 JREJava和C++的区别字符型常量和字符串常量的区别构造器是否可以被override重载和重写的区别封装 继承 多态String StringBuffer StringBuilder自动装箱与拆箱接口和抽象类的区别== 与 equalshashCode 与 equals线程的基本状态final 关键字Java异常有些字段...]]></description><category></category></item><item><title><![CDATA[LeetCode——第161场周赛]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102881757</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102881757</guid><author>CodeFarmer__</author><pubDate>Sun, 03 Nov 2019 14:03:09 +0800</pubDate><description><![CDATA[文章目录5247. 交换字符使得字符串相同5248. 统计「优美子数组」5249. 移除无效的括号5250. 检查「好数组」

5247. 交换字符使得字符串相同
5247. 交换字符使得字符串相同

	用户通过次数583
	用户尝试次数721
	通过次数597
	提交次数1363
	题目难度Easy
	
	有两个长度相同的字符串 s1 和 s2，且它们其中 只含有 字符 "x" 和 "y"，你需...]]></description><category></category></item><item><title><![CDATA[Android——Fragment生命周期总结]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102854821</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102854821</guid><author>CodeFarmer__</author><pubDate>Fri, 01 Nov 2019 12:34:37 +0800</pubDate><description><![CDATA[文章目录概述各个生命周期
概述
Fragment的主要功能就是创建一个View，并且有一个生命周期来管理这个View。
Fragment的生命周期和Activity的生命周期类似，都有一些回调方法。
各个生命周期

左侧是Activity的生命周期，右侧对应这个状态下执行Fragment的生命周期方法。
Fragment有的生命周期与Activity生命周期名字都是一样的，对应的功能也类似。
只不...]]></description><category></category></item><item><title><![CDATA[Android——Activity启动模式总结]]></title><link>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102847480</link><guid>https://blog.youkuaiyun.com/CodeFarmer__/article/details/102847480</guid><author>CodeFarmer__</author><pubDate>Fri, 01 Nov 2019 11:30:25 +0800</pubDate><description><![CDATA[文章目录概述standardsingleTopsingleTasksingleInstance
概述
在默认情况下，当我们多次启动同一个Activity 的时候，系统会创建多个实例并把它们一一放入任务栈中， 当我们单击back键，会发现这些Activity会一一回退。
我们可能会发现一个问题多次启动同一个Activity，系统会重复创建多个实例。
Android在设计的时候不可能不考虑到这个问题，...]]></description><category></category></item></channel></rss>