自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MQ 最终一致性实现电商账户余额提现

本文介绍了电商平台商户余额提现至微信钱包的分布式事务解决方案。针对资金操作一致性问题,采用MQ最终一致性方案,通过事务消息确保业务操作与消息投递的强绑定,配合消费者重试机制保证最终成功。具体实现包括:1)设计账户表和提现记录表;2)开发提现接口处理余额扣减和事务消息发送;3)消息消费者调用微信支付接口并更新状态。测试验证了方案有效性,成功完成余额扣减和提现状态更新。该方案有效解决了"扣款未到账"等资金异常问题。

2025-08-29 17:41:23 343

原创 MQ 最终一致性实现跨库转账

本文介绍了分布式事务中的MQ最终一致性方案,通过跨库转账案例演示其实现过程。该方案核心是本地事务与消息投递的强绑定结合消费端幂等处理,确保事务最终一致。文章详细解析了从环境准备、代码实现到测试验证的全流程,重点展示了上游服务扣款与消息投递、下游服务收款与幂等处理的实现逻辑。同时强调了事务消息绑定、消费端幂等、合理重试策略等关键注意事项,并指出该方案适用于下游业务必然成功的场景(如转账、订单库存同步等)。

2025-08-26 17:00:15 650

原创 MQ 消息积压:问题诊断、原因分析与解决方案

本文系统分析了MQ消息积压这一分布式系统常见问题。首先介绍了通过监控关键指标(待消费数量、消费延迟等)及时发现积压的方法,并推荐使用Prometheus+Grafana监控工具链。其次从消费端和生产端剖析了积压原因,提出优化消费逻辑、扩容消费者等解决方案。针对严重积压情况,建议采取临时降级、分级处理等应急措施。最后强调预防的重要性,包括配置实时监控和进行压力测试。文章提供了从预警、定位到处理的全流程解决方案,帮助系统有效应对消息积压挑战。

2025-08-26 10:06:52 491

原创 MQ 顺序消息通用方案

摘要: 顺序消息在高并发系统中至关重要,如订单场景需确保"创建→支付→发货→确认→完成"的严格顺序。本文提出两种实现方案:1)串行生产+单线程消费(简单但低吞吐);2)编号标记+多线程有序消费(高并发首选)。重点解析方案2的实现:生产者按业务ID生成连续编号,消费者通过编号排序实现"乱序接收但有序消费"。通过RabbitMQ实战演示,对比乱序与顺序消费效果,并剖析通用框架源码,包括Redis原子编号生成、TreeMap暂存消息及消费唤醒机制。该方案兼顾性能与顺序性,适

2025-08-26 09:43:22 470

原创 MQ消息幂等消费与自动重试方案

本文提出了一套MQ消息幂等消费及消费失败自动重试的通用解决方案。方案采用SpringBoot+MyBatisPlus+MySQL+RabbitMQ技术栈,通过定义标准消息格式(Msg类)实现消息唯一性判断,结合幂等辅助表(t_idempotent)实现消费幂等性。系统采用消费者手动ACK机制,配合延迟队列实现衰减式重试策略(最多50次)。核心实现包括:1)事务消息投递;2)幂等消费处理;3)消费失败自动重试机制。通过继承AbstractIdempotentConsumer简化消费者开发,确保消息处理的高可靠

2025-08-25 18:50:13 842

原创 Windows下RabbitMQ完整安装指南

本文详细介绍了RabbitMQ消息队列在Windows系统下的安装步骤。RabbitMQ是一款基于Erlang开发的高性能开源消息中间件,具有可靠性、灵活路由和集群部署等特性。安装前需先配置兼容版本的Erlang运行环境(推荐27.1版本),并设置相关环境变量。RabbitMQ安装完成后需启用管理插件以使用Web控制台(默认地址http://127.0.0.1:15672,账号guest/guest)。文章还提供了常用服务管理命令,帮助用户快速搭建消息队列服务,为分布式系统开发提供支持。

2025-08-21 09:04:33 1168

原创 分布式系统消息队列:可靠投递与延时消息实战

本文探讨分布式系统中消息队列的可靠投递与延时消息实现方案。针对消息投递,提出"本地消息表+事务同步+重试机制"的可靠方案,详细介绍事务消息的核心流程、本地消息表设计及实现代码。对于延时消息,对比多种实现方案后推荐"数据库+DelayQueue+定时预加载"的通用方法,支持灵活延时设置。文章还提供了实际业务场景的代码示例及优化建议,包括订单超时处理等典型用例。这些方案不依赖特定MQ中间件,兼顾可靠性与性能,可解决分布式系统中的异步通信难题。

2025-08-20 16:30:59 704

原创 Java高效延时队列实现详解

本文介绍了一个基于Java的延时队列工具实现方案。该工具以DelayQueue为核心数据结构,包含DelayTask任务封装类和DelayTaskProcessorUtils核心处理器类,支持多线程并发处理任务并具备容量控制功能。DelayTask实现Delayed接口,负责管理任务执行时间和排序;DelayTaskProcessorUtils提供任务添加、执行和线程管理功能,支持两种任务添加方式(延迟时间或精确时间戳)。测试案例验证了任务能按预设延迟时间正确执行。使用时需注意容量限制、异常处理和合理设置并

2025-08-14 16:51:31 726

原创 基于本地消息表的 MQ 可靠投递方案实现与优化

本文介绍了一种基于本地消息表的分布式事务解决方案,通过将消息和业务操作置于同一数据库事务中,确保消息的最终一致性。该方案包含四个核心模块:1)消息表数据模型设计,记录消息状态和重试信息;2)事务感知的消息发送器,根据事务状态决定消息处理方式;3)消息服务层进行CRUD操作;4)定时任务重试机制处理失败消息。方案采用异步投递、状态幂等更新等优化手段,并支持监控告警功能。该设计有效解决了业务执行与消息投递不一致的问题,具有事务同步可靠、重试策略灵活、全链路可追溯等优势,适用于需要保证消息可靠性的分布式场景。

2025-08-14 16:09:03 533

原创 MQ 消息可靠性保障全解析

消息可靠传递需要覆盖生产者、MQ和消费者全链路。生产者端可采用事务消息或独立消息服务,确保业务与消息发送的一致性;MQ需配置持久化和集群部署,防止消息丢失;消费者应实现手动ACK和幂等处理,避免重复消费。核心在于针对各环节设计补偿机制,如本地消息表、定时重试等,同时结合业务场景选择合适方案,如单体系统适合事务消息,分布式系统推荐独立消息服务。通过全链路保障措施,可最大限度确保消息可靠传递。

2025-08-14 14:38:30 821

原创 MQ 常见使用场景全解析

消息中间件(MQ)在分布式系统中发挥关键作用,主要应用于七大场景:1)异步解耦,实现系统间松耦合与异步通信;2)流量削峰,应对突发高并发;3)延迟消息,精准触发定时任务;4)分布式事务,保障数据最终一致性;5)日志收集,高效处理海量日志;6)任务分发,提升批量处理效率;7)并行任务,加速大规模任务执行。这些场景覆盖了系统解耦、性能优化、时序控制等核心需求,能有效提升系统稳定性与扩展性,是构建高可用分布式架构的重要工具。

2025-08-14 14:26:19 721

原创 深入理解 ThreadLocal 与线程池的那些坑及解决方案

本文探讨了Java并发编程中ThreadLocal与线程池结合使用时出现的问题及解决方案。ThreadLocal无法在线程池中共享数据,InheritableThreadLocal也因线程复用存在局限性。作者提出通过自定义线程池在任务提交时捕获上下文、执行任务前恢复上下文的解决方案,并展示了在SpringBoot的@Async中的实现方式。该方案有效解决了线程池环境下的上下文传递问题,为并发编程提供了可靠的支持。

2025-07-28 12:26:32 607

原创 Java 实现 TCP 多发多收通信程序

本文解析了Java实现的TCP多发多收通信程序,包含客户端和服务端的完整代码。客户端通过循环结构持续发送控制台输入的消息,服务端实时接收并显示;双方通过"exit"指令或异常处理实现安全退出。该程序基于TCP协议的可靠传输特性,实现了持续通信的核心功能,适用于在线聊天、远程监控等场景。文章详细介绍了代码实现原理、运行流程和技术特点,并提出了双向通信、多线程支持等扩展方向,为开发者构建TCP实时交互系统提供了基础参考。

2025-07-22 11:48:52 620

原创 Java 实现 TCP 一发一收通信

本文通过Java代码实例解析TCP单向通信实现原理,展示客户端发送-服务器接收的基础流程。代码包含两个核心部分:客户端使用Socket建立连接后,通过DataOutputStream发送UTF-8编码字符串;服务器端通过ServerSocket监听端口,使用DataInputStream接收并打印消息。分析揭示了TCP协议的连接导向特性(三次握手)、可靠传输机制及端到端通信特点,同时指出了当前实现单向通信、单连接处理等局限,建议通过多线程、双向通信等方式扩展。文章强调TCP在需要数据完整性的场景(如文件传输

2025-07-21 15:17:11 1165

原创 Java 实现 UDP 多发多收通信

本文通过Java代码实例解析了UDP协议多发多收功能的实现。客户端使用DatagramSocket持续发送用户输入数据,服务器端监听8888端口循环接收并解析数据包。代码展示了UDP无连接、高效率的特点,包括数据包封装、地址绑定和消息循环处理等关键技术点。文章还分析了UDP的适用场景及优缺点,建议可扩展异常处理、多线程支持等功能以增强实用性。该示例为理解UDP通信原理和开发实时网络应用提供了实践参考,适合即时通讯、流媒体等低延迟场景。

2025-07-21 14:52:26 914

原创 UDP 协议下一发一收通信程序的实现与解析

在网络通信的世界里,UDP 协议以其简洁高效的特点占据着重要地位。它无需建立连接,数据传输速度快,非常适合对实时性要求较高但对数据完整性要求相对宽松的场景。本文将详细解析一个基于 UDP 协议的一发一收通信程序,带你了解其背后的实现原理与代码细节。

2025-07-18 14:43:10 401

原创 AOP简化MyBatis分页:高效自动化方案

本文介绍了两种MyBatis分页实现方案:传统PageHelper方式和基于AOP的简化方案。传统方式需要手动调用startPage()和clearPage(),代码重复且耦合度高。优化方案通过AOP环绕通知自动处理分页逻辑,只需在Mapper参数中传入实现IPageQuery接口的对象即可。该方案通过定义分页参数接口、实现AOP切面来拦截Mapper方法,自动完成分页控制,显著减少冗余代码,实现业务与分页逻辑解耦。案例展示了该方案在带条件查询场景中的实用性,具有低侵入、易扩展、高易用等优势,特别适合大型项

2025-07-15 14:40:09 931

原创 AOP实现系统操作日志统一管理

本文提出了一种基于AOP的轻量级操作日志记录方案,通过自定义@OperateLog注解标记需要记录的方法,利用切面技术自动收集请求参数、响应结果、操作人、IP地址及归属地等信息,并统一保存到数据库。该方案具有低侵入性(仅需添加注解)、完整性(记录成功/失败全量信息)和可扩展性等特点,实现过程采用ip2region离线IP解析、MyBatis-Plus持久化等技术,支持敏感参数脱敏、异步保存等扩展优化,为系统审计和问题排查提供完整日志支持。

2025-07-15 12:00:50 867

原创 SpringBoot优雅实现数据脱敏

本文介绍了在SpringBoot中实现数据脱敏的优雅方案。通过自定义注解和Jackson序列化器结合,实现对敏感字段的自动脱敏处理。主要内容包括:1. 定义@Desensitization注解标记需脱敏字段;2. 设计多种脱敏策略(手机号/邮箱/身份证等);3. 实现自定义序列化器处理标注字段;4. 使用Hutool工具简化脱敏逻辑。该方案具有低侵入性、高灵活性和强通用性特点,只需添加注解即可实现不同场景的脱敏需求,有效保障用户隐私和数据安全。

2025-07-15 10:45:27 663

原创 电商缓存强一致方案:数据库锁保障

本文探讨电商系统中Redis缓存与数据库的数据一致性解决方案。针对商品详情页场景,常规缓存更新策略在并发操作下会出现缓存与数据库数据不一致问题。通过引入数据库for update行锁机制,强制将更新和查询操作串行执行,确保查询获取最新数据并更新缓存。该方案实现强一致性,但可能影响并发性能,适用于对数据准确性要求高的核心业务场景。需权衡一致性与性能需求,合理选择方案。

2025-07-15 10:35:16 969

原创 高并发验证:2个案例教你避免超卖

《并发代码验证的实用方法》摘要 本文提出了一种通过多线程步骤推演来验证并发代码正确性的实用方法。以商品库存扣减为例,通过模拟2个线程并发操作,详细展示了问题代码导致超卖的过程(案例1)和优化后代码的正确处理(案例2)。该方法包含四个核心步骤:明确初始状态、模拟并发场景、追踪执行步骤和分析最终结果。相比传统压测,该方法具有简单直观、精准定位问题等优势,适合开发早期快速验证并发场景下的代码行为,可有效发现超卖等并发问题。建议先采用该方法进行初步验证,再结合压测工具进行全面测试。

2025-07-15 10:29:27 539

原创 亿级用户收益秒发:余额宝高效发放方案

摘要:针对1亿用户每天9点前完成余额宝收益发放的需求,分析了两种实现方案。Job+线程池方案因性能瓶颈(需30小时)仅适用于百万级用户。推荐采用集群+消息队列方案:通过100个节点、10000个消费者并发处理,预计3.5小时完成,满足时效性。该方案还提供了幂等性保障(用户ID+日期)、分表存储发放记录、失败重试机制及后台管理系统,确保数据准确性和可追溯性,适用于海量用户场景。

2025-07-15 10:23:03 1321

原创 Java线程数据传递三大神器详解

ThreadLocal实现线程内数据共享,但父子线程数据隔离;InheritableThreadLocal解决父子线程数据传递问题;线程池场景下InheritableThreadLocal失效;TransmittableThreadLocal通过包装线程池实现动态数据传递。三者并非替代关系,而是适用于不同场景:ThreadLocal用于线程内共享,InheritableThreadLocal适用于临时子线程,TransmittableThreadLocal专为线程池设计。实际开发中应根据具体需求选择

2025-07-15 10:18:28 765

原创 接口报错追踪神器:traceId快速定位

摘要: 针对海量日志中接口报错定位困难的问题,提出引入traceId的解决方案。通过拦截器生成唯一traceId并存入ThreadLocal,利用MDC在日志中输出traceId,并通过AOP将traceId添加到接口返回值中。当接口报错时,开发人员可通过返回的traceId快速查询相关日志,显著提升问题排查效率。测试结果表明,该方法能有效解决日志定位难题,适用于正常和异常场景。

2025-07-14 17:24:54 805

原创 后端接口通用返回格式与异常处理实现

*** @param code 错误编码* @param message 错误提示信息*/

2025-07-14 17:08:13 483

原创 分布式系统幂等性:核心原理与实战方案

《幂等性设计与实现方案》摘要:幂等性是分布式系统的核心特性,指多次执行同一操作产生的结果与一次执行相同。本文以支付回调场景为例,分析了重复通知可能导致的双重扣款问题,并提出了四种解决方案:1)基于状态判断的Update控制;2)乐观锁版本号机制;3)唯一约束表控制;4)分布式锁控制。每种方案均包含实现代码和压测结果,最后对比了各方案适用场景。文章强调幂等性对支付、订单等关键业务的重要性,建议根据业务场景选择合适的实现方案,确保系统状态一致性。

2025-07-14 11:16:45 788

原创 SpringBoot实现动态Job实战

支持通过数据库配置 Job 信息(如执行周期、目标方法等),并能实时监控 Job 的增删改状态,无需重启应用即可动态调整 Job 的执行策略。

2025-07-09 18:28:10 350

原创 线程池统一管理解决方案

摘要:针对系统中线程池分散管理的问题,本文提出了一个线程池管理器解决方案。该方案通过ThreadPoolManager核心类实现线程池的统一创建、监控和动态调整,采用配置类(ThreadPoolConfiguration)进行Spring集成,并设计了支持容量动态调整的ResizeLinkedBlockingQueue队列。系统提供RESTful接口(ThreadPoolManagerController)用于查询线程池状态和参数调整,实现了不重启应用即可动态修改线程池配置的功能。该方案解决了线程池可视化管

2025-07-08 16:12:55 438

原创 通用 Excel 导出功能设计与实现:动态列选择与灵活配置

本文提出了一种企业级通用Excel导出方案,采用SpringBoot+EasyExcel技术栈实现动态灵活的导出功能。方案核心特性包括:1)支持前端勾选动态配置导出字段;2)可筛选指定行数据;3)多Sheet扩展能力;4)自动处理数据格式化。通过ExcelExportRequest/Response规范前后端协议,利用反射机制实现字段映射,提供可视化交互组件。该方案具有配置灵活、扩展性强、易用性高等优势,适用于报表导出、批量下载等业务场景,有效提升开发效率。

2025-06-25 17:21:21 716 1

原创 接口性能调优之大事务优化

摘要:本文针对Spring大事务引发的性能危机,分析了典型问题场景——耗时5秒的非数据库操作被纳入事务范围,导致数据库连接池资源耗尽。通过编程式事务重构,将事务边界精准缩小至仅包含2ms的数据库操作,使并发支持能力提升2500倍。压测数据显示,优化后成功请求数从26%升至99%,平均响应时间从5120ms降至510ms。文章提出事务管理黄金法则:最小化事务边界、分离事务管理模式、合理调优连接池参数,并给出读写分离、批量处理等最佳实践。最终强调事务优化的核心在于提高资源利用率,建议开发者扫描长事务、优化只读事

2025-06-25 14:40:36 942

原创 Java 并行查询优化:从串行到 5 倍性能提升的实战指南

✅ 多个查询无依赖关系✅ 单任务耗时较长(>50ms)✅ 存在明显的 IO 等待(数据库 / 远程调用)

2025-06-24 18:07:36 1173

原创 AI 技术重塑工作与行业:开启效率与创新的新纪元

AI 技术正以前所未有的速度重塑着我们的工作与行业。从编程到测试,从单一领域到跨行业应用,AI 带来的变革无处不在。通过本次征文活动,希望大家能够积极分享自己在 AI 实践中的宝贵经验,共同探索 AI 技术的无限可能,为推动行业发展、实现效率提升与产业升级贡献智慧和力量。让我们携手共进,在 AI 技术的浪潮中,书写工作与行业发展的新篇章。

2025-06-24 14:23:32 964

原创 基于 JUC 信号量的接口限流实现方案

本文介绍了一种基于Java Semaphore的接口限流方案,采用令牌桶机制控制并发请求量。通过初始化固定数量的信号量令牌(如50个),利用tryAcquire方法在1秒等待时间内获取令牌,确保业务逻辑安全执行后在finally块释放令牌。方案实现了轻量级并发控制、精确流量限制和异常安全处理,适用于突发流量保护、资源隔离等场景。通过LoadRunner压测工具验证,在100并发请求下能有效拦截超限请求(约50成功/50失败)。建议扩展动态调整许可数、增强限流日志等优化措施,并结合熔断机制提升系统稳定性。该方

2025-06-20 12:15:10 219

原创 Trae:让编程效率翻倍的全能助手

在浩如烟海的编程工具中,若问哪一款能让我的工作效率实现质的飞跃,那一定非 Trae 莫属。作为一名长期在代码世界里摸爬滚打的开发者,Trae 以其强大且灵活的功能,成为我编程路上不可或缺的得力助手。​。

2025-06-16 10:35:18 544

原创 超卖解决方案:4种方案实战对比

本文探讨了四种解决超卖问题的方案,核心思想是通过加锁实现并发操作的排队执行。方案1在update语句中直接判断库存条件;方案2使用版本号乐观锁;方案3通过对比数据修改前后状态;方案4借助辅助表实现业务代码保护。测试结果表明,所有方案都能有效避免超卖,但方案1最为可靠,特别是在多人协作开发环境中,因其直接收敛到单一口子修改数据。本质上看,解决并发问题最终都依赖于锁机制,关键在于选择适合业务场景的锁范围和实现方式。

2025-06-11 18:09:28 386

原创 手写高并发压测工具实战

本文介绍了一个手写接口性能压测工具的实现方案,旨在通过实战加深对线程池、CountDownLatch和AtomicInteger等并发工具的理解。该工具类LoadRunnerUtils采用线程池执行并发请求,使用CountDownLatch同步线程,AtomicInteger记录成功请求数和耗时指标。压测结果包含请求总数、吞吐量、平均耗时等关键指标,并通过两个测试接口(直接返回和模拟业务操作)进行验证。实现过程展示了如何将并发编程知识应用于实际场景,最终获得一个可复用的压测工具,方便日常性能测试使用。

2025-06-10 16:58:50 160

原创 JAVA高效线程池批量发送短信实战

摘要:本文演示了使用线程池和CountDownLatch批量发送短信的实现方法。通过ExecutorService创建固定线程池,将50条短信任务分配到线程池并行处理。关键点在于使用CountDownLatch确保所有短信发送完成后再继续后续流程。TaskDisposeUtils类提供了通用任务处理方法dispose(),其中CountDownLatch.countDown()标记任务完成,await()方法阻塞等待所有任务结束。该方法实现了高效批量处理与流程控制,测试结果显示处理耗时仅需线程池执行时间。

2025-06-10 15:54:18 247

原创 Java当中实现分片上传

文件分片上传技术方案 针对传统大文件上传存在的断点续传和大文件传输慢的问题,本文提出分片上传解决方案。方案采用将文件切分为多个分片并行上传的技术,包含三个核心步骤:创建分片任务、上传全部分片、合并文件。系统设计了分片任务表和分片文件表来记录上传过程,并提供了完整的Java代码实现示例,包括分片计算、文件合并及MD5校验等功能。对于上传中断的情况,提出了两种恢复方案:通过文件MD5值找回任务继续上传,或直接补传缺失分片。该方案有效提升了大文件上传的可靠性和效率。

2025-06-06 17:13:15 723

原创 Spring Boot : Mybatis多数据源最简解决方案

1.mysql的数据源配置类和配置文件。

2025-03-04 17:08:24 564

原创 AES加密/解密无偏移量,C# JAVA代码互通

【代码】AES加密/解密无偏移量,C# JAVA代码互通。

2025-03-03 13:58:49 297

空空如也

空空如也

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

TA关注的人

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