1. 简介 ActiveJhttps://activej.io/ 是一个轻量级的 Java 框架,适用于高性能应用。我们可以用它来创建启动速度快、内存占用小的极简和模块化应用。它提供了异步 I/O、依赖注入、高效序列化和响应式编程支持等特性。 在本教程中,我们将讨论 ActiveJ 的主要特性,包括其 Inspect 模块、强大的事件循环和高级网络功能。 2. 注入 我们从 ActiveJ...
阅读全文Lombok作为一个广受欢迎的Java开发工具,通过注解的方式帮助我们消除样板代码,提升开发效率。但随着项目的发展,它也带来了一些令人困扰的问题: 🧙♂️ Lombok的问题 代码可读性差 - 大量使用@Data、@Builder等注解后,实际生成的代码变得不可见,增加了代码审查和维护的难度 IDE支持不稳定 - 与IDE的集成经常出现问题,导致代码提示失效、编辑器卡顿等问题...
阅读全文1. @Formula注解是什么? 1.1 动态计算字段值 Hibernate中的@Formula注解允许您在实体中映射计算字段。不同于直接将数据库列映射到Java字段,@Formula可定义SQL表达式用于字段值的动态计算。该特性特别适用于依赖其他列或表数据的只读字段。 例如,在Employee实体中需要根据firstname和lastname列生成全名,使用@Formula即可实现无需数据库存...
阅读全文如今,公司对软件工程师(主要是高级工程师)最迫切的需求之一,是以迭代和增量的方式提供高质量的代码审查。 这意味着在每次 PR 审查中,开发人员被要求反复提高即将合并代码的质量。 在这篇文章中,我将尝试指出开发人员在进行重构或审查时应牢记的基本原则。 让我们逐个主题来看这些点: 1. 命名 - 有明确意图的命名:方法或变量名应该在查看代码实现之前就能解释其意图。 - 类名应该是名词或名词短语。 -...
阅读全文分享8个开箱即用的API,方便日常处理集合。 1. 快速过滤空值:Stream.ofNullable 该方法是在 Java 9 中引入的,有助于过滤集合中的所有空值,从而可能使我们避免空指针异常。 在下面的示例中,有一个包含 null 的List。此时,我们可以使用Stream.ofNullable方法对其进行过滤。 java List names = Arrays.asList"Alice",...
阅读全文读取文件内容,然后进行处理,在Java中我们通常利用 Files 类中的方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理的文件可能比我们机器所拥有的内存要大。此时,我们则需要采用另一种策略:部分读取它,并具有其他结构来仅编译所需的数据。 接下来,我们就来说说这一场景:当遇到大文件,无法一次载入内存时候要如何处理。 模拟场景...
阅读全文在DD长期更新的Java新特性专栏https://www.didispace.com/java-features/中,已经介绍过Java 16中开始支持的新特性:recordhttps://www.didispace.com/java-features/java16/jep395-records.html的使用。 之前只是做了介绍,但没有结合之前的编码习惯或规范来聊聊未来的应用变化。最近正好因为互...
阅读全文深入研究微服务世界的 Java 开发人员经常发现自己面临着在两个著名框架之间做出选择:Micronaut 和 Spring Boot。 这两个框架都为构建微服务提供了强大的解决方案,但每个框架都有自己的优点和缺点。 在本文中,我们将探讨与 Spring Boot 相比使用 Micronaut 的一些潜在缺点,强调根据项目的特定需求调整您的选择的重要性。 生态系统的成熟度与规模 Spring...
阅读全文SDKMAN是一个轻量级、支持多平台的开源开发工具管理器,可以通过它安装任意主流发行版本(例如OpenJDK、Kona、GraalVM等等)的任意版本的JDK。 官方网站:https://sdkman.io/ 使用命令安装SDKMAN 通过下面的命令可以轻易安装sdkman: bash curl -s "https://get.sdkman.io" | bash source...
阅读全文之前,在Java新特性专栏https://www.didispace.com/java-features/中,我们简单介绍了Java 21正式发布的虚拟线程https://www.didispace.com/java-features/java21/jep444-virtual-threads.html。 昨天,正好看到一个讲解此内容的视频,非常不错,所以DD这里给大家翻译好了,感兴趣的可以看看。...
阅读全文