序言:目前有个计划就是准备看一下源码,来提升自己的技术实力。同时现在好多面试官都喜欢问源码,问你是否读过JDK源码等等?
针对如何阅读源码,也请教了我的老师。下面就先来看看老师的回答,也许会有帮助呢。

我很尊敬的一位老师,他姓唐,算是我入门编程的启蒙老师,有10多年的C/C++开发经验,我有幸跟着老师的C++/C课程,自学完,而且还学了数据结构。他的讲课很有风格,幽默风趣,有条有理,深入浅出。

不过后来,我决定走Java这条不归路。

我向老师请教了一个问题:关于如何阅读源码的问题?不乏味,思路清晰。就像他的课程一样,基本上很少会有疲倦,枯燥的感觉。

唐老师,回答道:读源码是要建立在你的基础经验足够的情况下。否则很容易看不懂

我继续又问:那对于刚刚想尝试去读源码的同学来说,有没有一些建议呢?我尝试着读了一些,但感觉很无厘头。

唐老师,回答道: 读源码是要读和你水平相匹配的。好多人好高骛远,简单的,能读懂的不屑, 想读的,又读不懂,高不成低不就。我的建议是从教学型项目读起。

小插曲:有位朋友说,源码写的就一定比我写的好吗? 哈哈,这回答倒也是刷新我的认知。

另外一位朋友有举例说: 如果读redis源码, 我会先看一本讲Redis原理的书,然后再看源码。

以上就是我这次请教的过程,总结一下:先懂原理,知道一个全局框架,再结合教学型项目或自己写些小案例,再深入源码。


知识在于积累,学习需要耐力。学习就像挖金矿,或许一开始毫无头绪,但转个角度、换换工具,时间久了总会找到一个缝隙。成功就是你比别人多走了一段路,或许恰恰是那么一小步。

有人抱怨: 阅读源码太枯燥、乏味了,看到源码就头晕,无法学下去了。你肯定选择了一条充满荆棘的路。选对方法,你会发现这里是一条充满鸟语花香和欢声笑语的幽径。

我也整理了最近学习源码的一个大致方法,至少这是我实践的一套方法,大家也可以慢慢整理出适合自己的一套方法。

01. 多角度,对比学习。

除了自己去阅读源码之外,比如学习某个类的时候,可以专门结合一些优质的博客针对性的对比学习,并查漏补缺。

02. 制定源码学习计划。

大多数人其实对源码的整体框架没有太多了解,只知道我要学习源码,但却无从下手。那么,制定一个可行性的源码学习计划,对你后面的学习源码会有一个指导性的作用。我在找源码的阅读方法时,偶遇一篇 讲JDK阅读源码顺序,给了我一个学习源码的方向, 也正是我需要的。我后面也会专门分享出来的。

03. 多调试,跟踪源码。

源码阅读,我可以说必须要debug。如果你的大脑够强大,自带编译运行,不需要idea辅助。如果没有,那还是老老实实地把源码导入,自己debug,看一下运行时,代码的逻辑走向是怎么样的。

04. 多交流,请教高人。

交流可以验证和加固自己的知识。只有好处,没有坏处。对于不会的,理解不透彻,也可以向大lao请教,但前提得先自己Google解决一下。

05. 多记录,分享。

我偶尔会有一种错觉,我在学习某项东西的时候,看着一些写得好的博客,这暂且叫碎片化学习,看了也就过了,隔三差五就忘了,又继续回到我的增删改查。然后自己写的时候,写不出那种效果,总担心重复别人的轮子。

只要不是全部复制+粘贴, 加上自己的体会和感觉,再写出来的,那就是你的,独一无二的一份笔记和心得。

-------------------------------------------------- 漂亮的分割线 ----------------------------------------------------------------------------------

如若有好的学习方法,可以留言一起交流学习。

原创不易,转载请注明作者和原文链接。

喜欢的朋友们,可以微信关注或点个喜欢。

JDK1.8源码分析01之学习建议(可以延伸其他源码学习)的更多相关文章

  1. 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器

    1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...

  2. NIO 源码分析(01) NIO 最简用法

    目录 一.服务端 二.客户端 NIO 源码分析(01) NIO 最简用法 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) J ...

  3. Spring源码分析之IOC的三种常见用法及源码实现(二)

    Spring源码分析之IOC的三种常见用法及源码实现(二) 回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplica ...

  4. [asp.net core 源码分析] 01 - Session

    1.Session文档介绍 毋庸置疑学习.Net core最好的方法之一就是学习微软.Net core的官方文档:https://docs.microsoft.com/zh-cn/aspnet/cor ...

  5. dubbo源码分析01:SPI机制

    一.什么是SPI SPI全称为Service Provider Interface,是一种服务发现机制,其本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件.这样可以在运行时,动态为 ...

  6. Spring事务源码分析专题(一)JdbcTemplate使用及源码分析

    Spring中的数据访问,JdbcTemplate使用及源码分析 前言 本系列文章为事务专栏分析文章,整个事务分析专题将按下面这张图完成 对源码分析前,我希望先介绍一下Spring中数据访问的相关内容 ...

  7. Java源码分析:Guava之不可变集合ImmutableMap的源码分析

    一.案例场景 遇到过这样的场景,在定义一个static修饰的Map时,使用了大量的put()方法赋值,就类似这样-- public static final Map<String,String& ...

  8. [源码分析]Java1.8中StringJoiner的使用以及源码分析

    [源码分析]StringJoiner的使用以及源码分析 StringJoiner是Java里1.8新增的类, 或许有一部分人没有接触过. 所以本文将从使用例子入手, 分析StringJoiner的源码 ...

  9. Spring源码分析之IOC的三种常见用法及源码实现(一)

    1.ioc核心功能bean的配置与获取api 有以下四种 (来自精通spring4.x的p175) 常用的是前三种 第一种方式 <?xml version="1.0" enc ...

随机推荐

  1. BFS(一):广度优先搜索的基本思想

    广度优先搜索BFS(Breadth First Search)也称为宽度优先搜索,它是一种先生成的结点先扩展的策略. 在广度优先搜索算法中,解答树上结点的扩展是按它们在树中的层次进行的.首先生成第一层 ...

  2. 统计学习方法9—EM算法

      EM算法是一种迭代算法,是一种用于计算包含隐变量概率模型的最大似然估计方法,或极大后验概率.EM即expectation maximization,期望最大化算法. 1. 极大似然估计   在概率 ...

  3. Oracle 数据库连接不上 登录一直卡死

    在此记录下半个月来,oracle数据库本地神奇地连接不了的事件. 描述下我的情况: (1)使用navicat连接本地的数据库,结果一直卡[正在连接中(无响应)]: (2)使用PL/SQL连接本地的数据 ...

  4. POI 身份证号码 手机号 日期值的处理方式

    private static SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ...

  5. Object.toString()打印“地址”的原理

    Object.toString()打印"地址"的原理 @(java) 首先,打印的绝不是地址 public native int hashCode(); public boolea ...

  6. [国家集训队2012]tree(陈立杰) 题解(二分+最小生成树)

    tree 时间限制: 3 Sec  内存限制: 512 MB 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 输入 第一行V, ...

  7. Scala 函数式编程(一) 什么是函数式编程?

    为什么我们需要学习函数式编程?或者说函数式编程有什么优势?这个系列中我会用 scala 给你讲述函数式编程中的优势,以及一些函数式的哲学.不懂 scala 也没关系,scala 和 java 是类似的 ...

  8. 为使用mock方案测试,而重构代码的小小案例

    import com.sun.deploy.config.DefaultConfig; import javax.security.auth.login.Configuration; import j ...

  9. VSCode 云同步扩展设置 Settings Sync 插件

    VSCode 云同步扩展设置 Settings Sync 插件 Hi.大家好,今天又是美好的一天. 关于 Settings Sync扩展: Settings Sync可以同步你当前的VSCode配置环 ...

  10. python3.5学习笔记(第六章)

    本章内容: 正则表达式详解(re模块) 1.不使用正则表达式来查找文本的内容 要求从一个字符串中查找电话号码,并判断是否匹配制定的模式,如:555-555-5555.传统的查找方法如下: def is ...