- 博客(22)
- 收藏
- 关注
原创 JVM 对象分配全景解析:从堆内到堆外的完整路径
本文系统分析了JVM对象分配策略,涵盖堆内Eden区分配、TLAB线程私有分配、栈上逃逸分析优化以及堆外直接内存分配四种机制。文章详细解析了每种分配方式的适用场景、实现原理及参数配置,包括Eden区的小对象优先分配、大对象直接进入老年代、TLAB解决多线程竞争、栈上分配避免GC开销等关键点,并提供了性能调优建议。最后总结了JVM对象分配的优先级决策逻辑,强调理解这些机制对编写高效代码和性能优化的重要性。
2025-07-30 08:30:00
671
原创 JVM 内存分配与回收策略:从对象创建到内存释放的全流程
本文系统解析JVM内存分配与回收策略,重点阐述对象生命周期管理的关键机制:1)新生代对象优先在Eden区分配,通过MinorGC和Survivor区筛选短期存活对象;2)大对象直接进入老年代避免复制开销;3)长期存活对象通过年龄阈值晋升;4)空间分配担保确保MinorGC安全执行。文章结合代码示例和GC日志分析,提出针对不同场景的优化方案,包括调整新生代大小、处理内存泄漏和碎片化问题,并给出关键参数的配置建议,为Java应用性能优化提供实践指导。
2025-07-29 21:18:45
801
原创 JVM 垃圾收集器全解析:从 Serial 到 ZGC 的技术演进
本文系统解析了JVM中7种主流垃圾收集器的工作原理与适用场景。从单线程的Serial收集器到并行处理的Parallel系列,再到追求低延迟的CMS、G1,以及新一代的ZGC和Shenandoah,垃圾收集器的演进始终围绕缩短停顿时间、提高吞吐量和扩大堆内存支持三大目标展开。文章详细阐述了每种收集器的核心特性、工作流程、关键参数配置及典型应用场景,并提供了基于不同应用需求的收集器选型指南。通过分析GC日志的关键指标,开发者可以验证收集器的工作状态,确保系统性能达到预期要求。随着ZGC等新一代收集器的成熟,JV
2025-07-29 09:00:00
423
原创 JVM 垃圾回收机制全景解析:从对象回收到收集算法
JVM垃圾回收机制解析:本文系统阐述了JVM垃圾回收的核心原理与实现机制。首先介绍了对象存活判定方法,包括存在循环引用缺陷的引用计数法和主流的可达性分析算法,以及四种引用类型对回收时机的影响。其次详细分析了三种基础回收算法:标记-清除算法存在效率低和内存碎片问题;复制算法效率高但内存利用率低;标记-整理算法适合老年代对象回收。最后解释了现代JVM采用的分代收集策略,根据对象生命周期特性将堆划分为新生代(复制算法)和老年代(标记-清除/整理算法),实现高效内存管理。全文为理解垃圾收集器工作机制提供了系统性的理
2025-07-28 23:08:45
531
原创 JVM 内存模型深度解析:原子性、可见性与有序性的实现
本文深入解析了JVM内存模型(JMM)在多线程环境下的核心机制。JMM通过主内存和工作内存的抽象划分,解决原子性、可见性和有序性三大并发问题。原子性通过synchronized锁和原子类实现;volatile关键字保障可见性;happens-before原则和内存屏障禁止指令重排序确保有序性。文章结合实际案例,分析了双重检查锁单例中volatile的必要性,以及i++等复合操作的原子性陷阱。最后指出这些机制是理解多线程安全的基础,也是面试高频考点。
2025-07-28 16:07:08
1125
原创 JVM 类加载机制详解:从字节码到内存的全过程
本文深入解析JVM类加载机制,从加载到卸载的完整生命周期包含七个阶段:加载、验证、准备、解析、初始化、使用和卸载。重点剖析了类加载过程的五个关键阶段(加载、验证、准备、解析和初始化)的工作原理及实现细节,特别是初始化阶段执行类构造器方法的多线程安全特性。详细介绍了JVM三类核心类加载器(启动类、扩展类和应用程序类加载器)及其双亲委派模型的设计原理,该机制通过层级委派确保类加载的安全性和唯一性。最后,通过自定义类加载器示例,展示了如何实现从特定路径加载加密类文件等特殊需求。理解类加载机制对解决类冲突、反射调用
2025-07-28 09:45:57
704
原创 JVM 基础架构全解析:运行时数据区与核心组件
JVM是Java程序运行的核心,通过运行时数据区实现内存管理和程序执行。主要包含五个关键区域:堆(存放对象实例)、虚拟机栈(方法调用栈帧)、本地方法栈(Native方法支持)、方法区(类元数据存储)和程序计数器(线程执行指针)。其中堆是GC主要区域,虚拟机栈存储方法调用信息,方法区在JDK8后改为元空间。理解这些区域的功能及交互机制,有助于排查内存溢出(如OOM)、优化线程栈大小(-Xss参数)和合理配置堆内存(-Xms/-Xmx)。这些知识是性能调优和解决内存问题的关键基础。
2025-07-26 22:29:23
1317
原创 Flowable 实战落地核心:选型决策与坑点破解
本文聚焦Flowable流程引擎选型与实施的关键问题。在选型方面,建议从业务复杂度、系统规模、团队技术栈三个维度评估,针对不同场景推荐匹配的流程引擎。在实施环节,重点解决三大痛点:1)流程定义变更需采用版本管理+兼容设计;2)数据库性能通过索引优化、历史表分表及事务拆分提升;3)业务解耦采用抽象服务层和DMN规则外置策略。文章提出"简单流程看成本,复杂流程看扩展,大规模流程看性能"的选型原则,并结合案例说明优化效果。
2025-07-26 21:37:19
1061
原创 Flowable 高级扩展:自定义元素与性能优化实战
本文深入探讨Flowable工作流引擎的高级扩展能力,重点介绍了三个核心方向:1. 自定义流程元素开发,包括多级动态审批任务和规则驱动网关的实现;2. DMN规则引擎集成方案,实现流程与业务规则解耦;3. 大型系统性能优化策略,涵盖分表存储、缓存机制和异步处理。通过电商订单流程的完整案例,展示了如何综合运用这些技术解决企业级复杂场景需求。文章不仅提供了详细的代码实现,还分享了流程监控、告警机制等运维实践,为构建高并发、可扩展的工作流系统提供了完整解决方案。
2025-07-25 17:59:18
1067
原创 Flowable 与外部系统集成:跨系统流程协同与 Redis Stream 回调实践
《Flowable跨系统集成与RedisStream回调队列实践》摘要:本文探讨企业级流程引擎与外部系统的协同方案,重点介绍三种集成模式:1)直接API同步调用,适用于Java系统紧密集成;2)消息队列异步解耦,适合异构系统;3)WebHook事件回调实现流程状态主动通知。特别针对异步场景,详细讲解RedisStream作为高性能回调队列的实现方案,包括消费者组负载均衡、消息重试和幂等设计等企业级实践。文章还提供跨系统流程协同的最佳实践,如业务键绑定策略、分布式事务处理和接口幂等性设计,并给出常见问题的解决
2025-07-24 18:07:37
1033
原创 Flowable 与 Spring Boot 深度集成:从环境搭建到平台构建
本文介绍了Flowable工作流引擎与SpringBoot的深度集成方案。主要内容包括:1)通过starter实现快速环境配置,支持邮件服务、自定义表单等扩展;2)将Flowable Modeler嵌入业务系统,实现流程设计与单点登录;3)构建完整工作流平台,包含待办中心、流程监控和数据分析功能;4)集成SpringSecurity实现细粒度权限控制;5)分享分布式部署、性能优化等实战经验。文章还预告了下期将探讨动态流程生成、DMN集成等高级特性。该方案为企业级工作流平台建设提供了完整技术参考。
2025-07-23 18:00:13
1152
原创 Flowable API实战:动态流程控制与事件处理
本文深入探讨了Flowable API在动态流程控制与事件处理中的实战应用。首先介绍了三种动态任务分配方式:运行时设置负责人、候选人与候选组机制,以及通过自定义AssignmentHandler实现复杂审批逻辑。接着详细解析了Flowable的事件监听机制,包括全局事件监听器的配置和任务监听器的实现方法,展示了如何在不侵入流程定义的情况下实现业务逻辑的解耦处理。文章通过具体代码示例,演示了如何动态指定审批人、处理多人协作任务场景,以及如何在流程关键节点插入业务逻辑(如日志记录、通知发送等),为复杂业务流程的
2025-07-22 23:22:36
686
原创 深入 Flowable 流程设计:用 Modeler 可视化构建流程
本文介绍了使用FlowableModeler可视化工具设计业务流程的完整指南。主要内容包括:FlowableModeler的核心优势(可视化设计、自动生成BPMN2.0标准XML、流程校验等);环境搭建的两种方式(Docker快速启动和手动部署);工具界面和核心节点类型说明;通过请假审批流程案例演示了分支逻辑、表单设计和并行流程的实现方法;提供了流程变量传递、事件监听等实战技巧;指出常见设计错误及解决方案。文章还包含流程部署方法和下一阶段学习预告,为读者提供从设计到部署的全流程指导。
2025-07-21 17:25:48
671
原创 初识 Flowable 流程引擎:让业务流程管理变得简单
《初识Flowable流程引擎:简化业务流程管理》摘要:Flowable是一款强大的开源流程引擎,能实现业务流程自动化管理。文章介绍了Flowable的核心功能和优势,包括BPMN2.0兼容性、丰富的扩展点以及与Spring生态的无缝集成。通过报销审批、订单状态管理等实际案例,展示了Flowable在解决复杂业务流程问题时的价值。文章还提供了快速搭建Flowable项目的实战指南,包括流程定义、任务处理和核心服务接口的使用方法。适合需要实现业务流程自动化、多角色协同工作的开发团队参考。
2025-07-21 15:02:12
858
原创 接口重复提交、防抖与幂等性:全方位解决方案实践
本文系统分析了重复提交、接口防抖和幂等性三类常见问题的区别与解决方案。针对重复提交问题,提出了前后端配合的防护方案,包括前端按钮禁用、令牌机制及后端校验;对于接口防抖,介绍了前端延迟请求和后端请求合并的实现方法;幂等性问题则通过唯一标识与状态校验确保多次调用结果一致。文章结合代码示例,给出了可落地的技术实现方案,帮助开发者有效解决业务中的重复操作问题。
2025-07-20 19:36:07
1092
原创 Java锁全解析:从基础到进阶的面试必备指南
本文系统梳理了Java中的锁机制,涵盖synchronized隐式锁、Lock显式锁及其实现类。首先从获取方式、竞争策略等维度对锁进行分类,详细解析了synchronized的实现原理和锁升级过程。随后深入分析ReentrantLock、读写锁等显式锁的特性与使用场景,并介绍自旋锁、分段锁等特殊锁的实现。最后探讨了CountDownLatch、CyclicBarrier等并发工具类中的锁机制应用,为Java多线程开发提供了全面的锁技术参考。
2025-07-20 14:00:00
558
原创 AQS 原理与源码深度解析:从面试问到实践
本文深入解析了Java并发编程核心组件AQS(AbstractQueuedSynchronizer)的实现原理。AQS通过CLH队列锁机制管理线程竞争,使用volatile变量state表示同步状态,支持独占(如ReentrantLock)和共享(如Semaphore)两种模式。文章详细剖析了AQS的核心数据结构、状态变量、加锁/释放锁流程,并通过ReentrantLock的公平锁与非公平锁实现进行源码级分析。此外还介绍了条件变量实现和应用场景,帮助读者全面理解AQS作为Java并发包基础框架的设计思想,掌
2025-07-20 10:00:00
888
原创 慎用 @Async:从 ThreadLocal 失效到 Cookie 丢失的连环坑
摘要: 线上导出接口因@Async异步调用导致Cookie丢失,触发文件中心鉴权失败。问题根源在于异步线程无法继承主线程的HttpServletRequest上下文,且请求对象在主线程结束后失效。解决方案包括:提取必要参数(如Cookie)而非传递Request、使用InheritableThreadLocal传递上下文,或重构逻辑避免跨服务异步调用。此外,@Async还存在异常处理黑洞(需实现AsyncUncaughtExceptionHandler)、事务失效(需分离异步与事务方法)及线程池耗尽(需自定
2025-07-19 14:00:00
760
原创 字段加密的设计与实践:远离 getter 加密的陷阱
摘要 本文探讨了字段加密的合理设计方式。作者通过实际案例指出,在实体类getter中直接实现加密逻辑存在严重问题,包括破坏代码一致性、引发二次加密、导致序列化失败等隐患。文章提出三个加密方案:1)在API层通过拦截器处理;2)在业务层显式调用加密工具;3)在持久层使用MyBatis类型处理器。强调加密设计应遵循单一职责原则,保持处理逻辑可见且一致,并给出加密工具类实现要点。最后总结加密设计的核心原则:避免在getter/setter中加密、确保加解密成对出现、密钥独立管理、优先框架层实现,实现安全性与可维护
2025-07-18 17:27:09
1033
原创 # 新手入门 RocketMQ 实战指南:从搭建到代码实现全流程
用发送消息写个类实现接收消息通过控制台查看消息状态和消费情况遇到问题先看控制台的堆积数和错误日志RocketMQ 还有很多高级功能,比如事务消息、延时消息,等熟练了再慢慢学。刚开始不用追求面面俱到,先在实际项目中用起来,遇到问题再查文档,进步会更快~如果有哪里没看懂,可以评论区问我,我会尽量用新手能听懂的话解答~
2025-07-17 11:44:03
969
原创 Spring 缓存优化:不用花大钱也能让接口飞起来
不用换数据库、不用升服务器,加个 Spring 缓存就能让接口快不少。但缓存不是银弹,像权限这类动态变化的数据就需要特别处理。先从简单的内存缓存试试水,再过渡到 Redis,注意避开那些常见的坑,再整个监控体系,接口响应时间降个 80%-90%,QPS 提个 3-5 倍不是问题,数据库压力也能大减。亲测有效的低成本方案,赶紧试试吧!
2025-07-16 16:37:13
840
原创 Redis 实现消息队列解决服务数据一致性问题
摘要 本文提出利用Redis实现消息队列,解决服务A(公共系统)与服务B(业务子系统)间的数据一致性问题。对比定时任务全量更新(时效性差、负载高)与Redis消息队列增量更新后,推荐采用Redis Stream(支持持久化、消费者组、消息确认)作为核心方案。通过Redisson实现生产者(服务A)与消费者(服务B)的交互,确保消息可靠传递与处理:生产者通过LPUSH发送消息,消费者使用阻塞式读取及ack机制保障消息不丢失。方案支持多消费者、失败重试及延迟消息(结合SortedSet),并强调Redis St
2025-07-15 16:13:31
742
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人