- 博客(6)
- 收藏
- 关注
原创 泛型的相关知识
Java泛型通过在定义类、接口和方法时声明类型变量(如<E>),提供了编译时类型检查的能力,避免强制转换可能引发的异常。泛型分为泛型类、泛型接口和泛型方法三类,使用大写字母(E、T、K、V等)作为类型变量。泛型的本质是将具体类型作为参数传递给类型变量,其特点包括:编译时工作(泛型擦除)、不支持基本数据类型、可指定子类类型等。通配符"?"表示任意类型,而上下限约束(? extends A和? super A)可限制类型范围。通过泛型可以保证集合中元素的类型统一,将运行时问题提前
2025-12-13 21:22:01
1029
原创 ConcurrentHashMap底层原理
ConcurrentHashMap是线程安全的HashMap实现,采用数组+链表+红黑树结构。与HashMap相比,其通过节点加锁、红黑树优化和并发扩容提升性能:1)细粒度节点锁取代分段锁;2)链表长度超过8时转为红黑树(O(logn)复杂度);3)多线程分片迁移数据扩容;4)使用CAS和计数数组优化size()计算。这些设计在保证线程安全的同时显著提升了并发性能。
2025-12-08 20:03:57
798
原创 HashMap底层原理
HashMap是一种高效的键值对集合,底层采用数组+链表/红黑树结构。初始数组长度为16,通过哈希值取模确定存储位置。当哈希冲突时,采用链表存储;链表长度超过8且数组长度大于64时转换为红黑树。JDK1.8优化了扩容机制,通过位运算区分高低位元素。HashMap通过加载因子0.75控制扩容时机,元素超过阈值时会扩容为原数组的2倍。其核心数据结构包含Node对象(链表节点)和TreeNode对象(红黑树节点),通过hashCode和equals方法保证键的唯一性。这种结构设计在保证高效查找的同时,也能有效处理
2025-12-06 20:58:43
614
原创 CopyOnWriteArrayList底层原理
CopyOnWriteArrayList通过写时复制机制实现线程安全。当执行写操作时,会加锁并复制一个新数组进行修改,而读操作仍在原数组进行,写完后将引用指向新数组。这种设计解决了ArrayList并发读写时的数据不一致问题,特别适合读多写少场景。但由于每次写操作都需复制数组,会占用更多内存,且读取的数据可能不是最新的,因此不适用于实时性要求高的场景。
2025-12-06 15:28:23
606
原创 ArrayList集合底层原理
ArrayList底层实现原理总结:空参构造时创建长度为0的数组,添加第一个元素时才初始化为10的数组;数组存满后自动扩容为1.5倍,若一次性添加大量元素则按实际需求扩容。源码分析显示,初始添加元素时会执行grow()方法创建10长度数组,扩容时通过newLength方法计算新容量,优先扩容1.5倍,不足时按实际需求调整。整个过程通过size变量记录元素数量和下一个存储位置,实现了动态数组的高效管理。
2025-12-05 22:55:29
878
原创 SpringSecurity内容简介
摘要:SpringSecurity是Spring框架的安全组件,提供认证和授权功能。其权限管理支持基于角色(如ROLE_ADMIN)和细粒度权限(如user:read)两种方式,可通过配置类或注解实现访问控制。权限数据通常与用户信息一并存储在数据库,通过UserDetailsService加载。还支持动态权限控制,可自定义PermissionEvaluator实现复杂逻辑,满足不同场景的安全需求。
2025-10-23 15:19:28
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅