#头条创作挑战赛#
工欲善其事必先利其器,说的就是工匠要想更加高效地做事情,就得先将工具变得锋利。那么对于程序员来说同样也是如此,如果要想每天早点下班,就必须借助于一些开发工具来提高自己的工作效率,今天慕枫就给大家总结一些工作中常用到的工具。
不知道大家在日常工作中会不会遇到这样的情况,每次找文件的时候总是为想不起来放在哪个目录而抓狂,但是还好记得文件名字,而 window 自带的文件搜索简直慢得离谱,另外还经常出现搜索一个文件等了半天却没有这个文件的情况,简直想吐血。如果有一款工具可以搜索本地所有的文件就好了,于是 Everything 应运而生。
Everything 是一款 Windows 系统的文件搜索工具,通过它可以快速查找电脑中的文件以及文件位置,真正实现全盘搜索,而且它的体积也非常小,仅需要大约 14 MB 的内存以及不到 9 MB 的硬盘空间,搜索文件的效率大概在秒级,比 windows 自带的文件搜索效率高出很多倍。可以说有了 Everything 就可以告别到处找文件的尴尬境地,实现文件快速定位,大幅度节约文件搜索时间。
平时我们在进行项目开发的时候,总是不可避免地引入第三方 jar 包来进行功能集成,但是引入的第三方包中会不会包含和项目中现有 jar 包存在版本冲突的 jar 包,实际上我们是不好进行判断的。这就会导致经常出现 jar 包冲突导致的服务启动失败等异常问题,有的时候费了九牛二虎之力排查问题,结果发现只是小小的 jar 包版本冲突问题,非常浪费时间和精力。
而 Maven Helper 就是一款 Java 开发必不可少的 Maven 管理插件,没有它之前我们需要人工手动的去分析 jar 包版本冲突,费时又费力,通过 Maven Helper 可以一键找到工程中相冲突的 jar 包,然后通过 exclude 将冲突的 jar 包进行排除,在对应的 pom 文件中会自动添加<exclusion>,如此我们可以快速地去除工程中的冲突的 jar 包,让技术人员可以更加关注业务功能实现,尽可能地不被这些琐事浪费时间。
程序员在平时的工作中除了编码实现之外,还包括了架构设计、编写技术方案等。而无论是架构设计还是编写技术方案,画图总是必不可少的,清晰明了的架构图、流程图、时序图可以帮助我们更加直观的理解业务逻辑以及架构原理。因此一款功能强大的画图软件就显得尤为重要了。
ProcessOn 是一款功能十分强大的在线绘图工具,支持流程图、思维导图、UML、网络拓扑等多种结构图形绘制,甚至还支持团队协作绘制,另外由于它是在线绘图工具,屏蔽了系统间使用差异,可以随时随地进行图形绘制创作。在 ProcessOn 上面还囊括了海量的各行各业都可能用到的画图模板,有的时候自己没有画图思路的时候完全可以借鉴模板中的画图结构。
在程序员的日常工作中,接口联调测试是最重要的研发工作之一,通过和别的同学进行联调测试可以发现我们的接口定义问题、检查接口调用的正确性等等。市面上的接口测试工具多入牛毛,但是都总觉得缺点意思,能测试接口的不能生成接口文档,能生成接口文档的不能进行性能测试,总之就是不能覆盖程序员所有的接口开发使用场景。
而 Apipost 的出现完美解决了以上问题,官方宣称 Apipost = Postman + Swagger + Mock + Jmeter,,也就是说它将这几个工具的能力都整合到了一起。实际上一言一概之,Apipost 是 API 接口一揽子解决方案。通过它可以定义接口、共享接口、测试接口、Mock 接口、生成文档等等,基本覆盖了和接口相关的所有研发场景。其中支持项目团队中的接口共享我觉得是非常实用的一个能力,以前我们开发接口和别人对接的时候要么是接口文档满天飞传来换取,要么是 Swagger 连接发来发去,而 Apipost 完美解决这些问题,录入接口只有项目组的成员都可以看得到,同时还支持自动生成 API 文档,不要太方便。
另外接口还支持查看接口状态,主要包括开发中、已完成、需修改三种接口状态,团队中的前后端同事可以清晰明了的看到各个接口的实现状态,方便大家及时了解各个接口开发进度。同时协作日志可以查看接口的修改记录,非常实用。
内存溢出大概是程序员最不想遇到的线上异常,但是又不得不面对,因为内存溢出是非常典型的服务异常。快速的定位内存异常原因并进行修复,减少线上异常影响时间,是对程序员比较基本的技能要求。实际上在分析内存溢出的时候,我们可以借助于内存分析工具来进行,提高我们定位问题的效率。
MAT(Memory Analysis Tool)即内存分析工具,它可以帮助开发者分析 Java 应用的 hprof 崩溃文件,分析异常堆积对象快速找到内存泄漏的类及其对应的方法,方便技术人员定位分析内存泄漏问题。
在开发需求的时候,我们经常使用 stream()流来简化循环代码,结合 lambda 表达式可以让变得更加简洁。但是有个问题一直困扰着技术人员就是 stream()流内部不好进行 debug,没法查看其中的值循环操作情况,而 Java Streanm Debugger 可以帮助我们解析 stream()流内部数据赋值情况,方便程序员查看各个值的执行流程以及数据最终结果。
Wireshark 是一款网卡抓包分析工具,通过它可以抓取指定网卡的所有网路数据包。主要可以应用在分析网络数据正确性、网络底层通信机制以及到底是客户端主动断开连接还是服务端断开等网络数据分析的场景。
Arthas 是阿里巴巴开源的一款线上 Java 应用异常定位诊断工具,不需要重启应用可以实现动态跟踪 java 代码,通过 Arthas 我们可以在线上实时查看应用内存、CPU 占用等负载情况、JVM GC 以及线程状态信息等等,同时它还支持不必重启服务在线进行代码热修改,这在定位线上问题测试修改后代码的执行情况的场景下非常实用,大大提高了技术人员分析问题解决异常的效率。
Arthas 启动后可以 attach 到指定的 java 进程,以下便是 Arthas 启动后的交互界面。
Arthas 提供了丰富的命令交互,在这里输入 dashboard 命令,可以查看当前情况 java 应用的各个线程的 cpu、运行状态等信息,同时也可以查看 JVM 中堆、年轻代、元空间以及老年代等区域的使用情况,方便我们理解 java 应用的内存垃圾回收情况。