一、背景与挑战
1.升级动因
oOracle长期支持策略
o现代特性需求:协程、模式匹配、ZGC等
o安全性与性能的需求
oAI新技术引入的版本要求
2025年07月09日
1.升级动因
oOracle长期支持策略
o现代特性需求:协程、模式匹配、ZGC等
o安全性与性能的需求
oAI新技术引入的版本要求
2025年07月09日
类加载的基本机制和过程
运行Java程序,就是执行java这个命令,指定包含main方法的完整类名,以及一个classpath,即类路径。类路径可以有多个,对于直接的class文件,路径是class文件的根目录,对于jar包,路径是jar包的完整名称(包括路径和jar包名)。
Java运行时,会根据类的完全限定名寻找并加载类,寻找的方式基本就是在系统类和指定的类路径中寻找,如果是class文件的根目录,则直接查看是否有对应的子目录及文件;如果是jar文件,则首先在内存中解压文件,然后再查看是否有对应的类。
2025年07月09日
最近在 Kotlin 项目中发现,定义的 data class(成员变量都声明不可控)经过在 Gson 解析后,可以得到成员变量为空的对象,而不是得到解析失败,那么就很容易造成后续代码的非预期运行,因为成员变量都按不可空的情况来处理,最终喜提 NullPointerException。
2025年07月09日
在多核高并发场景下,缓存伪共享(False Sharing) 是导致性能骤降的“隐形杀手”。当不同线程频繁修改同一缓存行(Cache Line)中的独立变量时,CPU缓存一致性协议会强制同步整个缓存行,引发无效化风暴,使看似无关的变量操作拖慢整体效率。本文从缓存结构原理出发,通过实验代码复现伪共享问题(耗时从3709ms优化至473ms),解析其底层机制;同时深入剖析高性能缓存库 Caffeine 如何通过 内存填充技术
2025年07月09日
Unsafe类是在sun.misc包下,不属于Java标准。但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty、Cassandra、Hadoop、Kafka等。Unsafe类在提升Java运行效率,增强Java语言底层操作能力方面起了很大的作用。
2025年07月09日
在本文中,我们将深入探讨 Java 线程的六种状态以及它们之间如何相互转换。线程状态的转换就如同生物从出生、成长到最终死亡的过程,也有一个完整的生命周期。
首先,让我们看看操作系统中线程的生命周期是如何流转的。
在操作系统中,线程共有 5 种状态:
2025年07月09日
CAS(Compare and Swap)是处理并发问题的常用技术之一,它解决了线程安全和数据一致性问题。
CAS 是一种乐观锁机制,它是通过底层硬件提供的原子操作指令实现的,能够保证在多线程同时访问同一变量时,只有一个线程可以修改该变量的值。
CAS操作通常基于三个参数:内存位置V、期望值A和新值B。
2025年07月09日
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star
https://github.com/crisxuan/bestJavaer
我们之前了解过了 AtomicInteger、AtomicLong、AtomicBoolean 等原子性工具类,下面我们继续了解一下位于