用 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

相关文章
|
20天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
57 7
|
1月前
|
数据采集 人工智能 Java
Java产科专科电子病历系统源码
产科专科电子病历系统,全结构化设计,实现产科专科电子病历与院内HIS、LIS、PACS信息系统、区域妇幼信息平台的三级互联互通,系统由门诊系统、住院系统、数据统计模块三部分组成,它管理了孕妇从怀孕开始到生产结束42天一系列医院保健服务信息。
31 4
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
1月前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
116 6
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
72 13
|
26天前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
53 12
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
43 3
|
22天前
|
人工智能 移动开发 安全
家政上门系统用户端、阿姨端源码,java家政管理平台源码
家政上门系统基于互联网技术,整合大数据分析、AI算法和现代通信技术,提供便捷高效的家政服务。涵盖保洁、月嫂、烹饪等多元化服务,支持多终端访问,具备智能匹配、在线支付、订单管理等功能,确保服务透明、安全,适用于家庭生活的各种需求场景,推动家政市场规范化发展。
|
1月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
98 3