Java底层解析
文章平均质量分 92
深入解析 Java 底层机制:从 JVM 内存模型、类加载机制,到字节码执行、GC 原理,揭秘跨平台与安全特性背后的核心逻辑。
未禾
当有一天,迂迂回回后终于到达了想去的地方,才会惊讶地发现,原来之前所经过的一切,都是通往这里的必经之路,少一步都无法塑造出今天的你。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
红黑树(Red-Black Tree),为什么需要红黑树?红黑树的核心特性(5 条规则)?黑色高度?平衡修复?红黑树旋转变色的具体操作案例?
使用RED和BLACK两种状态,新节点默认设为红色(减少插入时对黑色高度的影响)。(1)对于任意节点,其黑色高度是指从该节点出发,到达其任意一个叶子节点(NIL 节点)的路径中,黑色节点的总数(包含该节点自身)。(2)叶子节点(NIL 节点,空节点)被定义为黑色,其黑色高度为 1(自身)。(3)红色节点的黑色高度与其父节点、子节点的黑色高度相关,但自身不增加黑色高度的计数。从任意节点到其所有叶子节点的路径中,包含的黑色节点数量必须相同。原创 2025-08-08 13:14:56 · 952 阅读 · 0 评论 -
AVL树(自平衡二叉搜索树),核心特性,平衡因子,失衡类型与旋转操作(LL、RR、LR、RL型失衡)?
对于任意节点,平衡因子 = 左子树的高度 - 右子树的高度。(1)若左子树比右子树高,平衡因子为正数;(2)若右子树比左子树高,平衡因子为负数;(3)若左右子树高度相等,平衡因子为0。原创 2025-08-07 15:38:54 · 1392 阅读 · 0 评论 -
二叉树(Binary Tree),基本定义,基本结构,遍历方式,核心应用?
包含一个数据元素及两个指向子节点的引用(左指针left和右指针right)。原创 2025-08-07 12:57:24 · 846 阅读 · 0 评论 -
链表的数据结构,单链表(Singly Linked List),双向链表(Doubly Linked List),循环链表(Circular Linked List),链表与数组的对比?
这种结构适合需要反复循环访问数据的场景(如约瑟夫问题、循环缓冲区等)。原创 2025-08-06 14:42:09 · 1047 阅读 · 0 评论 -
数组的数据结构、是如何存储的?从字节码层面解析数组,从JVM 规范解析数组?
JVM 规范通过明确数组的类型体系、内存布局、创建流程和访问规则,奠定了 Java 数组的核心特性。(1)长度固定且不可变,元素自动初始化。(2)严格的边界和类型检查,保证安全性。(3)引用类型数组支持协变(如String[]是Object[]的子类型),但受ArrayStoreException限制。这些规范确保了数组在不同 JVM 实现中的行为一致性,是理解数组底层机制的关键。原创 2025-08-06 11:37:01 · 1013 阅读 · 0 评论 -
TreeMap源码深度解析,类结构与核心成员变量,底层数据结构:红黑树,航方法与有序性?
TreeMap 实现了NavigableMap接口(该接口继承自SortedMap),因此具备排序和导航(如获取小于 / 大于某个 key 的元素)能力。// ...TreeMap 的核心是红黑树,通过以下设计保证高效有序性:(1)排序规则:基于比较器或 key 的自然顺序(需实现Comparable)。(2)红黑树维护:插入和删除时通过变色和旋转(左旋 / 右旋)修复树结构,确保平衡。(3)操作性能:插入、删除、查找的时间复杂度均为 O (log n)。(4)有序性。原创 2025-08-04 17:39:48 · 1139 阅读 · 0 评论 -
TreeSet源码深度解析,核心特性,底层实现,核心方法实现原理,排序机制?
TreeSet 是 “基于 TreeMap 的有序 Set”,其核心设计思想是复用 TreeMap 的红黑树结构和排序能力,自身仅作为 “key 的视图” 存在。这种 “复用现有数据结构” 的设计模式,体现了 Java 集合框架的 “组合优于继承” 原则。(1)底层依赖 TreeMap,元素存储为 key;(2)排序依赖Comparable或Comparator;(3)所有操作最终委托给 TreeMap 实现。原创 2025-07-29 08:15:45 · 903 阅读 · 0 评论 -
Hashtable源码深度解析,核心要点概览,Entry 节点结构,核心方法,快速失败机制(fail-fast),Hashtable 与 HashMap 的核心区别?
Hashtable 是基于 “数组 + 链表” 的哈希表实现,通过synchronized保证线程安全,但因全表锁导致性能较低。其核心特点:(1)键值均不可为null,初始容量 11,扩容为 2n+1。(2)哈希冲突通过链表处理,查询效率受链表长度影响。(3)快速失败机制用于检测并发修改。目前,Hashtable 已被ConcurrentHashMap替代(后者采用分段锁,并发性能更优),但理解其源码有助于掌握哈希表的基本原理。原创 2025-07-29 08:14:32 · 1157 阅读 · 0 评论 -
HashSet源码深度解析,核心成员变量,核心方法实现原理,特性与注意事项,适用场景?
HashSet 是通过 “复用 HashMap 的 key 存储元素,固定 value 为 PRESENT” 的设计,简洁高效地实现了 Set 接口。其核心优势是基于哈希表的快速增删查(平均 O (1) 时间复杂度),但牺牲了元素的顺序性。理解 HashSet 的源码本质是理解 HashMap 的工作原理,二者在哈希表结构、扩容机制、冲突处理等方面完全一致。若需要保证元素顺序,可使用LinkedHashSet(基于LinkedHashMap);若需要排序,可使用TreeSet(基于TreeMap)。原创 2025-07-28 16:46:47 · 763 阅读 · 0 评论 -
LinkedList源码深度解析,Node节点结构(双向链表),核心操作,队列 / 栈操作,序列化机制,迭代器与 fail-fast 机制,适用场景?
提供了基于顺序访问的基础实现(如 get、add 等依赖迭代器的方法)。特性说明数据结构双向链表,节点包含 prev、next 引用,无固定容量限制增删效率头部 / 尾部增删 O (1),指定位置增删 O (n)(遍历找位置)访问效率随机访问(get/set)O (n),顺序访问(迭代器)效率高队列 / 栈支持实现 Deque 接口,可作为队列(FIFO)或栈(LIFO)使用线程安全非线程安全,多线程环境需外部同步(如 Collections.synchronizedList)原创 2025-07-28 11:45:44 · 1083 阅读 · 0 评论 -
ArrayList源码深度解析,核心操作,grow扩容机制,序列化机制,迭代器与 fail-fast 机制,适用场景
特性说明数据结构底层是 Object[] 数组,支持随机访问(RandomAccess)容量管理初始容量 10(无参构造首次扩容),默认 1.5 倍扩容,支持手动指定容量增删效率尾部添加 / 删除 O (1),中间插入 / 删除 O (n)(需移动元素)线程安全非线程安全,多线程环境需用 Collections.synchronizedList 包装序列化自定义序列化,只序列化有效元素,优化性能迭代器实现 fail-fast 机制,检测并发修改。原创 2025-07-28 07:19:55 · 1431 阅读 · 0 评论 -
HashMap源码深度解析(核心方法:put、get、resize,初始容量和负载因子,哈希碰撞,HashMap 如何处理哈希碰撞?)
基于哈希表的Map接口(哈希表)实现,提供了所有可选的映射操作,是以key-value存储形式存在,并允许空值和空键,具有高效的插入、查找和删除操作。它的核心数据结构是一个数组,数组中的每个元素是一个链表或红黑树的头节点。HashMap 通过哈希函数将键映射到数组的索引位置,并通过链表或红黑树解决哈希冲突。当元素数量超过阈值时,HashMap 会自动扩容,以保持较低的负载因子,从而保证操作的效率。HashMap类大致相当于Hashtable,不同之处在于它是,这意味着它,HashMap中的映射;原创 2025-04-01 17:09:42 · 1224 阅读 · 0 评论
分享