自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebClient 避坑指南:长时间未调用后报“目标服务已关闭”的根因与解决方案

这个问题的本质不是:“连接没有被清理”连接在被清理之前,被复用了。

2026-04-20 14:55:09 277

原创 SpringBoot 自定义系统健康检测:数据库、Redis、表统计、更新时长、系统性能全链路监控

在生产环境中,我们常常需要一个统一的健康检查接口,用来监控系统运行状态、关键依赖服务、以及各业务表的更新情况。相比 Spring Actuator 的简单 "UP / DOWN",我们往往需要 更全面、更细粒度、更贴近业务场景的健康监控系统。本文将基于以下大纲构建一个可直接落地的健康监控模块:✔ 数据库健康检测✔ Redis 连通性检测✔ 表统计(总量 / 今日新增 / 未更新天数)✔ 每张表的最新更新时间✔ 系统运行时长(uptime)、CPU、内存信息✔ 自动格式化数字与时间(万、百万、亿 /

2025-12-02 14:38:19 453

原创 Java 异步与并发编程:CompletableFuture 使用技巧

在高并发、微服务或大数据处理场景下,合理使用 CompletableFuture 可以极大提高系统性能和代码可读性。

2025-12-01 13:42:34 364

原创 基于 Spring Boot + SSE 实现和风天气每分钟实时推送(完整教程)

本文介绍了如何将传统请求式天气接口改造为基于SSE(Server-Sent Events)的长连接推送服务。改造后的系统实现每分钟自动推送和风天气数据,适用于大屏、监控平台等需要实时天气刷新的场景。文章详细说明了SSE技术原理、与WebSocket的对比优势,并提供了完整的Spring Boot服务端实现代码,包括推送Controller、天气客户端和前端监听示例。改造后的系统相比传统轮询方式具有显著性能优势,包括更低的网络消耗、更好的实时性和并发表现。该方案特别适合天气这种稳定低频数据推送场景,可广泛应用

2025-11-21 17:22:59 718

原创 ⭐ 手把手:从和风天气控制台获取配置,并在 Java 中自动读取配置完成天气获取(最全教程)

通过本文你已经学会:✔ 如何从和风天气控制台获取KEY / Host / 城市查询接口✔ 如何写入 Spring Boot 配置(避免硬编码)✔ 如何使用自动绑定配置✔ 如何封装一个可复用的✔ Controller 一行代码即可获取天气数据✔ 处理乱码与时间格式问题控制台配置 → yml 配置 → @ConfigurationProperties 绑定 → Java 调用 → 返回天气数据如需进一步扩展(示例):将天气自动推送到大屏(WebSocket/SSE)

2025-11-21 17:15:53 1697

原创 通过注解方式实现大屏数据的动态推送:Java/SpringBoot 实战指南

本文提出了一种基于注解的动态数据推送方案,用于解决大屏项目中推送逻辑分散、耦合度高的问题。通过定义@ScreenPush注解和AOP切面,业务方法只需添加注解即可自动完成数据序列化和推送,无需手动调用推送接口。方案支持异步推送、定时任务、多通道推送等功能,实现了业务逻辑与推送逻辑的解耦,提高了代码复用性和可维护性。核心组件包括注解定义、AOP拦截、推送服务和序列化模块,可灵活适配WebSocket、SSE等多种推送方式,适用于需要实时数据更新的大屏场景。

2025-11-21 17:07:54 591

原创 应对大模型限流的延迟请求处理实战:架构、策略与完整代码

本文探讨了大模型API调用中的限流问题(429/439错误)及解决方案。核心提出延迟请求处理技术,包括单请求延迟和全局群体退避两种模式,重点推荐后者以提升稳定性。文章详细分析了限流本质(QPS、TPM等维度限制),强调必须使用CompletableFuture避免线程阻塞,并提供了可直接使用的Java实现代码(含全局延迟器和指数退避逻辑)。最佳实践建议采用2-3次重试、全局Backoff策略,并指出分布式环境下可通过Redis实现集群级限流同步。该方案能有效平衡高并发需求和API限流约束,保证系统吞吐量同时

2025-11-21 17:02:34 1855

原创 Java 策略模式 + 聚合对象:实现多模块的统计与聚合,快速扩展的实战

本文介绍了一种基于策略模式和聚合对象的后端统计聚合框架设计方案。该方案通过将各模块统计逻辑封装为独立策略(StatisticStrategy),使用聚合对象(AggregateObject)承载中间结果,配合聚合器(Aggregator)进行结果合并,实现了多模块统计的高效扩展。核心优势在于新增模块时只需实现策略接口并注册,无需修改核心代码。文中详细展示了订单、页面等模块的实现示例,并提供了策略注册、执行引擎等核心组件设计,最后给出了工程化优化建议。该架构有效解决了传统统计系统代码重复、维护困难的问题,特别

2025-11-21 16:56:09 884

原创 轻松实现Office在线编辑:基于Collabora的Web集成指南

本文介绍了在Web项目中集成CollaboraOnline实现Office文档编辑功能的方法。主要包括:1)CollaboraOnline的核心原理,基于LibreOffice和WOPI协议;2)服务端部署步骤,使用Docker运行Collabora服务;3)前端集成方案,通过iframe嵌入编辑器;4)WOPI后端接口实现示例,包括权限检查和文件保存;5)高级功能如自定义工具栏按钮。该方案可提供媲美Office365的网页端编辑体验,适用于需要在线协作编辑Office文档的Web应用场景。

2025-10-24 10:59:28 2715

原创 MinIO 在 Java 项目中的使用全流程(含完整示例)

本文介绍了在SpringBoot项目中集成MinIO对象存储系统的完整方案。主要内容包括:MinIO的轻量级特性及S3协议兼容优势;通过配置类建立连接;封装核心工具类实现文件上传、下载、预览和删除功能;提供Controller示例和常见问题解决方案。文章还给出了安全性优化建议,如URL临时签名、路径前缀控制等,并推荐采用接口抽象、缓存等优化措施。该方案适用于各类文件存储场景,具有高可用、易扩展的特点,是传统文件存储的理想替代方案。

2025-10-23 17:28:05 1496

原创 3分钟搞定MinIO文件操作!超实用Java工具类封装

本文介绍了基于SpringBoot的MinIO工具类封装方案,包含文件上传、下载、删除等核心功能。工具类MinioUtils提供了MultipartFile和InputStream两种上传方式,支持按日期自动生成存储路径,并实现了7天有效期的访问链接生成。配置类MinIoConfig通过@ConfigurationProperties简化参数注入,控制器示例展示了实际调用方法。该方案通过高度封装简化了MinIO客户端操作,适用于需要对象存储的SpringBoot项目,开发者只需关注业务逻辑即可实现文件管理功

2025-10-23 16:56:47 382

原创 Java StringJoiner 详解:优雅拼接字符串的实用工具

在 Java 开发中,字符串拼接是高频操作。传统的 + 运算符或 StringBuilder 虽然常用,但在处理分隔符、前缀/后缀时容易显得冗余。JDK 8 引入的 StringJoiner 专为这类场景设计,能让代码更简洁、可读性更强。本文将从基础用法到进阶技巧,全面讲解 StringJoiner 的使用。

2025-10-15 11:08:06 542

原创 Spring Boot 自定义异常与全局异常处理:打造优雅的错误响应体系

在企业级开发中,系统化错误处理是保障服务健壮性的核心能力。原生Java异常(如业务语义模糊无法区分是「用户ID为空」还是「文件路径为空」错误处理重复每个Controller重复编写try-catch块响应格式混乱前端面对五花八门的错误格式苦不堪言解决方案:自定义异常 + 全局异常处理器通过自定义异常体系 + 全局异常处理器业务语义精准化 → 每种错误明确对应一个异常类错误处理集中化 → 告别Controller中的try-catch地狱响应格式标准化 → 前后端协作效率提升。

2025-08-26 16:39:48 853

原创 Java实战:突破加密枷锁!巧解敏感信息模糊查询难题

模糊查询加密数据需权衡安全与便利。方案一适合多数业务场景,方案二适用于极致安全的小数据量需求。务必做好密钥管理(推荐使用HashiCorp Vault或云KMS服务)。思考如何设计分布式系统下的加密模糊查询?欢迎讨论!

2025-08-20 17:07:38 589

原创 LambdaQueryWrapper 高效使用技巧

掌握上述技巧可显著提升代码可读性、减少字段名错误,并提高动态 SQL 编写效率。建议在实际开发中结合具体场景灵活运用。(注:基于 Mybatis-Plus 3.5.3+ 版本验证)

2025-08-14 10:47:46 830

原创 Spring事务传播行为深度解析(按业务场景分类说明)

Spring事务传播行为是构建健壮事务逻辑的核心钥匙🔑。理解精准控制事务边界,避免数据不一致灵活选择隔离级别,平衡性能与安全性规避常见坑点(如嵌套事务回滚的“惊喜”)

2025-08-13 11:18:29 1211

原创 使用@ExcelProperty注解实现Excel数据导入导出

EasyExcel框架通过@ExcelProperty注解简化Java中的Excel操作,显著提升开发效率。其核心优势包括注解驱动自动匹配字段表头、零模板代码和高性能SAX解析模式。实施步骤涵盖环境配置、实体类设计(支持多级表头)、数据导出导入实战(含Web响应设置及监听器模式),并提供了日期处理、动态表头等高级特性。针对大数据量场景,建议采用分批处理和缓存控制策略。该方案相比传统POI可减少70%代码量,有效规避内存溢出风险,能轻松应对百万级数据操作。

2025-08-06 16:14:52 1993

原创 使用策略+工厂模式构建动态大模型调用工厂(Java实现)

本文介绍了基于策略模式与工厂模式的混合架构设计,通过Spring框架实现大模型服务的动态调用。该架构包含模型枚举定义、策略接口、具体策略实现类和中央工厂管理四大核心组件,支持轻松扩展新模型(只需实现策略接口)而不影响现有代码。工厂类自动注册所有策略实现,并通过枚举类型映射具体策略,客户端只需指定模型枚举即可获取对应服务实例。这种设计实现了开闭原则,使业务逻辑与具体模型实现解耦,支持运行时动态切换不同大模型服务(如GPT-4、Claude等),为AI服务调用提供了灵活可扩展的解决方案。

2025-07-22 11:26:08 604

原创 @Accessors(chain=true)注解详解:轻松实现链式调用

@Accessors(chain=true)注解详解:轻松实现链式调用。

2025-07-02 17:35:55 1223

原创 如何用Git命令生成当月代码提交统计报告(附完整指令)

本文介绍了一个一键生成Git代码统计的Shell脚本,可自动统计开发者当月的新增/删除/修改代码行数、新增文件数量和提交次数。脚本通过git log命令获取数据,并整合成可直接运行的code_stats.sh文件,输出示例展示了统计结果。使用前需配置Git邮箱并确保在项目根目录运行,该工具能显著提升月报统计效率,避免手动统计的繁琐和错误。

2025-06-24 16:34:19 1089

原创 Cron表达式深度解析与@Scheduled实战指南

任务,避免单一表达式维护困难。分布式环境需结合Quartz等框架实现任务协调。日期字段与星期字段存在互斥关系,当需要指定具体日/周时,另一字段需置。的时序结构(年字段可省略)。表示9点至18点间每隔3小时触发(9,12,15,18点)。Cron表达式由6-7个时间域构成,遵循。表示从0秒开始每15秒触发,相当于。表示每周一每小时0分0秒触发。通过在线工具可视化生成表达式。表示周一、周三、周五触发。复杂定时策略建议拆解为多个。表示匹配所有有效值,如。表示每天12点触发,表示每周一0点触发。

2025-06-19 16:48:59 819

原创 Java定时任务实战:@Scheduled注解的使用

在Spring Boot项目中启用定时任务功能,需在启动类添加。

2025-06-19 16:45:22 665

原创 如何通过Java Future+线程池实现任务中止(附可运行代码)

通过合理使用Future和线程池,可以实现: 及时响应前端终止请求 有效释放服务器资源 避免无效计算实际开发中需要特别注意对中断信号的正确处理,建议结合具体业务场景进行异常处理和资源清理的增强。

2025-06-19 16:25:47 727

原创 优雅使用 MyBatis-Plus 的 @TableLogic 实现逻辑删除(附完整示例)

逻辑删除通过状态字段标记数据(如del_flag=1)实现软删除,MyBatis-Plus提供@TableLogic注解和全局配置自动处理。优势包括数据可恢复、审计追踪,需注意:自定义SQL要手动添加删除条件、唯一索引需包含状态字段、事务管理中混合操作需谨慎。建议配合删除时间/操作人字段、定期归档机制,并实现恢复接口。该方案通过声明式配置平衡安全性与效率,复杂查询场景建议结合自定义SQL实现。

2025-06-18 16:53:28 1080

原创 Spring Boot高效实战:MyBatis-Plus自动填充创建/更新时间字段

手动赋值会导致代码冗余且易遗漏,本文将演示如何通过MyBatis-Plus的。在业务表设计中,常需要在。接口实现自动化赋值。

2025-06-18 16:42:58 704

原创 Java使用HTTP、SSE接收大模型流式响应

获取到大模型返回的逐条流式数据后,可通过Java+SSE单向把数据返回给前端,可直接将分词结果响应到页面或模型对话框里,详情可以看这篇文章。使用Java+SSE实现大模型流式返回前端(完整代码+优化方案)

2025-06-12 11:31:41 1992

原创 使用Java+SSE实现大模型流式返回前端(完整代码+优化方案)

解决核心问题解决大模型响应时间太长,导致HTTP请求超时的问题可在前端实时回显响应流式数据,避免长文本进行长等待后直接输出适用场景对比使用SSE更轻量,且大模型结果属于单向响应,在输出时不需要考虑交互技术延迟双向通信适用场景SSE低单向推送实时日志/进度更新WebSocket极低双向聊天室/高频交互。

2025-06-12 11:17:38 3151 2

空空如也

空空如也

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

TA关注的人

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