<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xurs123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xurs123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xurs123]]></copyright><item><title><![CDATA[TCP/IP网络协议以及Android网络优化方案]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/115009504</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/115009504</guid><author>xurs123</author><pubDate>Wed, 09 Jun 2021 09:02:57 +0800</pubDate><description><![CDATA[引用文章地址：TCP/IP网络协议
文章目录TCP/IP 模型TCP 和 UDPTCP 为什么要三次握手/四次挥手网页请求一个 URL 的流程DNS 工作原理HTTPS 加密原理
TCP/IP 模型
tcp四层模型
TCP 和 UDP
TCP
特点：面向连接、面向字节流、可靠、有序、速度慢、较重量，流量控制、拥塞控制
适用场景：文件传输、浏览器等
应用：HTTP、HTTPS、RTMP、FTP、SMTP、POP3
UDP
特点：无连接、面向报文、不可靠、无序、速度快、轻量、实时性高（无队首阻塞）
适用场景：适]]></description><category></category></item><item><title><![CDATA[热修复]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/115049940</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/115049940</guid><author>xurs123</author><pubDate>Tue, 23 Mar 2021 14:33:14 +0800</pubDate><description><![CDATA[插件化Android热修复常用热修复解决方案实现原理什么是热修复？怎么进行热修复？热修复需要解决的问题插桩式热修复落地怎么执行热修复(使用补丁包)？字节码插桩
Android热修复
常用热修复解决方案实现原理
什么是热修复？
定义：在我们应用上线后出现bug需要及时修复时，不用再发新的安装包，只需要发布补丁包，在客户无感知下修复掉bug。
怎么进行热修复？
开发端：生成补丁包   -Gradle插件patch
服务端：补丁包管理
用户端：执行热修复

为什么类替换方案
—不能及时生效？

热修复需要解决的问]]></description><category></category></item><item><title><![CDATA[插件化]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/115029813</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/115029813</guid><author>xurs123</author><pubDate>Sun, 21 Mar 2021 14:51:46 +0800</pubDate><description><![CDATA[插件化为什么插件化插件化的开源框架发展插件化的难点1. 如何加载插件的类？虚拟机类加载三件事java Android 类加载机制 区别了解APP实际使用的ClassLoader如何使用类加载器去加载一个类插件化类加载实现原理：2. 如何加载插件的资源？创建新的Resources对象如何调用loadResource方法3. 如何调用插件类？解决注册的问题Activity的启动流程总结
为什么插件化

将 app 中一些不常用的功能模块做成插件（免安装apk）：

一方面减小了安装包的大小，启动更快，
另一方面]]></description><category></category></item><item><title><![CDATA[组件化开发和路由框架的理解]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/114940432</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/114940432</guid><author>xurs123</author><pubDate>Sat, 20 Mar 2021 01:55:26 +0800</pubDate><description><![CDATA[ARouter 通过 Apt 技术，生成保存路径(路由 path)和被注解(@Router)的组件类的映 射关系的类，利用这些保存了映射关系的类，Arouter 根据用户的请求 postcard（明信片） 寻找到要跳转的目标地址(class),使用 Intent 跳转。


...]]></description><category></category></item><item><title><![CDATA[kotlin的协程]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/114928576</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/114928576</guid><author>xurs123</author><pubDate>Thu, 18 Mar 2021 20:22:07 +0800</pubDate><description><![CDATA[协程的作用和优势

协程 kotlin提供的线程API，和java的Executor 以及Android的AsyncTask对线程做了封装，方便对并发操作；

那既然有了这些，并且又有了Rxjava，协程的好处在哪？

可以用看似同步的方式写出异步的代码，非阻塞式挂起并且处理完自动切回来；
最基本的功能：处理并发，并且改变了处理并发任务的难度，这个从1到0简化了难度。消除了回调，简化操作难度带来质变，回调的难度在多层嵌套和多任务并发回调需要合并
suspend关键字是提醒调用者我是耗时操作，请在携程里面调用]]></description><category></category></item><item><title><![CDATA[Rxjava的笔记]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/114970503</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/114970503</guid><author>xurs123</author><pubDate>Thu, 18 Mar 2021 20:20:45 +0800</pubDate><description><![CDATA[RxJava通过观察者模式实现了响应式编程:响应式编程(Reactive Programming)，是一种面向数据流和变化的编程范式，通俗点理解就是当一个数据发生改变，所有其他关联数据都会立即作出反应。其他有着同样广泛应用的编程范式还有命令式编程，函数式编程和面向对象编程。
RxJava1.0和RxJava2.0的核心思想都是观察者模式，只不过RxJava2.0在RxJava1.0的基础对一些方法进行了优化，例如背压等。

Rxjava流程
Rxjava 的流程大概是： 1. Observable.cre.]]></description><category></category></item><item><title><![CDATA[谈谈Glide的二次封装和优化]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/106298021</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/106298021</guid><author>xurs123</author><pubDate>Sat, 23 May 2020 12:10:56 +0800</pubDate><description><![CDATA[为什么要二次封装？

所有图片加载统一的管理，改动只改一处牵涉小；

如果第三方库不满足需求或停止维护，替换工作量小；

原有支持的：缩略图、占位图、动画、监听资源请求并拿到资源、设置宽高、圆角等；

##对外提供统一的ImageLoader ，这个类是不变的，具体执行由GlideLoader

&gt; - ImageLoader.init(Context context) //初始化
&gt; - ImageLoader.trimMemory(int level);
&gt; - ImageLoade.]]></description><category></category></item><item><title><![CDATA[谈谈Glide图片加载]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/106296441</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/106296441</guid><author>xurs123</author><pubDate>Sat, 23 May 2020 10:50:09 +0800</pubDate><description><![CDATA[Glide的使用：占位图加载中失败； 指定图片宽高； 获取图片资源 ；图片的截取 ；图片下载；

with  通过创建空fragment 绑定当前activity的生命周期 管理活动缓存 开始暂停或 退出页面释放活动缓存

load 可以加载网络、本地、res、Uri；

图片的缓存管理

1.活动缓存 ：通过HashMap +weakReference 来存储，key 就是图片url加密值，value就是bitmap的弱引用

  使用一次 引用计数+1 不使用 ...]]></description><category></category></item><item><title><![CDATA[从view的绘制流程到自定义view]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/106089845</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/106089845</guid><author>xurs123</author><pubDate>Wed, 13 May 2020 08:26:10 +0800</pubDate><description><![CDATA[首先视图是从顶层向子视图遍历的，因为根布局被尺寸确定
setContentView、setImageView、setText这些方法，都需要考虑是否触发requestLayout和invalidate
视图遍历的入口peformTraversals，依次执行测量、布局、绘制
不同的试图组需要根据需要来计算重写onMeasure ，通过 MeasureSpec 获得getMode(）和 getSize(),
怎么理解父布局给的模式呢？未指定(UNSPECIFIED)，默认最小的建议值；自身最小(AT_MOS.]]></description><category></category></item><item><title><![CDATA[谈谈Activity管理]]></title><link>https://blog.youkuaiyun.com/xurs123/article/details/106082279</link><guid>https://blog.youkuaiyun.com/xurs123/article/details/106082279</guid><author>xurs123</author><pubDate>Tue, 12 May 2020 19:43:34 +0800</pubDate><description><![CDATA[关于栈的概念和启动模式

1、为什么需要四种启动模式？池复用，因为按默认情况启动，会不停创建和销毁activity,所以引入栈来管理；

2、设置栈有两种方式？一种是清单文件配置taskAffinity，一种是intent设置，两种都有设置，Intent覆盖清单配置。

3、默认按返回键，出栈清空，直接回到桌面，但后台栈保留着，再启用栈内页面会复用。

4、不管当前显示哪个栈，按home键，再次进入，显示默认栈。

5、onNewIntent和onRestart的区别？前者Intent方式重复启动回调，后者]]></description><category></category></item></channel></rss>