ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

聊聊读源码这件事

2021-12-21 09:31:19  阅读:184  来源: 互联网

标签:自定义 SPI 有个 spi 源码 聊聊 这件


前言

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

为什么读源码

读源码的时候,可以先问一下自己为什么读源码?是为了解决问题,还是单独只是想了解源码的来龙去脉,更甚者仅仅只是为了面试,毕竟面试造火箭,不懂点源码,都没法去忽悠面试官


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

读源码的心态

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

如何让读源码不那么枯燥,我们可以先定一个小目标

我们可以先把源码拆分成几个小章节,每阅读完,可以给自己奖励下,比如玩把游戏,吃个大餐,或者干一下你想做却没做的事情,让大脑得到一个正向反馈,即我做完这个事情,我会得到一些好处。源码有时候枯燥,是因为我们没有得到一个积极的反馈,更多时候是


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

什么时候适合读源码

在我看来,读源码是建立在你对这个源码的编程语言已经很熟悉的情况,比如你想看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整合实现熔断限流

标签:自定义,SPI,有个,spi,源码,聊聊,这件
来源: https://www.cnblogs.com/linyb-geek/p/15699484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有