如何高效学习和阅读源码?

 作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。

热门文章推荐
(1)《人工智能时代,软件工程师们将会被取代?》
(2)《超全人工智能 AI工具导航网站合集》
(3)《如何写出高质量的文章:从战略到战术》
(4)《什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍》
(5)《我的性能方法论》
(6)《无需魔法打开即用的 AI 工具集锦》

一、背景

作为Java开发工程师,想进阶,阅读别人项目的源码,尤其是开源的优秀核心技术栈的源码必不可少的步骤。

那么有什么高效的阅读源码的方法呢?

常见的比如买一些 《xxx源码解析》图书,但是存在一个问题,刚开始看的时候非常吃力,跟不上,显得很枯燥,而且很可能看完可能还是毫无头绪。

又不如直接拉源码下来,又不知道如何入手。

今天和好友探讨过这个问题,把我们认为比较好的阅读和学习源码的技巧整理在这里。

二、好的方法

(1)拉源码,通过单元测试,调试技巧,各种IDE的辅助功能和插件了解调用关系。

(2)根据单元测试打断点,查看调用栈。

(3)结合源码解读的图书和文章再去理解。

(4)结合官方文档的功能文档和架构文档来读。

如dubbo的架构图

对从整体掌握源码和原理有极大的帮助,dubbo官方文档甚至还有配套的源码截图。

(5)带着问题或者遇到问题后深入研究某一块,可以查看 pull request 或者  issues。

(6)使用 chatgpt 或 cursor 等人工智能工具学习源码。

三、具体方法

3.1 github拉取源码+看源码注释+单元测试

去github上拉取源码(建议直接拉clone原项目或者fork之后的项目源码)。

建议fork源码,这样本地可以对源码加入自己的注释。

或者快捷键进入源码后,IDEA右上角有“Download Source”在项目中拉源码,方便调试和学习。

因为源码带有注释,而多数的开源项目,尤其是外国的优秀开源项目的注释都非常详细,包括类、函数的作用以及参数的含义都非常清楚。

另外优秀的开源项目必然会有单元测试,几乎每个类都有单元测试。

想重点学习某个类,就运行某个单元测试,根据单元测试的角度了解函数的目的,用法等

3.2 断点调试看调用栈大法

断点调试可以通过单步调试,通过堆栈信息,通过watch来查看类的各种属性。

对理解程序流程和数据变化有极大的帮助。

调试

这里非常重要,因为常规的调试都是单步往下走,但是这里可以通过左下角的调用栈,查看已经入栈的栈帧,查看上层函数调用!!!

比如在spring生命周期的某个环节如构造方法中打了断点,在这里就可以追溯到bean的初始化初期的调用代码。

而且可以通过删除frame实现“回退”。

对分析源码有极大的帮助!!!!

3.3 结合 pull request 学源码

可以查看想学习的源码的 pull requests ,选择其中自己感兴趣的提交,查看解决什么问题,通过什么方法解决的,其他审查人员给了什么建议等。

3.4 使用 AI 学习源码

可以使用 chatgpt、new bing、cursor 等对某个源码段落进行提问,让它给出解释,让它们给出相关代码示例等,帮助自己理解某段代码。

《什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍》

《人工智能时代,软件工程师们将会被取代?》

3.5 查看类中主要函数

mac快捷键 cmd+f12

双击可以跳转到对应的函数源码。

3.6 查看继承关系大法

通过继承关系可以了解一个类“本质”是啥。

而且通过双击,可以跳转到继承关系的任何一个类的源码。

3.7 查看调用关系

通过“Call Hierarchy”查看调用的关系

通过右键“find usages”查看调用

双击都可以去到源码中。

3.8 查看源码时不跳转显示参数或某个子函数的源码

mac上快捷键是cmd+y

这在研究源码时帮助很大,不仅节省很多时间,而且效果更好。

可以用在参数上,也可以用在子函数上。

3.8 依赖关系(依赖矩阵、依赖UML等)

依赖矩阵

基本解释:

绿色使用了灰色的类,灰色类使用黄色类。

红色代表形成了循环依赖。

如图所示我们鼠标放在“BatchExecUtil”上,根据右上角的图示可知。

绿色部分 BatchExecUtilTest使用到了BatchExecUtil。

而BatchExecUtil又使用到了下面4个类。

可以切换到不同的类(行),查看关系,下图是切换到“SimpleRetryUtil”的视图:

如果觉得本文对你有帮助,欢迎点赞评论,欢迎关注我,我将努力创作更多更好的文章。

另外欢迎加入我的知识星球,知识星球ID:15165241 一起交流学习。

https://t.zsxq.com/Z3bAiea  申请时标注来自CSDN。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14761.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lora:low-rank adaption of large language models

THUNLP 领读 ICLR 低秩微调大模型(LoRA)【OpenBMB论文速读】第3期_哔哩哔哩_bilibili💡用脑图!⏰十分钟!OpenBMB【论文速读】第3 期来了!本期领读人是清华大学自然语言处理实验室的本科生,带大家高效读完一…

ChatGPT训练流程复现

本篇文章着重于chatGPT训练流程的复现 来自:无数据不智能 进NLP群—>加入NLP交流群 环境安装 虚拟环境创建 conda create -n chatgpt python3.10 conda activate chatgpt 依赖包安装 git clone https://github.com/LAION-AI/Open-Assistant.git cd Open-Assista…

【试用科研好物】GPT辅助科研神器?AI助力科研?ChatPDF、有道速读

前言 近期需要阅读的论文很多,偶然间在微博刷到许多人推荐科研利器ChatPDF和有道速读。使用后的结论是不推荐使用,下面分别给出理由。 使用&评价 网页版,无需安装任何东西,两款都支持中文。 ChatPDF有道速读 下面太长不看…

10分钟读完《富爸爸穷爸爸》,用ChatGPT速读100本致富经典

你好,我是赤辰。本栏目是每天借助ChatGPT速读1本商业书籍或致富经典,让大家以最短时间汲取到优质书籍中的精华内容和核心思想,本期要给大家解读是致富经典《富爸爸穷爸爸》。 本篇读书笔记全程由ChatGPT辅助阅读,并按照核心观点-…

用ChatGPT速读100本致富经典 |《贫穷的本质》且得出解决方案

你好,我是赤辰。本栏目是每天借助ChatGPT速读1本商业书籍或致富经典,让大家以最短时间汲取到优质书籍中的精华内容和核心思想,本期要给大家解读是《贫穷的本质》。 本篇读书笔记全程由ChatGPT辅助阅读,并按照核心观点-重要引述-结…

10分钟读完《刻意练习》,用ChatGPT速读100本致富经典

本篇读书笔记全程由ChatGPT辅助按照核心观点-重要引述-结论-行动建议来完成阅读,并输出笔记,通过用AI读完一本书只耗时20分钟,能生成约2000字笔记; 书名:《刻意练习》 作者:埃里克乔根森 出版日期&#x…

10分钟读完《原则》精华,用ChatGPT速读100本致富经典

你好,我是赤辰。本栏目是每天借助ChatGPT速读1本商业书籍或致富经典,让大家以最短时间汲取到优质书籍中的精华内容和核心思想,本期要给大家解读是黑石集团创始人瑞达利欧写的《原则》。 本篇读书笔记全程由ChatGPT辅助阅读,并按照…

ChatGPT之后,下一代大型语言模型在哪里?

OpenAI 首席执行官 Sam Altman(左)和 Meta AI 首席执行官 Yann LeCun(右)对未来有不同看法... 来源:学术头条 【编者按:ChatGPT的爆火,让大语言模型受到了人们的关注,然而这些来自不…

【MARK】搜索引擎汇总

1、除了Google,百度外的搜索引擎 基于笔点的自制导航页 https://www.bidianer.com/searchx 通用搜索引擎☞ Bing,微软必应,壁纸不错。 Ecosia,可以作为Bing搜索国际版。 F搜,据说是谷歌中文版,偶尔抽风…

借用百度翻译,用pyqt5 搞定pdf和word文档翻译,排版基本不变,免费好用

以下内容均来自微信公众号:万能搜吧,关注获取更多干货分享。 其实写软件测评写多了,就知道哪些需求是刚需,今天说的是文档翻译的需求,这种需求是比如将英文的PDF论文全部翻译成中文,而且最好排版不受影响。…

Chat Support Board WordPress聊天插件 v3.5.8

功能列表 支持和聊天功能 Slack聊天完全同步 - 直接从Slack发送和接收用户信息。 立即工作 - 只需插入短码,即可立即安装和使用。 丰富的信息 - Dialogflow机器人发送丰富的信息。 机器人--集成一个由API.AI驱动的多语言机器人。 电子邮件通知 - 当收到回复时&#…

成本降低90%,OpenAI正式开放ChαtGΡΤ

今天凌晨,OpenAI官方发布ChαtGΡΤ和Whisper的接囗,开发人员现在可以通过API使用最新的文本生成和语音转文本功能。OpenAI称:通过一系列系统级优化,自去年12月以来,ChαtGΡΤ的成本降低了90%;现在OpenAI用…

​乐视回应四天半工作制:体感非常好;OpenAI CEO 否认在训练 GPT-5;iOS 17 或增加更多灵动岛功能|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

WAIC 2023 | 拥抱大模型,助力无障碍,小米展望AI新业态

“智联世界,生成未来”,7月6日至8日,第六届世界人工智能大会(WAIC 2023)在上海举办。4位图灵奖得主与80多位国内外院士等1400位嘉宾齐聚一堂,共同探讨人工智能赋能产业发展的全新变化,展望技术新…

掘金AIGC时代,开发者更需要什么样的大模型?

当前,火热的AI大模型领域需要一些冷思考。 自去年年底ChatGPT掀起一轮AIGC热潮以来,国内科技企业扎堆发布大模型和类ChatGPT产品。截止2023年4月,已公开宣布发布或即将发布AI大模型的企业达数十家。多模态大模型的能力不断迭代,市…

智算领域惊现AI大变局,ChatGPT催生行业大洗牌

ChatGPT席卷而来, GPU需求过猛引发缺货涨价潮 【全球云观察 | 热点关注】百度已不是中国第一大桌面搜索引擎,这个消息来自美国数据研究机构Statcounter公布的最新统计数据分析结果。 2023年4月,微软旗下搜索引擎必应&#xff08…

Azure OpenAI 详细申请与使用教程,打造个人专属 ChatGPT 方案

Azure OpenAI 详细申请与使用教程,打造个人专属 ChatGPT 方案 原创 TitiAI TitiAI 2023-05-08 13:26 发表于湖北 前言 大家都知道,OpenAI ChatGPT是不能在中国使用的,香港也一样。最近一个月,很多人反映API调用限制&#xff0c…

14.3.16南山公园游

14.3.16班级团日活动,爬南山活动 一直以来对团日活动没太大兴趣,只是为了支持活动,积极参与。这次借着初春,阳光明媚,和同学一起去南山公园。烟台动物园就在那,我们拿了学生证,每人20元&#xf…