IntelliJ IDEA 2023.2正式发布,新UI和Profiler转正

在这里插入图片描述

你好,我是YourBatman:做爱做之事❣交配交之人。

📚前言

北京时间2023年7月26日,IntelliJ IDEA 2023.2正式发布。老规矩,吃肉之前,可以先把这几碗汤干了,更有助于消化(每篇都很顶哦):

  • IntelliJ IDEA 2023.2正式发布,新UI转正,AI不能使用
  • IntelliJ IDEA 2023.1正式发布,Maven项目大提速&支持Apache Dubbo
  • IntelliJ IDEA 2022.3正式发布,配置云同步&支持Redis好用到炸
  • IntelliJ IDEA 2022.2正式发布,支持Spring Boot 3和Spring 6
  • IntelliJ IDEA 2022.1正式发布,我把Maven Helper卸载了
  • IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德
  • IntelliJ IDEA 2020.2正式发布,诸多亮点总有几款能助你提效
  • IntelliJ IDEA 2020.1正式发布,你要的Almost都在这!
  • IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?

全新启动图,感受一下:
在这里插入图片描述
这是旧版2023.1的启动图:
在这里插入图片描述
这是旧版2022.3的启动图:
在这里插入图片描述

✍正文

官方对此版本的新变化总结:IntelliJ IDEA 2023.2 引入 AI Assistant(AI助手),通过一组由 AI 提供支持的功能助力开发(比如:Open API公司,也就是Chat GPT)。 升级的 IntelliJ 分析器现在提供编辑器内提示,使分析进程更加直观详尽。 此版本还包括有助于简化开发工作流的 GitLab 集成,以及其他多项值得关注的更新和改进。

在继续了解新版本的新特性之前,笔者特先来同步下此版本解决的几个笔者认为非常重要的bug。

🪲解决的重要Bug

这里重点“批评”下2023.1这个版本(之前版本没有问题),由于它检索上存在的问题,导致我险些出现线上P0故障▄█▀█●

无法关联到.class文件引用关系

说明:这里说的.class文件,是指没有关联到souce code的文件(可能是没有Download Sources,也可能是真没有源码),即IDEA帮你反编译出来的,上方会飘这一行东东的文件:
在这里插入图片描述
众所周知Java是强类型语言,该特点是Java能做大型企业级工程的核心优势之一。通过这个特性,我们可以很方便的整理出各个类、方法、变量之间的引用关系甚至UML图,进而做出决策和做出调整。

但是,IntelliJ IDEA的2023.1版本,在没有源代码的类文件中,会丢掉引用关系,导致检索的时候出现缺失。这么一来对使用时影响非常之大,不仅效率打折扣,更重要的是对决策产生致命影响。具体可表现为:

  1. 比如接口,想知道它的实现有哪些。这时只能列出有source code的一些引用
  2. 比如Find Usages,只能找到这个类/方法/属性被source code的一些引用

这种基础功能,开发者本着对IntelliJ IDEA开发工具的绝对信任,一旦它给出的结果有遗漏,那是相当危险的一件事。因此,上面笔者提到的当时是什么场景导致差点出了大错,相信你可自行脑补了吧。
在这里插入图片描述
PS:为了验证不是我本机环境的问题而确实是IDEA导致,我找了同事4台电脑验证。证实了2023.1版本的确存在此问题,方才石锤。好消息是,IntelliJ IDEA 2023.2版本此问题已被修复,亲测无误,可放心食用了

话说回来:也有升级到2023.1没有出现此问题的,但据我抽样发现出问题的概率很大,不容忽视

新UI左侧边栏剩一个无法挪到右边

这个问题虽不是功能上的bug,但肯定是问题,一定程度上影响到了笔者的使用体验。

JetBrains在2022年12月份的2022.3版本中首次推出新UI,对界面进行了彻底的改造,主打极简风,改进整体的编码体验,为此笔者非常喜欢。新UI官方也是主推,点进官网就能感受到推广力度:减少干扰,提高工作效率,保持专注
在这里插入图片描述
在2022.3和2023.1这两个版本中,新UI一直是以Beta版本存在。终于,在这个版本就彻底的转正了:去掉了Beta字样
在这里插入图片描述
新UI这一次IntelliJ IDEA的步子迈得还是有点大的,因此口碑两极分化,毕竟并非所有开发者都喜欢这种极简风格,若习已养成了用鼠标点击工具栏的习惯,一下子确实很难适应过来。

这么重大的改变可能会导致不适,为此JetBrain当然也有考虑到,因此旧UI目前依旧是保留的。但不代表它会一直存在。官方对新旧UI给出的迭代时间计划是:

  • 旧UI保留到什么时候?答:预计在2024年中发布的2024.2版本中彻底删除掉旧UI
  • 新UI什么时候成为默认UI?答:预计2024年初发布的2024.1版本中将新UI作为缺省

还记得笔者在去年底(2022年12月份)吐槽新UI中的其中一个槽点吗:左侧工具栏无法全部挪到右侧来(旧UI是可以的),还剩个...死活不让挪了,这样子搞得很不优雅:白白浪费了左侧这部分空间
在这里插入图片描述
“可能”我的建议被官方听到了,这个版本给解决了:左侧工具栏可全部挪到右边
在这里插入图片描述
移到右边后,左边就异常简约看着舒服多了:更符合人体视觉工程学
在这里插入图片描述

🌈what’s new(新特性)

现在我们浏览下此次版本的主要新特性。

Profiler集成进编辑器内

IntelliJ IDEA遵守承诺,一直在提升Profiler的能力,提供有关应用程序性能的深入信息,并使性能问题更容易调查。它在第一个2023.2 EAP 1版本中,引入了编辑器内提示,它提供了一种简单的方法来逐行解释代码的性能,并帮助我们更快地解决性能问题。编辑器装订区域中的颜色编码注解可以高亮显示关键方法,让您专注于性能瓶颈。因此,不再需要使用 Flame Graph(火焰图)和 Call Tree(调用树)视图执行彻底、耗时的分析。

Profiler功能在IntelliJ IDEA 2020.1就引入了,当时作为一个实验功能。但是Jetbrain它承诺了会在后面的版本中逐步迭代它。

  • 2020.1/2版本:我们需要手动的导入一个xxx.hprof文件供给它分析
  • 2020.3版本:和IDE更深入集成,除了更便捷的打开xxx.hprof文件外,还可直接分析正在运行的程序
  • 2022.2版本:此功能从实验性走到发布,正式毕业,已值得信赖,可以用来做性能分析用。表现更稳定、参数更详细,并且还支持了Kotlin和Scala语言
  • 2023.2版本:集成进编辑器内,和代码可做到一一对应。可不再依赖于🔥火焰图、树状图那些,更加直观高效
效果演示

代码准备:

@RequestMapping("/demo")
@RestController
public class DemoController {@Autowiredprivate DemoService demoService;@GetMapping("/profiler/test")Object testProfiler() throws Exception {TimeUnit.SECONDS.sleep(3); // 补好CPU,但耗时demoService.testProfilerForService();return "SUCCESS";}}@Service
public class DemoService {public void testProfilerForService() throws InterruptedException {for (int i = 0; i < 10_000_000; i++) { // 既耗时,又耗CPUSystem.out.println(i + 100);}TimeUnit.SECONDS.sleep(2);}}

使用Profiler分析器方式启动应用,也就是这里:
在这里插入图片描述
启动后,访问接口http://localhost:8080/demo/profiler/test,监控情况:
在这里插入图片描述
点击Stop Recording,在IDEA里就可以非常直观的看到性能分析结果:controller层89%的时间花在了第28行,也就是调用service这一行
在这里插入图片描述
service的方法里,89%的时间花在了i + 100这一行
在这里插入图片描述
通过Click to navigate导航,一层一层深入,直到找到性能瓶颈的那行代码。

你可能会碰到的问题
  1. 启动时抛出异常java.lang.ClassNotFoundException: one.profiler.JfrSync
    在这里插入图片描述

  2. 点击Stop Recording时报错:Profiler error: Can‘t stop profiler, jattach output:
    在这里插入图片描述

  3. 应用已启动,通过Attach方式启动Profiler,报错Failed to active JFR synchronization.
    在这里插入图片描述

当你遇到👆🏻这些错误时,错误归因大概率都是同一个:JDK/JRE版本不对

  • 要么是HotSpot JDK(如Oracle JDK)低于1.8.0_252版本
  • 要么用的不是Oracle JDK。大多数情况下是这种情况,如果你用的是m系列芯片的Mac的话

解决方案:使用Oracle JDK(包含Oracle Open JDK)。至于原因嘛,感兴趣查查JFR是啥就知道啦,顺便了解下它的发展史。

这样,您可以轻松地关注性能瓶颈并即时查看它们,而无需使用火焰图和调用树视图执行彻底、耗时的分析。

PS:它里面有很多细节设置,可自行探索

AI Assistant

大多数博主都用它博眼球,但其实自己没用过,有点无语。它背靠GPT的大语言模型:
在这里插入图片描述
这里笔者一笔带过,因为天朝用不了。你若有兴趣可尝试使用步骤:

  1. 在插件市场里下载安装AI Assistant插件
    在这里插入图片描述
  2. 然后你可看到AI视窗,它可以帮你做这四件事:
    1. 解释代码
    2. 回答你编程上的问题
    3. 帮你写commit msg
    4. 帮你写注释/文档
      在这里插入图片描述
  3. 点击Log in to JetBrains AI…,它跳到https://auth.grazie.ai/auth/ij让你授权。如果没用🪜,不出意外,你就会看到这个(或者根本打不开)
    在这里插入图片描述
    如果用了🪜,就是这些页面:
    在这里插入图片描述
    在这里插入图片描述
    到这个页面,就授权成功了。
    在这里插入图片描述
    然后回到IDEA里,你会看到:
    在这里插入图片描述
    AI助手,听起来diao炸天。但这部分笔者不浪费笔墨了,自己官网看去。毕竟天朝用不了,并且此功能目前也仅还是邀请制。把这个作为新版IDEA重要新特性写出来的博主,我觉得很不负责,只为流量,无有其它。

Gitlab集成

现在可以和GitLab的集成,帮助我们简化您的开发工作流。笔者本非常期待这个功能,这样便可方便的合并同事提交的MR:
在这里插入图片描述
但是:我进行到了这一步后,就没有后续了:
在这里插入图片描述
Log In时提示报错:Failed to load merge requests. Deserialization of Request POST [https://gitlab.redacted.com/api/graphql/](https://gitlab.redacted.com/api/graphql/) response to JSON failed。原因很简单:
在这里插入图片描述
目前仅支持Gitlab 15.10以上的企业版。将来会支持到社区版本以及之前的版本~

更多整合Gitlab信息参考:https://blog.jetbrains.com/blog/2023/07/26/gitlab-support-in-jetbrains-ide

代码可按行提交

相信每个开发者都遇到这个情况:把你这个方法、这几行代码提交了,其它的先不提交。因为其它的行可能编译不通过、或者对方暂不需要,因此(行级别)局部提交就成了刚需。
在这里插入图片描述
即可在这里逐行选择:勾选的行表示需要commit的(默认该文件内所有的行都是提交的)。当然,也可以右键选择/反选:
在这里插入图片描述

这个功能平时用得不多,但特殊场景下是非常好用的,即实用又能炫技。

其它新功能

Project视图中文件可按修改时间排序了

在这里插入图片描述

Project视图中文件可单击打开了

在这里插入图片描述
目的是提效,但我们习惯大都是双击打开,因人而异吧

可以连接Redis集群了

在这里插入图片描述
需要注意的是,链接地址协议需加上cluster,就像这样:jdbc:redis:cluster://xxx.xxx.xxx.xxx:6379/0

不再支持Struts2、Play和Cloud Foundry等插件

IntelliJ IDEA 2023.2及更高版本不再提供相关插件的支持

IDEA运行-Xmx默认上调为2GB

在这里插入图片描述
可在这里查看你的IDEA的-Xmx值,默认已调整为2GB大小。个人建议:若内存够用,建议至少调为4GB以上。

不再支持Windows 7

从IntelliJ IDEA 2023.2起,不再支持Windows 7。需将操作系统更新到Windows 10或更高的版本才行

✍总结

每次软件升级,我的建议就一个字:。今天是1024,祝你快乐!

推荐阅读

  • 001. 为啥用IDEA反编译没有擦除泛型?
  • 002. java.lang.NumberFormatException: Infinite or NaN,怎么破?
  • 003. Spring Boot启动了几个IoC容器?如何证明?
  • 004. 可以向toList()返回的集合add元素吗?

在这里插入图片描述

  • 个人博客:https://yourbatman.cn
  • 程序员网盘:https://wangpan.yourbatman.cn
  • 女娲工程:https://start.yourbatman.cn
  • 更多专栏:https://yourbatman.cn/columns |或| 公号后台回复“专栏列表”获取全部小而美的原创技术专栏

我是YourBatman,一个俗人,贪财好色。历经过延期毕业、卖保险、送外卖的大龄程序员,《梦幻西游》骨灰玩家;龙珠迷、火影迷。前大厂资深技术专家,现资深领域建模专家、Java架构师;高质量代码、DDD面向对象设计布道师;Spring开源贡献者,CSDN博客之星年度Top 10,出版书籍《Spring奇淫巧技》&《领域建模之面向对象程序设计》进行时。wx:yourbatman-u

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac苹果电脑使用耳机听不到声音

大家在使用耳机收听音乐时候&#xff1f;是否经常遇到声音和音频播放问题的情况。这里小编为大家带来了三种不同的方法&#xff0c;帮助大家解决耳机在macOS系统电脑上怎么听不到任何声音的教程。如果大家对这篇文章感兴趣&#xff0c;那就来看下面的具体步骤吧。 方法一、检查…

【机器学习合集】优化目标与评估指标合集 ->(个人学习记录笔记)

文章目录 优化目标与评估指标1. 优化目标1.1 两类基础任务与常见优化目标1.2 分类任务损失0-1损失交叉熵损失与KL散度softmax损失的理解与改进Hinge损失 1.3 回归任务损失L1/L2距离L1/L2距离的改进 Huber loss 2. 评测指标2.1 分类任务中评测指标准确率(查准率)/召回率(查全率)…

入门人工智能 —— 学习数据持久化、使用 Python 将数据保存到mysql(7)

入门人工智能 —— 学习数据持久化、使用 Python 将数据保存到mysql 什么是数据持久化&#xff1f;使用 Python 进行数据持久化步骤 1: 安装 MySQL步骤 2: 安装必要的 Python 库步骤 3: 连接到 MySQL 数据库步骤 4: 创建数据表步骤 5: 插入数据步骤 6: 查询数据步骤 7: 关闭连接…

类图表示法

设计模式&#xff0c;用设计图表示的话&#xff0c;主要用到类图。常见UML类图如下&#xff1a; 1、类图&#xff1a;矩形框&#xff0c;代表一个类&#xff08;Class&#xff09;。类图分为三层&#xff0c;第一层显示类的名称&#xff0c;如果是抽象类&#xff0c;则用斜体显…

mac安装nodejs,跑vue程序

1. 下载node.js for mac&#xff0c;地址&#xff1a;Node.js。一路安装就可以了&#xff0c;无需修改。 2. mac终端&#xff0c;查看node和npm的版本。 3. 配置环境变量&#xff0c; vim .bash_profile增加PATH$PATH:/usr/local/bin/ 4. 但是毕竟npm安装一些东西还是太慢了所…

霍尔电流传感器如何应用在数据中心电量监测的-安科瑞 蒋静

摘要&#xff1a;数据中心供电电源质量的好坏直接影响到IT设备的安全运行&#xff0c;因此对数据中心直流列头柜电源进出线实行监测非常重要&#xff0c;而通过霍尔电流传感器可以采集主进线电流、多路支路直流电流和漏电流。 关键词&#xff1a;数据中心&#xff1b;直流列头…

好用的Visio绘图文件工具 VSD Viewer最新 for mac

VSD Viewer是一款可以查看Microsoft Visio绘图文件的工具&#xff0c;适用于Windows和macOS操作系统。它具有以下优点&#xff1a; 直观易用&#xff1a;VSD Viewer的用户界面非常简单直观&#xff0c;易于使用。支持多种文件格式&#xff1a;VSD Viewer支持多种Visio文件格式…

Rust逆向学习 (2)

文章目录 Guess a number0x01. Guess a number .part 1line 1loopline 3~7match 0x02. Reverse for enum0x03. Reverse for Tuple0x04. Guess a number .part 20x05. 总结 在上一篇文章中&#xff0c;我们比较完美地完成了第一次Rust ELF的逆向工作&#xff0c;但第一次编写的R…

公司电脑屏幕录制软件有什么功能

电脑屏幕录制软件有很多&#xff0c;今天简单说说说它的基础功能和附属功能&#xff1a; 基础功能&#xff1a; 1、屏幕录像 支持对所选电脑的屏幕进行录制&#xff0c;并且支持调整截屏频度、画面质量、单个视频时长等。 2、实时屏幕 可以对对方电脑进行实时屏幕查看&…

linux网络测试命令

文章目录 一.route命令解释二.traceroute命令三.nslookup命令四.本地主机映射文件五.修改网络配置文件六.设置网络接口参数 一.route命令解释 Destination&#xff08;目标&#xff09;&#xff1a;这一列显示要路由的目标网络或主机的IP地址。它标识了数据包要发送到的目的地。…

浙江环保用电计量adw300-hj治污产污生产设备监测

浙江环保用电计量表&#xff0c;浙江环保用电能表&#xff0c;浙江环保督查计量电表&#xff0c;环保设备能耗采集表 企业基本信息 企业名称&#xff1a;XXXXXXXXXXX 企业地址&#xff1a;XX省XX市 工 程 量&#xff1a;X台监测仪表 预计工期&#xff1a;X天 监测点位信息…

实战经验分享:打造千万级直播项目,如何选择适合的长连接技术,告别CRUD开发

前言 其实不管大厂、小厂&#xff0c;做业务开发的同学都知道&#xff0c;写一个功能&#xff0c;有中台&#xff0c;有架构&#xff0c;有API&#xff0c;有SDK&#xff0c;很多可复用的代码直接调一下RPC接口或者一个注解就搞定了复杂的操作&#xff0c;所以很多螺丝钉们都没…

OPC UA:工业领域的“HTML”

OPC UA是工业自动化领域的一项重要的通信协议。它的特点是包括了信息模型构建方法。能够建立工业领域各种事物的信息模型。在工业自动化行业&#xff0c;OPCUA 类似互联网行业的HTTP协议和“HTML”语言。能够准确&#xff0c;可靠地描述复杂系统中各个元素&#xff0c;并且实现…

机器学习中常见的特征工程处理

一、特征工程 特征工程&#xff08;Feature Engineering&#xff09;对特征进行进一步分析&#xff0c;并对数据进行处理。 常见的特征工程包括&#xff1a;异常值处理、缺失值处理、数据分桶、特征处理、特征构造、特征筛选及降维等。 1、异常值处理 具体实现 from scipy.s…

桶装水订水送水小程序开发搭建;

上门送水小程序桶装水配送是一款的同城上门配送平台&#xff0c;为用户提供便捷的桶装水配送服务。解决用户在获取干净健康的饮用水方面的需求&#xff0c;提供高效、便捷的在线预约和下单服务。 小程序平台开发&#xff0c;具备强大的技术支持和良好的用户体验。用户可以通过…

跨平台开发技术

目录 1.Qt1.简介2.优势3.劣势 2.NET CoreVue1.简介2.优点 3.Flutter1.简介2.优点3.缺点 4.Maui1.简介2.优点3.缺点 5.Avalonia1.简介2.优点3.缺点 6. Cordova1.简介2.优点3.缺点 7.Electron1.简介2.优点3.缺点 个人搜集资料并总结了一些跨平台开发技术&#xff0c;如有不足欢迎…

分享一下怎么做一个房间预定链接

在旅游行业中&#xff0c;房间预定是非常重要的一环。随着互联网的普及和旅游业的发展&#xff0c;越来越多的人选择在网上预订房间。本文将介绍如何制作一个房间预定链接&#xff0c;以及推广该链接的方法和策略&#xff0c;帮助读者更好地了解房间预定的需求和实现方式。 一、…

隧道代理 vs 普通代理:哪种更适合您的爬虫应用?

前言 随着互联网的普及&#xff0c;爬虫技术在多个领域得到广泛应用。在进行爬虫开发时&#xff0c;代理服务器是不可或缺的工具之一。代理服务器可以隐藏客户端的真实 IP 地址和位置&#xff0c;从而保护客户端的隐私&#xff0c;同时通过代理可以绕过一些网络限制和安全机制…

什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

迅为itop-3568开发板qt学习手册上新

基于RK3568的QT教程他来了~从C基础到QT编程实例再到项目实战&#xff0c;《iTOP-3568开发板QT学习手册》带你打通QT的任督二脉。 界面布局 3.5.1 水平布局 l Horizontal Layout&#xff1a;水平方向布局&#xff0c;组件自动在水平方向上分布 使用时先选中组件&#xff0…