自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMQ集成SpringBoot与使用

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

2025-03-27 14:15:14 1407

原创 RocketMQ以及Spring Cloud Stream的介绍

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

2025-03-27 10:09:33 706

原创 数据库如何分库分表

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

2021-09-02 14:57:45 218

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2018-09-29 10:39:06 13781

原创 零侵入加解密方案: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 185

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

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

2025-07-22 14:39:48 834

原创 Spring Boot+Redis Zset:三步构建高可靠延迟队列系统

本文介绍了一个基于Redis ZSet实现的延迟队列系统设计方案。该系统采用生产者-消费者模式,通过Redis有序集合存储任务,使用定时任务扫描到期任务并由线程池异步处理。方案包含完整的实现步骤:1) 添加Spring Boot和Redis依赖;2) 配置Redis连接;3) 定义任务模型;4) 配置Redis序列化;5) 创建处理线程池;6) 实现核心延迟队列服务;7) 提供测试接口。系统具备高性能、低延迟、可扩展等优势,支持订单超时、邮件提醒等场景,同时提供了幂等性处理、死信队列等保障机制。文中还给出了

2025-07-22 13:55:39 549

原创 Spring Boot + Screw-Core + HikariCP:三分钟自动生成数据库设计文档(支持多种数据库)

本文介绍了使用Screw工具生成数据库设计文档的方法。首先需要添加screw-core和HikariCP依赖,然后配置数据源连接信息。通过EngineConfig设置输出目录、文件类型(HTML)和模板类型(freemarker)。ProcessConfig可指定生成规则,包括按表前缀/后缀筛选、忽略特定表等。最后通过DocumentationExecute执行生成过程,将自动创建包含表结构信息的文档。这种方法能快速生成规范的数据库文档,支持自定义输出路径和筛选条件。

2025-07-22 10:37:07 177

原创 SpringBoot集成PDFBox实现PDF导出(表格导出、分页页码、电子签章与数字签名)

本文详细介绍了SpringBoot集成PDFBox实现表格导出和电子签章的完整方案。通过工具类封装,提供了单页/分页表格生成、图片签章、数字签名等功能。方案包含Maven依赖配置、核心工具类实现(支持中文、自动分页、页码计算)、调用示例以及性能优化建议。关键特性包括:1.表格自动分页与页码管理;2.两种签章方式(视觉图片+法律效力数字签名);3.中文字体支持方案;4.大数据量处理优化(流式/分块处理)。实践表明该方案可稳定处理10万+行数据,内存占用控制在500MB内,适用于各类业务报表和法律文档场景。

2025-07-22 10:21:58 568

原创 彻底告别@StreamListener:Spring Cloud Stream函数式+RocketMQ迁移实践

到函数式编程模型的迁移,并集成了 RocketMQ 的全部核心功能。concurrency: 4 # 并发消费者数量。:支持原生特性(顺序消费/延迟消息/事务消息)通过以上配置和代码示例,您已完成从传统。启动 RocketMQ 控制台。:Jackson自动类型转换。# 显式配置Jackson。:绑定关系在YAML中管理。(创建订单Topic)(支付订单Topic)# 增加生产者重试配置。# 增加消费者并发度。

2025-07-21 11:17:46 692

原创 企业级异常处理方案:Spring Boot自定义异常全局拦截实战

本文介绍了Java中异常处理机制的实现方案。首先定义了三种自定义异常类(ApproveException、HandleException、QueryException),然后创建了全局异常处理器ResultException,通过@RestControllerAdvice注解和多个@ExceptionHandler方法统一处理各类异常,包括登录异常、数据异常、工作流异常等。最后设计了ActionResult统一响应体,提供success()和fail()等方法构建标准化响应。该方案实现了异常处理的统一管理,

2025-07-18 17:17:41 222

原创 Java使用FastExcel实现Excel文件导入

本文介绍了使用FastExcel库处理Excel文件的方法。首先配置Maven依赖,包括FastExcel核心库和Apache POI。然后定义映射实体类SetMealDetailsVo,使用注解配置Excel列名、宽度、样式等属性。接着实现自定义监听器CustomSheetListener,在读取数据时校验表头是否正确。最后在业务代码中调用EasyExcel.read()方法读取Excel文件内容,将数据存储到集合中。整个过程包含依赖配置、实体映射、表头校验和业务调用四个关键步骤。

2025-07-17 18:22:35 226

原创 Java使用FastExcel实现模板写入导出(多级表头)

本文介绍了使用FastExcel和Apache POI进行Excel导出的配置与实现方法。首先在Maven配置中添加FastExcel核心库和POI依赖,然后定义导出实体类DishAppManagementOriginalVo,通过注解配置表头样式、列宽等属性。业务层实现中,设置响应头文件类型和名称,利用FastExcel结合模板文件进行数据填充,其中通过EasyExcel获取sheet页并写入查询结果,最终完成Excel导出。该方法实现了基于模板的Excel数据导出功能,支持自定义样式和格式化输出。

2025-07-17 17:50:03 203

原创 50倍性能飞跃!Spring Boot+Doris Stream Load海量数据实时更新方案

本文介绍了一个基于Spring Boot的Doris数据库流式加载方案。系统采用分层架构设计,包含配置管理、核心加载、实体映射和业务服务等模块。通过@DorisField注解实现自动化字段映射,支持字段重命名、排序和忽略等特性。核心类DorisStreamLoader提供并行处理、分批加载、GZIP压缩和指数退避重试机制,显著提升数据加载性能。方案采用LinkedHashMap保持字段顺序,内置智能缓存优化反射性能,并通过详细的响应监控确保数据可靠性。性能测试表明,相比传统JDBC方式可提升20-50倍吞吐

2025-07-17 15:00:16 1024

原创 腾讯云短信实战:Spring Boot接入YML配置与签名/模板/发送/统计/状态工具类详解

注意:以上代码中的部分API调用(如号码包操作)做了简化处理,实际使用时请参考。:SecretId/SecretKey在腾讯云控制台获取。:腾讯云默认限流300次/秒,需注意控制发送频率。:将International参数设为1。:模板中的变量使用{1}、{2}格式。:实际使用需添加更完善的异常处理。:需提前在控制台申请并通过审核。

2025-07-15 12:11:20 830

原创 腾讯云短信实战:Spring Boot接入YML配置与签名/模板/发送/统计/状态/号码包工具类详解

本文介绍了SpringBoot集成腾讯云短信服务的完整实现方案。主要内容包括:1) 添加腾讯云Java SDK依赖;2) application.yml配置短信参数(SecretId、模板ID等);3) 配置读取类TencentSmsConfig;4) 实现6个核心工具类:SmsSignUtils(签名管理)、SmsTemplateUtils(模板操作)、SmsSendUtils(单发/群发)、SmsStatisticsUtils(数据统计)、SmsStatusUtils(状态拉取)和SmsPhoneUti

2025-07-15 12:07:03 350

原创 Spring Boot + Vue2 实现腾讯云 COS 文件上传:从零搭建分片上传系统

普通上传大文件分片上传(支持并发、断点续传)安全性增强(密钥不暴露)跨域规则配置(CORS)可根据实际业务需求进一步扩展,如添加上传进度持久化、上传失败重试机制等。

2025-07-14 17:08:32 798

原创 Spring Boot 实现图片防盗链:Referer 校验与 Token 签名校验完整指南

本文介绍了两种SpringBoot实现图片防盗链的方案:1)Referer校验:通过拦截器检查请求头中的Referer字段,只允许白名单域名访问,实现简单但安全性较低;2)Token签名校验:采用动态生成的签名token(含时效性验证),安全性更高但实现较复杂。文章对比了两种方案的优缺点,并提供了完整代码示例,包括拦截器实现、签名生成工具类和安全URL生成方法。建议对安全性要求高的场景使用Token方案,或结合两种方案实现双重验证,同时要注意HTTPS传输、定期更换密钥等安全实践。

2025-07-14 15:41:49 220

原创 从数据库到播放器:Java视频续播功能完整实现解析

Java实现视频续播功能的技术方案:通过SpringBoot后端存储播放进度(用户ID+视频ID+时间位置),前端定期保存当前播放时间并恢复播放。核心实现包括:1)数据库存储播放记录;2)后端提供进度保存/查询接口;3)前端定时提交进度并在播放时定位。优化建议包含节流控制、本地缓存和Redis应用,支持多端同步播放进度,有效提升用户体验。方案涉及实体类设计、Repository接口、Service业务层和Controller控制层实现。

2025-07-14 14:26:02 415

原创 前后端协同作战:Java实现Token无感刷新全流程

Java应用实现无感Token刷新方案:采用双Token机制(短期AccessToken+长期RefreshToken),当AccessToken过期时自动用RefreshToken获取新Token并重试请求。技术实现包括:1)JWT工具类生成/验证Token;2)拦截器处理401错误并刷新Token;3)前端axios拦截器自动重试请求。注意需安全存储Token、处理并发刷新、定期轮换RefreshToken,失效时跳转登录页。该方案确保用户无感知续期,提升体验安全性。

2025-07-14 10:57:08 281

原创 Java加密全家桶:哈希、对称、非对称、HMAC一次讲透

本文介绍了四种常用加密算法的Java实现工具类:1️⃣ 哈希工具HashUtils:支持MD5/SHA系列算法,用于数据完整性校验;2️⃣ AESUtils:实现CBC模式的对称加密,适合大数据量传输;3️⃣ RSAUtils:提供2048位密钥的非对称加密和数字签名功能;4️⃣ EccUtils:基于椭圆曲线实现更高效的密钥交换和签名验证。每个工具类均包含密钥生成、加解密核心方法,并展示实际调用示例,涵盖从基础哈希到高级非对称加密的完整解决方案。

2025-07-14 09:37:53 890

原创 告别数据不一致!Spring Boot+Canal+RocketMQ实现精准的MySQL变更监听

Canal 客户端:负责监听 MySQL binlog 变更RocketMQ 生产者:将 binlog 事件发送到消息队列RocketMQ 消费者:异步处理变更事件完整配置:包含 MySQL、Canal Server 和 RocketMQ 的配置解耦:数据处理与数据捕获分离可靠性:消息持久化保证不丢失扩展性:消费者可水平扩展容错性:重试机制和死信队列顺序性:相同表的数据变更保持顺序生产环境部署时,请根据实际流量调整:Canal 的batch-size参数RocketMQ 的 Topic 分区数。

2025-07-07 17:58:26 1253

原创 MySQL与Redis数据一致性终极指南:从理论到落地实践

摘要:本文探讨Java中MySQL与Redis数据一致性的解决方案,重点分析了Cache Aside、Write Through等常见方案的优缺点。推荐采用Cache Aside+延迟双删+监控补偿的组合方案,通过同步删除、异步重试和定时任务等多重机制,将不一致窗口控制在毫秒级。方案包含异常处理流程,设计了补偿表和指数退避重试策略,并提供了SpringBoot实现示例,在保证系统性能的同时实现高可靠性,适用于多数分布式场景。

2025-07-04 11:00:42 1050

原创 实时追踪MySQL慢查询:深入解读performance_schema.events_statements_current

摘要:查看MySQL当前执行查询可使用performance_schema.events_statements_current表,该表记录各线程最新执行的SQL语句(包括运行中或刚结束的)。关键字段含线程ID、SQL文本、执行耗时、扫描行数等,用于诊断性能问题。典型应用包括定位长耗时查询、分析慢查询和追踪未使用索引的语句。需注意该表仅记录最后执行的语句,且需提前启用相关配置。用户需要SELECT和performance_schema访问权限。生产环境建议配合sys.session视图使用,可获得更易读的信息

2025-07-03 17:50:11 439

原创 深分页末日救星:MySQL延迟关联原理与实战手册

MySQL深分页优化方案解析 深分页(LIMIT 100000,10)存在严重性能问题,本质是扫描大量数据却只返回少量记录。核心优化方案: 延迟关联法(最优解) 原理:先查主键再回表,减少回表量 示例:通过子查询先获取ID,再关联原表 性能:1.2s→0.05s(百万数据) 游标分页 原理:记录上页末ID作为下页起点 特点:恒定10行扫描,但只能连续访问 范围分页 适用:时间排序场景 关键:在时间字段建索引 业务优化 禁止跳页/数据归档/搜索引擎分流 最佳实践: 优先延迟关联+覆盖索引 次选游标分页

2025-07-03 16:42:23 697

原创 为什么 MySQL 索引必用 B+ 树?深度解析三大设计杀招!

MySQL选择B+树而非B树作为索引结构,主要基于三个核心优势:1.更低树高使千万级数据查询仅需2-3次I/O,比B树减少30%-50%的磁盘访问;2.叶子节点双向链表结构使范围查询效率提升80%,全表扫描减少40%耗时;3.纯索引化的非叶节点提升缓存利用率,且数据变更仅影响叶子节点,维护成本更低。实际测试显示B+树在范围查询和全表扫描等高频操作中显著优于B树,完美适配数据库的磁盘存储特性和查询模式。

2025-07-03 16:10:34 747

原创 MySql 二级索引下推(ICP)深度解析

索引下推(ICP)是MySQL5.6引入的重要优化技术,通过将WHERE条件下推到存储引擎层执行,在索引扫描时提前过滤数据,减少回表操作。ICP适用于二级索引查询,能显著提升复合索引非首列、范围查询后等值过滤等场景的性能。通过EXPLAIN查看"Using index condition"可确认ICP生效。实测表明,ICP能减少70%以上的回表操作,与覆盖索引协同使用效果更佳。该技术降低了磁盘I/O和服务器负担,是处理大数据量查询的高效解决方案。

2025-07-03 15:03:58 895

原创 庖丁解牛:MySQL回表查询原理深度解析与性能影响

MySQL中的回表查询是指在使用二级索引查找数据时,因索引未包含查询所需全部列,需要根据主键值再次访问聚簇索引获取完整行数据的操作。该机制由二级索引仅存储索引列和主键值的特性决定,会导致额外磁盘I/O和性能损耗。典型场景包括:查询条件使用二级索引但返回列超出索引范围。优化核心在于创建覆盖索引(包含所有查询列),减少SELECT*查询,以及利用索引下推技术。理解回表机制对索引设计和SQL优化至关重要,通过EXPLAIN分析可识别是否发生回表。

2025-07-03 14:28:21 536

原创 @ConfigurationProperties与@Value对比

摘要: @Value适用于注入零散的简单配置(如单个数值、字符串),采用${key}格式直接绑定,不支持松散绑定。@ConfigurationProperties更适合结构化配置(如嵌套对象、集合),通过prefix批量绑定属性,支持松散绑定(如my-prop映射到myProp)和复杂类型,提供更好的组织性和类型安全。选择建议:少量独立配置用@Value;关联性强、结构复杂的配置优先选@ConfigurationProperties。

2025-07-03 11:59:35 186

原创 @Transactional注解参数详解及案例

摘要:本文解析了Spring事务注解@Transactional的核心参数配置,包括传播行为(REQUIRED/REQUIRES_NEW/NESTED)、隔离级别(READ_COMMITTED/REPEATABLE_READ)、超时设置、只读模式及异常回滚控制(rollbackFor/noRollbackFor)。通过银行转账服务的组合参数配置案例,展示了如何实现独立事务、精确控制回滚条件的实践方案。文章还给出最佳实践建议:1) 只读查询启用readOnly优化性能;2) 嵌套事务场景使用NESTED;3)

2025-07-03 11:46:32 536

原创 Seata Saga模式实战:Java微服务中的分布式事务管理

摘要:Saga模式是分布式系统中管理跨服务事务的柔性解决方案,将长事务拆分为多个本地事务并通过补偿机制实现最终一致性。Java实现方式包括手动编写协调器(包含事务序列和逆序补偿逻辑)或使用框架(如Axon或SpringCloudSaga)以事件驱动方式管理事务。该模式分为协调式(集中管理)和协同式(事件驱动)两种策略,适用于电商、金融等长流程场景,但需处理补偿逻辑复杂性和幂等性问题。尽管不适用于强一致性要求,Saga仍是微服务架构中实现分布式事务的有效方案。

2025-07-03 11:03:25 410

原创 分布式事务中的 XID 一致性保障:Java 微服务调用链路设计全解析

摘要:本文介绍了Java微服务架构中确保分布式事务ID(XID)正确传递的方法,主要基于Seata和SpringCloud的实践。关键实现包括:1)使用Feign拦截器在请求头中传递XID;2)下游服务解析并绑定XID;3)网关层拦截器透传XID;4)异步调用时显式传递XID到线程/消息队列;5)通过日志和Seata控制台验证XID传递。同时提供了常见问题解决方案,确保跨服务调用的事务一致性。这些方法共同构成了完整的XID传播机制。

2025-07-03 09:56:29 756

原创 构建健壮的分布式系统:Seata各模式特性解析与应用场景对比

本文详细介绍了Seata分布式事务框架在Java中的四种主要模式(AT、TCC、Saga、XA)的使用方法。首先从环境准备入手,包括Seata Server安装、数据库配置和Maven依赖设置;然后分别阐述每种模式的适用场景、具体实现步骤和注意事项,均配有代码示例和配置文件说明;最后提供了模式对比与选型建议,帮助开发者根据业务需求(如事务复杂度、性能要求等)选择合适方案。文章还列出了常见问题解决方案,为分布式事务实践提供了全面指导。

2025-07-03 09:41:46 1511

原创 MySQL复杂SQL性能优化实战:多表联查与子查询的高效方法

摘要:SQL多表联查(JOIN)是数据库查询的核心技术,主要包括五种连接类型:INNER JOIN返回匹配行,LEFT/RIGHT JOIN保留左/右表全部数据,FULL JOIN保留两侧数据(MySQL需用UNION实现),CROSS JOIN产生笛卡尔积。多表连接可连续使用JOIN子句,自连接用于处理层次关系。子查询分为标量(单值)、列(单列多行)和行(单行多列)三种类型,可嵌套在SELECT、FROM、WHERE等子句中,常用IN、ANY等运算符处理。这些技术能有效实现复杂数据关联查询需求。

2025-06-30 14:33:10 727

原创 分布式ID生成SnowflakeId雪花算法和百度UidGenerator工具类

本文介绍了两种分布式ID生成算法实现:SnowflakeId雪花算法和百度UidGenerator。SnowflakeId采用64位结构,包含时间戳(41位)、数据中心ID(5位)、机器ID(5位)和序列号(12位),支持单机每秒生成4096000个ID。百度UidGenerator简化了结构,使用时间戳(42位)、工作节点ID(10位)和序列号(12位),允许5ms内的时钟回拨。两种算法都通过同步方法保证线程安全,在时间回拨时抛出异常或等待,最终通过位运算组合各部分生成唯一ID。测试表明两种方案都具有高性

2025-06-27 13:57:14 336

原创 深入解析@Async注解:Spring异步编程的高效实践

Spring框架的@Async注解用于实现方法异步执行。使用时需在主类添加@EnableAsync,并在public非静态方法上添加@Async,返回值支持void或Future。可通过@Bean自定义线程池配置(核心/最大线程数、队列容量等),并在@Async中指定线程池名称。注意:方法需为public,不能是static,同一类中不能直接调用异步方法,默认不参与事务管理,异常需通过AsyncUncaughtExceptionHandler处理。

2025-06-26 16:49:01 774

空空如也

空空如也

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

TA关注的人

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