在阅读源码以前,咱们要有必定程度的技术基础的支持。html
假如你历来都没有学过Java,也没有其它编程语言的基础,上来就啃《Core Java》,那样是很难有收获的,尤为是《深刻Java虚拟机》这类书,或许别人以为好,可是未必适合如今的你。程序员
好比设计模式,许多Java源码当中都会涉及到。再好比阅读Spring源码的时候,势必要先对IOC,AOP,Java动态代理等知识点有所了解。web
强烈的求知欲是阅读源码的核心动力!面试
大多数程序员的学习态度分为以下几个层次:算法
大多数程序员的层次都是在第一层,到第五层的人就须要有强烈的求知欲了。spring
经过阅读源码咱们能够学习大佬的设计思路,技巧。还能够把咱们一些零碎的知识点整合起来,从而融会贯通。总之阅读源码的好处多多,想必你们也清楚。sql
可是真的把那么庞大复杂的代码放到你的眼前时,确定会在阅读的过程当中卡住,就如同陷入了一个巨大的迷宫,若是想要在这个巨大的迷宫中找到一条出路,那就须要把整个迷宫的总体结构弄清楚,好比:API结构、框架的设计图。并且还有理解它的核心思想,确实很不容易。shell
刚开始阅读源码的时候确定会很痛苦,因此,没有足够的耐心是万万不行的。数据库
团长也是经历过阅读源码种种痛苦的人,算是有一些成功的经验吧,今天来给你们分享一下。编程
若是你已经有了一年左右的Java开发经验的话,那么你就有阅读Java源码的技术基础了。
能够从JDK的工具包开始,也就是咱们学的《数据结构和算法》Java版,如List接口和ArrayList、LinkedList实现,HashMap和TreeMap等。这些数据结构里也涉及到排序等算法,一箭双雕。
面试时,考官总喜欢问ArrayList和Vector的区别,你花10分钟读读源码,估计一生都忘不了。
而后是core包,也就是String、StringBuffer等。 若是你有必定的Java IO基础,那么不妨读读FileReader等类。
建议你们看看《Java In A Nutshell》,里面有整个Java IO的架构图。Java IO类库,若是不理解其各接口和继承关系,则阅读始终是一头雾水。
Java IO 包,我认为是对继承和接口运用得最优雅的案例。若是你未来作架构师,你必定会常常和它打交道,如项目中部署和配置相关的核心类开发。
读这些源码时,只须要读懂一些核心类便可,如和ArrayList相似的二三十个类,对于每个类,也不必定要每一个方法都读懂。像String有些方法已经到虚拟机层了(native方法),如hashCode方法。
固然,若是有兴趣,能够对照看看JRockit的源码,同一套API,两种实现,颇有意思的。
若是你再想钻的话,不妨看看针对虚拟机的那套代码,如System ClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源码Zip包只有10来M,它像是有50来M,Sun公司有下载的,不过很隐秘。我曾经为本身找到、读过它很兴奋了一阵。
步骤:表结构 → web.xml → mvc → db → spring ioc → log→ 代码
固然了,就是Spring、MyBatis这类框架。
在读Spring源码前,必定要先看看《J2EE Design and Development》这本书,它是Spring的设计思路。注意,不是中文版,中文版彻底被糟蹋了。
想要阅读MyBatis的源码就要先了解它的一些概念,不然云里来雾里去的什么也不懂。有不少人会选择去买一些书籍来帮助阅读,固然这是可取的。那么若是不想的话,就能够去官网查看它的介绍(MyBatis网站:http://www.mybatis.org/mybati...)。
没有人一开始就能够看得懂那些源码,咱们都是从0开始的,并且没有什么捷径可寻,无非就是看咱们谁愿意花时间去研究,谁的求知欲更强烈,谁更有耐心。阅读源码的过程当中咱们的能力确定会提高,能够从中学到不少东西。在咱们作项目的时候就会体现出来了,的确会比之前顺手不少。
分享免费学习资料
针对于还会准备免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
为何某些人会一直比你优秀,是由于他自己就很优秀还一直在持续努力变得更优秀,而你是否是还在知足于现状心里在窃喜!但愿读到这的您能点个小赞和关注下我,之后还会更新技术干货,谢谢您的支持!
资料领取方式:加入粉丝群963944895
,私信管理员便可免费领取