今年我读了四个开源项目的源码,来分享下心得(下)

简介: 今年我读了四个开源项目的源码,来分享下心得(下)

然后这一模块就收工了!搞定!

然后各种分支发散出去,大致的流程就都清晰了,源码也就读的差不多了。

读源码的时候也会遇到一些不能理解的,先略过,主流程先搞懂。

搞懂整体核心流程之后可以抠一些细节了,比如我之前看 Dubbo 的时候就抠了一个从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅


image.png


再比如之前看 Kafka 的索引设计涉及到二分查找,但是源码中是改版的二分查找。把索引项分为热区和冷区,深究下去是为了避免缺页中断。


image.png


这时候又涉及到 mlock、madvise 。


image.png


这些就是细节,而细节往往就是我们需要学习的地方,所以在理清整体流程之后不要错过细节。

往往你觉得很奇怪的地方可能就是一些“骚操作”,学的就是“骚操作”。

这一趴读源码是为了让自己得到晋升、学习学习优秀开源框架是如何设计而读的源码。


为了找问题而读源码


这个目的性很强,有时候是项目出错,一般而言有日志,所以通过日志搜就行。

如果你本身对这个框架很熟悉那当然最好,如果不熟悉通过日志搜索结合上下文其实也能找到一些缘由。

不过有时候还是得整个链路分析下来才能排查问题,这个看功力了。

有时候是因为看到一些文章的说法冲突了,一篇说 A 另一篇说 B ,如果你找不到权威的信息你只能自己去看源码,通过关键字搜。


比如我这篇写的


image.png


这就是源码之下无秘密。

这种目的性很强的读源码就得结合当时上下文和靠个人功力了。


最后


不知不觉说了这么多。

我只能告诉你不要被源码劝退,你其实一直在看源码。

然后要自顶向下的看源码,不要一头就钻进细节,先从官网等渠道对开源框架有个全面的了解,然后看源码理清主流程。

再配合流程图、时序图、脑图等记录、归类。

然后再看细节,学学优秀开源框架的“骚操作”。

模仿它,学会它,从中能延展出很多额外的底层知识,比如上面提到的预防缺页中断,预热锁页,分支预测等等。

当然也可以先去网上搜一搜别人的源码分析文章,比如我之前的一些,然后自己再上手,这样会比较舒服和顺利。

或者一些相关的付费专栏,我个人觉得不要排斥知识付费,就这么点钱,比你买个皮肤划算。

人家汇总整理知识,你花点小钱,节省你自己研究的时间,我觉得不亏。

反正我自己买了很多,我自己从中有收获,所以我说的一点都不心虚。

最后,源码是块硬骨头这毋庸置疑,我只能告诉你看源码的准备工作和一些小心得。

道阻且长,行则将至。

冲!


相关文章
|
9月前
|
安全 架构师 Java
理论实战源码齐飞!架构师社区疯传的SpringSecurity进阶小册真香
安全管理是Java应用开发中无法避免的问题,随着Spring Boot和微服务的流行,Spring Security受到越来越多Java开发者的重视,究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进行整合时,是拥有众多同类型框架无可比拟的优势的。
109 0
|
8月前
|
Java 程序员 测试技术
《吐血整理》-顶级程序员工具集(2)
《吐血整理》-顶级程序员工具集
|
8月前
|
自然语言处理 监控 IDE
《吐血整理》-顶级程序员工具集(3)
《吐血整理》-顶级程序员工具集
|
8月前
|
前端开发 JavaScript 程序员
《吐血整理》-顶级程序员工具集(1)
《吐血整理》-顶级程序员工具集
|
8月前
|
数据采集 安全 NoSQL
《吐血整理》-顶级程序员工具集(4)
《吐血整理》-顶级程序员工具集
GitHub刷屏热议,原来是字节跳动大牛分享数据结构与算法实战笔记
大家都知道,对于程序员来说很大程度上算法就是为了应付面试的。大佬们都说过,学算法之前起码得了解数据结构呀!你是否当程序员这么多年,还只是能手写出个冒泡排序的代码?别怕!我最近正好找到一份字节跳动大牛分享的数据结构与算法实战笔记,在这里分享给大家!
|
传感器 JSON C语言
最近收集的开源项目专栏(持续更新,收好车轮,方便造车)
最近收集的开源项目专栏(持续更新,收好车轮,方便造车)
197 0
最近收集的开源项目专栏(持续更新,收好车轮,方便造车)
|
算法 大数据 程序员
膜拜!字节跳动算法国内第一人亲撰:数据结构与算法全解笔记
近些年来,算法在互联网的地位占重凸显,在各大互联网企业应用中有着举足轻重的作用。无论是面试还是笔试,算法都占据着绝大部分。 而即将到来的 金九银十”正是跳槽涨薪的最佳时机! 最近我针对各家名企IT面试知识点方面进行了总结。对当前程序员面试缺乏权威题目进行汇总,应对即将到来的金九银十。在此,给大家带来571页经典算法面试题,希望对大家有所帮助。
|
搜索推荐 Java 测试技术
牛客社区项目(第六章)
牛客社区项目(第六章)
230 0
牛客社区项目(第六章)