源码分析(领航篇)
以下只是本人学习中得到的经验,后续会不断更新
如果读者有更好观点可以评论沟通,大家互相学习进步😄😄😄
源码,这对很多人来说,包括以前的博主本人,都是天书般的存在😭
大家在刚开始接触编程的时候,肯定天天听大佬说要多看源码,吸收前辈的思想
我们都知道看源码对自己提升有帮助,但是就是不敢看,怕看不懂
想一想,为什么我们看不懂?
废话,那还不是因为不会吗!
那我们看源码的目的是为了什么?
吸收前辈思想,看懂源码
so?源码你都懂了还看啥看
要知道,好事多磨 ,源码是前辈反复打磨,留给我们的宝贵的学习资源
我们不花时间去磨,怎么可能看懂精髓
博主发现在掌握了一些技巧后,会很大程度上帮助我们分析源码
我的源码分析专栏的文章也大体是按照这些技巧来分析的
如何学习一门技术
学习一项技术我觉得有两个方向
第一个方向就是从使用到底层
首先我会使用这个工具了,在有使用经验的前提下去看原理,可以结合现象和代码,会更容易接收一点
第二个方向就是先学会底层原理接着去使用
这条路很难,相当于让你先学会跑步,再学会走路,难度可想而知
如果没学过这部分的知识,想靠看源码学会这个知识,那是特别难的
当然,如果你愿意挑战并且挑战成功的话,那使用这门技术对于你来说就是小case啦😄
分析类三板斧
盘继承体系
如何快速看这个类的继承体系
也是一个技巧,这可不是在源码里面点来点去
先找到这个要分析的类,选中类名,右键选择最后一项diagrams,就可以了
接着点show diagram
分析
一个类如果孤零零一个,那分析起来是相对简单的
它不会涉及到子调父,父调子之间的方法调用
所有的方法都是在这个类内部
但是这种情况比较少
以下这种情况比较多🤩🤩
从一个类的继承体系可以知道以下这些信息
1、它有哪些主要父类
2、实现了哪些重要接口
内部类
如何快速查看
ALT + 7
唤出类结构标签页,就可以很方便的看到它有哪些内部类了
内部类一般都是这个类封装的对象,有的是对外开放的有的是不对外开放的,可以在内部类类名前的那把小锁看出来
绿色的打开的锁就是对外开放的,红色的锁起来的锁就是不对外开放的
比如在ThreadPoolExecutor
中
AbortPolicy
、DiscardPolicy
、DiscardOldestPolicy
、CallerRunsPolicy
都实现了RejectedExecutionHandler
接口,这些实现类是对外开放的
Worker
是封装了对Thread
的一些操作,没有对外开放
成员变量
这个也可以通过ALT + 7
查看类结构快速查看
成员属性多重要就不用我说了吧
戒贪
磨源码千万要 戒贪
只看核心代码,自动忽略try catch和日志相关代码
分析框架三板斧
找入口(最关键)
框架为我们搭好了一栋大厦
第一步要做的就是要先找到进入这栋大厦的门口,然后才可以开始探究它的内部结构
不然只能做门外汉
这一步可以是靠自己分析出来,比如SpringBoot的入口
就两地方有代码
@SpringBootApplication
是自动装配的入口
SpringApplication.run
是启动的入口
再比如Spring的入口
那就是这个构造方法了呗
入口实在找不到的话就去搜一下
打断点
在入口打好断点,一步步走
这时候需要去靠直觉判断这个方法调用重不重要,觉得不重要就不需要点进去看执行细节了
好好利用这四个按钮