logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Java 8 ConcurrentHashMap 扩容机制深度解析【源码、全流程 mermaid】

本文深入解析了Java 8中ConcurrentHashMap的扩容机制,重点分析了其多线程协作的扩容过程。扩容主要由元素数量超阈值、链表过长且数组小于64、批量插入三种场景触发,通过sizectl变量状态进行判断。扩容时创建2倍新数组,采用任务分片机制将迁移工作分配给多个线程并行处理。关键设计包括:通过ForwardingNode标记已迁移桶,使用反向任务分片避免竞争,以及多线程协同完成数据迁移

#java#哈希算法#开发语言
Java ConcurrentHashMap 深度解析【原理、源码、结合 AI 应用】

ConcurrentHashMap 高并发优化核心摘要 Java 7采用分段锁,Java 8+升级为桶级别CAS+synchronized混合锁,通过volatile读实现无锁查询。关键优化包括:CAS原子操作(UNSAFE)、消除伪共享(@Contended)、延迟初始化。并发写入采用锁升级策略(无锁→轻量锁→扩容协作),内存模型通过volatile变量+内存屏障保障可见性。AI场景中可用于特征

#java#开发语言
深入浅出设计模式【十三、责任链模式】

责任链模式是一种行为设计模式,通过将多个处理对象连成链式结构,使请求沿链传递直到被处理。核心组件包括抽象处理者、具体处理者和客户端,适用于多对象处理同一请求且处理者需动态确定的场景。该模式可降低耦合度、增强灵活性,但也存在请求可能未被处理、性能受影响等缺点。常见实现方式分为纯责任链(请求必须被处理)和不纯责任链(更灵活)。在开发中广泛应用于拦截器链、事件冒泡、工作流引擎等场景,如Java Serv

#设计模式#责任链模式
Redis为什么快?IO多路复用源码解析

Redis 高性能的核心在于其单线程事件循环模型和 I/O 多路复用机制。通过纯内存操作、高效数据结构(如哈希表、跳表)以及基于 epoll/kqueue 的事件驱动架构,Redis 实现了单线程处理高并发连接。其源码通过 aeEventLoop 抽象事件循环,使用 epoll_ctl 注册事件、epoll_wait 监听就绪事件,并结合回调机制处理命令执行流程。Redis 6.0 后引入 I/O

#redis#数据库
深度解析Bitmap、RoaringBitmap 的原理和区别

Bitmap和RoaringBitmap在内存效率上有显著差异。传统Bitmap使用固定空间(N位),而RoaringBitmap根据数据分布动态选择三种容器:ArrayContainer(稀疏数据)、BitmapContainer(稠密数据)和RunContainer(连续数据)。测试表明,当数据密度<1/65536时,RoaringBitmap内存占用可降低90%以上,特别适合处理稀疏数

#java#数据结构
Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【五、InnoDB 高阶机制与实战调优】

MySQL InnoDB存储引擎的底层架构设计通过自适应刷新机制、IO优化策略和崩溃恢复流程三大核心特性实现高性能与可靠性。自适应刷新机制根据Redo日志生成速度和脏页比例动态调整刷新速率,避免性能波动;IO优化采用Native AIO和O_DIRECT模式提升吞吐量;崩溃恢复则通过双写缓冲和Redo日志确保数据一致性。本文从原理、性能特点到源码实现进行系统分析,并提供了针对SSD/HDD环境的实

#mysql#数据库
Redis zset 渐进式rehash 实现原理、触发条件、执行流程以及数据一致性保障机制【分步源码解析】

Redis的zset数据结构采用哈希表与跳跃表结合的方式实现有序集合,哈希表部分使用渐进式rehash机制避免阻塞。当负载因子达到阈值时触发rehash,分为初始化、执行和完成三个阶段。执行阶段通过分步迁移桶数据,在读写操作时同步处理两个哈希表,确保数据一致性。zset的rehash复用Redis通用机制,但需与跳跃表协同处理。核心函数dictRehash实现分步迁移,在保证性能的同时完成哈希表扩

#redis#数据库#缓存
Webflux核心概念、适用场景分析【AI Chat类项目选型优势】

Spring WebFlux与响应式编程 Spring WebFlux是Spring Framework 5引入的响应式Web框架,基于Reactive Streams规范和Project Reactor库实现。其核心思想是通过非阻塞、异步处理提高系统吞吐量,特别适合高并发场景。WebFlux提供两种编程模型:类Spring MVC的注解控制器和函数式端点,支持响应式数据访问和WebClient客

#java#架构
计算机网络 TCP time_wait 状态 详解

TCP 的 TIME_WAIT 状态是主动关闭连接的一方在四次挥手后进入的重要状态,持续 2*MSL(默认 120 秒),用于确保可靠终止连接和清理网络旧数据。高并发短连接场景下,TIME_WAIT 可能导致端口耗尽、内存占用等问题。优化方案包括:使用长连接、让客户端主动关闭、开启 tcp_tw_reuse 复用端口、调整端口范围等,但应避免使用已废弃的 tcp_tw_recycle 和危险的 S

#计算机网络#tcp/ip#网络
到底了