Jdk源码分析

文章40 |   阅读 10692 |   点赞0

来源:https://yumbo.blog.csdn.net/category_10384063.html

论源码阅读的必要性。JDK14SourceCodeInterpretation

x33g5p2x  于2021-12-18 转载在 其他  
字(2.0k)|赞(0)|评价(0)|浏览(191)
论源码阅读的必要性

自己曾经学过很多技术框架,学着学着,有些时候就会困惑。①为什么要学这些技术框架?
  在大学这几年,我一直坚持每天学习,学着学着感觉市面上的框架基本上都学完了,至少在技术方面上已经不再是一个问题了。
随着自己技术水平的不断增加,越发的觉得技术底层的原理重要性。

很多时候我也有疑惑,同样敲代码,凭什么人家能拿高薪,凭什么人家叫高级java开发工程师?
自己与其他人的差别到底在哪里,框架用的六不六?

细想一下,框架使用的灵活不灵活并不能说明一个人的能力。

学习框架的时候你是否也有疑问②框架应该学到什么程度才算掌握?

相信这个问题其实在面试的过程中就会被反复的体现。很多同学在面试的过程中都会被问到一些框架底层,如果准备的不充分,很可能就答不上来。

个人对框架的认知

根据自己对于框架的理解,个人认为框架应当分层次来体现自己的掌握程度:

  1. 第一层、helloworld的基础案例
  2. 第二层、思考框架的底层运行原理
  3. 第三层、主动看源码,验证一下自己对于原理的推论,看下人家是如何实现的
  4. 第四层、自己开始造轮子,自己写框架

其中第3层是最重要的环节,也是最耗时的过程。第4层需要第3层的基本功。

笔者认为 看源代码是最能学习的一个过程。

③为什么要看源代码?看源代码有什么好处?你是怎么看源代码的?是不是有这些疑惑?

应该怎么学习呢?看源代码有什么方法?

笔者认为,看源码是有方法的。我来讲一讲这些问题的答案。

之所以看源代码是因为自己对于学习的一种追求,知其然知其所以然。

看源代码的好处有很多,不仅仅是为了掌握框架的运行机制,更多的是一种学习,看人家是如何实现这个功能的,看下人家的代码是怎么写的。用到了那些设计模式(设计技巧 更好理解)帮助我们去实现这样一个功能,实际上很多时候作者没有想过要用什么设计模式,作者认为这样做更好实现,当然也有遇到一些作者之前遇见过这种场景,认为这样做能更好的实现,因此就这样设计(实际上这种状态就是一种融汇贯通的状态。将设计模式轻而易举的用到了项目代码中)。

初期学者应当多积累一些经验,主动的去学习一些设计模式,去理解,随着积累到一定层度,自然就会体现出个人能力的提升。实际上这个过程是比较漫长的。

当你看了一定量的源代码,会发现是一种愉悦的感觉,因为学习他人优秀代码能够让你变的比其他人更优秀。侧面的体现就是成为别人眼中的大佬,拿着高薪快乐的活着。

说实在的自己并没有看过很多开源框架源代码,对于很多框架的理解都只在第二层、思考框架的底层运行原理。一方面是自己确实没有那么多时间研究(年轻)。

在学习源码的选择中 我疑惑我应该学习那些框架源代码呀?难不难啊?自己能不能搞定?

作者忠实的建议,也是我个人的理解

以自己为例,我自己一直想学习大名鼎鼎的spring、mybatis、mybatisPlus、netty。我猜测你和我一样也想拿高薪。

确实掌握这些技术能让你涨工资,确实可以和工资等价。懂得越多,越说明你技术水平越高,自然薪酬也越高。

但我不准备从这些框架入手,因为我认为很多人学习都舍本逐末,基本功都没打扎实,就想着快速得拿高薪。

高楼大厦怎么能没有扎实的地基呢?

我认为很多人学习java并没有将java学透,都只是把java当做一种工具,从来没有好好的认识java,也没有好好的学习java。

自己问下自己,java 你学好了吗,已经掌握它了吗?

怎么学好java?

笔者认为,不说别的,至少对于jdk本身写好的那些常用 java 类库一定要熟悉。
juc、IO、常用的类,在开发过程中用的比较多的就是java.util包下的子包及其子类。
java.lang包下有反射、常用的包装类源码。

java中主要的知识点为并发、io、集合框架、函数式接口(java8)、响应式流以及后续的一些新特性。这些新特性能帮助你提高开发效率,可读性,性能等多方面的提升,所以java整体要有一个感知,不能一直停留在java8。

自己曾经花过一段时间研究过jdk源码,看过juc常用类源码基本上都是逐行解读,去推测作者下一步的设计,去推测运行原理。

JDK14SourceCodeInterpretation

这个项目是我经过了一段时间专门研究过的一些内容,后面展示部分研究内容。想要完整的可以去github下面去clone项目,以及观看我左侧的博客专栏。

项目地址:https://github.com/1015770492/JDK14SourceCodeInterpretation

部分源码展示:
1、AbstractQueuedSynchronizer源码
配套博客AQS解读:以ReentrantLock的非公平锁为例深入解读AbstractQueuedSynchronizer源码

2、LockSupport源码
配套博客LockSupport解读:LockSupport

3、ReentrantLock源码

4、ReentrantReadWriteLock源码

更多信息,下载项目源码即可,以及观看我的 JUC专栏

相关文章