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

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

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

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

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

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


image.png


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


image.png


这时候又涉及到 mlock、madvise 。


image.png


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

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

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


为了找问题而读源码


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

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

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

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


比如我这篇写的


image.png


这就是源码之下无秘密。

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


最后


不知不觉说了这么多。

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

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

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

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

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

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

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

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

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

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

道阻且长,行则将至。

冲!


相关文章
|
3月前
|
安全 架构师 Java
理论实战源码齐飞!架构师社区疯传的SpringSecurity进阶小册真香
安全管理是Java应用开发中无法避免的问题,随着Spring Boot和微服务的流行,Spring Security受到越来越多Java开发者的重视,究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进行整合时,是拥有众多同类型框架无可比拟的优势的。
54 0
|
5月前
|
设计模式 Java 数据库
持续霸榜GitHub的面试神器:字节跳动Java面试参考手册,限时开源
最近又赶上跳槽的高峰期(招聘旺季),好多读者都问我有没有面试字节的神器,我苦苦寻到了一份内部资料《2023字节跳动Java面试参考手册(第二期)》。
|
9月前
|
Java 程序员
GitHub最新发布Java面试突击手册+P5-P8学习图谱,一夜直接竟爆火
什么是金九银十? “金九银十指的是每年的九十月份都是人才招聘的高峰期,因为跟春节和春运紧接,到人才市场,人都是满的,所以称为金九;伴随的十月则称为银十。”
|
7月前
|
消息中间件 NoSQL Java
硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K
春节过后紧接着就是跳槽黄金期“金三银四”,现在Java面试已经是快被谈烂的话题了。随着近些年面试要求不断的提高,面试真题、面试总结、面试笔记......各种Java面试八股文一搜一大把,根本背不完,甚至是收藏=学会。但是总有程序员在错误地学习着,一边收藏一边抱怨着程序员是个枯燥无味的行业!
|
8月前
|
消息中间件 NoSQL Java
Github霸榜!2023最新一线大厂Java八股文合集PDF版震撼开源
前言 金九银十已到,也不知道大家准备得怎么样,有没有为找到心仪的工作开始面试了,有没有准备不充分在各大平台找资料临时抱佛脚的朋友,不管你是找工作还是找资料,一定要看看我花1个多月为大家整理收集的“2023最新一线大厂Java八股文合集”,当你看了这份资料,定会有惊人发现。
753 0
|
8月前
|
存储 Kubernetes JavaScript
🚀 2023 年你必须贡献的 9 个国外开源库 🔥
🚀 2023 年你必须贡献的 9 个国外开源库 🔥
🚀 2023 年你必须贡献的 9 个国外开源库 🔥
造孽啊!阿里内部的神级项目和JDK源码阅读指南竟惨遭GitHub开源
背景 今天逛GitHub,发现了一个神级项目,作者将整理/记录阅读JDK源码时的理解与体会分享出来,便于大家学习。这里将项目分享出来,让小伙伴们能更好地学习Java。
|
消息中间件 Dubbo NoSQL
今年我读了四个开源项目的源码,来分享下心得(上)
今年我读了四个开源项目的源码,来分享下心得(上)
今年我读了四个开源项目的源码,来分享下心得(上)
|
机器学习/深度学习 自然语言处理 算法
优秀程序员都应该学习的 GitHub 上开源的数据结构与算法项目
优秀程序员都应该学习的 GitHub 上开源的数据结构与算法项目
555 0
优秀程序员都应该学习的 GitHub 上开源的数据结构与算法项目
|
前端开发 JavaScript 程序员
GitHub 标星 54K + 2K!这才是程序员写逼格满满的 PPT 的正确姿势!
GitHub 标星 54K + 2K!这才是程序员写逼格满满的 PPT 的正确姿势!
391 0
GitHub 标星 54K + 2K!这才是程序员写逼格满满的 PPT 的正确姿势!

热门文章

最新文章