我给Apache顶级项目贡献了点源码。 (下)

简介: 我给Apache顶级项目贡献了点源码。 (下)

写过但没有发现的 bug


我之前还写过一样的一篇文章:

Dubbo 2.7.5在线程模型上的优化

当时这个版本推出之后,我就赶紧去研究了一下对应部分的源码,然后写下这篇自称为全网第一篇解析 Dubbo 2.7.5 里程碑版本中的改进点之一:客户端线程模型优化的文章。

但是前两天我看提交记录的时候,发现了这样的一个提交:


image.png


并找到了对应的 issue:

https://github.com/apache/dubbo/issues/7054

image.png


根据这个 issue,我去看了一下对应的源码,确实是存在他描述的问题。

于是我就在想,我当时写文章的时候也是深入到源码里面了呀,为什么没有发现这样的问题呢?

我想原因还是在于自己当时思考的深度不够,仅仅是搭建了一个非常简陋的 Demo,而且把心思聚焦到了前后版本差异对比上。

只是摸到了一个大概的样子,被源码牵着走了,并没有跳出源码的包围,带着质疑的眼光去审视它。

所以,对于这种比较深层次的、一环扣一环的问题,自己还是流于表面了一些。


怎么看源码


前面举了三个例子,一个是发现并解决了 bug,一个是仅发现未解决的 bug,一个是有 bug 但没有发现。

前两个 bug 都有一个共性,在简单的 Demo 下就是必现的,只要跑到了对应的地方,就会出现和预期不符的情况,比较容易发现。

最后一个 bug 隐藏的比较深入一点,也许你触发了,但是程序自愈了。

当有一天我能发现并解决这样的 bug 时,我就不会说这是运气了。

但是发现这些 bug 的前提是得动手搭建 Demo 呀。

你不看源码,只是看网上的文章,是永远发现不了问题的,也是潜入不进去的。

分享一下我看源码的方法吧。

我们知道开源框架的设计和理念大多是非常优秀的,但是源码里面的细枝末节特别的多,一不小心就容易在源码里面迷失,直接就是一波劝退。

所以,对于初读源码的同学,首先要做的就是把核心流程梳理出来,边梳理边画图,要多画图,别怕麻烦。

对于几处关键的源码,一定要写上自己的备注。因为你知道的,当时也许你对这个地方为什么这样写门清,但是隔段时间再回来看,就摸不着头脑了。这个时候,备注就显的非常重要了。

对于看不明白的地方,打断点,疯狂的调试,反复的调试。

等待主流程摸清楚之后,再去进入到源码的细节部分。

举个简单的例子,比如你看 Dubbo 源码,先摸清楚它一次请求大概的调用链路之后,再去细致了解其中负载均衡的部分。

然后,就是多复习,多巩固了。


image.png


你发现没有,我说的这些其实你也知道,或者其他人也是这样说的。

为什么你看的时候就老是看不进去呢?不得要领呢?

是的,我开始也是这样的。但是,无它,唯反复练习尔。

共勉之。


最后说一句


才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以在后台提出来,我对其加以修改。

感谢您的阅读,我坚持原创,十分欢迎并感谢您的关注。


目录
相关文章
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
184 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
991 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
多应用模式下,忽略项目的入口文件,重写Apache规则
本文介绍了在多应用模式下,如何通过编辑Apache的.htaccess文件来重写URL规则,从而实现忽略项目入口文件index.php进行访问的方法。
|
存储 分布式计算 Apache
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
Apache Paimon 在构建实时数据湖与流批处理技术领域取得了重大突破,数据湖步入实时新篇章!
3834 6
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
944 0
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
2344 2
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
Java API Apache
【Apache ShenYu源码】看看贡献者如何实现支持提醒通知设计
在阅读中,还发现了有个html文件忘记加了开源协议,我们提下PR修复下,又收获了一次开源贡献!!PR提交戳这。
155 1
【Apache ShenYu源码】看看贡献者如何实现支持提醒通知设计
|
SQL 数据可视化 大数据
【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
786 33
|
存储 缓存 负载均衡
【Apache ShenYu源码】如何实现负载均衡模块设计
整个模块为ShenYu提供了什么功能。我们可以看下上文我们提到的工厂对象。/***/核心方法很清晰,我们传入Upsteam列表,通过这个模块的负载均衡算法,负载均衡地返回其中一个对象。这也就是这个模块提供的功能。
176 1
|
Java
apache-incubator-streampark源码编译本地运行(七)
apache-incubator-streampark源码编译本地运行(七)
183 1

热门文章

最新文章

推荐镜像

更多