用 IDEA 跟踪 Java 源码的技巧 | 内部资料

简介: 之前关于 IDEA 的文章,我已经写了三篇,没想到挺受大家喜欢的。读本文前,可以先读一下我之前写的这几篇文章来提前做个热身。

谈谈我与 Intellij IDEA 的故事


Intellij IDEA 中我一直在用的几个插件


IDEA 2018.3 EAP,我只看好你这四个功能!


其实不乏有读者问我,如何才能熟练的掌握 IDEA?我跟他说,如果某天你真的关掉了 Tab 页,习惯用 Ctrl + E 快捷键,那么你算开始入门了。


长期关注我的读者,应该知道我前几天写的《怎么读 Tomcat 源码?》,该文只是教你把 Tomcat 的开发环境搭建起来,并没有指导你怎么来读源码。正好这几天跟群里的同学讨论如何利用 IDEA 来跟踪源码,我正好用这篇文章来总结一下。


还是那句话,拿起键盘就是


本文还是以 Tomcat 源码为例。


生成类继承图


先给各位读者看下面这张类继承图,也是我之前所写的一篇文章中提到过的《工作五年难道必须要读源码吗?》,是不是一目了然。


image.png


怎么生成呢?在你所在的类里面点击右键,会出现上下文菜单 Diagrams | Show Diagram,或者快捷键 Ctrl+Alt+Shift+U,便会进入一个类继承图面板。


image.png


其实,在群里有读者说,该功能一次只显示一个类,很不方便,可不可以在同一个面板内显示更多的类呢?可以明确的告诉你,是可以的。有两种方式可供参考。


一是,对于项目不熟悉的情况下,选中其中的某一个类或者接口,点击右键出现上下文选择菜单,选择自己的子类「Ctrl+Alt+B」或者父类「Ctrl+Alt+P」即可。


image.png


二是,对项目熟悉的情况下,直接敲空格,搜索你需要添加的类到面板即可。


对于我而言,我还是喜欢 IDEA 这种生成类图的方式,让我专注于目前的某一个类或者某几个类。那可不可以显示整个项目的类图呢?是可以的,但需要利用 IDEA 的插件 —— CodeIris「见下图」。


image.pngimage.png


官网地址:plugin.codeiris.com


到底好不好用?感觉上还不错,毕竟这个插件我用的少,不做过多评论,这里可以看一个老外的评论。


image.png

关于类图的生成工具都是次要的,主要在于它能帮助我们直观的分析这个类的关系以及项目的整体结构。


查看类


上面已经说了查看类继承图关系的方法,其实我们还有另一种方式来查看,那就是 Ctrl + H 快捷键。


image.png


如果你要查看一个类里面定义的变量在那些地方被调用,那么需要掌握一下 Ctrl+Alt+F7 这个快捷键,是不是一目了然。


image.png


如果你要看一个类里面有那些方法,有两个快捷键可供选择 Alt+7 或者 Ctrl+F12,而我更喜欢 Ctrl+F12。


image.png


有时候,我们需要看一个类/方法的实现类/方法,这时,我们需要用 Ctrl+Alt+B 这个快捷键。


image.png


如果你需要查看某个方法的调用链关系,那么就请记住这个快捷键  Ctrl+Alt+H 吧,请注意图中红色的标注部分。


image.png


其实查看某个方法被那些地方调用,还有一个快捷键 Ctrl+B。


image.png


最有意思的是,在跟读者聊天中,一个读者说,跳过去了,但是跳不回来了,尴尬。。。


其实跳回来也是有快捷键的 Ctrl+Alt+左方向键,你还可以试试右方向键。


调试


当你成为程序员第一天开始,这个技巧就是你必须要掌握的,我在这里说几点我常用的技巧吧。


关于源码阅读的时候,我习惯用一个万能方法,也许会帮助到你,不清楚的地方就打印调用栈信息,详情如下。


image.png


IDEA 调试中有一个牛逼的功能,那便是计算表达式 Alt+F8,见下图。


image.png


有没有觉得很屌?


其实 IDEA 还有很多细节的地方做得特别棒,需要你慢慢琢磨。之前我们群里一个同学以为找到了一个 IDEA 的 bug,后来,发现那不是 bug,只是我们不会用它而已《Struts,你为何死不悔改!》。


好了,今天的分享就到这里了。


......


今日要闻:一个出现在 Reddit 上面的牛逼程序员。


image.png


他叫 Ivan Kutskir「伊万·库茨基尔」,做了一个免费的 Photoshop 替代品 PhotoPea,目前正被 150 万人使用。他从 5 年前开始做了,已经超过了 7000 小时「每天约 5 小时」。据他所述,他前三年半的时间里,没有从 PhotoPea 赚过一分钱。后来,他在 PhotoPea 官网最右侧加了一个竖条谷歌联盟广告,才开始赚钱,他目前通过广告收入能过上布拉格的体面生活。


参考

https://www.reddit.com/r/IAmA/comments/9urjmg/i_made_a_free_alternative_to_photoshop_that_is

https://www.photopea.com

相关文章
|
4天前
|
Java
IDEA debug HashMap源码的心得
IDEA debug HashMap源码的心得
12 0
|
1天前
|
Java 网络安全 网络协议
IDEA实现java远程调试
IDEA实现java远程调试
15 3
|
2天前
|
监控 前端开发 Java
Java基于B/S医院绩效考核管理平台系统源码 医院智慧绩效管理系统源码
医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服务质量,增强患者满意度,并促进员工的专业成长
9 0
|
2天前
|
Java 云计算
Java智能区域医院云HIS系统SaaS源码
云HIS提供标准化、信息化、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。优化就医、管理流程,提升患者满意度、基层首诊率,通过信息共享、辅助诊疗等手段,提高基层医生的服务能力构建和谐的基层医患关系。
16 2
|
2天前
|
Java
从源码出发:JAVA中对象的比较
从源码出发:JAVA中对象的比较
10 3
|
3天前
|
前端开发 Java 关系型数据库
Java医院绩效考核系统源码B/S架构+springboot三级公立医院绩效考核系统源码 医院综合绩效核算系统源码
作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
21 2
|
5天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
46 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
5天前
|
分布式计算 Java API
Java8 Lambda实现源码解析
Java8的lambda应该大家都比较熟悉了,本文主要从源码层面探讨一下lambda的设计和实现。
|
6天前
|
存储 Java
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
17 2
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
|
6天前
|
SQL Java 分布式数据库
实现HBase表和RDB表的转化(附Java源码资源)
该文介绍了如何将数据从RDB转换为HBase表,主要涉及三个来源:RDB Table、Client API和Files。文章重点讲解了RDB到HBase的转换,通过批处理思想,利用RDB接口批量导出数据并转化为`List<Put>`,然后导入HBase。目录结构包括配置文件、RDB接口及实现类、HBase接口及实现类,以及一个通用转换器接口和实现。代码中,`RDBImpl`负责从RDB读取数据并构造`Put`对象,`HBaseImpl`则负责将`Put`写入HBase表。整个过程通过配置文件`transfer.properties`管理HBase和RDB的映射关系。
22 3
实现HBase表和RDB表的转化(附Java源码资源)