文章列表
HashMap 用在并发场景中会出现什么问题?
深入剖析HashMap在并发场景下导致数据丢失、覆盖及JDK7中死循环问题的根本原因。本文从源码层面解析其线程不安全的原理,对比JDK8的改进与遗留问题,并明确指出在高并发环境下应使用ConcurrentHashMap等线程安全容器的正确实践。
为什么在 Jdk 8 中 HashMap 要转成红黑树?
本文深入解析JDK8中HashMap引入红黑树机制的根本原因,详细阐述其如何将最坏情况下O(n)的链表查询优化为O(log n)。内容涵盖树化阈值(TREEIFY_THRESHOLD=8)的统计学依据、红黑树相较于AVL树的工程权衡,以及如何有效防止哈希碰撞导致的性能劣化,是理解HashMap高性能设计的关键。
为什么 HashMap 的默认负载因子要设置成 0.75?
本文深度解析Java HashMap将默认负载因子设置为0.75的根本原因,从时间与空间成本权衡的工程哲学出发,结合泊松分布等统计学原理,阐明这一数值如何在控制哈希冲突与提升空间利用率之间取得最佳平衡,并探讨实际开发中的调优建议。
说说 HashMap 的扩容机制?如何扩容的?
本文深度解析Java HashMap的扩容(resize)机制,详细说明触发条件(容量*负载因子)、2倍扩容过程及JDK8的高低位数链表拆分优化。深入探讨初始容量与负载因子的影响,并提供预估容量等性能调优实践,是理解HashMap核心原理与应对高难度面试的关键。
Java中的集合类有哪些?如何分类的?
本文系统梳理Java集合框架(Collection Framework)的完整体系,清晰解答“集合类有哪些”及“如何分类”两大核心问题。内容涵盖Collection(List、Set、Queue)与Map两大接口,深入解析ArrayList、LinkedList、HashMap等核心实现类的底层数据结构、特性与选型策略,并总结线程安全方案与常见面试考点,是掌握Java集合的权威指南。
HashMap、Hashtable 和 ConcurrentHashMap 的区别?
本文深度解析Java中HashMap、Hashtable与ConcurrentHashMap的核心区别,聚焦于线程安全的不同实现机制(synchronized全表锁 vs 分段锁 vs CAS+桶锁)。通过对比性能、null值处理、迭代器行为等,阐明为何ConcurrentHashMap是现代高并发应用的首选,并剖析常见面试考察点与使用误区。
ArrayList、LinkedList 与 Vector 的区别?
本文全面对比Java中ArrayList、LinkedList与Vector三大List实现的根本区别。从底层数据结构(数组vs链表)、线程安全性、性能(随机访问、插入删除、扩容)等维度进行深入解析,并提供选型建议与面试高频考点总结,帮助你根据实际场景做出最佳选择。
为什么不能用 BigDecimal 的 equals 方法做等值比较?
本文详细解释为什么在Java中禁止使用BigDecimal的equals方法进行等值比较。深入剖析其内部精度(scale)机制,对比equals与compareTo方法的根本区别,并通过代码示例展示错误用法导致的陷阱。同时提供在金融、科学计算等场景下进行精确数值比较的最佳实践与面试核心考点。
Java 中异常分哪两类,有什么区别?
本文清晰解析Java中检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)的核心区别,包括继承关系、编译器检查机制及典型代表。通过对比表格与代码示例,深入探讨其设计哲学、最佳处理方式及常见面试考察点,帮助你彻底掌握Java异常处理的关键。
什么是 UUID,能保证唯一性吗?
本文详细解释什么是UUID(通用唯一识别码),并深入探讨其唯一性保证的概率基础。涵盖UUID v1与v4的生成原理、在分布式系统中的应用、作为数据库主键的优缺点,以及与雪花算法(Snowflake)的对比。为开发者面试和技术选型提供核心洞见。