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

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

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

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

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

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


image.png


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


image.png


这时候又涉及到 mlock、madvise 。


image.png


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

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

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


为了找问题而读源码


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

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

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

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


比如我这篇写的


image.png


这就是源码之下无秘密。

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


最后


不知不觉说了这么多。

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

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

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

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

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

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

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

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

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

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

道阻且长,行则将至。

冲!


相关文章
|
7月前
|
安全 架构师 Java
理论实战源码齐飞!架构师社区疯传的SpringSecurity进阶小册真香
安全管理是Java应用开发中无法避免的问题,随着Spring Boot和微服务的流行,Spring Security受到越来越多Java开发者的重视,究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进行整合时,是拥有众多同类型框架无可比拟的优势的。
94 0
白嫖!字节跳动 Java岗顶级面试解析(2023版),GitHub巅峰神作!
开始之前,先说一下我非常推荐的一种学习方式: 带着问题学习或者准备面试。 另外,准备面试的小伙伴,一定要根据自身情况制定好复习计划! 并且,你最好还要时不时自测一下,对着一些面试常见的问题进行自问。 最近,我分析了上百份大中小厂的面经,发现了许多Java 面试中最最最常问的一些问题!并且都在字节跳动 Java面试顶级解析(2023版)小册里面找到了对应的题目和答案,小伙伴们可以对照着学习或者准备面试。
GitHub最新发布Java面试突击手册+P5-P8学习图谱,一夜直接竟爆火
什么是金九银十? “金九银十指的是每年的九十月份都是人才招聘的高峰期,因为跟春节和春运紧接,到人才市场,人都是满的,所以称为金九;伴随的十月则称为银十。”
GitHub刷屏热议,原来是字节跳动大牛分享数据结构与算法实战笔记
大家都知道,对于程序员来说很大程度上算法就是为了应付面试的。大佬们都说过,学算法之前起码得了解数据结构呀!你是否当程序员这么多年,还只是能手写出个冒泡排序的代码?别怕!我最近正好找到一份字节跳动大牛分享的数据结构与算法实战笔记,在这里分享给大家!
|
消息中间件 NoSQL Java
硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K
春节过后紧接着就是跳槽黄金期“金三银四”,现在Java面试已经是快被谈烂的话题了。随着近些年面试要求不断的提高,面试真题、面试总结、面试笔记......各种Java面试八股文一搜一大把,根本背不完,甚至是收藏=学会。但是总有程序员在错误地学习着,一边收藏一边抱怨着程序员是个枯燥无味的行业!
|
设计模式 算法 中间件
劲爆!阿里巴巴面试参考指南(嵩山版)开源分享,程序员面试必刷
近几年受疫情影响各行各业的日子都不好过,虽然程序员日子也挺难,但是好在可以线上面试、线上办公,影响还是比较小的,但是去年教育行业的 “双减” 政策,导致又一大批岗位缺失程序员竞争压力突然递升;
|
消息中间件 缓存 算法
开源7天Github斩获4.5万Stars!阿里2023版高并发设计实录鲨疯了
如何获得高并发经验? 这是我今天逛知乎的时候系统邀请我回答的一个问题,由此也引发了我的一些思考:为什么人人都想要获得高并发经验;想拥有高并发系统设计技能?
|
设计模式 安全 Java
好家伙!阿里并发核心编程宝典(2022版)一夜登顶Github热榜第三
不知道大家今年的金九银十是否有出去面试过?有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容,但现在只要你入了Java行业就会涉及,不管你工作中是否用到,面试就得问。
|
SQL 关系型数据库 MySQL
吹爆!阿里专家手码“数据库优化速成小册”Github现已疯传
现在在很多设计、开发、测试人员的眼中会认为SQL优化只是DBA 的事情。他们不需要去关心。反映到具体工作中,他们缺乏相应的优化意识,只注重功能的实现而忽略了相应的执行成本。最终的结果往往就是代码质量不高,软件上线后问题多。
|
搜索推荐 Java 测试技术
牛客社区项目(第六章)
牛客社区项目(第六章)
225 0
牛客社区项目(第六章)