- 博客(56)
- 收藏
- 关注
原创 每日算法-链表反转
本文详细介绍了Java中链表反转的两种实现方法。迭代法通过双指针(prev和current)实现,时间复杂度O(n),空间复杂度O(1),是最优解;递归法利用调用栈实现,代码简洁但空间复杂度较高。文章分析了关键操作步骤、边界情况处理,并对比了两种方法的适用场景,强调掌握链表反转对解决更复杂链表问题的基础作用,是算法面试必备的核心技能。
2025-07-23 15:00:00
567
原创 每日算法-冒泡排序
本文详细介绍了冒泡排序算法及其Java实现。冒泡排序通过重复比较相邻元素并交换位置来排序数组,每轮将最大元素"冒泡"到末尾。文章包含基本版本和优化版本(带标志位)的Java代码实现,解释了排序过程,并分析了算法复杂度(最坏O(n²),最好O(n))。冒泡排序简单直观,适合教学和小规模数据,但效率不高。优化策略包括添加标志位和减少比较次数。虽然不适用于大数据量,但作为入门排序算法具有重要教学意义。
2025-07-23 09:30:00
306
原创 算法应该怎么学?
摘要 作者计划开启"每日算法"系列,每天练习2道算法题以提升逻辑思维能力,并邀请读者一起参与学习。该系列旨在通过持续训练帮助参与者提高编程能力,为进入大型科技公司做准备。
2025-07-22 16:28:36
58
原创 深入理解 synchronized
Java synchronized 关键字深度解析 本文全面剖析Java并发编程中的synchronized机制。从基本用法、字节码实现到底层原理,详细介绍了三种使用方式(实例方法、静态方法、代码块)及其对应的字节码指令(ACC_SYNCHRONIZED和monitorenter/monitorexit)。深入解析了对象头Mark Word在不同锁状态下的存储结构,以及重量级锁的ObjectMonitor实现机制。重点讨论了JDK 1.6引入的锁升级优化策略(偏向锁→轻量级锁→重量级锁),包括各阶段的工作原
2025-07-22 15:00:00
809
原创 怎么解决Snowflake时钟回拨问题
Snowflake时钟回拨问题解决方案 摘要 Snowflake算法作为高效分布式ID生成方案,其核心隐患在于时钟回拨可能导致ID重复。本文系统性地分析了时钟回拨的典型场景(NTP同步、虚拟机休眠、人工误操作)及其风险机制,并提出6种针对性解决方案: 延迟等待方案:轻微回拨(<5ms)时线程休眠等待 逻辑时钟方案:完全脱离物理时间依赖,采用自增逻辑时间戳 扩展时钟回拨位:在ID结构中预留4位记录回拨次数 外部时钟源方案:借助Redis/ZooKeeper提供统一时钟 混合策略方案:分级处理不同程度回拨
2025-07-22 09:30:00
552
原创 ConcurrentHashMap深度解析
摘要:本文深度解析Java并发容器ConcurrentHashMap的设计演进与实现原理。JDK 7采用分段锁机制,存在锁粒度过大等问题;JDK 8重构为数组+链表+红黑树结构,结合CAS无锁操作和synchronized细粒度锁,实现更高效的并发控制;JDK 17通过JVM优化进一步提升性能。文章详细剖析了其核心数据结构、红黑树转换机制(泊松分布决定阈值8)以及CAS与synchronized的协同并发控制策略,通过源码示例展示了空桶插入和链表插入的具体实现。
2025-07-21 15:30:00
1424
原创 深入理解HashMap
本文深入剖析了HashMap的底层实现机制,从数据结构、哈希函数到核心操作流程。主要内容包括:1) JDK 1.8引入的数组+链表/红黑树混合结构及其内存特性;2) 关键参数如负载因子0.75的科学依据;3) 扰动函数优化哈希分布的原理;4) put操作完整的处理流程,包括哈希冲突解决、树化触发条件等。通过源码级分析揭示了HashMap高效运作的内在机制,为开发者优化使用提供了理论基础。
2025-07-21 09:30:00
1208
原创 深入理解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
1297
原创 深入理解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
1024
原创 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
908
原创 项目的存量接口怎么低成本接入MCP?
摘要 针对老项目接口低成本接入MCP的问题,文章探讨了将存量接口改造为MCP server tools的方案。作者指出完全零成本接入不现实,但寻求相对经济的解决方案,并邀请读者在评论区分享见解,共同探讨可能的实现路径。问题聚焦于传统系统与微服务云平台(MCP)的集成策略,体现了实际工程中的技术迁移挑战。
2025-07-17 18:18:00
425
原创 一致性哈希详解
本文探讨了分布式系统中一致性哈希算法的核心原理与工业实践。传统哈希取模方法在节点扩展时会导致大规模数据迁移,而一致性哈希通过构建哈希环,使节点变化时仅需迁移少量数据(约1/K)。算法引入虚拟节点机制解决数据倾斜问题,显著提升负载均衡性。关键优势包括单调性、平衡性、容错性和可扩展性。文章对比了Ketama、Jump Hash等主流变种,分析了哈希函数选型策略,并展示了Memcached、Redis Cluster等实际应用案例。文末提供了包含虚拟节点的Java实现代码,通过MD5哈希和TreeMap构建哈希环
2025-07-17 10:56:04
958
原创 阿里巴巴开发手册为何禁止三表JOIN?
摘要 阿里巴巴开发手册禁止三表JOIN操作,这源于在分布式架构下的性能考量。多表JOIN在MySQL中会导致优化器效率下降、执行计划失控,时间复杂度可能呈指数级增长。在分库分表环境下,跨分片JOIN还会引发网络传输爆炸、事务一致性等问题。阿里推荐三种替代方案:1)将JOIN拆分为多次单表查询并在应用层内存合并;2)采用反范式设计冗余关键字段;3)使用异步物化视图预计算结果。仅在使用NewSQL数据库或OLAP场景等特殊情况下可考虑打破此禁令。这一规范是阿里在亿级流量场景下通过实践总结的性能优化经验。
2025-07-17 09:00:00
664
原创 volatile 你真的懂了吗?
Java volatile关键字是轻量级线程同步机制,通过内存屏障和缓存一致性协议保证可见性和有序性,但不保证原子性。本文深入剖析了volatile的实现原理、适用场景(状态标志、DCL单例模式等)和常见误区,对比了volatile与synchronized的特性差异,并给出最佳实践建议。volatile在多线程环境下能高效实现变量可见性,但复合操作仍需配合原子类或锁使用。正确理解volatile的内存语义对构建线程安全程序至关重要。
2025-07-16 14:47:35
963
原创 深入理解JVM
摘要:本文深入解析JVM核心机制,涵盖内存模型、垃圾回收与性能调优实战。重点介绍JDK 17内存结构(堆、元空间、线程私有区域)及主流垃圾收集器(ZGC、Shenandoah、G1)的性能对比。详细阐述类加载流程与双亲委派模型,并给出内存泄漏检测与调优方案,包括命令行工具(jstat/jmap/jstack)和MAT分析等实战技巧,帮助开发者优化JVM性能。
2025-07-16 14:07:30
1338
原创 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
1147
原创 学了这个,再也不怕RocketMQ消息丢失了
Apache RocketMQ消息零丢失保障方案 摘要:本文详细分析了RocketMQ在消息生产、存储和消费全链路中的潜在丢失风险,并提出针对性解决方案。生产者端推荐使用同步发送配合重试机制,关键业务采用事务消息;Broker存储建议配置同步刷盘(SYNC_FLUSH)和同步主从复制(SYNC_MASTER),4.5+版本可使用Dledger模式实现自动容灾;消费者应关闭自动提交,正确处理消费失败。通过多层次的可靠性机制组合,可以实现金融级消息零丢失保障。
2025-07-15 09:00:00
559
原创 并发编程之- Atomic
Atomic类通过CAS机制实现无锁并发编程,解决了多线程环境下的原子性问题。它包含基本类型、数组、引用、字段更新和累加器等五大类,相比传统锁机制具有更细粒度的并发控制和更低的开销。虽然CAS存在ABA问题和自旋开销等局限性,但可通过版本号标记和分段累加优化。Atomic类为高并发场景提供了高效的线程安全解决方案,是Java并发编程的重要工具。
2025-07-14 15:47:37
847
原创 MongoDB从入门到精通
MongoDB作为现代数据库领导者,以其灵活文档模型和分布式架构赋能企业高效开发。文章从三大维度解析其核心技术:1)数据模型采用BSON格式,支持动态扩展和模式验证,通过嵌入或引用处理数据关系;2)聚合管道实现复杂分析,案例演示电商销售统计;3)分布式架构通过复制集保障高可用,分片集群实现横向扩展。实践表明,MongoDB可提升开发效率3-5倍,典型场景如医疗企业将报告生成时间从12周缩短至10分钟。文中结合代码示例和可视化图表,指导文档设计、聚合优化和集群部署的最佳实践。
2025-07-14 13:51:05
994
原创 秒杀系统该怎么设计?
秒杀系统是应对高并发抢购场景的技术解决方案,面临读多写少、瞬时流量洪峰、数据一致性等核心挑战。主流架构采用分层拦截的"漏斗模型",包括客户端静态资源缓存、接入层限流、应用层隔离、Redis集群原子扣减库存、消息队列异步处理等关键技术。淘宝通过答题机制实现流量削峰,京东采用库存分段降低并发竞争。典型优化后系统可支撑60万QPS,缓存命中率达99.9%。秒杀设计已成为分布式系统的重要实践,其方法论也适用于其他高并发场景。
2025-07-11 14:30:52
444
原创 分布式链路追踪之SkyWalking详解
Apache SkyWalking是一款专为微服务、云原生设计的分布式APM工具,提供分布式追踪、服务拓扑分析和性能监控一体化方案。其核心优势包括无侵入式探针采集、多语言支持和低资源消耗。最新v10.2.0版本采用原生数据库BanyanDB,显著提升性能,并优化了Java虚拟线程支持。架构包含Agent、OAP Server、存储和UI四大模块,支持灵活扩展。相比Zipkin、Jaeger等工具,SkyWalking在代码侵入性、数据可视化和微服务支持方面更具优势。通过Docker快速部署即可实现全链路监控
2025-07-11 09:00:00
832
原创 一文带你了解分布式事务
本文深入解析分布式事务技术,从理论基础到实践应用。首先介绍CAP定理和BASE理论,对比不同事务模型的特性。重点剖析2PC/3PC、TCC和SAGA等主流解决方案的核心原理与实现方式,并对比Seata和Hmily两大开源框架的架构特点与适用场景。通过电商订单和金融转账的实战案例,展示生产环境的最佳实践,包括性能优化、高可用部署和异常处理方案。最后展望分布式事务的未来发展方向,提供选型建议,帮助开发者构建可靠的分布式系统。全文兼顾理论深度与实践价值,为处理微服务架构中的数据一致性问题提供全面指导。
2025-07-10 13:58:13
485
原创 工作5年了,执行计划都看不懂,还说自己会优化sql?
MySQL EXPLAIN命令详解与查询优化指南 本文深入解析MySQL的EXPLAIN命令,帮助开发者优化SQL查询性能。主要内容包括: EXPLAIN基础用法:介绍如何通过EXPLAIN获取执行计划,并详细解读12个关键输出字段的含义,特别是type字段(访问类型)和Extra字段(额外执行信息)的性能指标意义。 实战案例:通过单表查询和多表关联的示例,演示如何分析执行计划,包括: 有效使用联合索引的情况 索引失效的常见原因(如函数操作) 嵌套循环连接的执行过程 优化建议:针对不同场景提供具体的优化方案
2025-07-10 09:30:00
885
原创 MySQL索引深度解析
MySQL索引深度解析:从B+树原理到实战优化 本文深入剖析MySQL索引机制,揭示B+树为何成为索引首选数据结构,对比InnoDB与MyISAM存储引擎的索引实现差异。文章详细讲解聚簇索引、联合索引等核心概念,通过10个典型场景分析最左前缀原则的应用,列举索引失效常见原因及规避方法。重点涵盖:索引底层设计如何优化磁盘IO、不同类型索引的适用场景、覆盖索引的高效实现原理,以及实际查询中的索引优化策略。通过电商平台案例,展示合理索引设计对系统性能的关键影响,为数据库性能调优提供全面指导。
2025-07-09 13:46:41
876
原创 常用设计模式详解
本文详细解析了软件开发中常用的设计模式,重点介绍了创建型模式中的单例模式和工厂模式。单例模式通过五种实现方式(饿汉式、懒汉式、双重检查锁、静态内部类、枚举)确保类仅有一个实例,并分析了Spring框架中单例实现的三级缓存机制。工厂模式则通过示例代码展示了工厂方法模式的应用,并说明Spring的IoC容器如何基于工厂模式构建Bean管理体系。文章还涉及这些模式在主流框架如Spring中的实际应用场景,为开发者提供从理论到实践的完整指导。
2025-07-09 09:30:00
2415
原创 XXL-JOB从入门到精通
《XXL-JOB:分布式任务调度的核心机制与实战应用》 XXL-JOB是一款轻量级分布式任务调度平台,采用中心化调度设计,分为调度中心和执行器两大组件,实现任务调度与执行的解耦。其核心优势包括高可用集群部署、10种路由策略、多种任务模式和完善监控体系。技术实现上采用类时间轮机制进行秒级调度,通过60槽位的环形数组高效管理任务。在分布式场景下提供一致性Hash等路由策略和任务分片机制,支持百万级数据处理。系统还内置失败重试、故障转移等容错机制保障可靠性。通过实际金融案例展示了XXL-JOB在数据批处理中的卓越
2025-07-08 13:34:28
1090
1
原创 一文带你了解 Java 21
Java 21 作为长期支持版本,带来了15项重要革新,包括虚拟线程、记录模式等核心特性。虚拟线程实现了M:N映射,支持百万级并发且内存占用极低;记录模式简化了嵌套对象访问;序列集合统一了有序集合操作;分代ZGC提升了垃圾回收效率;字符串模板优化了拼接操作;结构化并发改善了任务管理。这些改进显著提升了Java在并发编程、代码简洁性和性能方面的表现,为开发者提供了更高效的开发体验。
2025-07-08 10:18:10
992
原创 Arthas从入门到精通
本文全面介绍了阿里巴巴开源Java诊断工具Arthas的核心功能与实战应用,旨在帮助开发者快速掌握线上问题排查与性能优化技巧。核心内容包括:入门指南:覆盖多平台安装步骤(Linux/Windows/Mac)、启动流程及首个命令(如dashboard实时监控面板),零基础即可上手。核心功能:详解线程分析(thread)、方法追踪(watch/trace)、JVM监控(jvm)、热更新(redefine)等18+诊断命令,结合参数示例说明适用场景。实战案例:通过CPU飙高定位、死锁排查、内存泄漏分析
2025-07-07 14:01:47
841
原创 工作5年天天crud,mysql中的锁都不知道?
MySQL锁机制是保障数据一致性与并发性能的核心技术。本文深入解析了MySQL锁的分类、特性及优化策略: 锁分类:按粒度分为全局锁、表锁和行锁;按模式分为共享锁、排他锁和意向锁;InnoDB特有记录锁、间隙锁和临键锁。 锁兼容性:不同锁之间存在兼容矩阵,隔离级别直接影响锁行为(如RR级别使用临键锁防幻读)。 死锁处理:InnoDB自动检测并回滚死锁事务,可通过固定访问顺序、缩小事务范围预防。 MySQL 8.0特性:NOWAIT立即报错、SKIP LOCKED跳过锁定行,优化高并发场景。 优化实践:索引避免
2025-07-07 10:19:45
864
原创 JMeter从入门到精通
JMeter作为开源性能测试工具,凭借其灵活性和扩展性,广泛应用于接口测试、负载测试、压力测试等场景。本文从简介、下载安装到核心使用、高级功能进行了详细说明,涵盖了从入门到进阶的关键知识点。通过实际操作和参数调优,可有效模拟真实用户行为,评估系统性能瓶颈,为系统优化提供数据支持。下一步学习建议:探索JMeter脚本录制、数据库测试(JDBC)、自定义插件开发,结合CI/CD工具(如Jenkins)实现自动化测试。
2025-07-04 16:24:03
751
原创 一文带你读懂AQS
AQS(AbstractQueuedSynchronizer)是Java并发编程的核心框架,提供了一套通用的线程同步机制。它通过原子状态变量(state)和CLH队列实现资源管理,支持独占(如ReentrantLock)和共享(如Semaphore)两种模式。AQS采用模板方法模式,将线程排队、阻塞/唤醒等通用逻辑封装,具体资源获取/释放由子类实现。源码分析显示其核心流程包括:获取资源时先尝试快速获取,失败则进入队列自旋等待;释放资源时唤醒后续节点。AQS还通过ConditionObject实现条件等待机制
2025-07-04 10:22:05
1006
原创 并发编程之Semaphore详解
Java并发编程利器:Semaphore源码解析摘要 Semaphore是Java并发包中的重要工具类,用于控制多线程环境下资源访问的并发数量。本文深入分析了Semaphore的源码实现和工作原理。Semaphore通过内部Sync类继承AQS实现,支持公平与非公平两种模式。acquire()方法获取许可证时会减少可用数量,release()方法释放许可证则会增加可用数量并唤醒等待线程。典型应用场景包括资源池限流(如数据库连接池)、系统限流等。文章通过会议室使用示例展示了Semaphore的基本用法,并解析
2025-07-03 16:13:51
695
原创 并发编程之 CyclicBarrier 详解
本文深入分析了Java并发工具类CyclicBarrier的实现原理及应用。CyclicBarrier允许线程在特定屏障点同步等待,当所有线程到达后继续执行。文章首先介绍了其基本概念、构造方法和核心API,通过示例展示了其使用方式。随后重点解析了源码实现,包括内部成员变量(ReentrantLock、Condition等)、构造方法和核心await/dowait方法的工作原理。CyclicBarrier通过计数器机制和代(generation)概念实现线程同步,支持超时等待和屏障重置功能。该工具类适用于需要
2025-07-03 16:11:59
726
原创 多线程之CountDownLatch详解
摘要:Java并发工具类CountDownLatch通过内部计数器机制实现线程同步,允许一个或多个线程等待其他线程完成操作。其核心方法包括await()和countDown(),底层基于AQS框架实现。典型应用场景包括主线程等待子线程完成任务、并行任务协调等。CountDownLatch初始化时设置计数器值,每次countDown()调用递减计数器,当计数器归零时唤醒所有等待线程。源码分析表明其通过CAS操作确保线程安全,并提供超时等待机制增强灵活性。
2025-07-02 14:41:32
642
原创 一文带你了解 Redis
Redis(Remote Dictionary Server),即远程字典服务,是一款由Salvatore Sanfilippo最初使用ANSI C编写的开源、高性能的键值对存储数据库。它以其卓越的性能、丰富的数据类型和多样的功能,在软件开发和数据存储领域占据了重要地位。Redis以其出色的性能、丰富的数据类型和多样的集群模式,成为了现代软件开发中不可或缺的工具。通过深入了解Redis的数据结构底层原理、快速的原因以及集群模式,我们可以更好地利用Redis的优势,解决各种实际问题。
2025-07-02 10:42:25
867
原创 MCP Java SDK源码分析
MCP Java SDK为AI应用提供标准化接口,使大型语言模型能够安全调用外部工具和资源。该SDK采用分层架构设计,包含客户端/服务器层、会话层和传输层,支持同步和异步通信。核心功能包括工具动态注册、资源URI管理、提示词处理和多传输协议实现。通过分析McpClient和McpServer源码可见,其采用建造者模式提供流式API,实现了协议版本协商、功能配置等关键机制,为Java开发者构建AI应用提供了高效解决方案。
2025-07-01 16:25:26
1193
原创 一文带你搞懂 Spring AI Alibaba
Spring AI Alibaba 是一款以 Spring AI 为基础的 AI 框架,它深度集成百炼平台,支持 ChatBot、工作流、多智能体应用开发模式。该框架在 1.0 GA 版本中,为开发者提供了一系列核心能力,助力其快速构建各类 AI 应用。
2025-07-01 11:11:23
994
原创 工作5年了,redo Log、undo Log、MVCC 和binlog都不知道?
本文深入解析了数据库核心日志技术:redo log用于崩溃恢复和事务持久性,采用预写日志技术;undo log记录事务修改前数据,支持回滚和MVCC;MVCC通过多版本数据实现高并发读写;binlog记录所有数据修改,用于主从复制和数据恢复。这些技术协同工作,共同保障数据库的高效稳定运行、事务一致性和数据可靠性。理解它们的原理和调用流程对数据库优化和维护至关重要。
2025-06-30 13:47:34
919
原创 线上问题之-OOM排查记
本文讲述了Java线上OOM(内存溢出)的排查与解决方法。通过一个互联网公司的项目案例,分析了三种常见的OOM类型(堆内存、栈内存、方法区溢出)及其代码示例。介绍了使用MAT工具分析堆转储文件的步骤,包括直方图视图、支配树视图和线程视图的分析方法。最后给出了避免OOM的实用建议:合理配置JVM参数、优化代码逻辑、选择合适垃圾回收器以及持续监控调优。全文以故事形式呈现,生动展现了OOM问题的排查全过程,为开发者提供了有价值的参考方案。
2025-06-27 14:51:56
676
空空如也
老接口转Mcp server中的tools?
2025-07-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人