栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何阅读源码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何阅读源码

问题导读
1.阅读源码不同的情况该如何阅读源码?
2.如果为了面试,该如何快速懂得源码?
3.阅读源码的难点在什么地方?

为何要阅读源码?可能原因如下:
1.面试要求
2.提升编码能力

在面试中,我们经常被问到,读过Java、Hadoop或者Spark、Flink源码吗?这时候我们可能就想着,既然要考,那就读读源码吧,可是读着读着就读不下去了,因为花费了很多时间,却读不懂,一无所获。

这里针对我们不同的需求,给我们不同的解决方案。


1.面试要求
如果因为面试,去阅读源码,其实我们可以借助外力,帮助我们,比如通过阅读源码的书籍、视频。

2.提升编码能力
需要下下功夫、花时间

其实很多人阅读困难,刚开始都是比较困难的,所以即使我们提升自己也可以先看看相关的书籍、视频、文档等。然后还有一个通用的技巧,那就是“倒推验证”,怎么个倒推验证,我们一步步来,下面我们详细介绍。

1.面试阅读源码
为了面试阅读源码,如果我们采用传统的,按部就班的去搭建环境,调试等,这样的想法和执行。存在问题如下:
1.时间来不及:
面试是当前就需要,可是阅读源码,没有几个月是搞不定的,所以很可能还没开始,就已经结束了,

2.刚开始遇到较多的问题:
在搭建环境、编译源码的时候,就会遇到各种问题,浪费几天的时间,可能环境都没搞定,最终得出结果,阅读源码太难,不可能达到。

3.准备不足
阅读源码,了解项目背景对源码阅读是非常重要的,比如项目说明文档、版本更替等。如果对这些了解,对于代码的理解也容易很多。

4.知识积累不足
如果我们是刚毕业,只知道变量、类,做过简单的项目,然后就去阅读比如Hadoop源码,肯定是搞不定的,因为这里面可能会涉及到多个设计模式,各式各样的函数、偏函数、匿名函数等使用、类、接口、抽象函数等,以及为了具备更好的移植性、方便修改等,会有各种配置文件、配置项等,还有比如代码的混合使用,Java中使用C、Scala等等,没有深厚的功底,这些会让我们头痛不已。

上面都是我们阅读源码的绊脚石,我们一个个去搬开,会花费相当长的时间,如果只是像单纯的应付面试,我们可以查看相关阅读源码的书籍:
比如
Flink,可以看下《Flink内核原理与实现》


Java,可以查看《通用源码阅读指导书》
Hadoop可以阅读《大数据处理系统:Hadoop源代码情景分析》
想获取上面两本书籍也可以加微信w3aboutyun获取,附上“源码”

2.提升编码能力
阅读源码,对我们的编码能力提升还是比较大,就像我们搞 研究,是需要看一些文献。所以阅读源码多了,我们在代码能力、代码功底就会有很大的提升。

我们在阅读代码前,首先是需要对你所阅读的代码有一个整体的认知,就比如我们阅读Hadoop源码。2008年1月,Hadoop成为Apache顶级项目。到现在2022年,已经发展了14年了,所以我们正确的认识到,我们行业顶级精英,天才级别的大神,写了14年的Hadoop项目,我们想花费多长时间来去读懂、读透。

显然我们想一周、两周、两个月来读懂读透,这是不大可能的,所以这是为什么很多的同学,在阅读源码的时候,还没有开始就已经结束的原因,很多是因为没有正确认知项目的发展和积累。这有点像我们刚会识字或者写作文,就让我们去看四大名著,而且像快速看完,这显然书达不到的。
在我们对源码有了整体的认识后,接着我们就要具体的去研读源码,那么该如何阅读源码,阅读源码的步骤:

1.首先了解项目背景
前面我们已经涉及到,项目背景是非常重要的,比如Hadoop,我们是否对他所了解。Hadoop为何产生,是为了解决在大数据量的情况下,单机很难计算和处理的数据的情况下,所以产生了价格和成本都非常昂贵的超级计算机。所以有的人就想如何通过廉价的普通的计算机来实现计算大数据量,所以Hadoop应运而生。Hadoop又分为Hdfs、Yarn等组件,当然这里面又会细分,我们了解的越详细,对我们阅读源码越方便和快捷。

2.了解项目功能、结构
了解项目功能、结构,比如哪些是通用部分,哪些是功能部分。所以这里我们需要一定猜测,这个猜测我们同样需要去验证。有的大神称其为““正向推导+验证””,这里其实也和我们的学习方法和思维关联。我们在学习比如当前的源码,你的学习思路是什么?是一直跟着文件或者文档的思路去学习,还是自己提前有一定的想法,然后去文档或者文件中去验证自己的想法,这二者的学习效果和速度是不一样的。

3.调试代码
调试代码,很多同学卡在了这里,因为跟踪代码的时候,跳来跳去,就整蒙了。要么不知道为何会跟踪到这里,要么跟踪到这里,不认识它,总之很多同学到这里有的就放弃了。

所以在这里我们该如何破解这个关卡?
1.掌握整个代码的流程走向
2.掌握类之间的主次、依赖关系
3.摸清架构层次,整体把控

4.阅读由易到难
先阅读基础模块,然后阅读依赖较多的模块。我们在刚开始阅读文档,就想去攻克难点,这样会非常容易让我们放弃,所以其实这也是做事的策略和方法。

5.总结
我们在阅读完源码后,去总结从代码深度,到类与类之间的关系,总结出代码的逻辑和实现逻辑。这样达到我们读懂源码的目的。

-----------------end-------------

2022年为了更好的帮助大家跳槽,让我们和志同道合的朋友一起得交流技术和源码,相互分享。打算找工作的同学可以加入,金三银四找工作群:【时间有效3月和4月】

1.周末给大家交流探讨面试【开会或者直播】

2.分享面试相关内容和帮助名企内推。

扫码可加入

目前群已经达到人数限制,不能加入,可联系微信w3abotyun,附上“34”。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769629.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号