作者:super flash

来源:闪电侠的博客

JetBrain 是一家伟大的公司,一直致力于为开发者开发世界上最好用的集成开发环境

前段时间,JetBrain 公司发布了 Java 集成开发环境 IntelliJ IDEA 最新版本 2018.3Beta,本篇文章,我将根据官方博客以及自己的理解来为大家解读一下这次更新有哪些重磅的功能。

1. 重构类、文件、符号,Action 搜索

IntelliJ IDEA(以下简称 IDEA) 中的搜索可以分为以下几类

  1. 类搜索,比如 Java,Groovy,Scala 等类文件

  2. 文件搜索,类文件之外的所有文件

  3. 符号搜索,包括接口名,类名,函数名,成员变量等

  4. Action 搜索,找到你的操作

  5. 字符串搜索及替换

在 IDEA 的世界里,搜索无处不在,你几乎可以瞬间找到你想要找到的任何一行代码甚至任何一个字。新版中,IDEA 更是将类、文件、符号、Action 搜索与双 Shift 键调出来的 SearchEverywhere 无缝地结合在一起。

在老的版本中,类、文件、符号、Action 搜索是独立的快捷键,在新版中,任意一种类型的搜索行为被触发,将弹出来以下窗口

从以上演示可以看到,我们调出搜索类的窗口,该窗口将首先会展示基于类名搜索的结果,如果你想复用当前输入的字符基于其他的语义(比如文件或者符号)进行搜索,只需要按 Tab 键,结果瞬间就出来了。

2. 重新设计的结构搜索/替换对话框

其实,IDEA 里面除了以上五种类型的搜索,还有一种非常强大的搜索叫做 结构化搜索,你可以基于一定的代码结构搜到你所需要的结果。

举个栗子:如果我们想搜索所有的 try catch 语句块,在调出结构化搜索框之后,可以输入以下文本

  1. try {

  2. $TryStatement$;

  3. } catch($ExceptionType$ $Exception$) {

  4. $CatchStatement$;

  5. }

然后,IDEA 就会把所有的 try catch 语句块搜索出来,而新版更是强化了这个功能,下面我用两张动图演示一下这次更新的两个功能。

结构化搜索由于输入的文本比较长,所以一般我们会自己预置一些模板,然后给模板命名,然后结构化搜索的时候呢,我们就可以直接基于这个模板名来搜索,新版更新的第一个功能就是,在文本输入框里,按下智能补全键,可以迅速调出模板,按照最近的搜索历史排序,然后再按下回车,文本就自动给你填充上了,你还可以点击左上角的搜索 icon,也会展示你最近的搜索记录,这些记录是以文本的方式展示的。

上面的文本就是系统内置的结构化模板 try's,点击完 Find 按钮之后,所有的 try catch 都会展示出来,我们还可以进一步过滤,比如,我们想要找出 catch 到的 exception 的名字为 flash,给对应的模板变量加上一个 Text 类型的 filter 即可迅速定位。

3. 运行一切

你可以双击 ctrl 键,调出 RunAnything 窗口,你可以输入点什么来运行任意可以运行的东西,比如起 tomcat 容器,单元测试,甚至可以运行终端指令,gradle、maven 构建命令。

另外,你还可以按住 shift 键,那么所有支持 debug 的运行将秒变 debug 模式。

4. 重构插件中心

IDEA 中很多强大的功能都是通过插件来实现的,随便举个栗子,装个语言插件,IDEA 摇身一变为 nodejs IDE、php IDE、python IDE、scala IDE、go IDE,我自己就安装了 30+ 非常好用的插件。

而在新版的 IDEA 中,JetBrain 更是对插件中心进行全面改版,如下图:

调出插件配置之后,页面分为三大部分

  1. Marketplace: 插件市场,你可以搜索到你想要的插件

  2. Installed: 当前安装的所有的插件,你还可以点击左上角搜索小 icon,按类别查看当前已安装的插件,其中的 custom 选项便是自己下载安装的插件

  3. Updates:当前安装过的插件如果有更新,都会在这里显示出来

  4. 最后一个是配置项,你可以自定义你的插件仓库,你可以给配置插件下载的 http 代理(尤其是国外网络访问差的时候),你还可以从本地硬盘中安装插件


5. 不断改进的版本控制系统

我个人对于版本控制,是不太喜欢用图形界面的,但是 IDEA 对于版本控制的设计真是太好用了,只能沦陷了,嘿嘿~

  • 5.1 GitHub Pull Requests

新版中,加入了对 GitHub Pull Requests 的支持,现在你可以直接在电脑上创建或者查看某个项目的 Pull Request 了。

你还可以基于某个 Pull Requests 直接创建一个分支,或者直接在 Github 上查看当前的 Pull Request,这个功能对于开源工作者来说是一件非常幸福的事。

  • 5.2 Git 子模块支持

此外,新本 IDEA 对于 Git 子模块的支持也更加友好了。如果你的 Git 项目中包含 Git 子模块,在 clone 代码的时候,也会一并 clone 到本地,另外,项目中任何文件有变更,提交 commit,IDEA 也会智能匹配到外层模块或者子模块,一并提交 commit,进而同时 push 到多个仓库。

  • 5.3 Improved Annotate support

我们有时候会不经意地格式化自己或者别人写过的代码,这就导致了每次提交代码的时候,即使只更新了一两处代码,最后 diff 出来也会显得很乱,然而其中大部分乱的地方是因为空格导致的。

在新版 IDEA 中,我们在对比文件的时候,可以选择忽略空格

注意:这个选项默认是打开的

另外,在合并代码的时候,你也可以选择忽略空格

这样在解决冲突的时候,你也不会看到空格相关的改动,省下的很多宝贵的注意力。

6. 全新主题

IDEA 终于在这一版新增了一款默认主题,该主题为一款高对比度主题,应该会有很多人会喜欢吧。

预计在不久的将来,IDEA 会在主题这方面下功夫,毕竟笔者觉得 VS Code 的主题还是蛮好看的,IDEA 可以吸收过来。

7. 编辑器改进

  • 7.1 多行 TODO 注释

在 IDEA 中,只要你在注释中添加了 todo 关键词,在边条栏中的 todo 选项卡中就可以看到当前所有待未完成的功能,如下图。

老版本中,是不支持 多行 todo 注释的显示的,而在新版本中,如果 todo 注释有多行,你只需要在下面几行前面再添加一个空格即可

  • 7.2 缩进状态栏

IDEA 现在可以在状态栏中显示当前文件的缩进是几个空格,你可以点击这个状态栏,控制当前文件的缩进风格。

比如,你的项目缩进风格是4个空格,然后某个新人写了个 tab 风格的源文件提交了,你可以直接点击弹出菜单的 ConfigureIndentsForJava...,然后做一些修改即可。


  • 7.3 TAB 快速切换源文件

你现在可以使用 Tab+数字,迅速切换到你想要的文件,这比鼠标点击要快一些

  • 7.4 多行字符串搜索

在新版 IDEA 中,不仅仅能够搜索字符串,而且能够搜索整个段落

8. JVM 调试器

  • 8.1 attach 到任意 Java 进程

IDEA 的 debug 功能无论是对于调试找错还是阅读源码,都发挥了非常重要的作用,新版 IDEA 对 debug 功能进一步加强,现在不仅仅能 debug 当前的应用,而且能够 attach 到任意的 Java 进程,attach 之后,你就可以看到该进程的线程状态,并且使用强大的 Memory View 功能可以看到当前内存的状态。

  • 8.2 远程调试支持异步栈追踪

IDEA 支持远程 debug 几乎和本地 debug 一样,只需要远程端口开启即可。

IDEA 也支持异步线程的调试,断点打在某一行,你不仅可以看到这行对应线程的调用栈,还能看到启动对应线程的外部线程的调用栈。

新版中,对远程调试也加入了异步栈的支持,采用以下两个步骤即可

  1. 拷贝 /lib/rt/debugger-agent.jar 到远程机器

  2. 添加启动参数 -javaagent:debugger-agent.jar 到远程机器

9. 运行配置

  • 9.1 配置宏

我们在运行应用程序的时候,有的时候需要设定不同的启动参数来查看不同的效果,在以前,这些参数都需要你手动敲进去,并且经常会忘记当前启动参数的测试目的,非常麻烦。

现在,你可以提前将参数通过宏的方式输入,调试的时候,通过调整宏,你不用反复修改启动参数文本,通过宏文本还可以一目了然看到当前的启动参数的测试目的是什么。

  • 9.2 使用文本作为控制台输入

有的时候需要在控制台输入一些文本,然后再运行程序,这个对于调试来说非常不便,新版 IDEA 支持指定一个文本文件作为控制台输入,这样,你就可以预先定义好控制台输入,重复利用,提高效率

10. JVM Profiler

最后一个重磅功能,应该可以说是本次更新最大的亮点,IDEA 现在可以分析 Java 程序的性能分析了,包括如下几个方面

  1. 火焰图分析 CPU 性能消耗,你可以分析 Java 进程的所有线程的 CPU 消耗火焰图,也可以只选择一个线程来分析

  2. 方法调用图,可以找到在某个线程中,消耗 cpu 最多的方法

  3. 方法列表,可以看到每个方法的调用次数,点进去还可以看到详细的调用栈

下面用一章动图来展示一下,具体的细节读者可自行探索

有了这个神器之后,你不需要额外的 profiler 工具,就可以直接在 IDEA 里面完成应用程序的性能分析。预计不久的将来,Eclipse MAT 相关的功能可能也会移植到 IDEA 中,届时,Java 应用程序性能分析,堆分析,gc 分析将统统可以在 IDEA 里面运行,真正的 All In One 时代即将到来!

11. More……

除此之外,本次更新还有大量的小功能的更新,在你使用新版 IDEA 的时候就会体验到,这里就不一一赘述了,赶紧下载体验吧,下载地址:https://www.jetbrains.com/idea/nextversion/。

-END-

 今日推荐: 

Nginx很火,火到无论是创业公司,还是BAT等一线互联网公司,都会使用Nginx。因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影。它可以轻松在百万并发连接下实现高吞吐量的Web服务,同时诸多应用场景下的问题都可以通过种种Nginx模块得以解决。

学习Nginx,推荐极客时间最新课程《Nginx核心知识100讲》,跟着陶辉学,你必将收获:

1. 基础知识详解及核心架构剖析;

2. 搭建支持百万高并发的Nginx服务;

3. 从内核优化到源码解读的全方位拆解;

4. OpenResty + Nginx 开发实战。

 近期热文:

  • Spring Cloud 加盟重量级成员Spring Cloud Alibaba,打造更符合中国国情的微服务体系

  • 使用Consul做服务发现的若干姿势

  • 如何健壮你的后端服务?

  • zookeeper-一个关于paxos的故事

  • 从面试官的角度谈谈大数据面试

  • 为什么 Spring 框架如此流行?

关注我

点击“阅读原文”,看本号其他精彩内容

IntelliJ IDEA 重大更新:支持CPU火焰图,新增酷炫主题相关推荐

  1. local lua 多个_Lua 级别 CPU 火焰图介绍

    在 OpenResty 或 Nginx 服务器中运行 Lua 代码如今已经变得越来越常见,因为人们希望他们的非阻塞的 Web 服务器能够兼具超高的性能和很大的灵活性. 有些人使用 Lua 完成一些非常 ...

  2. Android矢量图动画特效,Android使用SVG矢量图打造酷炫动画效果

    一个真正Android使用SVG矢量图打造酷炫动效往往让人虎躯一震,话不多说,咱们先看看效果: 这个效果我们需要考虑以下几个问题: 1. 这是图片还是文字: 2. 如果是图片该如何拿到图形的边沿线坐标 ...

  3. 小程序影藏溢出的gif_你的GIF动图不够酷炫?可能是你还不知道这5个有趣的网站!...

    运营和设计师,都缺GIF 没有酷炫的动态图 拿什么吸引走在潮流尖峰上的客户爸爸们 找不到高逼格GIF网站? 看这篇就够了! 贴心的图图,全给你整理好啦! ·GIPHY· GIPHY | Search ...

  4. Android使用SVG矢量图打造酷炫动效!

    一个真正酷炫的动效往往让人虎躯一震,话不多说,咱们先瞅瞅效果: 如果你想看 GAStudio Github主页,请戳这里: 如果你想看 GAStudio更多技术文章,请戳这里: QQ技术交流群:277 ...

  5. 查看jvm进程cpu火焰图工具

    应用系统:linux系统 工具官网:https://github.com/jvm-profiling-tools/async-profiler 查看方法:官网有介绍 主要步骤: 上传async-pro ...

  6. 魔性十足的数学动态图,酷炫!

    微信公众号 关键字全网搜索最新排名 [机器学习算法]:排名第一 [机器学习]:排名第一 [Python]:排名第三 [算法]:排名第四 源 | 蒋迅的博客 小编最近发现了一组超美的与数学有关的动态图, ...

  7. 【转载】火焰图安装使用

    转自文章:http://armsword.com/2021/03/23/use-async-profiler-find-cpu-bottleneck/ 初识火焰图 Perf 的原理是这样子的:每隔一个 ...

  8. flink source 同步_如何生成 Flink 作业的交互式火焰图?

    原标题:如何生成 Flink 作业的交互式火焰图? 简介:Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 ...

  9. 如何生成 Flink 作业的交互式火焰图?

    简介: Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 SQL 语言来快速实现一个分布式高可用的流式应用, ...

最新文章

  1. 医疗影像专用计算机,FCI医疗专用接口满足数码影像需求 -医疗电子-与非网
  2. 架构漫谈读后感之软件架构师如何工作
  3. ubuntu远程windows桌面
  4. 如何在SAP Spartacus里监控用户浏览了某产品明细页面的动作
  5. CF1528C dfs序+set维护
  6. android plugin 镜像,cordova-plugin-screen-orientation
  7. 伪样式:hover ,:active,:focus
  8. 赵泽良:规范引导数字平台健康发展是时代面临的新课题
  9. linux11g导入10g 怎么改版本,Oracle 11g导入到10g引起的错误
  10. java singletonlist_Java Collections singletonList()方法及示例
  11. Intel IPP密码库 IPPCP 2018——第一部分 基础开发指南
  12. 老Java程序员花两天做了个消消乐(天天爱消除)
  13. 用技术去掉搜索引擎中的死链接
  14. unity游戏开发之打包apk谷歌上架报错总结
  15. 夏令营面试常见英文问题回答_回答有关5合1促销的3个常见问题
  16. TCR宝藏级隐藏项目National Writing Board
  17. 书论72 宋啬《书法纶贯》
  18. L1-027 出租 (20 分) java
  19. windows禁用f1按键
  20. Kaggle之泰坦尼克号(1)

热门文章

  1. 漫谈 Weblogic CVE-2020-2555
  2. golang ide 简介
  3. linux centos7 升级 make 4.0
  4. linux docker 目录挂载映射
  5. gdb调试fork+exec创建的子进程的方法
  6. Linux下tar.xz压缩解压
  7. linux 线程 pthread_create 源码 剖析
  8. Linux内核分析 - 网络[六]:网桥
  9. 双系统装完只能u盘启动_苹果电脑安装双系统,切换MacOx系统和Windows系统!
  10. subprocess.Popen.stdout.readlines()