2022

在今年3月下旬的时候,Java已经更新到了18。接下来会挑一些有意思的内容,以文章和视频的方式来给大家介绍和学习。 如果要第一时间获得内容更新,对文章形式感兴趣的小伙伴可以关注我的博客或者公众号(程序猿DD),对视频形式感兴趣的可以关注我的B站或视频号(程序猿DD)。 本篇内容对应视频已完成录制,点击查看:Java 18 新特性:Simple Web Server(1) 简单Web服务器:jwebserverJEP 408: Simple Web Server,是这次Java 18推出的一个比较独立的全新功能点。我们可以通过命令行工具来启动一个提供静态资源访问的迷你Web服务器。 该工具的定位官方文档中说了一堆: 这里我简单总结几点,方便大家理解: 构建目的是应用于测试与教学,不是为了替代Jetty、Nginx等高级服务器 不提供身份验证、访问控制或加密等安全功能 仅支持HTTP...

昨天群里(点击加群)有小伙伴问,换了M1芯片的Macbook Pro之后,IDEA就一直很卡的。正好前段时间,我也换了最新的MacBook Pro,也碰到了类似的问题。 这里就简单讲一下换到M1平台后,使用IDEA要注意的两个点: IDEA版本的选择第一个要注意的点是IDEA版本要注意下, 不要选择默认的Intel版本。 JDK版本的选择在下载JDK的时候,一定要选择arrch64的JDK

抛异常相信大家都会吧?只需要这样就可以了: throw new RuntimeException("didispace.com"); 但是,在开发过程中有一些情况,我们需要测试程序对异常的处理逻辑是否正确,这个时候就需要我们在程序运行时主动的抛出异常才会触发相关逻辑来验证正确性,比较常见的场景有:事务是否会回滚、Web层的统一异常处理等等。 这个时候,你是如何去制造异常,来支持你的调试呢? 下面我就以前写的Spring Boot教程里一个事务处理的例子为场景,给大家看看一些常见的调试操作以及今天要讲的更优雅的操作。 案例说明先介绍下场景,这是一个用Spring Data JPA实现的数据库操作案例,右侧UserService里一个事务操作,里面含有5句User表的插入语句。 因为@Transactional注解存在,所以saveSomeUsers函数下的数据插入要么都成功,要么都失...

大家在Debug程序的时候,是否遇到过因为“下一步”按太快,而导致跳过了想要深入分析的那段代码?是不是很想要有“回到上一步”这样的操作呢? 在IDEA中就提供了一个帮助你回退代码的机会,但这个方法并不是万能的。好了,下面就来具体说说这个功能的使用! 使用Reset Frame回退操作不知道你在Debug的时候,是否有注意过下图标出的按钮Reset Frame,这就是今天要介绍的主角。 什么情况不能回退比如:下面这样的顺序结构,是无法会退的: void test() { int a = 1; int b = 2; int c = a + b; System.out.println(c);} 什么情况可以回退再来看看下面这种情况: void test2() { int a = 1; int b = 2; int c...

作为一名开发者,相信大部分人都喜欢用Markdown来写文章和写文档。 如果你经常用开源项目或者自己维护开源项目,肯定对于项目下的README文件也相当熟悉了吧,通常我们会在这里介绍项目的功能、如何使用等内容。 对于一些需要用命令执行的开源项目的话,也会附上一些命令行的操作提示。 这样我们就可以一边看文档,一边敲命令来安装和使用这个开源项目,当然你也可以选择复制命令去终端执行。 但是,你知道吗?在IDEA的Markdown编辑器中还有简单的方式! 你注意过这个小绿色箭头不? 其实我们只需要直接点击他,命令就可以直接执行了! Get这个技能了吗?视频分享地址:https://www.bilibili.com/video/BV1244y137hb ,欢迎点赞、关注、分享,三连支持! 如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要...

前段时间发了个关于《Spring支持PHP》的视频:点击查看 然后有小伙伴留言说:“你这个翻译好像很好用的样子”。 的确,我自己也觉得很好用。之前视频没看过的不知道是哪个,可以通过截图简单了解下: 基本操作就是选中要翻译的句子,直接按个快捷键,就出来了,并且可以同时产生多个不同翻译API的结果。 好了,废话不多说,下面具体介绍这个翻译软件! Bob我在用的翻译软件是一个叫Bob的开源软件。 虽然图标有点丑 + 非主流,但真的挺好用的。但比较可惜的是目前主要就支持MacOS用户。 功能上基本覆盖常规需求了: 划词翻译(我最常用) 截图翻译 输入翻译 翻译多开 自定义插件 自动识别语种 驼峰拆分、蛇形拆分 AppleScript 调用 PopClip 调用 安装Homebrew安装 在已经安装了Homebrew的用户直接用下面命令就可以安装 brew install --cas...

昨天分享了一个在IDEA中使用Jump To Line插件实现跳转到任意行的的小技巧。 很不幸,发布没多久,就“翻车”了!不过这次翻车并不尴尬,反而还挺开心,因为DD也Get到新技能了! 到底哪里翻车了呢?看看下面这个留言: 这位小伙伴提示,点击行号试试,于是DD就试了一下,果然是可以的! 于是,DD就果断卸载了昨天分享的Jump To Line插件,真的非常感谢这位朋友的分享。同时,借这次的分享“翻车”事件,再跟大家聊聊知识分享这个事情。 我认为分享不光是对自己知识的总结,也是与读者的交流,你可以通过这个过程进一步让自己提升。所以,我还是鼓励大家多做一些分享,不论是在技术社区,还是在公司内部,在有过思考的前提下,多发表自己的观点,不要害怕错误,害怕被喷,没有人是万能的,每个人都有自己知识盲区,每个人都需要持续不断的学习。 这里我顺手也把过程录下来了,感兴趣的小伙伴也可以看看:ht...

最近这段时间,一些互联网大厂把裁员称为“毕业”的话题被热议了很久。 上午,DD在网上瞎逛看到了一篇文章,似乎找了这一做法的祖先。原来这么有“创意”的操作,很好多年前的漂亮过就已经有了,所以其实这也是个舶来品? 在这篇发表于2016年4月的文章中,据作者称:他在软件公司HubSpot工作了近两年,当有人被解雇时,被称为“毕业”。在“毕业”的那一刻,他们都会从老板那里收到一封欢快的电子邮件告诉他们,XX已经毕业了,我们都很兴奋地看到她如何在她的下一个重大冒险中使用她的超能力。 有一天,这件事发生在了作者的一个朋友身上。她35岁,已经在公司工作了四年,28岁的经理在没有任何解释的情况下告诉她,她有两周的时间休假。在她工作的最后一天,那位经理为她组织了一场欢送会。 这个让DD想到了之前有个网友的这条留言… 这个非常现实,也很残酷,但HubSpot的每个人都表现得好像这是完全正常的。员...

昨天分享了一个在IDEA中为Debug断点添加条件的小技巧。今天继续分享一个Debug过程中非常实用的小插件。 Jump To Line插件名字叫Jump To Line: 安装完成之后,你在Debug过程中,会在断点的左边出现一个黄色的小尖头。 你可以通过拖动这个黄色小尖头,直接将程序执行到某一行代码的位置,实现拖到哪儿执行到哪儿的效果,具体效果如下: 视频演示:https://www.bilibili.com/video/BV1Br4y1p7UB 今天的分享就到这里,如果这个小技巧对你有用,那就帮忙点赞、在看、分享、关注,四连支持一下吧! 如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,这是我在持续更新的玩转IDEA专栏,电子书形式的沉浸式阅读体验,赶紧加入收藏夹吧!

近日,IDEA 2022.1的Beta 2版本发布了!下面我们一起来看看对于我们Java开发者来说,有哪些重要的更新内容。 Java增强随着Java 18的正式发布,IDEA也在该版本中迅速跟进。目前已经支持的功能包括: @snippet标记 为了简化在API文档中包含示例源代码,在JDK 18中引入了用于JavaDoc的标准Doclet的@Snipket标记。所以,在这个版本中,就可以像下面这样在注释中添加一些示例代码了。 switch增强 在JDK 17中引入的Switch表达式模式匹配规范这次也已经更新,在该版本的IntelliJ IDEA已支持这两种基本更新。 其他更新 在JDK18中,默认字符集直接就是UTF-8,而不是根据平台的不同而有不同的默认字符集。 非静态内部类不会捕获未使用的this,所以将不会再触发警告 JUnit 5增强添加了对JUnit 5.7中引...

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

昨天,在发布了《Spring官宣承认网传大漏洞,并提供解决方案》之后。群里(点击加群)就有几个小伙伴问了这样的问题:我们的Spring版本比较老,这个怎么办?这是一个好问题,所以DD今天单独拿出来说说。 这次的RCE漏洞宣布之后,官方给出的主要解决方案是升级版本,但只有Spring 5.2、5.3和Spring Boot 2.5、2.6提供了对应的升级版本。 那么对于一些还在用Spring 5.0、5.1甚至Spring 4.x、或者Spring Boot 1.x和Spring 2.4及以下版本的用户该怎么办呢? 第一种方法官方给出过一种通过扩展RequestMappingHandlerAdapter来实现的方法。同时也给出了一个Spring Boot下使用Spring MVC的实现方案,如果是WebFlux的话略做修改即可。但如果不是Spring Boot的话,则Bean的初始化方...

Spring沦陷了!这样的标题这几天是不是看腻了?然而,仔细看看都是拿着之前的几个毫不相干的CVE来大吹特吹。所以,昨天发了一篇关于最近网传的Spring大漏洞的文章,聊了聊这些让人迷惑的营销文、以及提醒大家不要去下载一些利用漏洞提供补丁的钓鱼内容。而对于这个网传的漏洞,依然保持关注状态,因为确实可能存在,只是没有官宣。 就在不久前(3月31日晚),Spring社区发布了一篇名为《Spring Framework RCE, Early Announcement》的文章,官宣了最近网传的Spring漏洞。这也证实了网传漏洞确实存在,并且并非最近很多文章说提到的3月28、29日公布的CVE,如果你是照着那些文章解决问题的话,请根据这次官宣内容重新来过吧。 这次确定的Spring核心框架中的RCE漏洞,CVE号为CVE-2022-22965[1]。 这个漏洞是在周二深夜,由AntGrou...

昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了。 主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),所以就删除了。 经过一天的时间,似乎这个事情变得有点看不懂了。所以下面聊聊这个网传的Spring大漏洞吧。 这个漏洞话题的起点源自3月29日晚,DD在群里(点击加群)看到网友分享了几位安全大佬爆料Java生态出现了超级大漏洞。 但两位大佬都没有透露这次漏洞更详细的信息。只有网友问了一句:“有log4j那么大吗?”。云舒大佬的回复是:“更大”。 之后,又有安全大佬sunwear(就之前那个因为上海银行工作人员服务态度差,而直接怒取500万现金的大佬,具体什么故事如果你不知道可以百度一下,这里DD就不细说了)给了一些更细节的信息: 所以漏洞影响范围,可以缩小到使用Java 9+和Sp...

2022年3月24日,Spring官方发布了Spring Boot 3.0.0 M2版本发布。这个版本包含50个Bug修复、文档改进和依赖更新。 M2版本主要是对M1版本的问题修复与更新,之前关于Spring Boot 3.0.0 M1版本,我们已经介绍过,下面一起结合了解一下整个Spring Boot 3的进展。 M1版本回顾 Java基线从 Java 8 提升到了 Java 17 从Java EE APIs 到 Jakarta EE 移除一些还未支持Java 17的组件,包括:Apache ActiveMQ、Atomikos、EhCache 2、Hazelcast 3 M2版本更新M2版本对于M1主要的更新内容如下: 恢复EhCache 3的支持 恢复H2 Console的支持 改进@ConstructorBinding的检测 更多改版本的更新可通过下面的了链接查看:htt...