自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot开发者指南:从零构建腾讯云OCR服务(附完整源码)

腾讯云OCR服务集成开发指南 本文介绍了腾讯云OCR服务的Java集成方案,重点涵盖以下内容:1)腾讯云OCR在金融票据和证件识别方面的优势;2)项目配置流程,包括Maven依赖、YAML参数设置和配置类封装;3)核心实现方案,通过OcrClientConfig管理客户端连接池,TencentOcrService提供同步/异步识别功能,支持身份证和通用文字识别;4)控制器层实现RESTful接口;5)高级特性包括连接池优化、指数退避重试机制、图像预处理(灰度化转换)和防御性编程(文件校验)。该方案采用Spr

2025-07-26 18:00:32 1014

原创 Spring Boot集成RabbitMQ终极指南:从配置到高级消息处理

RabbitMQ是一个开源消息代理,实现了AMQP协议,用于异步通信、应用解耦和流量削峰。其核心组件包括生产者、消费者、Exchange(路由中枢)、Queue(消息缓冲区)和Binding(路由规则)。文章详细介绍了RabbitMQ的消息生命周期、高级特性(如持久化、ACK确认、死信队列等),并提供了Spring Boot集成方案,包括YAML配置、自定义配置类、交换机/队列声明工具类,以及完整的消息生产消费示例代码。通过注解@RabbitListener实现消息监听,支持手动ACK和异常重试机制,展示了

2025-07-26 11:04:25 1623

原创 RocketMQ集成SpringBoot与使用

本文主要介绍RocketMQ如何集成SpringBoot,以及RocketMQ的各项配置作用介绍,以及应用场景;

2025-03-27 14:15:14 1651

原创 RocketMQ以及Spring Cloud Stream的介绍

Spring Cloud Stream是一个构建消息驱动微服务的框架,解决了开发人员无感知使用消息中间件的问题。通过进一步封装消息中间件,Spring Cloud Stream实现了代码层面对消息中间件的无感知,甚至可以动态切换中间件(如RabbitMQ切换为RocketMQ或Kafka),使微服务开发更加解耦,服务可以更专注于自身业务流程。

2025-03-27 10:09:33 855

原创 数据库如何分库分表

一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或者更多。当然也可以分库,

2021-09-02 14:57:45 246

原创 MyBatis-Plus AR模式深度解析:告别冗余DAO层

MyBatis-Plus 的 AR(Active Record)模式是一种面向对象的数据库操作模式,通过实体类直接进行 CRUD 操作,简化了开发流程。

2019-07-11 17:12:22 1807 1

原创 MyBatis-Plus 条件构造器(Wrapper)使用指南

条件构造器(Wrapper)是 MyBatis-Plus 框架中用于动态构建 SQL 条件的核心工具类,通过链式编程方式实现复杂查询条件的组合。其主要作用包括:替代传统 XML 中的动态 SQL 标签提供类型安全的条件构建方式支持 Lambda 表达式语法实现复杂的 AND/OR 条件组合注意:MyBatis-Plus 3.x+ 版本已弃用

2019-07-11 17:04:47 12089 1

原创 FastExcel实现Excel文件读写以及模板填充(Java)

通过@Data@ExcelProperty("编号")@ExcelProperty("姓名")@ExcelProperty("年龄")@Override// 在创建单元格之前的操作(如果需要)@Override// 设置表头样式} else {@Override// 准备数据users.add(new User("张三", 25, "zhangsan@example.com"));

2019-07-08 09:58:00 7574 1

原创 使用 scp 在 Linux 服务器之间传输文件

(Secure Copy Protocol)是一个基于 SSH 的安全文件传输工具,用于在 Linux 服务器之间传输文件。通过上述方法,你可以安全地在 Linux 服务器之间传输文件。如果远程服务器的 SSH 服务不是默认的 22 端口,可以使用。如果使用了防火墙,确保防火墙允许 SSH 连接。如果传输的是目录,确保有读取和写入权限。检查防火墙设置,确保允许 SSH 连接。确保使用的用户有权限访问这些文件和目录。:指定 SSH 连接时使用的密钥文件。如果使用 SSH 密钥认证,可以使用。

2018-09-29 11:27:16 2025 1

原创 Linux服务器重启命令大全

在 Linux 系统中,有多个命令可以用来重启或关闭系统。

2018-09-29 10:39:06 14573

原创 Java 集合详解:ArrayList、LinkedList、HashMap、TreeMap、HashSet 等核心类对比分析

Java集合框架核心对比摘要:List系列中ArrayList基于动态数组,适合查询;LinkedList基于双向链表,适合频繁插入删除。Map系列HashMap无序高效,TreeMap有序支持排序,LinkedHashMap保持插入顺序。Set系列类似对应Map实现。线程安全集合中Vector性能差,推荐使用CopyOnWriteArrayList;ConcurrentHashMap优于Hashtable。扩容机制方面,ArrayList按1.5倍扩容,HashMap按2倍扩容并考虑负载因子。这些对比涵盖

2026-02-14 13:59:28 630

原创 Java 集合探秘:ArrayList 与 HashMap 扩容策略的异同点详解

ArrayList和HashMap扩容机制对比:ArrayList采用被动扩容,数组满时扩容1.5倍,保持元素索引不变;HashMap采用阈值驱动扩容,当元素数量达到容量×负载因子(默认0.75)时扩容2倍,需重新计算元素位置。ArrayList扩容开销主要是数组拷贝,而HashMap需重新哈希,开销更大。设计目标上,ArrayList侧重动态空间管理,HashMap侧重维持哈希性能。主要区别在于扩容触发条件(固定容量vs负载因子)、扩容比例(1.5倍vs2倍)及元素位置变化(保持vs重新计算)。

2026-02-14 13:41:50 378

原创 Spring Boot 整合 Kafka:生产环境标准配置与最佳实践

本文介绍了在SpringBoot 3.x项目中集成Apache Kafka的完整方案。主要内容包括:1) 环境准备要求Java 17+和Kafka 3.6.x;2) 项目搭建需添加spring-kafka依赖;3) 详细说明YAML配置方式,包括生产者和消费者的关键参数;4) 核心实现自定义序列化器/反序列化器处理复杂对象;5) 提供生产者、消费者和配置类的完整代码示例;6) 包含测试用例和最佳实践建议,如批量发送优化、死信队列配置等。文章特别强调了YAML配置的优势、自定义序列化器的必要性以及生产环境中的

2026-02-12 14:36:24 622

原创 下单扣库存总对不上?RocketMQ 事务消息 + Spring Boot 保姆级教程,彻底解决数据一致性问题

从零实现跨服务最终一致性,含完整代码示例电商订单与库存一致性的标准解法参数陷阱、幂等回查、常见坑——一篇讲透别再只用普通消息了,事务消息才是微服务保底方案

2026-02-12 10:29:11 1417

原创 高效异步处理:基于RocketMQ的消费系统架构全解析

高效异步处理:基于RocketMQ的消费系统架构全解析

2026-02-11 11:07:02 356

原创 Redisson分布式锁的10大陷阱与避坑指南

Redisson分布式锁使用指南摘要:本文介绍了Redisson分布式锁的基础用法与高级特性,包括基本锁操作、公平锁、读写锁、联锁和红锁等实现方式。针对锁失效场景提供了解决方案,如合理设置过期时间、确保锁释放、处理锁重入等。文章还总结了最佳实践,包括锁命名规范、粒度控制、超时重试策略和性能优化建议。最后提供了常见问题排查清单,强调合理使用分布式锁对保证数据一致性和系统高可用性的重要性。通过遵循这些实践,可以有效避免分布式环境下的并发问题。

2026-02-10 14:07:52 379

原创 高效异步处理:基于RocketMQ的延迟消费系统架构全解析

基于RocketMQ的延迟消费系统架构全解析

2026-02-10 10:40:07 415

原创 Spring Boot + FastExcel:打造完美的导入校验功能

灵活可扩展的FastExcel导入字段校验系统,通过注解驱动方式实现高效数据校验。系统采用分层架构设计,包含校验注解、字符类型枚举、校验工具类和监听器等核心组件。主要特点包括:支持多种校验类型(字符、数字、正则等)、精确控制允许/禁止字符(如Emoji)、友好的错误反馈机制。实现上通过正则表达式预编译、校验短路等优化性能,并提供批量处理能力。实际应用表明,该系统能有效提升Excel数据导入的准确性和开发效率,适用于各类企业级应用场景。

2026-02-04 16:41:59 675

原创 IntelliJ IDEA快捷键大全 + 动图演示,建议收藏!

IntelliJ IDEA快捷键大全(150字摘要) 本文整理了IntelliJ IDEA最实用的快捷键分类: 1️⃣ 高频必备:代码补全(Ctrl+Space)、全局搜索(双击Shift)、快速修复(Alt+Enter)等7个核心操作 2️⃣ 代码编辑:复制/移动行、多光标操作、智能注释等编辑技巧 3️⃣ 导航跳转:定义跳转(Ctrl+B)、回溯位置(Ctrl+Alt+←)、错误定位(F2) 4️⃣ 重构调试:重命名(Shift+F6)、提取方法(Ctrl+Alt+M)、断点调试(F8/F7) 5️⃣ 其

2026-01-28 15:34:14 994

原创 java动态渲染列导出以及分页列表

【代码】java动态渲染列导出以及分页列表。

2026-01-28 10:47:53 196

原创 高性能Java并发编程:如何优雅地使用CompletableFuture进行异步编排

【代码】高性能Java并发编程:如何优雅地使用CompletableFuture进行异步编排。

2026-01-08 15:37:06 228

原创 分布式事务实战:RocketMQ事务消息的完整解决方案

服务解耦、流量削峰、数据同步的架构方案;订单创建、支付、发货的全流程消息处理

2025-12-30 11:16:22 426

原创 扔掉 Assert!这款国产脚手架的 BizException 让代码瘦成一道闪电

【代码】扔掉 Assert!这款国产脚手架的 BizException 让代码瘦成一道闪电。

2025-12-22 10:46:01 132

原创 SQL 也能飞:MySQL 8.0 窗口函数让排名、累计、环比一步到位

窗口函数是SQL中强大的分析工具,它能在保留原表所有行的同时,为每行附加计算结果。核心语法为"函数OVER(分区排序帧)",包含排名(ROW_NUMBER/RANK)、偏移(LAG/LEAD)、聚合(SUM/AVG)等函数类型。典型应用包括分组排名、累计求和、环比增长率和移动平均计算。相比传统聚合,窗口函数无需子查询即可实现复杂分析,执行效率更高。使用时建议为PARTITION BY和ORDER BY列创建联合索引,大数据量时可调优排序缓冲区。掌握"先分区、再排序、后帧范围&q

2025-12-22 10:21:33 493

原创 Spring Boot 使用FastExcel实现多级表头动态数据填充导出

本文介绍了使用FastExcel库实现动态表头Excel导出的方法。主要包括:1)通过Maven引入FastExcel依赖;2)定义动态表头实体类,使用注解配置表头样式、列宽等属性;3)实现自定义表头处理器(CellWriteHandler),动态替换表头中的占位符变量;4)提供导出工具类,支持按指标类型生成包含年度和月度数据的多Sheet Excel文件。该方法通过注解和处理器机制,实现了灵活的表头定制和动态数据填充功能。

2025-12-19 17:46:17 367 2

原创 Spring Boot 使用FastExcel实现多文件打包 ZIP导出

该代码实现了一个年度目标数据导出功能,主要包含以下功能点:1) 使用Maven依赖引入FastExcel工具;2) 通过ZipOutputStream将数据打包成ZIP文件下载;3) 包含两个主要导出方法:generateIndexStaExcelFile用于生成指标年度汇总Excel文件,generateSingleIndexStaExcelFile生成按指标分类的年度/月度目标汇总文件;4) 数据处理包括计算完成率、组织门店数据等;5) 使用EasyExcel进行Excel写入操作,并支持自定义表头。代

2025-12-12 14:10:10 256 3

原创 实战演练:如何在Spring Boot项目中优雅地使用参数校验

本文总结了Java Bean Validation校验注解的使用场景,分为五大类:1)空值校验(@NotNull/@NotEmpty/@NotBlank);2)长度/数值校验(@Size/@Min/@Max等);3)格式校验(@Email/@Pattern);4)专用校验(@AssertTrue/@Past等);5)Hibernate扩展(@Range/@UniqueElements)。提供了SpringBoot集成示例,展示了如何通过@Validated和@Valid注解实现自动参数校验,包括常见字段如用

2025-12-12 11:29:07 367

原创 深度剖析@RocketMQMessageListener:参数详解与最佳实践

摘要:@RocketMQMessageListener是SpringBoot集成RocketMQ的核心注解,用于定义消息消费者。主要参数包括消费者组、主题、消费模式等,支持TAG和SQL92两种消息过滤方式。该注解支持多种复杂场景:1)顺序消息消费(单线程处理);2)广播模式配置同步;3)事务消息处理;4)批量消息消费;5)延时消息与重试策略;6)多环境隔离消费;7)自定义消息选择器。这些功能覆盖了顺序消费、事务处理、批量操作等实际业务需求,展现了RocketMQ在消息中间件领域的强大灵活性。

2025-11-05 18:04:27 528

原创 Nacos集群部署实战:3节点+Nginx+MySQL高可用方案

我们将采用3个Nacos节点 + 1个MySQL主从集群的架构,这是生产环境的标准配置。目录部署架构概述环境准备服务器要求第一步:数据库准备1.1 创建数据库和用户1.2 导入初始化SQL第二步:部署Nacos集群2.1 在所有节点安装Nacos2.2 配置集群节点列表2.3 配置数据库连接2.4 配置JVM参数(可选但推荐)第三步:配置负载均衡器3.1 安装和配置Nginx3.2 启动Nginx第四步:启动Nacos集群4.1 启动所有Nacos节点4.2 检查启动状态第五步:验证集群状态。

2025-11-04 14:48:29 1151

原创 一种基于注解与AOP的Spring Boot接口限流防刷方案

本文介绍了基于Spring Boot实现接口防刷功能的完整方案。通过自定义注解@AccessLimit实现灵活配置,可设置时间范围、最大访问次数、IP检查及用户身份验证等参数。使用AOP切面结合Redis进行请求计数,通过构建包含方法、IP和用户信息的复合Key来区分不同请求来源。当请求超过限制时抛出异常,由全局异常处理器统一返回提示信息。该方案支持不同粒度的访问控制,包括纯IP限制、用户身份限制或两者结合,可灵活应用于各类接口防护场景。

2025-09-05 16:34:04 288

原创 Spring 事件驱动编程初探:用 @EventListener 轻松处理业务通知

Spring事件机制是观察者模式的实现,包含事件、发布者和监听器三个核心组件。通过用户注册场景演示:1)定义继承ApplicationEvent的事件类;2)使用ApplicationContext发布事件;3)通过@EventListener注解实现监听器;4)创建事件处理接口及实现类完成业务逻辑。该机制实现了业务解耦,发布者发布事件后,由监听器自动处理相关操作,如发送邮件和短信等。

2025-08-29 16:12:02 212

原创 Spring Boot整合MyBatis Plus实现多维度数据权限控制

本文介绍了一个基于MyBatisPlus和Redis的高效数据权限管理系统。系统通过@DataScope注解配置数据权限过滤条件,支持用户、门店、部门等多种过滤类型。核心组件包括:1)数据权限注解定义;2)Redis缓存权限数据;3)MyBatisPlus拦截器自动修改SQL;4)权限处理服务。系统特点包括高性能(Redis缓存)、灵活性(多种过滤类型)、安全性(防SQL注入)和易用性(注解配置)。使用说明包括添加注解、权限初始化等步骤,并提出了权限变更通知、多级缓存等扩展建议,适用于企业级应用的多租户数据

2025-08-29 11:19:01 923

原创 Spring Boot中MyBatis Provider注解实现动态SQL

本文介绍了SpringBoot整合MyBatis实现动态SQL的完整方案。主要包含:1)Maven依赖配置,集成SpringBoot、MyBatis、MySQL和Lombok;2)YAML配置文件,设置数据源、连接池和MyBatis参数;3)采用Provider模式实现动态SQL,通过SQL类构建类型安全的查询语句;4)完整的分层架构实现,包括实体类、Mapper接口、Service层和Controller层;5)支持条件查询、分页、增删改等常见操作。该方案相比XML配置更灵活,能充分利用Java功能构建复

2025-08-29 10:18:29 374

原创 高效稳定:Spring Boot集成腾讯云OSS实现大文件分片上传与全路径获取

本文介绍了一个基于Spring Boot集成的腾讯云OSS文件上传服务实现方案。项目采用标准Maven结构,包含配置类、工具类和控制器等核心组件。通过TencentCOSProperties加载OSS配置,使用COSClient实现文件上传功能,支持普通上传和自动分片大文件上传。控制器提供了文件上传、获取URL等REST接口,并包含全局异常处理。方案还提供了安全优化建议(文件类型校验)、存储优化(按日期分目录)和性能调优参数(线程池配置)。该实现封装了腾讯云COS SDK的主要功能,可作为企业级文件存储服务

2025-08-05 11:06:59 565

原创 java实现表格动态列数据封装

文章摘要:本文介绍了一个基于MyBatis的教学培训记录查询系统实现方案。系统通过SQL查询获取门店、用户、岗位及技能数据,使用自定义的JsonToListTypeHandler处理JSON格式的技能列表数据转换。实现功能包括分页查询(summaryPageList方法)和动态表头处理(processSkillPointData方法),后者通过排序和映射处理确保数据显示一致性。系统支持按门店、关键词、日期范围等条件筛选,并处理了已删除技能点的特殊显示需求。该方案采用Java集合操作和MyBatis框架,实现

2025-08-05 10:50:32 255

原创 枚举策略模式实战:优雅消除支付场景的if-else

本文提出使用枚举实现策略模式来优化支付场景中的条件逻辑。通过定义包含抽象方法的策略枚举(如ALIPAY、WECHAT_PAY等),每个枚举常量实现具体的支付逻辑。上下文处理器通过枚举的valueOf()方法直接获取策略实例,彻底消除if-else语句。该方案具有强类型约束、符合开闭原则(新增策略只需扩展枚举)、集中管理等优势,同时能通过异常处理非法支付类型。适用于策略类型固定且行为简单的场景,相比传统工厂模式更简洁,但对于复杂策略建议仍采用接口+实现类的方式。

2025-07-28 11:38:31 332

原创 告别复杂配置!Spring Boot优雅集成百度OCR的终极方案

本文介绍了SpringBoot集成百度OCR文字识别服务的完整实现方案。主要内容包括:1)注册百度AI平台获取API密钥;2)项目配置添加SpringBoot Web、HttpClient等依赖;3)使用@ConfigurationProperties封装OCR配置参数;4)实现获取AccessToken工具类;5)构建OCR服务层处理图片Base64编码和API请求;6)创建REST接口接收图片文件。方案采用分层架构设计,包含配置管理、服务封装和控制器层,并提供了性能优化建议如Token缓存和连接池管理。

2025-07-26 17:04:57 685

原创 Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活

这篇文章介绍了如何实现一个基于Spring Boot的SSE(Server-Sent Events)实时消息推送系统。系统包含服务端和客户端实现,主要功能包括:1) 服务端通过EventService管理SSE连接,实现消息广播和心跳机制;2) EventController提供订阅和广播接口;3) 客户端通过JavaScript的EventSource API接收实时消息;4) 包含完善的连接管理,如心跳检测(每25秒)、自动重连、优雅关闭等机制。系统采用线程安全的ConcurrentMap存储连接,支持

2025-07-26 15:09:51 898

原创 零侵入加解密方案:Spring Boot + Jasypt + AOP实现敏感数据自动保护

摘要:本文介绍了一个基于Spring Boot的敏感数据自动加解密方案,通过Jasypt和AOP实现。方案包含:1) 添加Jasypt和AOP依赖;2) 配置加密参数;3) 实现加解密工具类;4) 定义@SensitiveField注解标记敏感字段;5) 使用AOP切面自动处理加解密,支持递归处理嵌套对象;6) 通过@Encrypt/@Decrypt注解控制方法级加解密;7) 在实体类中标记敏感字段,Service层通过注解自动触发加解密。该方案实现了敏感数据的透明化处理,业务代码无需关注加解密细节,同时支

2025-07-23 15:26:34 387

原创 Spring Boot 整合 Redis 实现发布/订阅(含ACK机制 - 事件驱动方案)

纯事件驱动:使用Redis Stream监听器替代轮询,实时处理消息完整ACK机制:确保消息可靠处理,支持失败重试异步处理:避免阻塞监听线程,提高吞吐量错误隔离:死信队列隔离不可处理的消息生产就绪:支持多实例部署,消费者组负载均衡该方案适用于需要高可靠性的消息处理场景,如订单系统、支付处理、事件溯源等。通过Redis Stream的特性,在保证性能的同时提供了比传统PUB/SUB更可靠的消息传递机制。

2025-07-22 14:39:48 1250

空空如也

空空如也

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

TA关注的人

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