自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 MySQL死锁深度分析

摘要(150字): 本文深入剖析MySQL死锁问题,从InnoDB锁机制原理(记录锁、间隙锁、临键锁等)出发,揭示死锁四大必要条件。分析六大典型死锁场景:事务顺序冲突、索引缺失、长事务、高隔离级别间隙锁、并发唯一键插入及外键跨表锁定,并提供具体SQL示例。指导通过SHOW ENGINE INNODB STATUS解读死锁日志,定位事务与锁冲突。提出破坏死锁条件的系统性解决方案,包括统一事务顺序、优化索引设计、控制事务粒度等,为高并发MySQL环境提供实用的死锁防控实践参考。

2025-07-29 15:35:38 564

原创 一篇教你学会Git

Git 2025最新版使用指南:从安装到高级技巧 本文全面介绍Git版本控制系统的安装配置与核心使用方法。主要内容包括: 多平台安装指南(Windows/macOS/Linux),包含国内镜像加速下载方案 必做的初始配置:用户信息、SSH密钥、中文支持等关键设置 Git核心概念图解与基础操作:仓库初始化、文件跟踪、提交历史查看 远程仓库管理与同步操作 分支管理基础命令与工作流 特别针对2025年最新版本特性进行说明,包含Windows系统下2.50.1版本的详细安装步骤,以及跨平台协作时的行尾符处理方案。文

2025-07-29 09:00:00 984

原创 每日算法-八皇后问题深度解析

八皇后问题是经典的递归与回溯算法案例,要求在国际象棋棋盘上放置8个皇后使其互不攻击。本文详细分析了问题的约束条件(行列和对角线冲突),提出使用一维数组表示皇后位置优化空间效率。核心解决方案采用回溯算法框架,通过递归尝试每行皇后的可能位置,并在冲突时回溯。Java实现中,isValid()方法高效检查位置合法性,将时间复杂度从O(n²)降至O(n)。完整的代码展示了从初始化、回溯搜索到解决方案输出的全过程,验证了算法能正确找到全部92种解。该案例生动体现了回溯算法"尝试-回溯"的核心思想。

2025-07-28 15:00:00 963

原创 每日算法-Java有序数组去重

双指针法是处理有序数组去重的高效算法,通过快慢指针在一次遍历中筛选元素,实现O(n)时间复杂度和O(1)空间复杂度。核心思路是:慢指针标记有效元素边界,快指针遍历寻找新元素,当元素不同时将慢指针后移并复制元素。该算法适用于有序数组的原地去重,可扩展为保留最多k个重复元素。相比HashSet法更节省空间,比双重循环法更高效。需特别注意处理空数组、单元素数组等边界情况。

2025-07-28 09:30:00 849

原创 每日算法-数组合并

本文系统讲解了Java中数组合并的核心算法,包括无序数组的简单拼接和有序数组的双指针优化方法。文章从思想本质出发,详细分析了两种场景的实现逻辑:无序数组直接复制元素即可,而有序数组则利用双指针法实现高效合并(时间复杂度O(n+m))。针对LeetCode 88题的特殊场景,还介绍了原地合并的后向双指针技巧。通过代码实现和关键说明,帮助开发者掌握从逻辑理解到具体实现的完整链路。

2025-07-25 15:00:00 1486

原创 Dify开发与集成MCP服务完全指南

本文详细介绍了如何在Dify平台开发与集成MCP(Model Context Protocol)服务,构建智能AI应用。主要内容包括: Dify与MCP概述:Dify是开源LLM应用开发平台,支持多模型、低代码开发和RAG引擎;MCP是标准化LLM与外部工具交互的协议,解决数据孤岛问题。 开发流程: 环境准备(Dify 1.3.0+、Python 3.10+) 使用FastMCP框架开发MCP Server示例代码 在Dify中安装配置mcp-server插件 实战操作: 创建工作流应用并配置LLM节点 发

2025-07-25 09:30:00 848

原创 每日算法-两数之和

本文介绍了使用双指针法高效解决有序数组两数之和问题的方法。给定两个非递减排序的整数数组nums1和nums2,以及目标和m,算法通过设置两个指针分别从数组两端开始遍历,根据当前和与目标值的比较结果移动指针,实现了线性时间复杂度O(n+m)的优化解法。文章详细分析了暴力解法的问题,阐述了双指针法的核心思路,并通过流程图和Java代码实现展示了算法执行过程。此外还提供了处理重复元素的优化版本,使读者能够全面掌握这一经典算法问题的解决方案。

2025-07-24 15:00:00 520

原创 每日算法-二叉树前中后序遍历

本文系统介绍了二叉树的遍历方法,包括前序、中序和后序遍历。首先阐述了二叉树的基本概念和Java实现,然后详细解析了三种遍历方式的本质区别和访问顺序。文章提供了递归和迭代两种实现方式:递归实现简洁直观但易栈溢出;迭代实现通过手动管理栈模拟递归过程,更适合大规模数据。每种遍历方式都给出了清晰的Java代码示例,并分析了优缺点,帮助读者全面掌握二叉树遍历技术及其应用场景。

2025-07-24 09:30:00 680

原创 每日算法-链表反转

本文详细介绍了Java中链表反转的两种实现方法。迭代法通过双指针(prev和current)实现,时间复杂度O(n),空间复杂度O(1),是最优解;递归法利用调用栈实现,代码简洁但空间复杂度较高。文章分析了关键操作步骤、边界情况处理,并对比了两种方法的适用场景,强调掌握链表反转对解决更复杂链表问题的基础作用,是算法面试必备的核心技能。

2025-07-23 15:00:00 785

原创 每日算法-冒泡排序

本文详细介绍了冒泡排序算法及其Java实现。冒泡排序通过重复比较相邻元素并交换位置来排序数组,每轮将最大元素"冒泡"到末尾。文章包含基本版本和优化版本(带标志位)的Java代码实现,解释了排序过程,并分析了算法复杂度(最坏O(n²),最好O(n))。冒泡排序简单直观,适合教学和小规模数据,但效率不高。优化策略包括添加标志位和减少比较次数。虽然不适用于大数据量,但作为入门排序算法具有重要教学意义。

2025-07-23 09:30:00 457

原创 深入理解 synchronized

Java synchronized 关键字深度解析 本文全面剖析Java并发编程中的synchronized机制。从基本用法、字节码实现到底层原理,详细介绍了三种使用方式(实例方法、静态方法、代码块)及其对应的字节码指令(ACC_SYNCHRONIZED和monitorenter/monitorexit)。深入解析了对象头Mark Word在不同锁状态下的存储结构,以及重量级锁的ObjectMonitor实现机制。重点讨论了JDK 1.6引入的锁升级优化策略(偏向锁→轻量级锁→重量级锁),包括各阶段的工作原

2025-07-22 15:00:00 870

原创 怎么解决Snowflake时钟回拨问题

Snowflake时钟回拨问题解决方案 摘要 Snowflake算法作为高效分布式ID生成方案,其核心隐患在于时钟回拨可能导致ID重复。本文系统性地分析了时钟回拨的典型场景(NTP同步、虚拟机休眠、人工误操作)及其风险机制,并提出6种针对性解决方案: 延迟等待方案:轻微回拨(<5ms)时线程休眠等待 逻辑时钟方案:完全脱离物理时间依赖,采用自增逻辑时间戳 扩展时钟回拨位:在ID结构中预留4位记录回拨次数 外部时钟源方案:借助Redis/ZooKeeper提供统一时钟 混合策略方案:分级处理不同程度回拨

2025-07-22 09:30:00 648

原创 ConcurrentHashMap深度解析

摘要:本文深度解析Java并发容器ConcurrentHashMap的设计演进与实现原理。JDK 7采用分段锁机制,存在锁粒度过大等问题;JDK 8重构为数组+链表+红黑树结构,结合CAS无锁操作和synchronized细粒度锁,实现更高效的并发控制;JDK 17通过JVM优化进一步提升性能。文章详细剖析了其核心数据结构、红黑树转换机制(泊松分布决定阈值8)以及CAS与synchronized的协同并发控制策略,通过源码示例展示了空桶插入和链表插入的具体实现。

2025-07-21 15:30:00 1677

原创 深入理解HashMap

本文深入剖析了HashMap的底层实现机制,从数据结构、哈希函数到核心操作流程。主要内容包括:1) JDK 1.8引入的数组+链表/红黑树混合结构及其内存特性;2) 关键参数如负载因子0.75的科学依据;3) 扰动函数优化哈希分布的原理;4) put操作完整的处理流程,包括哈希冲突解决、树化触发条件等。通过源码级分析揭示了HashMap高效运作的内在机制,为开发者优化使用提供了理论基础。

2025-07-21 09:30:00 1308

原创 深入理解Java IO模型

Java IO模型演进:从BIO到NIO再到AIO 摘要: 本文系统分析了Java三种核心IO模型的原理与实现。BIO采用同步阻塞模式,简单但线程开销大;NIO通过多路复用实现单线程管理多连接,性能显著提升;AIO基于事件回调实现真正的异步非阻塞。文章详细对比了三者的优缺点,并通过代码示例展示了NIO的Selector机制如何利用epoll实现高效IO处理。技术选型建议:低并发用BIO,高并发选NIO,超大规模考虑AIO,同时需结合业务场景和团队技术栈综合考量。

2025-07-18 15:30:00 1301

原创 深入理解Java IO模型

摘要 本文深入解析了Java中的三种IO模型:BIO(同步阻塞IO)、NIO(同步非阻塞IO)和AIO(异步非阻塞IO)。BIO采用"一客一服务员"模式,每个连接需要独立线程,简单但并发能力有限;NIO通过多路复用实现单线程管理多连接,显著提升性能;AIO则采用异步回调机制进一步提高效率。文章详细对比了三者的原理、代码实现和适用场景,着重分析了NIO底层select/poll/epoll机制的演进,帮助开发者根据不同业务需求做出最优技术选型(如BIO适合简单场景,NIO适合高并发,AIO

2025-07-18 13:52:36 1036

原创 HTTP与RPC调用的深度技术解析

HTTP与RPC技术对比与实战摘要 HTTP和RPC是分布式系统核心通信范式,本文从协议本质、性能对比和代码实践三方面进行解析: 协议差异: HTTP面向资源,采用文本格式(JSON/XML),无状态但冗余度高 RPC面向方法,使用二进制协议(如Protobuf),模拟本地调用,序列化效率高3-5倍 性能表现: gRPC/Dubbo吞吐量达HTTP/1.1的4-5倍(20-25k vs 5k QPS) HTTP/3(Dubbo Triple X)在弱网下延迟降低83%(300ms→50ms) 代码实践: H

2025-07-18 09:00:00 920

原创 项目的存量接口怎么低成本接入MCP?

摘要 针对老项目接口低成本接入MCP的问题,文章探讨了将存量接口改造为MCP server tools的方案。作者指出完全零成本接入不现实,但寻求相对经济的解决方案,并邀请读者在评论区分享见解,共同探讨可能的实现路径。问题聚焦于传统系统与微服务云平台(MCP)的集成策略,体现了实际工程中的技术迁移挑战。

2025-07-17 18:18:00 432

原创 一致性哈希详解

本文探讨了分布式系统中一致性哈希算法的核心原理与工业实践。传统哈希取模方法在节点扩展时会导致大规模数据迁移,而一致性哈希通过构建哈希环,使节点变化时仅需迁移少量数据(约1/K)。算法引入虚拟节点机制解决数据倾斜问题,显著提升负载均衡性。关键优势包括单调性、平衡性、容错性和可扩展性。文章对比了Ketama、Jump Hash等主流变种,分析了哈希函数选型策略,并展示了Memcached、Redis Cluster等实际应用案例。文末提供了包含虚拟节点的Java实现代码,通过MD5哈希和TreeMap构建哈希环

2025-07-17 10:56:04 961

原创 阿里巴巴开发手册为何禁止三表JOIN?

摘要 阿里巴巴开发手册禁止三表JOIN操作,这源于在分布式架构下的性能考量。多表JOIN在MySQL中会导致优化器效率下降、执行计划失控,时间复杂度可能呈指数级增长。在分库分表环境下,跨分片JOIN还会引发网络传输爆炸、事务一致性等问题。阿里推荐三种替代方案:1)将JOIN拆分为多次单表查询并在应用层内存合并;2)采用反范式设计冗余关键字段;3)使用异步物化视图预计算结果。仅在使用NewSQL数据库或OLAP场景等特殊情况下可考虑打破此禁令。这一规范是阿里在亿级流量场景下通过实践总结的性能优化经验。

2025-07-17 09:00:00 671

原创 volatile 你真的懂了吗?

Java volatile关键字是轻量级线程同步机制,通过内存屏障和缓存一致性协议保证可见性和有序性,但不保证原子性。本文深入剖析了volatile的实现原理、适用场景(状态标志、DCL单例模式等)和常见误区,对比了volatile与synchronized的特性差异,并给出最佳实践建议。volatile在多线程环境下能高效实现变量可见性,但复合操作仍需配合原子类或锁使用。正确理解volatile的内存语义对构建线程安全程序至关重要。

2025-07-16 14:47:35 965

原创 深入理解JVM

摘要:本文深入解析JVM核心机制,涵盖内存模型、垃圾回收与性能调优实战。重点介绍JDK 17内存结构(堆、元空间、线程私有区域)及主流垃圾收集器(ZGC、Shenandoah、G1)的性能对比。详细阐述类加载流程与双亲委派模型,并给出内存泄漏检测与调优方案,包括命令行工具(jstat/jmap/jstack)和MAT分析等实战技巧,帮助开发者优化JVM性能。

2025-07-16 14:07:30 1346

原创 Kafka 4.0 技术深度解析

Kafka 4.0技术解析:告别ZooKeeper,拥抱新架构时代 Apache Kafka 4.0标志着该分布式流处理平台的重大变革,通过KRaft模式完全摆脱了ZooKeeper依赖,同时引入KIP-848消费者重平衡协议和KIP-932共享组队列功能。KRaft模式将元数据管理内置化,使用Raft协议实现控制器选举,显著提升了性能和扩展性。KIP-848解决了传统重平衡的"Stop-the-World"问题,将万级消费者组的重平衡时间从60秒降至1秒以内。KIP-932则突破了消费

2025-07-15 16:27:25 1172

原创 学了这个,再也不怕RocketMQ消息丢失了

Apache RocketMQ消息零丢失保障方案 摘要:本文详细分析了RocketMQ在消息生产、存储和消费全链路中的潜在丢失风险,并提出针对性解决方案。生产者端推荐使用同步发送配合重试机制,关键业务采用事务消息;Broker存储建议配置同步刷盘(SYNC_FLUSH)和同步主从复制(SYNC_MASTER),4.5+版本可使用Dledger模式实现自动容灾;消费者应关闭自动提交,正确处理消费失败。通过多层次的可靠性机制组合,可以实现金融级消息零丢失保障。

2025-07-15 09:00:00 560

原创 并发编程之- Atomic

Atomic类通过CAS机制实现无锁并发编程,解决了多线程环境下的原子性问题。它包含基本类型、数组、引用、字段更新和累加器等五大类,相比传统锁机制具有更细粒度的并发控制和更低的开销。虽然CAS存在ABA问题和自旋开销等局限性,但可通过版本号标记和分段累加优化。Atomic类为高并发场景提供了高效的线程安全解决方案,是Java并发编程的重要工具。

2025-07-14 15:47:37 851

原创 MongoDB从入门到精通

MongoDB作为现代数据库领导者,以其灵活文档模型和分布式架构赋能企业高效开发。文章从三大维度解析其核心技术:1)数据模型采用BSON格式,支持动态扩展和模式验证,通过嵌入或引用处理数据关系;2)聚合管道实现复杂分析,案例演示电商销售统计;3)分布式架构通过复制集保障高可用,分片集群实现横向扩展。实践表明,MongoDB可提升开发效率3-5倍,典型场景如医疗企业将报告生成时间从12周缩短至10分钟。文中结合代码示例和可视化图表,指导文档设计、聚合优化和集群部署的最佳实践。

2025-07-14 13:51:05 1004

原创 秒杀系统该怎么设计?

秒杀系统是应对高并发抢购场景的技术解决方案,面临读多写少、瞬时流量洪峰、数据一致性等核心挑战。主流架构采用分层拦截的"漏斗模型",包括客户端静态资源缓存、接入层限流、应用层隔离、Redis集群原子扣减库存、消息队列异步处理等关键技术。淘宝通过答题机制实现流量削峰,京东采用库存分段降低并发竞争。典型优化后系统可支撑60万QPS,缓存命中率达99.9%。秒杀设计已成为分布式系统的重要实践,其方法论也适用于其他高并发场景。

2025-07-11 14:30:52 449

原创 分布式链路追踪之SkyWalking详解

Apache SkyWalking是一款专为微服务、云原生设计的分布式APM工具,提供分布式追踪、服务拓扑分析和性能监控一体化方案。其核心优势包括无侵入式探针采集、多语言支持和低资源消耗。最新v10.2.0版本采用原生数据库BanyanDB,显著提升性能,并优化了Java虚拟线程支持。架构包含Agent、OAP Server、存储和UI四大模块,支持灵活扩展。相比Zipkin、Jaeger等工具,SkyWalking在代码侵入性、数据可视化和微服务支持方面更具优势。通过Docker快速部署即可实现全链路监控

2025-07-11 09:00:00 842

原创 一文带你了解分布式事务

本文深入解析分布式事务技术,从理论基础到实践应用。首先介绍CAP定理和BASE理论,对比不同事务模型的特性。重点剖析2PC/3PC、TCC和SAGA等主流解决方案的核心原理与实现方式,并对比Seata和Hmily两大开源框架的架构特点与适用场景。通过电商订单和金融转账的实战案例,展示生产环境的最佳实践,包括性能优化、高可用部署和异常处理方案。最后展望分布式事务的未来发展方向,提供选型建议,帮助开发者构建可靠的分布式系统。全文兼顾理论深度与实践价值,为处理微服务架构中的数据一致性问题提供全面指导。

2025-07-10 13:58:13 488

原创 工作5年了,执行计划都看不懂,还说自己会优化sql?

MySQL EXPLAIN命令详解与查询优化指南 本文深入解析MySQL的EXPLAIN命令,帮助开发者优化SQL查询性能。主要内容包括: EXPLAIN基础用法:介绍如何通过EXPLAIN获取执行计划,并详细解读12个关键输出字段的含义,特别是type字段(访问类型)和Extra字段(额外执行信息)的性能指标意义。 实战案例:通过单表查询和多表关联的示例,演示如何分析执行计划,包括: 有效使用联合索引的情况 索引失效的常见原因(如函数操作) 嵌套循环连接的执行过程 优化建议:针对不同场景提供具体的优化方案

2025-07-10 09:30:00 888

原创 MySQL索引深度解析

MySQL索引深度解析:从B+树原理到实战优化 本文深入剖析MySQL索引机制,揭示B+树为何成为索引首选数据结构,对比InnoDB与MyISAM存储引擎的索引实现差异。文章详细讲解聚簇索引、联合索引等核心概念,通过10个典型场景分析最左前缀原则的应用,列举索引失效常见原因及规避方法。重点涵盖:索引底层设计如何优化磁盘IO、不同类型索引的适用场景、覆盖索引的高效实现原理,以及实际查询中的索引优化策略。通过电商平台案例,展示合理索引设计对系统性能的关键影响,为数据库性能调优提供全面指导。

2025-07-09 13:46:41 878

原创 常用设计模式详解

本文详细解析了软件开发中常用的设计模式,重点介绍了创建型模式中的单例模式和工厂模式。单例模式通过五种实现方式(饿汉式、懒汉式、双重检查锁、静态内部类、枚举)确保类仅有一个实例,并分析了Spring框架中单例实现的三级缓存机制。工厂模式则通过示例代码展示了工厂方法模式的应用,并说明Spring的IoC容器如何基于工厂模式构建Bean管理体系。文章还涉及这些模式在主流框架如Spring中的实际应用场景,为开发者提供从理论到实践的完整指导。

2025-07-09 09:30:00 2419

原创 XXL-JOB从入门到精通

《XXL-JOB:分布式任务调度的核心机制与实战应用》 XXL-JOB是一款轻量级分布式任务调度平台,采用中心化调度设计,分为调度中心和执行器两大组件,实现任务调度与执行的解耦。其核心优势包括高可用集群部署、10种路由策略、多种任务模式和完善监控体系。技术实现上采用类时间轮机制进行秒级调度,通过60槽位的环形数组高效管理任务。在分布式场景下提供一致性Hash等路由策略和任务分片机制,支持百万级数据处理。系统还内置失败重试、故障转移等容错机制保障可靠性。通过实际金融案例展示了XXL-JOB在数据批处理中的卓越

2025-07-08 13:34:28 1098 1

原创 一文带你了解 Java 21

Java 21 作为长期支持版本,带来了15项重要革新,包括虚拟线程、记录模式等核心特性。虚拟线程实现了M:N映射,支持百万级并发且内存占用极低;记录模式简化了嵌套对象访问;序列集合统一了有序集合操作;分代ZGC提升了垃圾回收效率;字符串模板优化了拼接操作;结构化并发改善了任务管理。这些改进显著提升了Java在并发编程、代码简洁性和性能方面的表现,为开发者提供了更高效的开发体验。

2025-07-08 10:18:10 1039

原创 Arthas从入门到精通

本文全面介绍了阿里巴巴开源Java诊断工具Arthas的核心功能与实战应用,旨在帮助开发者快速掌握线上问题排查与性能优化技巧。核心内容包括:入门指南:覆盖多平台安装步骤(Linux/Windows/Mac)、启动流程及首个命令(如dashboard实时监控面板),零基础即可上手。核心功能:详解线程分析(thread)、方法追踪(watch/trace)、JVM监控(jvm)、热更新(redefine)等18+诊断命令,结合参数示例说明适用场景。实战案例:通过CPU飙高定位、死锁排查、内存泄漏分析

2025-07-07 14:01:47 859

原创 工作5年天天crud,mysql中的锁都不知道?

MySQL锁机制是保障数据一致性与并发性能的核心技术。本文深入解析了MySQL锁的分类、特性及优化策略: 锁分类:按粒度分为全局锁、表锁和行锁;按模式分为共享锁、排他锁和意向锁;InnoDB特有记录锁、间隙锁和临键锁。 锁兼容性:不同锁之间存在兼容矩阵,隔离级别直接影响锁行为(如RR级别使用临键锁防幻读)。 死锁处理:InnoDB自动检测并回滚死锁事务,可通过固定访问顺序、缩小事务范围预防。 MySQL 8.0特性:NOWAIT立即报错、SKIP LOCKED跳过锁定行,优化高并发场景。 优化实践:索引避免

2025-07-07 10:19:45 868

原创 JMeter从入门到精通

JMeter作为开源性能测试工具,凭借其灵活性和扩展性,广泛应用于接口测试、负载测试、压力测试等场景。本文从简介、下载安装到核心使用、高级功能进行了详细说明,涵盖了从入门到进阶的关键知识点。通过实际操作和参数调优,可有效模拟真实用户行为,评估系统性能瓶颈,为系统优化提供数据支持。下一步学习建议:探索JMeter脚本录制、数据库测试(JDBC)、自定义插件开发,结合CI/CD工具(如Jenkins)实现自动化测试。

2025-07-04 16:24:03 785

原创 一文带你读懂AQS

AQS(AbstractQueuedSynchronizer)是Java并发编程的核心框架,提供了一套通用的线程同步机制。它通过原子状态变量(state)和CLH队列实现资源管理,支持独占(如ReentrantLock)和共享(如Semaphore)两种模式。AQS采用模板方法模式,将线程排队、阻塞/唤醒等通用逻辑封装,具体资源获取/释放由子类实现。源码分析显示其核心流程包括:获取资源时先尝试快速获取,失败则进入队列自旋等待;释放资源时唤醒后续节点。AQS还通过ConditionObject实现条件等待机制

2025-07-04 10:22:05 1008

原创 并发编程之Semaphore详解

Java并发编程利器:Semaphore源码解析摘要 Semaphore是Java并发包中的重要工具类,用于控制多线程环境下资源访问的并发数量。本文深入分析了Semaphore的源码实现和工作原理。Semaphore通过内部Sync类继承AQS实现,支持公平与非公平两种模式。acquire()方法获取许可证时会减少可用数量,release()方法释放许可证则会增加可用数量并唤醒等待线程。典型应用场景包括资源池限流(如数据库连接池)、系统限流等。文章通过会议室使用示例展示了Semaphore的基本用法,并解析

2025-07-03 16:13:51 703

原创 并发编程之 CyclicBarrier 详解

本文深入分析了Java并发工具类CyclicBarrier的实现原理及应用。CyclicBarrier允许线程在特定屏障点同步等待,当所有线程到达后继续执行。文章首先介绍了其基本概念、构造方法和核心API,通过示例展示了其使用方式。随后重点解析了源码实现,包括内部成员变量(ReentrantLock、Condition等)、构造方法和核心await/dowait方法的工作原理。CyclicBarrier通过计数器机制和代(generation)概念实现线程同步,支持超时等待和屏障重置功能。该工具类适用于需要

2025-07-03 16:11:59 727

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除