作为一个工程师结果读不懂英文官方文档,这可怎么办

目录

  • 1、从最简单的源码开始:别幻想一步登天
  • 2、循序渐进:先搞定底层依赖的技术
  • 3、一定要以Hello World作为入口来阅读
  • 4、抓大放小,边写注释边画图
  • 5、反复三遍,真正理解源码
  • 6、借力打力,参考源码分析书籍及博客
  • 7、最后寄语:用几年时间锻造自己的核心技术

前言

这篇文章,给大家简单介绍一下很多同学都非常关心的一个问题:如何阅读一个开源项目的源码。

我相信很多同学都希望能够去阅读一些源码来提升自己的技术水平,毕竟在面试的时候,很多大厂都经常会扣到非常深入的底层源码。


1、从最简单的源码开始:别幻想一步登天

其实开源项目有很多种,比如说有Spring这种框架类的,还有比如数据库连接池、log4j等这种工具类的。

当然还有特别重型的中间件类的,比如说RocketMQ、Kafka、Redis。更有甚者也有上百万行代码的大数据类的,比如Hadoop、Spark。

所以如果很多同学想要读源码的话,面临的第一个问题:不知道从何下手。

那么是不是说只要随便挑选一个开源技术的源码,采用愚公移山的精神,直接硬着头皮去读,坚持就是胜利,铁杵一定就能磨成针吗/p>

不是的!其实很多同学始终都没掌握到阅读源码的顺序、技巧和方法,所以导致尝试看过一些源码,却还是看不懂。

图片

所以这个时候你得先把底层依赖的技术给搞定,那么你就得回过头去先阅读ZooKeeper的源码,把ZK这个技术先给搞精通一些。

同理,如果你在研究ZK的时候,发现他底层有一些技术是你掌握不好的,比如你发现他大量运用了Java并发包下的东西。

因此如果你对Java并发包掌握的不够好,那么建议你去把Java并发包下的源码先仔细研究一下。

通过这种方式,你可以自行追踪到自己还不熟悉的很多底层技术,然后一个一个击破,把这些底层依赖的技术的源码你可以先研究透彻一些。

然后,你再一步一步往上层的技术去研究,这样看那些复杂技术的源码就会轻松很多了。


3、一定要以Hello World作为入口来阅读

阅读源码有一个非常非常有用的技巧,那就是你别下载了源码到本地IDE里然后直接胡乱的翻看,那是不行的。

一般建议就是基于一个开源技术写一个最最基本的HelloWorld程序,就是一个入门级的程序,然后把他的核心功能给跑通。

举个例子,假如说你要阅读ZooKeeper的源码,那么你先写一个ZK的HelloWorld程序。

比如说先连接,然后创建一个znode,对znode注册一个监听。接着触发这个监听,接着再关闭连接,就这样的一个简单的程序。

然后就可以打断点,跟踪这个Hello World级别的源码一步一步调试追踪,他是如何发起和建立连接的,底层的代码流程是什么样的。


4、抓大放小,边写注释边画图

在看源码的过程中,很多人会被核心流程中混杂的一些特殊业务逻辑的处理给搞懵。

给大家举个例子,看下面的代码,是一段随手写出来演示的:

checkUser();

fetchFromPeers();

countMetrics();

大家可以看到,上面就三行代码,从方法名称就可以看出来,先是做了一个权限检查之类的操作,然后是核心业务逻辑去抓取数据,最后是做了一些metric指标统计。

那么很多同学看源码的时候,就喜欢把每一行代码都看懂,最后不停的点到很深层的地方去,把自己给绕晕了。最后淹死在源码的海洋里。。。


其实这个是不对的,这就是没有掌握源码阅读的一大典型原则:

抓大放小

比如上面的三行代码,你应该直接跳过第一行和第三行,连看都别去看,直接进入第二行核心逻辑。

也就是说,你只需要抓最核心的代码流程就可以了,那些无关紧要的代码,千万别有强迫症点进去反复看,那样绝对会让你对源码从入门到放弃。

图片

但是坚持这个事情同样是很可怕的,一旦你坚持做到了,那么你将锻造出来自己最硬核的技术实力,远远不是普通人,或者刚毕业的年轻同学可以追上你的。技术深度、技术功底,这是每一个工程师最最硬核的技术实力。

希望各位同学可以从现在开始,尝试着用笔者分享的技巧阅读源码。跳出舒适区,去拥抱更大的舒适区。

真正体验一下读透源码之后,根据报错日志,从源码层面精确定位项目问题、精确制导线上bug,感受一下这种上帝视角解决问题的快感吧!


另外推荐儒猿课堂的1元系列课程给您,欢迎加入一起学习~

互联网Java工程师面试突击课(1元专享)

SpringCloudAlibaba零基础入门到项目实战(1元专享)

亿级流量下的电商详情页系统实战项目(1元专享)

Kafka消息中间件内核源码精讲(1元专享)

12个实战案例带你玩转Java并发编程(1元专享)

Elasticsearch零基础入门到精通(1元专享)

基于Java手写分布式中间件系统实战(1元专享)

基于ShardingSphere的分库分表实战课(1元专享)

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91719 人正在系统学习中

作为一个工程师结果读不懂英文官方文档,这可怎么办 微信名片 作为一个工程师结果读不懂英文官方文档,这可怎么办

来源:石杉的架构笔记

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月13日
下一篇 2022年8月13日

相关推荐