本篇整理阿里巴巴 Java 开发手册中并发编程、异常处理和日志规约部分,这三块是日常开发中最容易出线上 bug 的区域。
分类
Java category
2025-06-08
阿里巴巴 Java 开发手册(《Java 开发手册》,又称”泰山版”)是国内 Java 开发领域最有影响力的规范文档之一。本系列梳理其中对日常编码影响最大的规则,并结合实际踩坑经验做补充说明。
2023-04-08
volatile它在多处理器开发中保证了共享变量的“可见性”。 可见性的意思是当一个线程修改一个共享变量时,另一个线程可以读到这个修改的值。 volatile比synchronized的使用和执行成本更低,因为它不会引起线程上下文切换和调度
2023-04-02
同步VS异步同步和异步用来形容一次方法调用。 同步:同步方法调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。 异步:异步调用指的是,调用者不管被调用的方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调
2023-03-26
JMM体现在以下几个方面原子性-保证指令不会受到线程上下文切换的影响 可见性-保证指令不会受cpu缓存的影响 有序性-保证指令不会受cpu指令并行优化的影响 可见性:12345678910111213141516@Slf4j(topic =
2023-03-01
判断对象已死:1、引用计数算法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加一,当引用失效时,计数器就减一。任何时刻计数器为零的对象就是不可能再被使用的。 优缺点: 占用了一些额外的内存空间来计数,但它的原理简单,判定效率也
2023-02-24
运行时数据区:程序计数器:当前线程所执行的字节码指令的行号指示器。在Java虚拟机的概念模型里,字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等
2023-02-19
1、什么情况下会发生栈内存溢出。1、栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用类型2、如果线程请求的栈深度
2022-11-27
[TOC] ArrayList:(1)JDK1.7和JDK1.8下ArrayList()底层数组的默认长度?jdk1.7时使用ArrayList的无参构造,初始化后的长度是10,jdk1.8时使用无参构造,构造一个空数组,初始长度是0。 (
2022-11-20
使用PC寄存器存储字节码指令地址有什么用呢?为什么使用PC寄存器记原当前线程的执行地址呢?因为CPU需要不停的切换各个线程,这时候切换回来以后,就得知道接着从哪开始继续执行。JVM的字节码解释器就需要通过改变PC寄存器的值来明确下一条应该执
1 / 2








