2022

这几年,随着几大互联网公司的强大,纷纷投入云计算产业的建设,开源项目作为维护潜在客户群体(开发者)的重要手段,是各大云计算厂商都在努力做的事。 这几年也诞生了很多真正优秀和看似优秀的开源项目。真正优秀的不必多说,就是那些被真实广泛应用的开源项目,而今天我想说的是那些看似优秀的开源项目。 为什么有些项目是看似优秀?大家都知道,在全球最大的开源项目托管平台GitHub上有个被大家经常提及的数据:Star。很多时候,大家会用这个数据来描述开源项目的流行程度甚至优秀程度。 相信工作一些年的开发者,一定有这样的感受。在好几年前,国内开源不多的时候,根据Star的数量来评判和选择开源产品使用的时候,不太会踩坑。大多数时候,我们都能在同类产品中选到最好的。 但近些年,随着中国开源的崛起,Star的规模变大了不少,以前几千Star的往往都是很好的项目了,现在动不动都是几万的Star。同时,根据Sta...

大家好,我是DD! 近日,Spring Cloud Tencent 于6月14日正式对外开源,作为腾讯开源的一站式微服务框架,Spring Cloud Tencent 实现了 Spring Cloud 标准微服务 SPI ,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 微服务架构应用。Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polarismesh ,实现各种分布式微服务场景。 作者简介张乐 腾讯云技术专家,Spring Cloud Tencent 社区负责人,腾讯云微服务引擎 TSE 核心研发。一直致力于微服务领域研发工作,例如配置中心、注册中心、服务治理等领域。 张皓天 腾讯高级研发工程师,Spring Cloud Tencent PMC,Polaris Java PMC。 为什么要做 ...

前段时间刷朋友圈看到好友做了一个IDEA插件,具体功能是在侧边文件树中,显示Java类的注释信息,效果下面这样: 觉得不错的小伙伴,可以在插件里搜索:Show Comment 安装使用: 视频介绍:https://www.bilibili.com/video/BV1YY411M7gZ/,欢迎关注我的B站和视频号「程序猿DD」,持续分享好用的IDEA插件和使用小技巧。

上一篇,通过一篇国外大佬的IDEA性能测试,得处一个结论:内存分配越多,执行效果就越好。但是,除了IDEA之外,许多其他应用程序也需要消耗内存。所以,大家的目标应该是在提高性能和内存消耗之间找到一个平衡。 马上就有读者问了,那么IDEA的内存怎么设置呢? 设置方法很简单,只需要从菜单中找到:Help 这里有两个菜单项是本篇重点: 设置最大内存Chanage Memory Setting,这是一个可视化的配置菜单项,用来设置IDEA的最大内存 而该菜单本质其实还是往下面这个Edit Custom VM Options功能的配置文件中写其中一个参数而已。 配置虚拟机参数Edit Custom VM Options,这个配置就比较通用了,用来配置IDEA运行的虚拟机各项细节参数: 都是Java开发者,相信对这些参数也不会陌生了吧。 这里那么参数中,其实影响最大的还是如上一篇...

在前几天分享的关于Spring Boot Starter中的spring.factories文件不再推荐使用的视频下,看到有网友问了这样一个问题: 这个文件也是位于/META-INF/目录下面: 里面的大概是这样的: { "groups": [ { "name": "swagger", "type": "com.spring4all.swagger.SwaggerProperties", "sourceType": "com.spring4all.swagger.SwaggerProperties" }, { "name": "swagger.authorization", "type": "com.spring4all.swagger.SwaggerAuthor...

早上给大家介绍了IDEA官方宣布正在开发一套全新的UI,但目前是预览版需要申请才能体验。 随后马上就有网友分享了,不需要申请直接就能激活体验的方法。 本期视频:https://www.bilibili.com/video/BV165411X7u7 只需要下面几步: 下载最新的IDEA版本(DD尝试了2022.1版本,后面的版本应该都会包含,之前的版本不确定) 下载地址:https://www.jetbrains.com/zh-cn/idea/nextversion/ shift键连续按两次,搜索registry: 找到ide.experimental.ui选项,勾选上 重启IDE,成功切换! 最后DD又折腾了一下主题,这下舒坦了!欢迎关注我的公众号:程序猿DD,后面继续分享下配置! 另外,给大家提一下,我最近把博客重新增加了板块,正在维护几个有意思的长...

5月23日,JetBrains发布了一篇博文,透露他们正在实现一套全新的界面界面。 他们认为目前行业中的用户界面趋势已经发生了演变,很多新用户认为JetBrains IDE的界面过于笨重,而且过时。所以,团队做出了大胆的决定,将以全新的眼光来重新设计IntelliJ IDEA和相关IDE的外观和感觉。 而这次重新设计的核心目标就是降低视觉复杂性,提供对基本功能的轻松访问,并根据需要逐步展开复杂的功能,这就是目前JetBrains团队认为的干净、现代和强大的外观和感觉。 根据官博中的描述,新UI中的主要变更包括以下四个方面: 简化主工具栏:使用新VCS、Project以及Run小部件 新的工具窗口布局 新的浅色和深色主题 全新的图标 文章开头给出的预览对于这一核心设计理念的初步体现还是很明显,整体界面相比目前的IDEA是要简洁、干净很多的,那么根据需要逐步展开的强大功能会怎么...

前段时间看到群里有吐槽swagger整合问题,当时没仔细看,总以为是姿势不对。 这两天正好自己升级Spring Boot版本,然后突然出现了这样的一个错误: Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWra...

昨晚我们讲了Spring Boot 2.7开始不再推荐使用spring.factories了,今天早上公众号(程序猿DD)上也推了,然后收到了不少反馈。其中有个网友说:要维护两个文件,太麻烦了。 作为一名优秀的程序员,当觉得麻烦的时候,第一反应就是要想办法偷懒! 所以,今天就给大家讲讲怎么样轻松的维护这两个文件! 开源项目:mica-auto为了解决维护麻烦的问题,这里要给大家推荐一个开源项目:mica-auto。不要看Star不多,DD用下来感觉还是非常好的。 GitHub地址:https://github.com/lets-mica/mica-auto 该项目的实现原理与Lombok类似,利用Java 6就开始支持的Annotation Processor,在编译期扫描注解和处理注解。这里mica-auto的主要解决问题是为Spring Boot自动生成spring.fac...

如果你是Spring Boot用户的话,一定有这样的开发体验,当我们要引入某个功能的时候,只需要在maven或gradle的配置中直接引入对应的Starter,马上就可以使用了,而不需要像传统Spring应用那样写个xml或java配置类来初始化各种Bean。 如果你有探索过这些Starter的原理,那你一定知道Spring Boot并没有消灭这些原本你要配置的Bean,而是将这些Bean做成了一些默认的配置类,同时利用/META-INF/spring.factories这个文件来指定要加载的默认配置。 这样当Spring Boot应用启动的时候,就会根据引入的各种Starter中的/META-INF/spring.factories文件所指定的配置类去加载Bean。 而这次刚发布的Spring Boot 2.7中,有一个不推荐使用的内容就是关于这个/META-INF/spring....

昨天给大家介绍了Java 16中的Stream增强,可以直接通过toList()来转换成List。 主要涉及下面这几种转换方式: list.stream().toList();list.stream().collect(Collectors.toList());list.stream().collect(Collectors.toUnmodifiableList()); 然后,看到有网友评论问:Stream.toList()和Collectors.toList()的区别是什么?哪个性能好? 处理结果的区别,其实上一篇文章和视频里都有说: Stream.toList()返回的List是不可变List,不能增删改 Collectors.toList()返回的是个普通的List,可以增删改 Collectors.toUnmodifiableList()返回的List是不可变List,不...

前几天分享了如何优雅的调试Java Stream操作。然后有小伙伴对其中的一段代码有一些疑问:“为啥你的stream可以直接toList而不必collect?” 下面就给大家解读下这个内容。 疑问的代码片段如下: public class StreamTest { @Test void test() { List<String> list = List.of("blog.didispace.com", "spring4all.com", "openwrite.cn", "www.didispace.com"); List<String> result = list.stream() .filter(e -> e.contains("didispace.com")) ...

在Java 9中又新增了一些API来帮助便捷的创建不可变集合,以减少代码复杂度。 本期配套视频:Java 9 新特性:快速定义不可变集合 常规写法以往我们创建一些不可变集合的时候,通常是这样写的: // 不可变的SetSet<String> set = new HashSet<>();set.add("a");set.add("b");set.add("c");set = Collections.unmodifiableSet(set);// 不可变的ListList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list = Collections.unmodifiableList(list); Java8的写法在Java 8的时候,利用St...

昨晚(5月19日),Spring Boot官方发布了一系列Spring Boot的版本更新,其中包括: Spring Boot 3.0.0-M3 Spring Boot 2.7.0 Spring Boot 2.6.8 Spring Boot 2.5.14 Spring Boot 3.0.0-M3此版本包括74个bug修复、文档改进和依赖项升级,其中值得注意的新功能包括: Micrometer Observation、Tracing和OtlpMeterRegistry的自动化配置支持 恢复对REST Assured和Pooled JMS的支持 Spring Boot 2.7.02.7.0是2.x版本的一个重要的新特性版本,在该版本中有这些亮点可以关注一下: 增加了Spring GraphQL的自动化配置和Metrics 增加@DataCoubaseTest和@DataElas...

什么是Stream操作Stream操作是Java 8推出的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。Java 8中的Stream是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的 聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。 同时,它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。通常,编写并行代码很难而且容易出错, 但使用Stream API无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java8中首次出现的java.util.stream是一个...