然后这一模块就收工了!搞定!
然后各种分支发散出去,大致的流程就都清晰了,源码也就读的差不多了。
读源码的时候也会遇到一些不能理解的,先略过,主流程先搞懂。
搞懂整体核心流程之后可以抠一些细节了,比如我之前看 Dubbo 的时候就抠了一个从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅
再比如之前看 Kafka 的索引设计涉及到二分查找,但是源码中是改版的二分查找。把索引项分为热区和冷区,深究下去是为了避免缺页中断。
这时候又涉及到 mlock、madvise 。
这些就是细节,而细节往往就是我们需要学习的地方,所以在理清整体流程之后不要错过细节。
往往你觉得很奇怪的地方可能就是一些“骚操作”,学的就是“骚操作”。
这一趴读源码是为了让自己得到晋升、学习学习优秀开源框架是如何设计而读的源码。
为了找问题而读源码
这个目的性很强,有时候是项目出错,一般而言有日志,所以通过日志搜就行。
如果你本身对这个框架很熟悉那当然最好,如果不熟悉通过日志搜索结合上下文其实也能找到一些缘由。
不过有时候还是得整个链路分析下来才能排查问题,这个看功力了。
有时候是因为看到一些文章的说法冲突了,一篇说 A 另一篇说 B ,如果你找不到权威的信息你只能自己去看源码,通过关键字搜。
比如我这篇写的:
这就是源码之下无秘密。
这种目的性很强的读源码就得结合当时上下文和靠个人功力了。
最后
不知不觉说了这么多。
我只能告诉你不要被源码劝退,你其实一直在看源码。
然后要自顶向下的看源码,不要一头就钻进细节,先从官网等渠道对开源框架有个全面的了解,然后看源码理清主流程。
再配合流程图、时序图、脑图等记录、归类。
然后再看细节,学学优秀开源框架的“骚操作”。
模仿它,学会它,从中能延展出很多额外的底层知识,比如上面提到的预防缺页中断,预热锁页,分支预测等等。
当然也可以先去网上搜一搜别人的源码分析文章,比如我之前的一些,然后自己再上手,这样会比较舒服和顺利。
或者一些相关的付费专栏,我个人觉得不要排斥知识付费,就这么点钱,比你买个皮肤划算。
人家汇总整理知识,你花点小钱,节省你自己研究的时间,我觉得不亏。
反正我自己买了很多,我自己从中有收获,所以我说的一点都不心虚。
最后,源码是块硬骨头这毋庸置疑,我只能告诉你看源码的准备工作和一些小心得。
道阻且长,行则将至。
冲!