关于java:分享一些阅读Java相关框架源码的经验

5次阅读

共计 785 个字符,预计需要花费 2 分钟才能阅读完成。

浏览源码实际上是 Debug 源码

其实所谓的浏览源码并不是单纯的浏览,而是调试源码。光看不入手,啥也不会有。调试源码我个别会从这几个方面着手。

样例和单元测试
很多源码都是 samples 样例我的项目以及单元测试,你能够从这些可执行的代码动手。例如 Spring Authorization Server 中的单元测试和样例。

器重日志
日志作为理解逻辑执行的记录,每个程序员都应该晓得它的重要性。线上故障排除,大多都靠日志来定位追踪,因而在看源码的时候更应该去看日志。学会看日志,器重日志不仅仅对看源码有帮忙,对日常开发也很有帮忙。一个 优良的开发者 肯定是一个优良的日志阅读者,所以你要把看日志这个事器重起来。

指标明确
浏览的时候肯定要有指标地去浏览,比方明天的浏览是为了搞清楚某个类的初始化流程,或者弄明确某个机制等等。不在这个指标之内的细节和概念都能够先放到一边

双更新模式:操作不合理,导致数据一致性问题
咱们来看下常见的一个谬误编码方式:

public void putValue(key,value){
    // 保留到 redis
    putToRedis(key,value);
    // 保留到 MySQL
    putToDB(key,value);// 操作失败了
}
public void putValue(key,value){
    // 保留到 MySQL
    putToDB(key,value);
    // 保留到 redis
    putToRedis(key,value);
}

思考到上面的场景:操作 A 更新 a 的值为 1,操作 B 更新 a 的值为 2。因为数据库和 Redis 的操作,并不是原子的,它们的执行时长也不是可管制的。当两个申请的时序产生了错乱,就会产生缓存不统一的状况。

public void putValue(key,value){
    // 删除 redis 数据
    deleteFromRedis(key);
    // 保留到数据库
    putToDB(key,value);
}
正文完
 0