- 博客(395)
- 资源 (41)
- 收藏
- 关注
原创 Spring Retry 异常重试机制:从入门到生产实践
本文介绍了Spring Retry异常重试机制在生产环境中的应用实践,涵盖注解声明式、RetryTemplate编程式两种实现方式。通过@Retryable和@Recover注解可快速实现方法级重试与降级处理,而RetryTemplate则提供更灵活的细粒度控制。文章重点强调了生产环境的四大要素:合理设置重试次数与退避策略、确保幂等性、完善监控告警,并列举了常见问题及解决方案。最后指出Spring Retry通过AOP实现了无侵入式的系统健壮性提升,适合处理网络抖动等瞬时故障场景。
2025-07-27 18:54:15
581
原创 Spring 容器注入时查找 Bean 的完整规则
本文详细解析了Spring容器在依赖注入时查找Bean的完整规则。核心流程分为四步:首先按类型查找候选Bean,然后通过@Qualifier/@Primary/变量名等过滤歧义,再确定唯一候选,最后创建或返回Bean实例。文章还列举了Bean的多种来源和消除歧义的四种官方方法,并提供了简明的流程图帮助理解。掌握这些规则能快速定位依赖注入问题,提高开发效率。
2025-07-27 18:52:00
277
原创 Spring 容器给 **Bean 起名字(beanName)** 的 7 条绝对规则
Spring容器为Bean命名遵循7条核心规则:1)显式指定(@Component/XML/注册)优先级最高;2)未指定名称时,注解扫描类取首字母小写的类名;3)@Bean方法默认使用方法名;4)FactoryBean添加"&"前缀区分;5)内部类使用"外部类名#内部类名"格式;6)支持占位符和SpEL解析;7)同名Bean后注册者覆盖先注册者(默认报错)。排查时可通过getBeanDefinitionNames()查看命名来源,按规则定位冲突,通过显式命名、
2025-07-27 18:51:19
135
原创 Spring IOC 容器 **默认注册 Bean** 的 8 条规则
本文总结了Spring IOC容器默认注册Bean的8条核心规则:1)环境扫描从启动类所在包递归;2)类级别注解自动注册;3)@Bean方法注册规则;4)@Configuration的特殊逻辑;5)@Import的三类导入方式;6)SPI机制加载自动配置;7)FactoryBean和BeanFactoryPostProcessor的特殊处理;8)默认单例作用域与延迟初始化。理解这些规则可快速定位Spring源码中BeanDefinition的来源,帮助开发者深入理解Spring的依赖注入机制。
2025-07-27 18:50:30
501
原创 进阶!Spring `@Qualifier` 7 大高级技巧 + 源码级原理解析
适用版本:Spring Framework 5.x/6.x 读完本文,你将能 - 在**同一类型多 Bean** 场景下写出零歧义注入; - 利用**自定义限定符**做“按组注入”; - 通过**源码级**理解 Spring 如何解析 `@Qualifier` 与 `@Autowired`。
2025-07-23 19:26:01
434
原创 进阶!使用 @PropertySource 的 7 个高级招式
文章摘要:本文深入解析Spring框架中@PropertySource注解的7个高级用法,突破传统仅能加载properties文件的限制。通过自定义PropertySourceFactory实现YAML/JSON格式支持(①-②),结合@RefreshScope实现动态刷新(③),利用占位符支持多环境配置(④),通过@Order控制加载顺序(⑤)。还演示了从网络/数据库加载配置(⑥)和条件化加载(⑦)等进阶技巧,帮助开发者灵活应对各类配置管理场景。
2025-07-23 19:24:14
330
原创 优雅!通过编程方式重启 Spring Boot 应用的 3 种方案
本文介绍了三种优雅重启Spring Boot应用的方法:1)使用SpringApplication.restart()编程式重启,适合配置热更新;2)通过Actuator的/restart端点实现HTTP触发重启,运维友好;3)自托管脚本结合优雅关闭,适用于JAR升级等需要进程替换的场景。方案1无需外部依赖,方案2需Actuator支持,方案3最通用但需编写脚本。建议根据实际需求选择:配置更新选方案1,运维操作选方案2,重大升级选方案3,高可用集群可结合方案2和3实现灰度重启。
2025-07-23 19:23:17
456
原创 进阶 | 玩转 @ConfigurationProperties 的 10 个高级技巧
本文介绍了Spring Boot中@ConfigurationProperties注解的10个高级用法,包括扁平前缀、嵌套对象、集合绑定、不可变对象、数据校验等技巧。通过对比传统@Value方式,展示了类型安全配置绑定的优势,提供核心代码示例涵盖嵌套校验、构造器绑定、第三方组件配置等典型场景,并总结了4种注册方式和常见问题排查方法。文章强调该注解能实现类型安全、结构化、可校验的配置管理,配合构造器绑定和自定义转换器等特性,可显著提升配置代码的健壮性和可维护性。
2025-07-20 16:20:09
367
原创 Spring Boot 一个注解搞定「加密 + 解密 + 签名 + 验签」
本文介绍了一种基于Spring Boot 3.x的接口安全解决方案,通过自定义注解@ApiSecurity结合AOP切面,实现请求解密、验签、响应加密及加签的自动化处理。
2025-07-20 16:18:49
376
原创 Spring Boot 订单超时自动取消的 3 种主流实现方案
本文介绍了Spring Boot实现订单超时自动取消的3种主流方案:1)基于定时任务@Scheduled的数据库轮询方案,简单但实时性较差;2)利用RabbitMQ延迟队列实现秒级取消,需额外MQ组件;3)通过Redis键过期事件监听,实时性好但需配置Redis通知。三种方案各具特点,开发者可根据业务规模、实时性要求和系统复杂度灵活选择,文中提供了完整代码示例和性能对比分析。
2025-07-20 16:17:47
932
1
原创 《一行注解解决重复提交:Spring Boot 接口幂等实战》
本文介绍了一种基于Spring Boot的轻量级接口幂等解决方案。通过自定义注解@NoRepeatSubmit配合AOP切面,只需30行核心代码即可实现接口防重复提交功能。方案支持灵活的SpEL表达式定义幂等键,可配置本地或分布式锁,业务零侵入,响应时间小于1ms。文章详细展示了注解定义、AOP实现、依赖配置和常见使用场景,并分析了其工作原理和失效条件。该方案适用于支付、下单等高并发场景,能有效防止重复请求导致的资损问题。
2025-07-19 16:05:58
467
原创 《Spring Boot 插件化架构实战:从 SPI 到热插拔的三级跳》
本文介绍了Spring Boot插件化架构的三种渐进式方案:基础级Spring SPI(零依赖,启动期加载)、轻量级PF4J-Spring(支持热插拔)和企业级Spring-Boot-Plugin-Framework(可视化运维)。方案对比了加载时机、热插拔、类隔离等特性,并提供了具体实现代码和运维命令。针对不同团队规模,给出了从10分钟快速落地到企业级解决方案的技术选型建议,重点解决了业务频繁变更场景下的动态扩展需求,同时提供了类隔离、灰度发布等最佳实践。
2025-07-19 16:05:13
384
原创 Jackson在Spring Boot中的开发技巧详解
本文详细介绍了 Jackson 在 Spring Boot 中的开发技巧,包括基础配置、常用注解和自定义序列化方法。主要内容涵盖:1)全局配置方法,如日期格式化和 Long 型转字符串;2)5个核心注解(@JsonProperty、@JsonIgnore、@JsonFormat、@JsonInclude、@JsonCreator/@JsonValue)的使用场景与示例;3)自定义序列化器和反序列化器的实现方式。文章通过典型代码示例和运行效果演示,帮助开发者快速掌握 Jackson 的关键功能,提升 JSON
2025-07-18 08:52:50
267
原创 Jackson在Spring Boot中的开发技巧详解
摘要:Jackson 是 Spring Boot 默认的 JSON 处理库,本文详解其开发技巧,包括基础配置(日期格式化、Long转字符串)、常用注解(@JsonProperty、@JsonIgnore等)的用法与示例,以及自定义序列化/反序列化方法。通过合理运用这些技巧,开发者能高效处理JSON转换,确保系统稳定性和数据准确性。
2025-07-15 09:04:40
425
原创 MyBatis-Plus `IdType` 使用说明手册
MyBatis-Plus的IdType枚举定义了多种主键生成策略:AUTO(数据库自增)、NONE(无主键)、INPUT(手动输入)、ASSIGN_ID(雪花算法)和ASSIGN_UUID(UUID)。ASSIGN_ID生成Long型有序ID适合高并发场景,而ASSIGN_UUID生成字符串型全局唯一ID但性能较低。使用时需根据业务需求选择合适策略,并注意主键类型与数据库字段的匹配。分布式系统推荐使用ASSIGN_ID或ASSIGN_UUID保证唯一性,同时考虑性能影响。
2025-07-09 08:37:29
86
原创 Flink CDC MySQL 表字段定义为 decimal 输出乱码问题优雅解决方式
Flink CDC MySQL decimal字段乱码问题解决方案 摘要:在使用Flink CDC 2.4.0捕获MySQL表数据时,decimal类型字段可能出现乱码问题。这是由于Debezium默认将decimal转为二进制格式,与Flink解析方式不兼容。解决方案是通过自定义JsonDebeziumDeserializationSchema,在配置中设置decimal.format为"numeric",确保数值格式正确解析。实现步骤包括添加必要依赖、配置自定义转换规则.
2025-06-15 11:59:29
398
原创 Flink CDC MySQL 时区相差 8 小时问题优雅解决方式
Flink CDC MySQL 时区相差8小时问题解析 摘要:当使用Flink CDC(1.15版本)连接MySQL时,由于Debezium默认采用UTC时区解析binlog日志,而MySQL服务器通常使用UTC+8时区,导致时间字段出现8小时差异。解决方案包括自定义时间转换器类或修改Debezium配置文件。实现时需创建MySqlDateTimeConverter类,重写convertFor方法。
2025-06-15 11:58:17
232
原创 Flink CDC 中 StartupOptions 模式详解
Flink CDC 的 StartupOptions 模式用于指定作业启动时从源数据读取数据的起始位置,不同的模式适用于不同的业务场景,可满足多样化的数据处理需求,主要有 Initial 模式、Earliest 模式、Latest 模式、SpecificOffset 模式和 Timestamp 模式。
2025-06-08 20:06:47
429
原创 Spring Boot + Flink + FlinkCDC 实现 MySQL 同步到 MySQL
本文介绍了使用Spring Boot 2.3.12、Flink 1.15.4和FlinkCDC 2.4.0实现MySQL到MySQL数据同步的技术方案。
2025-06-08 20:04:23
806
2
原创 Flink 1.13.2 日志配置优化:保留最近 7 天日志文件
Apache Flink 1.13.2 默认的日志配置存在局限性,无法满足生产环境中长时间保留日志的需求。默认配置仅基于文件大小滚动日志,且最多保留10个文件,缺乏时间维度的管理。为解决这一问题,可以通过修改log4j.properties文件,实现日志按天滚动并保留最近7天的日志文件。具体优化包括:使用TimeBasedTriggeringPolicy按天滚动日志,并通过DefaultRolloverStrategy设置日志保留策略。这一优化在确保日志可用性的同时,有效控制了存储成本,便于故障排查和历史数
2025-05-15 17:25:49
420
原创 生产级 Flink CDC 应用开发与部署:MySQL 到 Kafka 同步示例
本文介绍了如何将 Flink CDC 应用开发并部署为独立服务,实现 MySQL 到 Kafka 的数据同步。文章提供了完整的工程代码示例,包括工程结构、Maven 配置和核心代码实现。工程结构清晰,包含主类 CdcToKafkaJob.java、配置文件 AppConfig.java 和数据模型 User.java。Maven 配置中定义了 Flink、Flink CDC、Kafka 等依赖项,并通过 maven-shade-plugin 进行打包。核心代码展示了如何使用 Flink CDC 从 MySQ
2025-05-11 18:33:58
566
原创 Spring Boot 集成 Flink CDC 实现 MySQL 到 Kafka 实时同步
本项目基于 Spring Boot 集成 Flink CDC,实现 MySQL 数据库到 Kafka 的实时数据同步。通过 Flink CDC 捕获 MySQL 的 Binlog 日志,结合 Apache Flink 进行流式处理,并将数据实时传输至 Kafka。技术栈包括 Spring Boot 2.3.12、Flink 1.15.4、Flink CDC 2.4.0 和 Kafka 3.x。项目结构清晰,包含核心配置、作业逻辑及数据模型,并通过 Maven 管理依赖。配置文件支持 MySQL 连接参数定义
2025-05-11 18:32:55
416
1
原创 Apache Flink 与 Flink CDC:概念、联系、区别及版本演进解析
本文深入探讨了Apache Flink与Flink CDC的概念、联系与区别,并分析了它们的版本兼容性与演进。Flink 是一个强大的流批一体计算引擎,支持高吞吐、低延迟的数据处理,而 Flink CDC 是基于 Flink 的连接器插件,用于实时捕获数据库的变更数据。两者紧密关联,Flink 提供底层计算能力,Flink CDC 则专注于数据库的实时同步。文章还详细介绍了 Flink CDC 的核心特性、与 Flink 的版本兼容性,以及 Flink 1.14.6 前后的命名规则变更。最后,提供了如何根据
2025-05-11 18:32:10
604
原创 jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路
在使用Maven进行项目构建时,若通过pom.xml文件指定JDK版本后编译仍不生效,可以通过以下步骤在IntelliJ IDEA中进行手动配置:首先,在Settings -> Build, Execution, Deployment -> Java Compiler中选择对应的JDK版本;其次,在Settings -> Project Structure -> Project中设置项目使用的JDK;接着,在Settings -> Project Structure ->
2025-05-10 17:19:57
1401
原创 Docker Compose 部署 MeiliSearch 指南
本文详细介绍了如何在 CentOS7 系统下使用 Docker Compose 部署 MeiliSearch 全文搜索引擎。首先,确保已安装 Docker,并创建 MeiliSearch 的配置文件 docker-compose.yml,配置包括镜像、端口、环境变量和数据卷。接着,通过 docker-compose up -d 启动服务,并使用 docker-compose ps 验证服务状态。访问 MeiliSearch 可通过 http://<centos-ip>:7700,并需在防火墙和云
2025-05-09 17:50:23
251
原创 初步认识Model Context Protocol (MCP) Java SDK
在您的文件中添加以下依赖:<dependencyManagement> <dependencies> <dependency> <groupId>io.modelcontextprotocol.sdk</groupId> &
2025-04-16 18:50:47
487
原创 MyBatis-Plus 基于 Lambda 表达式实现班级成绩聚合分组查询
在日常开发中,MyBatis-Plus 提供了强大的聚合查询功能,可以方便地实现 COUNT、SUM、AVG、MIN、MAX 和 GroupBy 等统计操作。今天,我将分享如何使用 MyBatis-Plus 的 Lambda 表达式来实现班级成绩表的聚合分组查询,让代码更加简洁和优雅。
2025-04-16 15:30:55
375
原创 Flink CDC 出现错误码 1236 和 SQL 状态 HY000 的原因及解决方法
Flink CDC 在使用过程中可能会遇到错误码 1236 和 SQL 状态 HY000,主要原因包括 server-id 冲突、binlog 文件丢失或被清理、以及 GTID 模式下设置不一致。解决这些问题的方法包括确保每个 Flink CDC 任务使用唯一的 server-id、调整 MySQL 的 binlog 过期时间、检查并确保 GTID 设置一致、清理 Flink 的检查点和状态,以及升级 Flink CDC 或 Debezium 的版本。通过合理配置和调整,可以有效避免这些错误,确保 Flin
2025-04-16 15:01:56
380
原创 Spring AI Alibaba示例项目深度解析:dashscope-audio子模块详解
全双工通信:支持STT/TTS双向处理流水线混合式调用• 同步(call)• 流式(stream)• 异步(asyncCall + 轮询)生产级特性• @PreDestroy自动清理临时文件• ScheduledExecutorService实现任务状态跟踪• Commons IO进行高效文件操作。
2025-04-05 10:37:28
263
原创 Spring AI Alibaba示例项目深度解析:dashscope-chat子模块详解(经典解读版)
核心功能:✅ AI服务集成:基于Spring AI Alibaba框架,提供阿里云DashScope服务的快速接入能力✅ 双模式交互:支持同步阻塞调用与流式响应(SSE),满足不同场景需求✅ 灵活配置:通过实现模型参数动态管理,支持多模型切换技术矩阵:三、代码解析1. 启动类作用:初始化Spring上下文,加载配置文件和依赖。2. ChatClient控制器同步调用:通过方法实现阻塞调用,返回纯文本内容。流式调用:通过方法实现流式响应,适合大模型输出的打字机效果。3. Ch
2025-04-05 10:34:12
332
原创 Spring AI vs Spring AI Alibaba:Java开发者如何选择AI开发框架?
通过此模块,开发者可快速构建生产级AI服务,其代码结构已在实际项目中验证,支持日均百万级调用。建议结合阿里云ACM实现配置动态更新,进一步提升系统灵活性。:Spring Boot与阿里云DashScope服务的最小化集成模板。:基于内存缓存的对话历史管理,支持多会话隔离。:同步阻塞调用与流式响应(SSE)完整实现。
2025-04-05 10:32:04
916
原创 Spring AI Alibaba示例项目深度解析:helloworld子模块详解(经典解读版)
通过此模块,开发者可快速构建生产级AI服务,其代码结构已在实际项目中验证,支持日均百万级调用。建议结合阿里云ACM实现配置动态更新,进一步提升系统灵活性。:Spring Boot与阿里云DashScope服务的最小化集成模板。:基于内存缓存的对话历史管理,支持多会话隔离。:同步阻塞调用与流式响应(SSE)完整实现。
2025-04-05 10:30:55
221
原创 Spring AI Alibaba示例项目准备工作详解
由深度求索(DeepSeek)公司推出的大语言模型系列,包括DeepSeek-R1、DeepSeek-V3等。这些模型在数学、代码、自然语言推理等任务上表现优异,并且有基于知识蒸馏技术得到的增强型模型如DeepSeek-R1-Distill-Qwen-7B、DeepSeek-R1-Distill-Qwen-32B等。:这是由阿里云自主研发的大规模语言模型系列,包括了不同版本和优化版本,例如 Qwen2、Qwen2.5-Turbo 等,这些模型在文本生成、对话理解等方面具有出色的表现。
2025-04-05 10:29:35
298
原创 Spring Boot 2.6.15 + MyBatis-Plus 3.5.1 升级至 3.3.2 + 3.5.7 全流程指南
/</</</</</</</• JDK 17+ 强制要求(原为 JDK 1.8)• Jakarta EE 9+ 命名空间替代 Java EE(所有javax.*需改为jakarta.*
2025-04-03 16:13:25
1252
原创 基于Ollama+AnythingLLM+Deepseek 1.5b构建企业级知识库
基于Ollama+AnythingLLM+Deepseek 1.5b构建企业级知识库
2025-03-30 15:58:44
97
原创 SpringMVC 中的DispatcherServlet生命周期是否受Spring IOC 容器管理
的生命周期主要由 Servlet 容器管理,但在其初始化过程中会与 Spring IoC 容器进行交互,以加载和配置 Spring MVC 相关的组件和 Bean。是 Spring MVC 的入口点,负责协调 Spring MVC 的各个组件来处理 HTTP 请求。
2025-03-27 16:33:56
516
原创 MySQL 表分区实践案例:基于 ERP 订单系统的租户分区
在处理海量数据的 ERP 系统中,表分区是一种有效的数据管理策略。本文通过一个基于 ERP 订单系统的实践案例,详细讲解 MySQL 表分区的实现、维护及查看。
2025-03-21 11:17:26
549
计算机启动过程详解 计算机启动过程详解
2010-08-10
指令流水线练习题目 指令流水线练习题目
2010-03-07
window 内核编程与信息安全
2010-05-14
TreeView控件使用的例子
2010-03-15
domino8.5中如何启动DB2Access服务技术文档
2010-07-25
vbAPI Document Help and development
2009-12-05
虚拟机安装、创建与虚拟机接入局域网的方案
2010-09-05
基于Springboot 版本 2.3.2.RELEASE版本开发的Example
2024-01-08
jquery-autocomplete文档
2012-02-08
JAVA认证与授权 JAVA认证与授权
2011-08-15
sqlserver2005/sqlserver2008 jdbc驱动
2011-08-09
动态配置ODBC数据源代码
2011-06-28
微信应用开发教程JAVA版
2014-07-03
domino8帮助文档中文版
2010-08-14
icepdf-4.2.0.jar
2013-07-07
JavaGC专家指南.pdf
2020-02-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人