解锁大厂思维:剖析《阿里巴巴Java开发手册》
原价¥68.00
俗话说:“工欲善其事,必先利其器”。
为了助力大家的学习和进阶,本小节介绍几个对Java学习非常有帮助的IDEA插件,代码反编译和反汇编工具,以及非常不错的网站等。
首先不必多说,IDEA是目前Java工程师最主流的开发工具,IDEA的强大之处不仅在于自身,还在于提供了丰富的插件(这点和谷歌浏览器非常类似)。
本部分介绍几款强大实用的IDEA插件,助力大家开发。
以下插件大都可以通过IDEA自带的插件管理中心安装,如果搜不到可以去IDEA插件官网下载本地导入。
具体安装界面不同版本IDEA略有差异,请自行研究。
如果连插件安装都不愿意学、学不会的话,很难成为一名合格的Java开发工程师。
安装该插件后,代码超过80行、手动创建线程池等,这些和《手册》中的规约不符时,IDEA中会给出警告提示。
建议大家一定一定一定要安装该插件,它会帮助你检查出很多隐患,督促你写更规范的代码。
大家可以直接在IDEA插件管理中安装(安装步骤略)。
使用方法:
那么有自带的强大的反汇编工具javap还有必要用这个插件吗?
这个插件的强大之处在于:
该插件对我们学习虚拟机指令有极大的帮助。
可以点击下图所示“AddCodotatoyouIDEA”了解安装步骤。
该插件的强大之处在于:
如上图所示,我们想了解Stream类中flatMap函数的用法,可以使用该插件查看知名开源项目的用法。
该插件就可以帮你解决这个问题。
安装完该插件以后,调用一个函数,使用Alt+Enter组合键,调出“Autofillcallparameters”自动使用该函数定义的参数名填充。
我们定义好从A类转换到B类的函数转换函数后,使用这两个插件可以自动调用Getter和Setter函数实行自动转换。
实际开发中还有一个非常常见的场景:我们创建一个对象后,想依次调用Setter函数对属性赋值,如果属性较多很容易遗漏或者重复。
可以使用这GenerateAllSetter提供的功能,自动调用所有Setter函数(可填充默认值),然后自己再跟进实际需求设置属性值。
对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA支持各种主题插件,其中最出名的当属MaterialThemeUI。
安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。
由于很多人没有养成好的编码风格,没有随手format代码的习惯,甚至有些同事会写代码超过几百行,阅读起来将非常痛苦。
痛苦的原因之一就是找到上下文,由于括号太多,不确定当前代码行是否属于某个代码块,此时这个插件就会帮上大忙。
大家可以观看其github首页的动图体会和学习其强大功能。
现在Java项目通常会使用maven或者gradle构建,对于maven项目来说,jar包冲突非常常见。
那么如何更容易地查看和解决jar包冲突呢?
大家可以安装该插件,安装后IDEA中打开pom.xml文件时,就会多出一个“DependencyAnalyzer”选项卡。
如上图所示,该插件支持值插件冲突的jar包,可以选择冲突的jar包将其exclude掉。
当然还有很多类似的静态代码检查插件,大家可以自行了解安装。
这对研究源码,梳理工作中的业务代码有极大的帮助,堪称神器。
安装完成后,在某个类的某个函数中,右键-->SequenceDiagaram即可调出。
如下图是Netty的源码,可以通过该插件绘制出当前函数的调用链路。
双击顶部的类名可以跳转到对应类的源码中,双击调用的函数名可以直接调入某个函数的源码,总之非常强大。
打开方式Analyze>OpenStacktracetoUMLplugin+GenerateUMLdiagramsfromstacktracefromdebug
Stream非常好用,可以灵活对数据进行操作,但是对很多刚接触的人来说,不好理解。
IDEA的插件浩如烟海,好的IDEA插件欢迎留言交流。
Java学习进阶之路离不开Java反编译和反汇编。
实际开发中需要用到反汇编的典型场景有:
对于大多数普通Java工程师来说,使用反编译的场景多是为了学习研究。
有很多在线反编译的网站,其中比较好用的主要是以下两个:
使用简单,直接将jar包和class文件拖到页面即可。
功能很强大,支持多种反编译方式,但是浏览效果不如上面网站好。
很多人担心在线反编译可能会引起代码泄露等,所以倾向于使用本地的反编译工具。
这里推荐两款软件:JD-GUI和Luyten。
该软件的用法和JD-GUI类似。
图形界面反编译虽然更直观,但是如果我们想反编译Linux服务器上的类文件可咋办呢?
举一个真实发生过的典型的场景:
有一次代码发布上线,但是从功能表现看线上仍然是“旧代码”,但是从发布的git提交版本来看是最新版。
此时就可以使用jad反编译该类,来核查该问题。
这里简单介绍Java反编译和反汇编的区别。
这里说的反编译是指:将class文件反编译成Java源码的过程。
这里说的反汇编是指:将class文件反解析为更可读的虚拟机指令的过程。
反汇编最权威和强大的当属JDK自带的javap工具,具体用法直接输入帮助指令javap-help即可查看:
用法:javap
在IDEA插件中心中还可以搜到该工具的IDEA插件。
当然,还有很多其他好用的Java反编译和反汇编软件,希望大家平时多尝试,多练习。
希望大家能够熟练掌握其中一两种,能够快速反编译和反汇编,帮助自己学习知识和解决问题。
Alfred可以说是Mac系统的效率神器。该软件支持文件搜索、粘贴板管理、快捷短语提示、各种工作流等功能。
有些朋友可能会说,我们系统是windows的肿么办?
软件效果图(图片来自官网)
该软件不仅是一款截图工具,还支持将截图贴到屏幕上,使用非常简单,F1截图,然后F3贴图,截图就会桌面置顶显示。
该软件目前只支持mac系统,可以实现窗口的快速切换。
该软件目前只支持mac系统。
采用iOS多任务卡片切换界面,可以可视化粘贴板历史,支持剪切搜索,热键快速调用,可以快速选取想要的粘贴版历史内容并粘贴到当前应用中。
作为一个合格的程序员,怎能没几个趁手的画图工具呢?
每个人的喜好各有不同,下面推荐几个本人和身边人开发中常用的画图工具。
该软件还提供了IDEA插件,在IDEA中创建plantUML的图形支持实时预览。
通过PlantUML官网给出的示例,大家可以快速上手。
可以使用processon来作图,优势是在线存储。windows系统用户可以使用visio,功能强大,画的图也很美观。
很多人会有些奇怪,为啥推荐思维导图呢?
其实对于Java工程师来说,思维导图是梳理知识,梳理需求的重要工具。
然而画思维导图并不是照着目录列一遍,而是带上自己的思考,具体再画图篇会讲到。
思维导图软件推荐使用:xmind、mindjet、ithoughts等。
常规用法是先启动软件,然后选择本地的Java进程,或者添加远程机器的Ip和端口号监控远程Java进程状况。
该插件支持字符串的编解码、JSON串的格式化、代码美化、二维码生成器、页面滚动截屏、图片转Base64、简易Postman、Ajax调试等功能。
虽然名叫“前端插件助手”,其实该插件对我们后端开发帮助也极大。
可以使用该插件,生成只包含页面主要内容的PDF。
该插件可以修改请求和响应头,在某种调试场合非常有用。
很多同学想看英文技术网站,但是英语不是特别好,可以借助该插件聚合多种翻译软件,翻译各种词汇或句子。
最大的好处是可以对比多种翻译插件的结果,得到最准确的理解。
很多人想学习某个技术,但是有自己电脑配置限制或者嫌麻烦等各种原因,可能不愿意安装某些环境。
那么有没有可以在线练习的网站呢?答案是:有。
接下来推荐几个非常强大的在线练习和学习网站。
该网站提供了在算法、数据库和Shell脚本的练习题。
除了咱们的慕课网外,推荐几个非常好的英文学习网站。
我们Java开发需要用到知名英文书籍几乎都可以在上面找到电子版。
强烈建议大家购买纸质版经典的Java技术图书,反复学习。
本文重点介绍了Java学习和工作中常用的软件、插件、网站等。熟练地使用这些工具,将有助于提高我的开发效率和编程体验。
希望通过本小节的介绍能够助力大家的学习和进阶。
如果你觉得本专栏对你有帮助,欢迎推荐给更多朋友,一起交流学习。