关于阅读源码

简介: 【1月更文挑战第12天】关于阅读源码

关于阅读源码的话题,可以说从上学的时候接触的编程语言开始,就一直伴随着我们。不管是上学时代老师说,有机会了要多看看优秀框架的源码;或者是工作了,同事或者朋友说,有时间了多看看开源项目的源码;再或者,你去线上的或者线下的技术分享会了,分享人也会时不时提到要多阅读源码。所以说关于阅读源码的话题,一直是伴随着我们的。

为什么阅读源码

可以说阅读源码就像读书一样,如果只是自己摸索,知识的积累往往会异常缓慢。而通过读书,可以快速的学到自己想要学习的知识。那么通过阅读源码,你也可以快速的丰富自己的知识架构和体系,从而提高自身的技术实力。

但是阅读源码需要一定的编程基础,并不建议你从一开始接触编程就上手阅读源码,因为此时你并没有形成自己的知识结构,盲目的阅读源码可能并不能收获你想要的内容,可能还会加深你的理解难度。当你的知识或者说工作经验有一定的积累之后,这个时候你在阅读源码时可以加入日常工作中遇到情况的分析,对于你理解源码,理解源码结构都会很有帮助的。

实战过程中,有通过阅读源码突破瓶颈的经历吗

工作过程中,虽说大部门时间都是自己根据理清业务思路写代码,但是大部分企业的项目开发都会采用开源架构,那么既然你用开源架构,那么工作中一定会有需要去改开源架构逻辑的地方。比如我们日常工作中使用的是若依架构,在最初接入项目的时候,由于需要用到单点登录系统,但是又需要保留若依架构的shiro权限认证,因此就只能基于若依架构的基础上对若依源码的权限这块做改造,正如这样

image.png

image.png

当然,除了对若依架构shiro权限认证相关的改造,还改造过单点登录系统的源码。当时是由于原有的nginx会话保持策略ip_hash需要去掉,改为轮询,为了保证用户端的无感切换,在阅读单点登录源码的基础上通过对SSO单点登录系统验证码、LT存入redis,及补偿service的操作更加深入的了解单点登录系统登录流程,大家感兴趣的可以去看我的博文:https://developer.aliyun.com/article/842077

对于很多人来说“读源码太枯燥了,没啥意思”

是的,阅读源码这个事对于很多人来说确实太枯燥无趣了,但是这就是一个学习的过程,而伴随着学习过程中的痛苦,在学习结束之后的收获也就会更加甜蜜,这就是先付出才会有收获。很多时候如果不用阅读源码也可以学习到他人的架构思想以及内部运行原理,那么可能就不会有人去阅读源码了。但是这是不现实的,想要提升自身编程能力,提高自身排查问题、解决问题的能力,那么就一定需要阅读优秀源码。阅读源码除了可以提高你自身的编码技巧和逻辑思维能力,还可以帮助你从源码出发快速定位问题所在,分析原因并找到解决方案,源码中的创新点和最佳实践同样可以激发你的技术创新等等,总之就是阅读源码,一定是值得的。

阅读源码有哪些好方式与好步骤呢

个人理解的阅读源码的好方式就是你debug跟源代码,正如我当时改造单点登录系统源码时,一步一步debug源码,最终才解决了遇到的问题。解决问题的同时,对于单点登录系统的业务逻辑以及运行流程也就完全熟悉了,那么以后即使再需要改造,想来也就不会耗时太久了。

除了debug源码,还有就是可以通过在日常开发中用到的jar包方法注释来了解,正如这样

image.png

日常的开发工具,比如idea,当你打开jar包代码方法时,想要查看源码的话可以通过右上角【Download Sources】下载源码

image.png

下载完成之后再次打开你想要看的源码就可以看到注释信息了

image.png

最后,希望大家有时间的话都可以看一些日常工作中用得到的框架的源码,这样在框架代码出现问题时,也可以快速定位处理,提高自身分析问题处理问题的能力。

相关文章
|
设计模式 JavaScript 前端开发
|
JavaScript 程序员 API
程序员为什么会在开发中阅读源码?
作为程序员的大家想必都会在开发的时候,去阅读源码。在实际开发中,开发者经常需要阅读和理解源代码,阅读源码是一种非常有用的技能,它可以帮助程序员更好地了解代码、解决问题、学习新技术和提高编码能力。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,这被看作是对技术深度理解的一种体现,它能提高我们对技术的理解程度。结合阅读《Node 中的 AsyncLocalStorage 的前世今生和未来》这篇文章之后,我深刻体会到了作为开发者阅读源码的重要性和必要性。通过阅读这篇文章,我对 AsyncLocalStorage 的实现原理和使用方式有了更深入的理解
236 3
程序员为什么会在开发中阅读源码?
|
缓存 算法 安全
程序员写代码为什么要阅读源码?
阅读一篇技术文章,畅聊一个技术话题。本期文章推荐的是《Node 中的 AsyncLocalStorage 的前世今生和未来》,一起来聊聊开发者阅读源码的这件事。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,可以对技术深度的理解,也能提高对技术的理解程度。然而,仅仅阅读源码并不能代替实践操作,因为通过实践,可以更加全面的理解代码的深度和进展。
156 1
|
消息中间件 网络协议 Java
eventMesh源码学习
eventMesh源码学习
212 0
|
安全 Java
ReentranLock源码学习
线程的三大特性:原子性、可见性、有序性。也就是说满足这个三个特性的操作都是可以保证安全的,如Atomic包、volatile、通过happensBefore原则可以进行线程的安全的判断,这个依据通常是为了避免jvm指令重排。比如通常我们知道的配置信息,如果有多个线程去进行配置信息的修改,则需要进行上锁。或者多个线程修改一个变量时,此时就需要进行上锁了,或者读写分离时,可以考虑ReentrantReadWriteLock等。其本质是解决并行中的问题,将并行转成串行问题进行解决。那怎么上锁才有用呢?锁的状态大部分情况下是互斥的。当然也有特例:ReentrantReadWriteLock的读读是不会
97 0
ReentranLock源码学习
|
设计模式 分布式计算 资源调度
如何阅读源码
如何阅读源码
216 0
|
存储 人工智能 安全
C++学习必备——文章中含有源码
C++学习必备——文章中含有源码
122 0
C++学习必备——文章中含有源码
|
分布式计算 搜索推荐 前端开发
学会阅读源码后,我觉得自己better了
学会阅读源码后,我觉得自己better了
193 0
|
前端开发 Java 数据库连接
阅读《不止代码》之心得分享
阅读链接为:https://102.alibaba.com/downloadFile.do?file=1530517140411/Codelife.pdf 强烈推荐读一读 我大致浏览过一遍+重新选了几篇文章细看了一遍,有如下体会。
2124 0
|
人工智能 算法 NoSQL

相关实验场景

更多
下一篇
DataWorks