关于源码学习:聊聊读源码这件事

1次阅读

共计 1731 个字符,预计需要花费 5 分钟才能阅读完成。

前言

对于读源码这件事,每个人心中都有一个哈姆雷特,明天这篇文章聊聊我对读源码这件事的一点高见

为什么读源码

读源码的时候,能够先问一下本人为什么读源码?是为了解决问题,还是单纯只是想理解源码的前因后果,更甚者仅仅只是为了面试,毕竟面试造火箭,不懂点源码,都没法去忽悠面试官

读源码首先要弄清楚本人的读源码的动机,以及通过读源码想达到什么目标

读源码的心态

读源码是一件很干燥的事件,很多时候咱们会因为一时鸡血,翻下源码,而后发现跟看天书一样

如何让读源码不那么干燥,咱们能够先定一个小指标

咱们能够 先把源码拆分成几个小章节,每浏览完,能够给本人处分下,比方玩把游戏,吃个大餐,或者干一下你想做却没做的事件,让大脑失去一个正向反馈,即我做完这个事件,我会失去一些益处。源码有时候干燥,是因为咱们没有失去一个踊跃的反馈,更多时候是

读源码不能抱有浮躁的心态,心急吃不了热豆腐

什么时候适宜读源码

在我看来,读源码是 建设在你对这个源码的编程语言曾经很相熟的状况,比方你想看 k8s 的源码,然而你对 go 语言无所不通,你就一头钻进去钻研,我想你大略前面的终局是

其次是 你曾经对这个源码的基本功能有个分明的认知,晓得他的利用场景,能利用他的一些个性来做一些编码,比方你会应用 spring 的依赖注入,AOP 等

最初你对这个源码曾经产生一点趣味,有钻研的欲望了,而不是他人强制你去读,外在的自驱力以及趣味,是做好事件的原动力

如何读源码

源码分为两种状况

第一种:很多人曾经在钻研的源码

像这种其实没必要一开始就钻进源码看,而是你能够针对你这个源码感兴趣的点,通过搜索引擎查找一下。你也能够通过 processon 搜一下相干的源码图,比方

不过这种有个不好中央,等于是他人把货色嚼碎了再喂给你,你想想那个画面。最初你还得通过源码验证一下 ,因为不确定他人剖析的是不是正确的,而且看源码的时候, 必须得分外关注一下你看源码的版本,比方你看 spring2.5 和 spring5 的版本,会有发现会有很多区别。

间接通过搜索引擎找源码,有个益处就是你能够很快找到你感兴趣调试的源码入口,以及一些绝对比拟外围的代码块。

如果这种大家都钻研过的源码,你也不想通过搜寻找答案,就是只想速成,也有办法的,就是花钱

找个培训机构或者付费教程,基本上这些机构都会教一些支流技术的源码。如果你只想白嫖,也能够去 B 站搜一下

但不管怎样,你排汇这些后,最初还得本人去跟踪调试验证下,因为只有源码不会骗人

第二种:偏门或者新出的技术

如果你钻研的货色,大家钻研比拟少,要么是这个技术不是支流技术,要么就是这个技术将来可能是支流,只是目前受众比拟少。

像这种源码,你也不必急着一开始就钻进源码,而是去官网溜一圈,看看这个技术的一些背景,个性,利用场景,入门案例。基本上每个技术的呈现,是要解决某些问题,而这种技术的呈现,失常会随同和竞品的比照,而这种竞品失常也是大家耳熟能详的货色。比方 redisJson 和 mongdb 的比照。对这个技术有个整体的理解后,你能够看下他们的代码仓是否有提供残缺的 example 或者单元测试,这些 example 失常提供就是这个技术的一个个性能点,你对这些性能点理解后,你就能够通过断点调试,通过调用栈查看相应的类。具体调试你就能够间接通过在单元测试或者提供的 example 那边打断点

总结

看完源码后,最好能造成一张源码常识地图,以便后续查阅。

聊完源码后,我说一点题外话,原本这篇文章是对之前自定义 spi 文章的收尾总结,前面是因为有敌人说想晓得我是怎么读源码的,就罗唆写一篇文章。我很少写这种实践的货色,心愿对大家有一点帮忙。

上面贴一下我那个 spi 我的项目 demo 链接以及自定义 spi 相干的文章

demo 链接

https://github.com/lyb-geek/springboot-learning/tree/master/springboot-spi-enhance

自定义 spi 相干文章

1、聊聊如何实现一个反对键值对的 SPI

2、聊聊如何实现一个带有拦截器性能的 SPI

3、聊聊自定义实现的 SPI 如何与 spring 进行整合

4、聊聊自定义 SPI 如何应用自定义标签注入到 spring 容器中

5、聊聊自定义 SPI 如何与 sentinel 整合实现熔断限流

正文完
 0