
Java基础
文章平均质量分 80
Qc_Hopkins
这个作者很懒,什么都没留下…
展开
-
volatile处理指令重排的一个例子
材料来自 《Java高级程序员面试笔试宝典》第6.1.2节 1. 正常情况 CPU在运行期间会对指令进行优化,没有依赖关系的指令,他们的顺序可以被重排。在单线程执行下,发生重排是没有问题的,CPU保证顺序不一定一致,但结果一定一致。 如以下代码: int i = 0; //(1) i++; //(2) boolean f = false; //(3) f = true; //(4) (1) 和 (3) 没有依赖关系,(1) 可能会排到(3)之后;而(1)和(2)有依赖关系,CPU一定会安排(1)早于(.原创 2022-03-14 08:44:51 · 392 阅读 · 0 评论 -
红黑树相关知识点详解
文章目录1. 二叉查找树2. 平衡二叉树(AVL树)2.1 定义2.2 插入操作2.2.1 结点平衡因子为2,左孩子平衡因子为1,进行LL旋转(单向右旋)。2.2.2 结点平衡因子为-2,右孩子平衡因子为1,则进行RR旋转(单向左旋)。2.2.3 结点平衡因子为2, 左孩子平衡因子为-1,进行LR旋转(先左再右)。2.2.4 结点平衡因子为-2,左孩子平衡因子为1,进行RL旋转(先右再左旋转)。2.3 删除操作2.3.1 如果删除的结点的左右子结点任意一个为空,那么用另一个非空子结点直接替换当前结点,并回溯原创 2022-02-06 15:18:59 · 1264 阅读 · 0 评论 -
JVM总结
1. Java运行时数据区域 堆: 线程共享,主要用来存储对象。 堆可分为:年轻代和老年代两块区域。使用NewRatio参数来设定比例; 年轻代可分为:一个Eden区和两个Suvivor区,使用参数SuvivorRatio来设定大小。 虚拟机栈/本地方法栈: 线程私有,主要存放局部变量表,操作数栈,动态链接和方法出口等。 程序计数器: 线程私有,记录当前线程的行号指示器,保障线程切换。 方法区: 线程共享,主要存储类信息、常量池、静态变量、JIT编译后的代码等数据。方法区理论上来说是堆的逻辑组成部原创 2021-03-04 01:47:19 · 201 阅读 · 0 评论