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编译器:源码剖析与实例详解> ...
随机推荐
- 深入理解iptables防火墙
0x00 Linux 安全性和 netfilter/iptables Linux 因其健壮性.可靠性.灵活性以及好象无限范围的可定制性而在 IT 业界变得非常受欢迎.Linux 具有许多内置的能力, ...
- 二叉堆&&左偏堆 代码实现
今天打算学习左偏堆,可是想起来自己二叉堆都没有看懂,于是就跑去回顾二叉堆了.发现以前看不懂的二叉堆,今天看起来特简单,随手就写好了一个堆了. 简单的说一下我对二叉堆操作的理解.我不从底层函数说上去,相 ...
- Python--day60--web框架分类和wsgiref模块使用介绍
- Class对象的isAssignableFrom方法
isAssignableFrom 在看一个开源代码时,在加载完某个Class对象后,经常会使用 java.lang.Class#isAssignableFrom 来校验下. 之前真没有注意过Class ...
- 【图数据库】史上超全面的Neo4j使用指南
转自:https://cloud.tencent.com/developer/article/1336299 在这篇文章中: 第一章:介绍 Neo4j是什么 Neo4j的特点 Neo4j的优点 第二章 ...
- python NameError: name 'raw_input' is not defined
错误:NameError: name 'raw_input' is not defined 原因出在raw_input ,python3.0版本后用input替换了raw_input 话说回来,学习p ...
- Django入门10--admin增强
- UWP IRandomAccessStream 与 Stream 互转
本文告诉大家如何将 IRandomAccessStream 和 Stream 互转 如果在使用网络传输文件的时候,在 UWP 经常使用将 IRandomAccessStream 和 Stream 互转 ...
- 基于AutoIt3的Ping、网址转IP地址,以及hosts文件写入
#include <Constants.au3> #include <GUIConstantsEx.au3> GUICreate("通讯测试-eip.hxgroup. ...
- post提交方式为什么要序列化,而Get提交方式就不用?序列化做了什么?
这是因为后台能够直接处理的数据格式,是一种经过序列化的键值对数据,比如前端要向后台提交三个参数,分别是a=1,b=2,c=3,那么后台接收到的数据就应该是a=1&b=2&c=3(可以看 ...