Java工程师阅读源码的一些见解
一、为何阅读源码
就是说,通过阅读源码能给你带来什么好处。
- 学习如何从需求-设计-实现,开阔你的思维,提升你的架构设计能力;
- 帮助更好地理解原理和架构设计;
- 帮助更快地定位线上问题BUG
- 可以根据自己的业务修改源码、定制功能
- 可以学习一些编程技能:
- 如何运用设计模式
- Java各种类如何正确、合理、高效实用(锁,线程池等等)
- 用了什么数据结构和算法
- 提升个人经验值,经验一方面来自工作中项目的积累,另一方面来自阅读开源项目的积累。请问,你们公司的项目有常用的开源项目设计和实现的好吗?
二、如何阅读源码
- 首先,要搞清楚原理(需求),这个东西是什么;
- 其次,找来架构设计、模块(功能)划分等;
- 再次,使用;
- 最后,才到阅读源码
- 不可全看,关注核心,站的高些
- 时刻想着:原理-设计-实现
- debug -> 核心类图和时序图
三、个人一些见解

- 一个常识,看过的源码过不了多久就会忘记。如果阅读的过程中理解了原理(需求),看懂了架构设计图、产出了核心类图和时序图,那么回想起来就容易了;
- 如果要写关于源码的博客:原理、架构设技、核心类图和时序图 + 大白话描述;
- 每个人的知识背景不同,阅读源码的方式也不同,适合自己的才是最好的;
Java工程师阅读源码的一些见解的更多相关文章
- Java程序员阅读源码的小技巧,原来大牛都是这样读的,赶紧看看!
今天介跟大家分享一下我平时阅读源码的几个小技巧,对于阅读java中间件如Spring.Dubbo等框架源码的同学有一定帮助. 本文基于Eclipse IDE,我们每天都使用的IDE其实提供了很多强大的 ...
- 分享一些阅读Java相关框架源码的经验
昨天和部分网友进行了线上的交流,交流中有不少网友提到阅读源码比较难,不知道怎么上手.胖哥分享了一些个人经验,这里总结一下. 阅读源码实际上是Debug源码 其实所谓的阅读源码并不是单纯的阅读,而是调试 ...
- 学会阅读源码后,我觉得自己better了
我有一个大学同学,名叫石磊,我在之前的文章里提到过几次,我们俩合作过很多项目.只要有他在,我就特别放心,因为几乎所有难搞的问题,到他这,都能够巧妙地化解.他给我印象最深刻的一句话就是,"有啥 ...
- Java并发包源码学习之AQS框架(一)概述
AQS其实就是java.util.concurrent.locks.AbstractQueuedSynchronizer这个类. 阅读Java的并发包源码你会发现这个类是整个java.util.con ...
- How Tomcat works — 一、怎样阅读源码
在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法.一直想阅读一些开源项目,可是没有合适的机会开始.最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的s ...
- 转载~Linux 平台下阅读源码的工具
Linux 平台下阅读源码的工具 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码在Windows下有sourceinsight这 ...
- Linux 平台下阅读源码的工具链
原文:http://blog.jobbole.com/101322/ 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码. 在Win ...
- Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(集群版)
上篇文章Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)讲了在 idea 里以单机的方式启动zookeeper,这篇介绍一下以集群的方式启动. 集群方式启动,才会真正 ...
- 我的书籍《深入解析Java编译器:源码剖析与实例详解》就要出版了
一个十足的技术迷,2013年毕业,做过ERP.游戏.计算广告,在大公司呆过,但终究不满足仅对技术的应用,在2018年末离开了公司,全职写了一本书<深入解析Java编译器:源码剖析与实例详解> ...
随机推荐
- @codeforces - 913F@ Strongly Connected Tournament
目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个选手参加了一场竞赛,这场竞赛的规则如下: 1.一开始,所有 ...
- HZOJ 分组
打了好多个代码. 对于测试点1,11:手动模拟. void QJ1_11() { ) { int tk; ]+a[]))tk=; ; if(tk<=k) { puts("); puts ...
- CRT (C run-time library)
一 产生 运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供. C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需 ...
- LRJ-Example-06-02-Uva514
#define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<stack> using namespace std; + ...
- JavaScript的一些SAO操作
IE判断检测 jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 使用率极高.但是在版本发布之后,大家钟爱的这个属性被无情的抛弃了.大家开始着手寻找.browser 的替代方案.于是各 ...
- Java反射机制(二):通过反射取得类的结构
在反射运用过程中,如果你想得到一个类的完整结构,那么就要使用到java.lang.reflect包中的几个类: · Constructor 表示类中的构造方法 · Field 表示类中的属性 · ...
- Codeforces Round #174 (Div. 1 + Div. 2)
A. Cows and Primitive Roots 暴力. B. Cows and Poker Game 模拟. C. Cows and Sequence 线段树维护. D. Cow Progra ...
- H3C 帧中继协议特点
- 2018-8-10-win10-sdk-是否向下兼容
title author date CreateTime categories win10 sdk 是否向下兼容 lindexi 2018-08-10 19:16:53 +0800 2018-2-13 ...
- vue 组件的强制刷新
组件 <vue-component v-if="hackReset"></vue-component> <button @click="a& ...