自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 G1 垃圾收集器参数设置、优化建议与适用场景

截图给出的是一种**“高分配速率、大堆场景下优先关注 GC 暂停,并用 G1 调节暂停目标”**的思路。这个方向可以用于理解 G1 的价值,但具体的堆大小、单次回收量、暂停时间以及是否适合 Kafka,都必须通过应用的实际指标验证。

2026-11-09 22:18:36 269

原创 Spring @Configuration 加与不加有什么区别?从 @Bean 方法调用、单例失效到 CGLIB 底层源码详解

本文深入解析Spring IoC中@Configuration与@Bean的协同机制,揭示配置类方法调用在是否启用代理时的差异。核心结论:@Configuration(默认proxyBeanMethods=true)通过CGLIB增强实现对@Bean方法的拦截,确保内部调用遵循容器单例规则;而无@Configuration或设为false时,直接调用会触发多次实例化,导致对象不一致。实际开发推荐使用依赖注入而非方法调用,提升代码可维护性与可靠性。

2026-11-03 22:26:31 296

原创 Spring AOP 核心原理详解:切面解析、动态代理、源码执行链路与 AOP 失效问题

本文深入解析Spring AOP与@Transactional的底层原理,涵盖切面解析、代理创建、拦截器链执行等核心流程。重点揭示同类内部调用导致AOP失效的根本原因:this.xxx()绕过代理,使事务或日志增强无法生效。提出四种解决方案,推荐拆分至独立Bean。结合源码调试与面试高频问题,系统总结AOP实现机制及常见失效场景,帮助开发者掌握Spring事务与切面编程的本质。

2026-11-03 22:00:35 269

原创 Spring IoC 原理彻底讲透:容器加载、依赖注入、构造器推断与 Bean 生命周期

本文系统阐述Spring IoC核心概念,涵盖控制反转(IoC)与依赖注入(DI)原理、Bean定义与管理机制、BeanFactory与ApplicationContext区别、多种依赖注入方式及其实现逻辑。重点解析了构造器注入优于字段注入的原因,揭示字段注入导致空指针的根本原因及其解决方案,并梳理了Spring Bean的完整生命周期与容器启动关键流程refresh()。强调构造器注入更安全、可测试性强,且推荐作为首选注入方式。

2026-10-28 21:21:31 260

原创 分库分表后唯一索引“失效”?Redisson 能替代吗?从订单防重、分布式锁到库存幂等的完整实战

本文通过一个订单重复创建的案例,深入剖析分库分表后唯一性保障的挑战。指出分片键设计需兼顾查询效率、数据均衡与业务唯一性约束;强调全局ID、业务唯一键与请求幂等三者不可替代,联合唯一索引在同分片内仍有效,但跨分片需额外机制;论证Redisson分布式锁不能替代数据库唯一索引,仅可作为并发协调手段;揭示库存扣减需结合条件更新、操作记录与幂等控制,避免超卖;最终提出基于本地事务、可靠消息与多层校验的完整防重方案,强调系统可靠性依赖各层职责清晰的协同而非单一技术。

2026-10-28 10:27:27 293

原创 一篇搞懂分布式事务:Seata、RocketMQ 事务消息、Kafka 与 Outbox,附 Spring Boot 实战

协调多个事务参与者的提交与回滚。通过半消息、提交确认和事务回查,实现本地事务与消息生产之间的最终一致性机制。主要解决 Kafka 内部消息写入及消费位点提交的原子性问题。在同一个数据库本地事务中保存业务数据和待发送事件,再异步投递消息。防止重复消息导致重复加积分、扣库存或重复执行业务操作。分布式事务设计的重点,从来不只是让程序正常运行,而是考虑系统发生故障时:业务数据是否会丢失?消息是否能够重试?重试是否会造成重复执行?发生长时间异常后是否能够对账和补偿?

2026-10-27 17:04:05 302

原创 Spring Cloud Gateway 从入门到实战:路由断言、全局过滤器、Redis 限流与 Nginx 的区别

在传统单体项目中,前端只需要调用一个后端服务。但是在微服务架构中,一个系统可能拆分为多个独立服务:用户服务:8081订单服务:8082商品服务:8083假设客户端需要调用多个服务,如果没有统一的网关,就需要知道每个服务的地址。客户端| | |v v v用户服务 订单服务 商品服务这种方式会产生几个问题:客户端需要维护多个服务地址。微服务扩容或地址变动可能影响客户端。登录鉴权、限流、日志等公共逻辑可能重复开发。内部服务的地址容易直接暴露给外部客户端。缺少统一的流量管理入口。

2026-10-26 19:37:35 154

原创 Spring Boot + AOP 实现通用操作日志:基于结构性存款、订单和用户权限的实战设计

业务方法只声明需要记录什么操作,真正的日志记录交给 AOP 切面统一完成。// 业务模块// 操作名称// 业务主键表达式// 业务详情表达式属性作用示例module业务模块action操作名称调整预期收益率bizId业务对象ID#p0detail操作详情使用 SpEL 表达式这里使用#p0表示第一个方法参数,可以避免 Java 方法参数名称未保留时导致的表达式解析问题。使用 Spring Boot + AOP 实现统一操作日志,核心并不是简单地把。

2026-10-19 11:42:48 197

原创 Java 后端开发必知的 31 条编码规范:从基础语法、SQL 优化到 Spring 事务与并发

Java 后端开发规范,并不是简单地把代码写得整齐。真正重要的是理解规范背后的原因。为什么 Integer 比较推荐 Objects.equals()?因为包装类型存在对象引用比较、缓存机制和空指针等问题。为什么 WHERE 中不建议对普通索引列做函数计算?因为可能影响数据库利用原有索引进行高效查询。为什么 @Transactional 有时不生效?因为 Spring 默认声明式事务依赖代理机制,内部方法直接调用可能绕过代理。为什么先查询再插入不能保证幂等?

2026-10-14 11:30:42 236

原创 Java 第三方接口统一封装:模板方法 + 策略模式 + 工厂模式,告别重复代码

Data// 请求唯一标识,方便日志追踪@Data// 成功// 失败这里使用泛型T,是为了让不同接口返回不同的数据类型。响应结构统一,但业务数据可以不同。// 厂商唯一标识// 统一调用入口Q:请求参数类型。R:返回的业务数据类型。这样就能让不同第三方使用统一接口,同时保留各自的数据结构。第三方接口统一封装,本质上就是把不变的流程和变化的实现分开。接口:定义统一的调用规范。抽象模板类:负责请求、响应、异常和日志等公共流程。具体客户端。

2026-10-08 14:14:00 195

原创 Spring Boot 项目别再让用户频繁重登:JWT 双 Token 无感刷新完整方案

本文从单 JWT 的过期时间两难出发,完整拆解 Spring Boot 中 Access Token + Refresh Token 的无感续期方案,并结合 Redis GETDEL、Refresh Token Rotation、前端刷新锁、多设备登录和主动失效等问题,说明如何在用户体验与安全性之间取得平衡。同时修正常见示例中刷新时复制旧 roles、误解 jti 安全边界等问题。

2026-09-30 12:00:01 332

原创 MacBook M4 安装 Conda 与 LangChain 开发环境教程

在 Python 开发中,不同项目经常需要不同版本的 Python 和依赖库。如果全部安装到系统 Python,会出现版本冲突。不要下载:MacOSX-x86_64(否则使用 Rosetta 转译,性能下降)。pip 是 Python 官方包管理工具。然后开始 LangChain / AI 应用开发。conda 是环境和软件包管理工具。(说明 M4 ARM 环境正常)。不要直接使用 base 环境。

2026-09-30 11:38:47 197

原创 Spring事务失效的12种场景总结

参数设置错误,实际异常不在回滚范围内。// 如果抛出SqlException,不会回滚。

2026-08-05 14:04:23 242

原创 深入理解 Java 多态与 Spring 实践

多态(Polymorphism)是面向对象三大特性之一。而是:同一个方法调用,在不同对象上表现出不同的行为。但执行的是不同实现。这就是多态。编译期看引用类型运行期看对象类型字段没有多态静态方法没有多态↓↓JVM 根据 this 的真实类型动态分派↓执行对应子类的 checkImportData()能够自动执行等不同实现的根本原因。自定义目录标题)MarkdownText-to-HTMLAuthorsJohnLuke。

2026-07-03 10:56:00 169

原创 策略模式精讲+实战

定义一组算法,将每个算法都封装起来,并且使它们之间可以互相替换。该模式让算法的变化独立于使用算法的客户端(调用方)。核心原则:针对接口编程,而不是针对实现编程。策略模式(Strategy Pattern)是 GoF 23 种设计模式中的行为型模式。角色职责对应代码抽象策略(Strategy)定义一个公共接口,所有算法都遵循这个"合同"接口具体策略(ConcreteStrategy)实现接口的具体类,封装了具体的业务算法上下文(Context)持有策略引用,负责根据条件路由到具体策略"互相替换"

2026-07-02 10:50:09 232

原创 idea中SpringBoot项目启动慢,解决方法

3.查看debug时,是否断点打的过多,断点过多也会影响应用启动速度。2.扩大-最大堆大小为10240MIB。1.扩大-共享构建进程堆大小。

2025-04-28 14:14:47 1224

原创 Spring Cloud 应用中使用 Nacos 作为配置中心来管理共享配置文件

通过这种方式,Spring Cloud 应用可以从 Nacos 中加载多个共享配置文件,每个文件负责一部分特定的功能配置。这种方法有助于更好地组织配置信息,使得不同组件之间的配置分离更加清晰,并且易于维护和更新。同时,这也使得多个微服务可以共享相同的配置,减少了重复配置的工作量。

2024-09-10 22:10:31 452 1

原创 MyBatisPlus 分页插件基本使用

1.导入MyBatisPlus 依赖。

2024-07-18 16:50:32 426

原创 Hutool Tree 顶级树只会显示id

发现该树顶级节点,只有一个id字段,子节点字段存在完整,我把树顶级节点,其他字段手动塞进去了,得到的结果如下。

2024-06-27 10:53:30 456

原创 Linux安装mysql5.7(无脑安装,亲测可用)

密码长度最低4位即可。# 第一次启动mysql,会在日志文件中生成root用户的一个随机密码,使用下面命令查看该密码。# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)# 如果你想设置简单密码,需要降低Mysql的密码安全级别。# 启动Mysql设置开机启动。# 安装Mysql yum库。# 检查Mysql服务状态。# yum安装Mysql。# 修改root用户密码。

2024-05-07 15:27:25 292

原创 Big Data Tools安装

idea中下载插件,并且重启idea需要对Windows系统做一些基础设置,配合插件使用解压Hadoop安装包到Windows系统,如解压到:D:\hadoop-3.3.5设置$HADOOP_HOME环境变量指向:D:\hadoop-3.3.5下载hadoop.dll(https://github.com/steveloughran/winutils/blob/master/hadoop-3.0.0/bin/hadoop.dll)下载winutils.exe(https://githu

2024-04-09 14:22:19 544

原创 clickhouse SQL 错误 [253] [07000]: Replica xxx already exists. (REPLICA_IS_ALREADY_EXIST)

SQL 错误 [253] [07000]: Replica /clickhouse/testdb2/lixianmoxingyanlian02_813031_temp_local_1704763527/01-01/hits/replicas/cluster01-01-1 already exists. (REPLICA_IS_ALREADY_EXIST)解决方法:把下图中地址更换,或者设为随机。执行删除语句后 从新生成该表会 报错。

2024-01-09 14:58:36 1993 1

原创 Win11禁用系统更新

2、在右侧列表中找到“Windows 更新”选项,双击进入详细属性页面,将其启动类型配置为“禁用”,然后单击“应用”->“确定”即可关闭Windows自动更新。1、按Win+R输入services.msc并按Enter键打开服务页面。

2023-09-16 09:59:02 501 1

mysql在window环境下安装步骤

mysql在window环境下安装步骤

2023-08-27

空空如也

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

TA关注的人

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