标签:jdk
既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?
🧠 为什么 mesi 协议并不足以保证 java 中的“可见性”语义?1. mesi 是硬件层级的缓存一致性,volatile 是语言层级的可见性保证mesi 主要解决“同一物理地址在多核缓存中的副本一致性问题”;根据mesi,CPU某核(假设CPU0)的缓存行(包含变量x)是M S 或E的时候,如果总线嗅探到了变量x被其其他核(比如CPU1)执行了……
HashMap负载因子
HashMap1. Hash 冲突后的数据结构变化(jdk8 之后的优化)在 jdk8 之前,HashMap 发生冲突后使用的是链表结构,导致在极端情况下时间复杂度退化为 O(n)。jdk8 开始引入红黑树结构优化:当某个桶(链表)中的元素个数超过 TREEIFY_THRESHOLD = 8 且容量超过 MIN_TREEIFY_CAPACITY ……
java.sleep()
java的thread.sleep方法是会响应中断的,cpu会使用定时器,定时器到时会触发中断让cpu调度这个线程,但是我不明白java中将线程设置中断,为什么sleep可以响应中断指令,是怎么做到的?java 的 Thread.sleep() 为什么可以响应 interrupt()?在 java 中,Thread.sleep() 会放弃 CPU 执行权……
JDK12新特性及旧版本变更
新的字符串和文件方法在 Java 11 中,我们已经获得了一些新的 String 方法,以及Files.readString() 和 writeString() 方法。而在 Java 12,jdk 开发人员对这两个类进一步扩展,新增了一些实用的方法。String.indent() —— 方便的字符串缩进在 Java 12 之前,如果我们想给字符串添加缩……
java-11-features
Lambda 参数的局部变量语法jdk 增强提案 323允许在隐式类型 lambda 表达式的中使用“var”关键字。先来看 显式类型 的 Lambda 表达式。在下面的代码中,参数 l 和 s 的类型 被明确声明(List<String> 和 String):(List<String> l, String s) -> l……
java-10-features
局部变量类型推断("var")从 Java 10 开始,我们可以使用关键字 var 来声明局部变量(局部意味着在方法内部)。例如,以下定义是允许的:var i = 10;var hello = "Hello world!";var list = List.of(1, 2, 3, 4, 5);var httpC……
Java 生态下想搞大流量下的 ws,是不是暂时只能 netty?
最近项目想上直播和拍卖业务,自身流量也是比较大,想问下目前业界 ws 方案下是不是更推荐 netty 或者有没有其他可以参考的方案呢?直播推流这快准备用阿里云的,直播上会用到 ws 的也就是评论,拍卖可能就是出价和评论。1. 使用 netty 的建议sagaxu:不要直接用 netty,建议使用 Vert.x 或者 Quarkus。wxw752:我……
JDK 8 到 JDK 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化
jdk 8 到 jdk 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化语法糖(语言特性)演进从 Lambda 表达式到模式匹配,java 逐步引入更简洁的语法和现代编程范式。jdk 8(2014)Lambda 表达式:List list = Arrays.asList("a", "b", "c");list.forEach(s ->……
关于 JDK 不同版本对 指令集支持
关于 jdk 不同版本对 指令集支持1. jdk 8(2014年)指令集支持:基线指令集:主要针对 SSE2/SSE4.1/AVX1(如 Intel Haswell 之前的处理器)。不支持AVX-512(Skylake 及之后的新指令集)。AES-NI 深度优化(仅部分支持)。向量化运算优化有限。适用场景:传统企业应用,无需高……