本文是基于okhttp源码的整体分析和导读,通过本文你可以了解到okhttp的整体设计和部分细节原理。阅读本文前你不妨先记下这几个问题:
- 一个请求是如何完成的?
- 请求超时或者失败是否会重试?
本文是基于okhttp源码的整体分析和导读,通过本文你可以了解到okhttp的整体设计和部分细节原理。阅读本文前你不妨先记下这几个问题:
不知不觉已经一个月没出门了,实在闷得慌,这样的日子至少还得再持续一阵。闷久了,就会萌发想出去旅行的念头。去年中秋一个人去了次西藏,也算是想了一年,终于如愿。独自一人旅行,很多时候会少了很多味道。网友戏称为孤独的最高境界。但是一路上我发现,很多人都是一个人去的西藏,驴友搭讪结伴很常见。也正因为对西藏的向往,我拍了第一个vlog。用的设备是手机相机,加上是第一次拍摄和剪辑(vue vlog把4K视频压缩太多了,完全糊了),所以显得非常不专业。但是再不好也好歹是第一次,值得纪念一下。
微信的APM Matrix开源有段时间了,我在看了源码后发现,其作为国民第一应用出品的APM,确实是精益求精,业内领先的。TraceCanary 是其中的一个工具,主要用来监控方法耗时,启动耗时, ANR、掉帧情况等。其分两部分,一部分是以插件的形式在编译期在每个方法执行前后插桩, 用于统计方法耗时;另一部分是运行时的sdk,真正的耗时、卡顿、ANR监控逻辑所在。
kotlin里的flow API,和RxJava神似,大体一样的操作符和线程(flow里是协程)调度,链式API , 都是cold stream, 等等,flow可以作为kotlin中RxJava的替代,而且可能做得更好。
repo: https://github.com/bboylin/Synth
写Android的肯定注意到过:断点调试有时候stacktrace里会出现自己代码里没有出现的方法,而且命名是access$加上一串数字。其实,access方法是Java语法糖生成的synthetic方法,目的是为了实现内部类和外部类之间private member和private field的访问,更具体地举例说,之所以外部类能访问内部类的私有变量,是因为Java生成了个package访问级别的access方法,同时修改了指令,把所有对内部类私有变量的访问变成了对access方法的调用,读写都是如此。反之亦然,内部类访问外部类的私有成员变量/私有static变量/私有方法/私有static方法都是通过access方法实现的。
leakcanary 2.0相比1.6来说多了些骚操作,比如install不需要手动调了。另外代码也切到kotlin了,同时可以监控support包下fragment的内存泄露了。