这篇文章我们就来讲一讲为什么要看源码,怎么看源码
为什么看源码
面试
随便一个面试无论大小,是不是都会遇到给我讲一下 HashMap 、ArrayList、ConcurrentHashMap 的原理,那么如果你不自己看源码,而是随便从网上看看分析文章,很难体会到其中的奥妙。
设计
很多时候你在自己开发,可能会遇到一些设计问题,绞尽脑汁,也查阅了很多设计模式的入门文章,但是就是不知道怎么设计。那么这个时候你也应该多看看源码。 Spring 里面至少用了 9 种设计模式,那么你熟读了 Spring 的源码,遇到一些设计上面的问题自然可以照猫画虎,后之融会贯通。
掌握
突然有一天有人和你说,你做的 *** 功能出问题了,马上 Debug 一下,发现抛异常的全是代码库里面,一下就懵逼了。那么如果自己深入理解了框架的原理,源码自己了然于胸自然不会担心,分分钟定位问题。
怎么看源码
吹了半天牛逼了,你到底说说怎么看源码嘛?我来分享一下我个人看源码比较高效的一种方式,当然不一定是最佳的方式,如果你有更好的方式欢迎文末留言,一起学习。
知其然
首先当然是拿过来狂搞他的 API,你都不知道怎么用,用来干嘛的,看了源码也没啥用啊。所以第一步是通篇读他的官网[1],然后对着官网的例子把他的用法全部了解并实践。
渐入佳境
这时候 API 想必你已经了解了吧?那么还是看看他的 官网 有没有架构、组件、模块介绍的文章,对整个项目有一个概览,比如最近异常火爆的 Dubbo 他的官网如何设计,如何运作可是说的很清楚。
囫囵吞枣
这时候 API 和 架构你都了解了吧,然后找一个请求的入口 Debug 起飞。配合上一节说的官文,对照自己的 Debug 路线会清晰很多。
知其所以然
然后就可以根据每一个点都做 真人 Debug[2] 和 Debug,假以时日你变打通任督二脉。
封印
看到这里你已经身怀绝技,试问哪一个大侠的武学经典不都是装订成册,流传千古的?所以这时候你找一个本子,把自己的理解画一画,写一写。一定要抱着让别人能看懂的方向去书写,这样不仅可以流芳百世对自己也是另一种精进。
References
[1] 官网: 一定要看他的官网,其他博客和说明文档不全面或者不一定对,比如我上一篇文章MySQL的count性能比较,如果不自己看下源码真的被很多网上的帖子误导
本文地址: