JMM与逃逸分析

1. JMM 是什么? JMM 是 Java 虚拟机规范的一部分,它定义了 Java 程序中多线程读写共享内存时的行为规范。 它主要解决三个问题: 可见性 一个线程对共享变量的修改,什么时候对其他线程可见? 原子性 如何保证一组操作不会被线程切换打断? 有序性 程序代码的执行顺序在多线程下还能不能保


JVM内存结构与GC

一、整体概览 JVM(Java Virtual Machine)在运行时会把内存划分成若干区域,用于存放不同类型的数据和执行信息。JDK 8 之后的 JVM 内存结构主要分为以下部分: 线程私有区域 程序计数器 (Program Counter Register) Java 虚拟机栈 (JVM St


MVCC原理

什么是MVCC 指维护一个数据的多个版本,使得读写操作没有冲突, 具体实现就是 快照读, 快照读为MySQL实现MVCC提供了一个非阻塞读功能 组成 MVCC的具体实现,还需要依赖于数据库记录中的隐式字段、undo log日志、readView


ThreadLocal细谈

引言 在多线程编程中,线程之间的资源共享常常会导致各种并发问题。为了减少这些问题,Java 提供了 ThreadLocal 类,允许我们将数据绑定到特定的线程,从而避免了线程间的直接数据共享。 本文将详细介绍 ThreadLocal 的原理及其使用方法。 ThreadLocal原理与用法 Threa


多线程八股

创建线程的四种方式 难易程度:☆☆ 出现频率:☆☆☆☆ 共有四种方式可以创建线程,分别是:继承Thread类、实现runnable接口、实现Callable接口、线程池创建线程 详细创建方式参考下面代码: public class MyThread extends Thread { @


List 八股

数组概述 数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。 int[] array = {22,33,88,66,55,25}; ArrarList


Rabbit MQ 八股

RabbitMQ如何保证消息不丢失? 候选人: 我们使用RabbitMQ来确保MySQL和Redis间数据双写的一致性,这要求我们实现消息的高可用性,具体措施包括: 开启生产者确认机制,确保消息能被送达队列,如有错误则记录日志并修复数据。 启用持久化功能,保证消息在未消费前不会在队列中丢失,需要对交