彻底搞懂equals和hashCode!底层原理+重写规范
只要你写Java代码,equals() 和 hashCode() 是永远绕不开的两个方法。无论是日常开发去重、对象比对、集合存储,还是面试高频八股提问,这一对方法都是重中之重。
一次取消,Java模型请求停吗?
报告者取消了模型调用的 future,模拟 HTTP 客户端的 future 却没有被取消。这个结果出现在 LangChain4j 的一份问题报告中:版本是 1.23.0-SNAPSHOT,Java 21,底层是手写的模拟客户端,并非线上网络抓包。
JVM-09: Java 堆:对象的生与死
上一篇收尾时说,下一篇回到线程共享的地盘。这篇就是:Java 堆,JVM 里最大的一块内存,你写下的每一个 new,最终都落在这里。这一篇围绕对象的一生展开:new 一行代码背后发生了什么,内存从哪里划出来,对象在内存里长什么样、有多重、怎么被访问、什么时候死。
8 年前端学 SpringBoot:泛型集合遍历,取出元素为什么是 Object?
背景:8 年前端,熟悉 Node/Next/Nuxt,日常用 Bun 写轻量后端。基本盘还是前端,拓展 SpringBoot 是为了匹配全栈岗位,记录技术学习笔记。这是这个工具类系列笔记的最后一篇,也是初看时最让我这个前端开发者感到“割裂”的一篇。
JVM-14: 逃逸分析:对象不一定在堆上
一、全景:对象不一定在堆上前面几章我们反复说:new 出来的对象都在堆上。这句话在 Java 课里成立,在 JIT 的世界里只对了一半。有些对象从头到尾没进过堆。JIT 把它拆成几个寄存器里的值,new 这个动作本身都省了。干这件事的机制,叫逃逸分析。
JVM 如何运行 Java 程序?从类加载到内存模型,一文看懂 JVM 核心原理
《Java 技术进化论》专栏 · 第四篇我们每天都在编写 Java 代码。例如:public class HelloWorld { public static void main(String[] args) { System.out.
Java数组在JVM里是个特殊对象
Java里每个对象都有构造方法。哪怕你不在类里写,编译器也会替你补一个无参的。可有一个例外:数组。数组是对象,这一点并没有什么疑问,你能对它调用Object里提供的方法,能把它当Object传来传去。但你是找不到数组的构造方法的,你也没办法给数组写一个。
再聊一个 Java 惯例:名词给对象,动词给方法
前两篇分别聊了区间为什么爱写成左闭右开、判空为什么优先用 isEmpty()。这两个惯例背后是同一条原则:用约定俗成的形式,让读代码的人少想一步。顺着这个思路,再说一个 Java 里几乎人人都在用、却很少有人细想其背后原因的惯例:给对象起名时用名词,给方法起名时用动词。