为了账号安全,请及时绑定邮箱和手机立即绑定

程序员阅读源码的意义

标签:
Java

一、源码对程序员的一个重要性

首先明确一件事情,源码,不是谁想读就可以读的。

 

行业里,读过一些源码的,可能就10%~20%,但是大多数仅仅停留在了解一点点源码和原理的程度。

 

有能力自主透彻阅读源码,深入吃透源码,化为自己的技术功底,而且运用到自己的项目里的,整个行业内,不足1%。

 

所以源码实际上是码农技术水平的分水岭。

 

那么阅读和分析源码的意义在哪儿?

 

二、源码阅读的意义

2.1 技术功底

当你阅读了一个技术的源码之后,你的技术功底会得到大幅度的提升。

 

比如说seata分布式事务源码,你阅读了seata的源码之后,你对分布式事务技术架构的底层原理、架构设计、核心思想都了如指掌了,那么以后如果再出个啥啥啥分布式事务的相关的技术,你绝对很快就能上手,而且很快就可以自己去阅读那些细节技术的源码。你的技术功底决定了你的学习能力,技术功底越深厚,以后你不断学习新技术的能力、速度以及深度就越强,扎实的技术功底是保证你不断跟进新技术的基础。

 

而且技术功底一旦扎实了,比如你阅读了spring cloud的源码,后面你再读zookeeper、kafka、rocketmq其他技术的源码,因为你深厚的技术功底,都会轻松和顺利很多。

 

否则如果你从没读过什么源码,对每个技术的学习就是仅仅会用,使用,浮于表面,那么以后对其他的新技术,你又是从头再来一遍,你对新技术的学习速度和深度都会很差,学习的很慢,而且对任何技术都无法深入研究。

 

2.2 hold住全场

阅读一个技术的源码,最直接的效益,就是你在公司里,直接会成为这个领域的专家级的人物。因为尤其我们在大公司里,因为访问量和数据量太大了,用的一些技术经常各种出问题,比如说spring cloud框架在每天几百亿次请求下,也许某个地方的一个bug立马暴露出来,导致系统异常。那么此时,就必须要有那种对这个技术精通源码的专家,才可以立马根据异常,从源码级别分析和定位问题,然后从源码角度出发给出问题的解决方案。

 

如果你不精通源码,一个技术出问题的时候,你就是盲人摸象,在哪儿瞎猜,百度,各种瞎试,有些工作过很多年经验丰富一些的人,可能就连蒙带猜把问题给解决了。但是有的时候这问题解决了,你自己心里都心虚,或者自己也有点不知所以然。

 

所以我们在大公司里,引入一个新技术的流程,就是首先得派一个技术专家级别的人,去研究那个技术,至少核心源码都读一下,一般一个技术专家级别的人,做到这一点,大概一两个月就够了。

 

一两个月之后,这个新技术就可以投入生产环境使用,如果出问题,那个人可以从源码级别来解决,我们根本不担心。

 

2.3阅读源码之后架构设计能力的提升

首先,要知道,最优秀的那些开源技术,都是全世界最最顶尖的各种技术大牛写的,他们写的框架和系统,都是他们多年的技术积累和功底,才能写出来的。所以如果你去读各种知名开源框架或者系统的源码,相当于就是在学习人家设计框架、设计系统的设计思想,同时可以学习人家设计出来的大型框架或者大型分布式系统的架构设计。

 

如果你读了大量的开源项目之后,你的系统设计能力会得到大幅度的增强,你会不由自主的今后在自己设计系统的时候,将人家的各种架构设计理念、核心技术实现、复杂实现机制都学习后,应用到你自己的系统中去。

 

在这个层面上,你自己负责设计的系统,会设计的越来越好,而且你看过大量的别人设计的优秀系统之后,也能够让你有能力去设计优秀的系统。

 

否则,很多人,如果没读过什么源码,那么最后系统设计能力实际上是很弱的,因为完全凭借自己的很多年自己闭门造车的一些经验和思想在设计系统,那么始终设计不出来什么太好的系统架构。

 

2.4 职场竞争力

看完了一二三点,就会发现,读源码有很多的好处,最近的好处,就是立马可以让你秒变公司里、行业里这个领域的专家,出问题绝对能搞定;远一点儿的,就是以后学习新的技术,绝对会事半功倍;再远一点儿的,以后你设计系统,立马会不由自主吸收人家思想,自己设计的系统会越来越好。

 

这都是内功,慢慢积累出来的,但是你积累多了,量变产生质变,你的技术实力就跟普通人完全不一样了。你会发现你在公司里是顶梁柱,有问题人家都得来找你,公司里公认你是技术大牛;而且你学习新技术特别快,出了新东西,一周熟悉,一个月读完源码,精通;同时你发现你的系统设计能力越来越得心应手,因为你看过人家大量的系统是怎么设计的,自己设计的时候也非常的有章法,绝对不是那些年轻的生瓜蛋子可以比的。

 

最后一点,就是在职场上,你综合上面的一二三点,是不是发现你在公司里的职场竞争力很强悍?绝对不是一般人可以比的。同时你出去面试,有没有发现你成为了行业里的top 10%?你的简历各种精通和源码,面试的时候跟面试官侃侃而谈,而且人家也会认可你的技术功底。对不对?

 

这就是你的综合职场竞争力。

 

 

本套课程源码讲解思路

       Seata模式主要包括 at模式 tcc模式 saga模式 XA模式. 这两个模式就不讲解源码了,因为其实AT模式和tcc模式已经满足了市面上90%的分布式事务的业务场景了, saga,xa用的场景十分的少,所以我们没必要花大量的时间去研究工作中用不到的东西,我们只需要了解特性,以及能上手这些模式就行了。

 

剖析思路就是 抓大放小的原则,你要知道源码的代码量是非常多的,不可能花很多的时间去一点点去讲解每一行代码,那不现实,我们学习源码要抓住核心脉络,抓核心重点,那些边角料的代码可以先放一放,因为不是我们关注的重点。

抓大放小主要包括以下几点

1.先使用:先看官方文档快速掌握框架的基本使用

2.抓主线:找一个demo入手,顺藤摸瓜,快速静态看一遍框架的主线源码(抓大放小),画出源码主流程图。切勿一开始就陷入源码的细枝末节,否则会把自己绕晕

3.画图做笔记:总结框架的一些核心功能点,从这些功能点入手。深入到源码的细节,边看源码边画源码走向图,并对关键源码的理解做 笔记,把源码里的闪光点都记录下来,后续借鉴到工作项目中。理解能力强的可以直接看静态源码,也可以边看源码边debug源码执行过 程,观察一些关键变量的值

4.整合总结:所有功能点的源码都分析完后,回到主流程图再梳理一遍,争取把自己画的所有图都在脑袋里做一个整合

5.静态看源码,作图,做笔记。

 

后面我们学习AT模式和TCC模式,主要的一点你要拎清楚他的第一阶段和第二阶段主要都干了那些事情。正常流程是怎么是提交的,异常流程是怎么去回滚的。另外学习源码,不要去为了学习源码而学习。我们要学习那些大牛的源码底层思维,设计模式,这样的话才能提升我们的内功。其实你学习源码学多了之后,思路也就广了,以后设计架构,包括出解决方案的时候,你就知道怎么设计架构合理了。

 


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消