首页 / 技术专题CATEGORY / SPRINGFORALL

Java

在这个技术方向,积累扎实的知识与实践。

共 547 篇文章

使用Lombok的时候,一定要谨慎使用 @Builder

hello,大家好,我是你们的老朋友 Lorin,本周在开发中使用 @Builder (@Builder 是一个注解,通常与 Lombok 这种 Java 代码生成工具一起使用,可以帮助简化 Java 类的构建器模式(Builder Pattern)的使用和生成)的时候出现了一个默认值丢失事件,顺便借这个机会研究了一下 @Builder…

如何在Java项目中实现漂亮的日志输出

日志是开发过程中不可或缺的一部分,它可以帮助我们追踪代码的执行过程、排查问题以及监控系统运行状况。然而,大多数开发人员在编写日志时往往只关注于输出必要的信息,而忽略了日志的可读性和美观性。本文将介绍如何在Java项目中实现漂亮的日志输出,提供一些实用的技巧和建议。 1. 使用合适的日志框架…

为什么IDEA建议使用“+”拼接字符串?

各位小伙伴在字符串拼接时应该都见过下面这种提示: 内容翻译: 报告StringBuffer、StringBuilder或StringJoiner的任何用法,这些用法可以用单个java.lang.String串联来替换。使用字符串串联可以使代码更短、更简单。只有当得到的串联至少与原始代码一样高效或更高效时,此检查才会报告。…

从Java 8升级到Java 17的7个理由

从Java8到Java18,Java已经经历了漫长的发展历程(Java20非长期维护版本)。同时也是从Java 8开始,Java生态系统发生了许多变化。其中最明显的变化是Java版本发布节奏的改变。Java 8于2014年发布,而Java 17则是在2021年发布的,这两个版本之间相差了7年的时间。然而,2017年9月,Java 平台的主架构师 Mark…

磁盘I/O那些事

背景 计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。…

多线程程序是如何执行代码的?

进程与线程概念、区别、以及线程间的通信 概念 # 进程是对程序运行时的封装,是操作系统分配资源的基本单位,实现操作系统的并发。 线程是进程的子单位,是CPU调度和分派的基本单位,实现进程内部的并发。是OS识别的最小执行与调度单位,每个线程独占一个虚拟处理器,每个线程完成不同的任务,但共相一个地址空间。 区别 #…

从实际案例聊聊Java应用的GC优化

当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。本篇会介绍这些通用的GC优化策略和相关实践案例,主要包括如下内容:…

Java 8系列之重新认识HashMap

摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。 简介…