IntelliJ IDEA

今天给大家分享一个IDEA调试过程中的一个小技巧。 先来说说场景,你有没有碰到类似的情况,一个循环结构里,中间某一个情况可能会出错。比如下面的代码结果中,可能执行到第27次的时候,会出现问题。 for(int i = 0; i < 100; i++) { // 业务逻辑 System.out.println(i);} 那么这个时候,你会怎么调试的呢?是不是像下面这样加个断点 然后狂点绿色小箭头,到将来出错的那一次? 其实IDEA中有个功能,可以给断点增加条件,这样就不用那么麻烦了。 操作也很简单,只需要右键已经添加的断点小红点,此时会弹出一个表单,里面有condition这一项,具体如下图: 这里就可以输入你希望这个断点生效的条件,比如我这里输入了i == 27,那么当这个循环执行到i等于27的时候,程序就会停下。 这样,你就不需要靠疯狂的...

TJ君今天在和同事聊天,期间说起小孩子的教育,说现在的教育方式都是以鼓励为主,要不停的告诉小孩子正能量告诉他们是最棒的才能更好地激发他们的学习热情。 想想TJ君小时候的残酷生活,现在小孩子真是生活在幸福里的花朵。 不过话说回来,是不是希望自己在编码的时候也有人一直在鼓励你呢?嘿嘿,正所谓千穿万穿马屁不穿,那么TJ君今天介绍的这个好东东你就一定不能错过了。 TJ君今天给大家介绍的是一款程序员鼓励插件,可以在你编码的时候不停的语音鼓励你,让你事半功倍。 插件的雏形最早是一款vscode的插件,不过有大神jadepeng写了一个IDEA版本的,让我们这些使用idea的小伙伴也可以享受。 下载安装后,在插件设置界面,可以将voice package type属性设置为builtin,这样可以选择内置语音包,也可以将voice package type属性设置为custom,这样子就可以使用...

平日里大家想看一个jar包里的内容会怎么做呢?直接解压缩到本地?反编译到本地查看?或者下载一些专门查看jar包的工具?是不是觉得稍稍有点麻烦呢? TJ君肯定是想着能让大家在各方面使用更方便,于是今天带来这款插件,可以让大家直接在IDEA查看各种jar包、压缩包,是不是有点好奇呢? 我们来看下具体的效果: 先看看查看jar包的效果: 可以轻松的看到里面每一个文件及对应代码。 再来看看压缩文件的效果: 是不是轻松方便?插件支持各种不同款式的压缩包格式,例如.zip、.gz、.tar、.tgz、.7z、.zip、.jar、.war、.epc等都可以。 插件也不大,一共就105KB,可以说虽然简单小巧,但是实用好用,可以解决不少人的使用难题。 不过TJ君费解的是,今天TJ君怎么都上不了IDEA的插件市场,试了各种方式都不行。所以TJ君将插件包的安装介质给大家准备好了,直接在IDEA里面引...

更新到Intellij IDEA 2021.3之后,Maven出问题了!无法从Maven私有仓库下载依赖了。 提示要从maven-default-http-blocker下载,难道不应该去私仓下载吗? 原因原来IDEA更新到2021.3后内置Maven的版本提升到了3.8.1。 Maven3.8.1发布一个变更(CVE-2021-26291): 由于使用 HTTP 的自定义存储库可能导致中间人攻击。现在越来越多的存储库使用 HTTPS,但情况并非总是如此。这意味着 Maven Central 包含带有自定义存储库的 POM,这些存储库通过 HTTP 引用 URL。这使得通过此类存储库下载的内容成为攻击目标。开发人员可能没有意识到某些下载使用了不安全的 URL。由于上传到 Maven Central 的 POM 是不可变的,因此需要对 Maven 进行更改。 为了解决这个问题,从3...

昨天刚刚跟大家聊了Jetbrains即将推出轻量级编辑器Fleet,以挑战 VS Code的消息,今天又收到了IntelliJ IDEA 2021.3正式发布的推送。 不说废话,下面就跟我们一起来看看这个版本带来了哪些惊艳的功能! 远程开发 在这个版本中的远程开发还不是一个正式版本,而是BETA版,但通过这个BETA版本,也可以体验IDEA“远程开发”给我们带来的全新体验。 通过该功能的支持,我们可以从世界任何地方轻松连接到运行 IntelliJ IDEA 后端的远程计算机。所有处理都将在这台强大的远程计算机上进行,您将能够像在本地计算机上一样无缝地处理项目。 如何使用呢?如下图,我们只需要在 IntelliJ IDEA 的欢迎屏幕或通过 Toolbox App 中新增的 JetBrains Gateway 应用程序启动此功能。 该远程开发功能除了完成我们日常的编码之外,还能与...

前几天给大家介绍过一款IDEA编码自动注释工具,可以帮助小伙伴们的编程效率,想必很多人已经下载使用了,还没看过想了解下的小伙伴点这里:IDEA编码自动注释工具,让你的开发更有效率 然而此时此刻TJ君脑海中有一个大胆的想法,如果有一款工具,能反过来根据注释自动给出编程代码,是不是程序猿们都会笑的合不拢嘴,爽歪歪? 别以为TJ君说的是天方夜谭,就在前不久的 GitHub Universe 2021开发者大会上,GitHub官方正式宣布了一款名为 Copilot工具的更新。 说起Copilot这个名字,相信一直关注GitHub的小伙伴马上脑海中会浮现出今年早些时候看到的新闻。 就在今年夏天,GitHub 官方和OpenAI联合发布了一款AI自动编程工具,其名字正是 GitHub Copilot 。就像前文TJ君想的那样,通过Copilot,程序员只需输入注释,即可自动生成代码! 当时一时间...

IntelliJ IDEA 2021.2.3 现已发布,用户可以从 IDE 内部、通过 Toolbox 应用程序或使用 Ubuntu 的 snaps 进行升级,也可以从官方网站下载。 主要更新内容 修复了接口方法上的调用层次结构以正确返回结果 如果 IDE 由于操作系统关闭而关闭,则修复了每次启动时重复索引的问题 修复了在 WSL 2 中重新打开项目时导致 IDE 冻结的问题 修复了停止按钮的行为。当您停止 WildFly 运行配置时,不再出现终止批处理作业提示 修复了添加新 Arquillian 容器的对话框 修复了导致 IDE 冻结的问题 修复了 xslt 文件关联 修复了 jsp 文件中未使用导入的优化导入操作 修复了有关配置 Spring Boot 注释处理器的文档的链接 修复了 Maven 项目重新导入时,依赖项视图没有更新的问题 在依赖项工具窗口中输入时出现超级延迟 在 ...

接上一篇IDEA调试技巧远程调试 5. 临时执行表达式/修改变量的运行值调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以 点击+号后,就可以在新出现的输入框里输入表达式,比如:i+5 然后回车,马上就能看到结果 当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。 好了,今天的文章就到这里了,牢记这5大调试技巧可以让你快速定位问题,迅速解决bug,最后祝大家debug愉快!

接上一篇IDEA调试技巧多线程调试 4.远程调试这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下: 4.1 项目启动时,先允许远程调试java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class} 起作用的就是: -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 注意:远程调试从技术上讲,就是在本机与...

接上一篇IDEA调试技巧回到’上一步’ 3.多线程调试多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,比如下图: 如果想希望下一个断点位置是第2句诗句,可能要失望了: 如果想让线程在调试时,想按自己的愿意来,让它停在哪个线程就停在哪个线程,可以在图中3个断点的小红点上右击, 即:Suspend挂起的条件是按每个线程来,而非All。把这3个断点都这么设置后,再来一发试试 注意上图中的红框位置,断点停下来时,这个下拉框可以看到各个线程(注:给线程起个容易识别的名字是个好习惯!),我们可以选择线程“天空中的飞鸟”。 断点如愿停在了第2句诗。 点击查看下一个IDEA调试技巧远程调试

接上一篇IDEA调试技巧回到’上一步’ 回到”上一步”该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。 参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了 回到了method1刚开始调用的时候,变量i变成了99。 注:好奇心是人类进步的阶梯,如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous之类的,可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。 点击查看下一个IDEA调试技巧多线程调试

在项目开发的时候我发现很多小伙伴能非常熟练的使用 IDEA 编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7、F8、F9等这些基本调试功能。 而像一些复杂的调试场景就无从下手,如:在for循环中调试某个特定值;多线程、Reactor调试;修改变量的运行值等。 下面我们就来分场景介绍一下IDEA的调试技巧,看完掌握后调试bug的效率一定大大提升 条件断点循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置。 点击查看下一个IDEA调试技巧回到’上一步’

平时你画UML图都用什么?Processon、Visio这些相信大家已经都很熟悉了。今天TJ要给大家介绍的是一个特别的画图工具,它是IDEA中的一个插件,有了它你可以把画图与编码都集成到IDEA中一起完成,是不是感觉很棒呢?下面就来一起认识下今天要介绍的IDEA插件:PlantUML! PlantUML,是一款开源的图绘制项目,支持通过编写文本来快速生成各种UML图形,目前支持时序图、用例图、类图、对象图、组件图、部署图、状态图、定时图;同时也支持用来生成非UML图,像JSON数据、YAML数据、架构图、思维导图等等,都可以用它来完成。 简单的说,就是你直接通过编程来画出你要的各种图,是不是特别适合我们程序猿呢? 光说可能不够形象,直接上例子,例如像一些时序图,你就可以这样实现: 图案左半边,就是你输入的文本,右半边就是根据文本生成的效果,像这种时序图,语法规则其实很简单,可以简单...

你身边有没有这种顽固的Eclipse忠实用户:IDEA不能一个窗口管理多个项目!太不方便了! 对于一个窗口同时管理多个项目的需求,在我们日常开发时候是经常需要的。尤其当我们在分布式环境下,在一个窗口中调试起来就能方便很多。 如此强大的IDEA真的不支持吗?!当然不是!是你不会用! 下面我们就来说说如何在一个工作空间中管理多个项目的配置方式: 第一步:先创建一个新的空白工程 在弹出的项目名称和路径输入框中根据你的喜好输入即可。 第二步:添加模块 添加模块的方式有两种: New Module:如果你要管理的是一个新项目,那么可以通过这个选项创建一个新项目,并纳入当前的项目管理界面中。 对于我们这些Spring开发者来说,可以继续用Spring Initializr来初始化你的项目,这样创建出来的项目会成为当前这个项目的模块来管理。 Import Module:如果你要管理的项目已经...

今天开个很久没搞的工程,刚开的时候一片红,很自然的想到,要去配置一下项目的JDK,但是配置好之后,又出了个诡异问题:项目可以运行,但是import项目内部自己写的类的时候,都出现了红色错误。虽然import显示错误,但是实际类是存在的!! 就像下面这样: 那么碰到这类问题之后要如何解决呢?下面说说解决步骤: 第一步:菜单中选择File - Invalidate Caches/Restart... 第二步:在弹出框中,选择Invalidate and Restart 静静等待IDEA重启,此时就可以看到红色import错误没有啦!