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

简介:
作为 IDEA 的死忠粉,这篇文章早就该写了,一直拖到现在,虽然有点晚,还是想跟大家分享一下。
相信很多人一旦与 IDEA 结缘,便会慢慢地喜欢上它,就如同我跟它的故事一样。如果你对 IDEA 还不熟悉,可以读读我之前写的这两篇文章来帮你快速入门。

谈谈我与 Intellij IDEA 的故事

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

关于这次的更新,官方推文很早都提到了,目前还未正式发布。

ec1ecb6b9bf93f0926ff8d99146bf6e3ae417d12

总的来说,我挺看好这四个功能,分别是插件中心、Run Anything、JVM Debugger、JVM Profiler。

很多人说这次提供了一个高亮的主题,说实话我不是太喜欢,还是喜欢以前的 Darcula。


1a41a558aed76f011979d02dd5fd35a02caafd01对于版本控制模块的更新,我没有感觉到特别新奇,因为我习惯用命令行。
6b4fd862b336f25244dae9a1633ba5c43e01fcb0

对于编辑器的改进,我感觉对我的影响不是太大,因为我觉得掌握了 ctrl+e 就很 6 了,可以查看我之前的文章。

这次的搜索功能也进行了加强,总的来说,是对以前搜索功能进行部分补充与完善。

插件中心

无论是一款工具,还是一个开源框架,它们的成功都离不开一个良好的插件中心,IDEA 的成功也不例外,都在于整个社区为我们提供源源不断的优秀插件。

这次更新后,插件进行了更加规范化的管理,分为插件市场、已安装的插件及待更新的插件。

1fe19080f680f4b09f322814e5ec41eb458df69a

Run Anything

我觉得这个功能跟 Search Everywhere 「Double Shift」一样重要,又是一个值得记住的快捷键 Double Ctrl。它是在IDEA中运行所有命令的新统一方式,且支持过滤。如Maven、Gradle的命令,甚至可以使用它来运行终端命令,所以你得必须要掌握哦。


800f44444364ee41dfeb57e4126414fe660dea4d

JVM Debugger

这次关于调试支持两种方式,一种是支持本地,另一种是支持远程调试。

关于本地调试,可以附加到本地任何 Java 进程中且不需要启动 agent 代理,之后,你便能查看当前线程的状态、变量值及内存视图。

f480048dfd0aa0d9cc0a007d36909531e6e131b5

关于远程调试,则需要在启动的时候加载一个 agent 代理,而这个代理文件在该目录下 /lib/rt/debugger-agent.jar,需要你把该文件拷贝到远程服务器上设置 VM 参数启动。

-javaagent:debugger-agent.jar

81c1c04053c4fd17d748744ec54e6696b255d2e7

JVM Profiler

该功能应该是这次更新的亮点。通过采用分析器,来查看进程堆栈执行情况及内存分布,生成一张火焰图。目前只支持 Mac 和 Linux 系统,而且目前尚不支持 Gradle 和 Maven 项目。估计要全部都支持,还需要等待一段时间。

e6e256cb9345c08a980d5a7008529e69ee75fe5f

说实话,我测试过程中,不知道是环境问题,还是什么问题,没有找到该功能,也没有找到如上图所示的功能,也进行全局搜索,也没有搜到相应的 Action,所以只得用下面这种笨办法来生成火焰图。

由于该功能依赖于 Github 上的开源项目 sync-profiler,因此,我用如下方法来生成火焰图。

第一种,直接通过命令行的方式运行。

d3075b3afdab5a99291333ab5a58b98234289336

第二种,直接通过 agent 的方式运行。

-agentpath:/path/to/libasyncProfiler.so=start,svg,file=profile.svg

最终,便能生成如下图所示的火焰图。

9d2a1fcd65eaba9574a9fa2557e4795a501b7237

火焰图

说到火焰图,这里就不得不提一个人 Brendan Gregg,他可以 Linux 性能优化大师,这个火焰图就是他发明的,用于性能分析,解决了如何从代码级别定位性能问题。

关于我跟它结识,还得益于有一次对 nginx 进行性能分析时,找了很久,都没有定位到问题的关键所在,这时,360 的 znlover 给我推荐了它,后来就慢慢喜欢上这款工具。

下面我就来教你怎么读火焰图。

火焰图一般会选择暖色调,用于表示 CPU 的繁忙程度。

x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。

y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。

这里需要说明一下,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

定位性能问题,主要找出现「平顶」的函数,也就是顶层所占宽度最大的那个函数,这也是最有可能出现性能问题的函数,也说明浪费了 CPU 的很多时间;因此,这个平顶便是火焰图的关键点。

关于火焰图,你真的需要花时间好好捋顺一下。

最后,我想说 IDEA 是一款真得很不错的开发工具,值得你拥有。


......


据 360 观星实验室透露,最近勒索病毒 GandCrab 有大规模爆发趋势,且版本更新频繁。在国内目前仍以弱口令爆破、伪装正常软件诱导用户运行及漏洞传播这三种方式传播。当用户遭受感染时,系统磁盘被加密,文件后缀被修改为随机字母,并勒索交付数字货币赎金。在此,建议大家提前做好防范,开启防火墙,关闭 3389、445、139、135 等不用的高危端口 。


原文发布时间为: 2018-11-06
本文作者: Java面试那些事儿
本文来自云栖社区合作伙伴“ Java面试那些事儿”,了解相关信息可以关注“Java面试那些事儿”。

相关文章
|
2月前
IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
|
6月前
|
开发框架 前端开发 Java
【IntelliJ IDEA】idea 实用功能Auto Import:自动优化导包(自动删除、导入包)
【IntelliJ IDEA】idea 实用功能Auto Import:自动优化导包(自动删除、导入包)
119 0
|
4月前
|
SQL Java 关系型数据库
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
恕我直言,IDEA的这个分析功能,只有不到10%的程序员知道
最近,有同学问我,为什么你如此钟爱IDEA? 因为你越用越顺手,还能不断给你惊喜,让你乐此不疲的去挖掘它的功能。
|
6月前
|
SQL IDE Linux
IDEA:7个强大功能助你高效编码和优质工作!
IDEA:7个强大功能助你高效编码和优质工作!
32 0
|
6月前
|
程序员 开发工具 git
震精!IDEA不为人知的功能竟被鹅厂用400页IntelliJ文档讲清楚了
这就是为什么在这种情况下,编辑器是屏幕上唯一可见的,具有所有其他与编码无关的功能的专用快捷方式。而且IDEA代表集成开发环境。 它是多种工具的组合,使软件开发过程更容易,更健壮,更不容易出错,为了帮助开发人员组织他们的工作流程,IntelliJ IDEA为他们提供了一个惊人的工具集,包括反编译器,Docker支持,字节码查看器,FTP和许多其他工具
|
7月前
|
安全 IDE Java
IDEA快捷键总结和各种实用功能
IDEA快捷键总结和各种实用功能
120 1
|
9月前
|
Java Spring
【Springboot】idea中配置文件不生效、自动提示功能消失、小绿标不出现现象
【Springboot】idea中配置文件不生效、自动提示功能消失、小绿标不出现现象
407 0
|
12月前
|
存储 JSON 程序员
好用到爆!IDEA 版 Postman 面世了,功能真心强大
IDEA是最常用的开发工具,很多程序员都想把它打造成一站式开发平台,于是安装了各种各样的插件。最近发现了一款IDEA插件RestfulFastRequest,细节做的真心不错,说它是IDEA版的Postman也不为过,推荐给大家!
|
SQL 前端开发 Java
IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能
IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能
342 0
IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能