共计 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);
}
正文完