欢迎光临
我们一直在努力

如何阅读源码

问题导读
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”。

如何阅读源码

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《如何阅读源码》
文章链接:https://www.456zj.com/36089.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址