微信:mifuCN | 电话:15761226890
最近在学习AI应用开发的相关知识(LangChain、Spring AI Alibaba等框架),先在个人博客中落地一些功能试试效果。顺便抽空看看《深入理解Java虚拟机》。
自调用导致的事务失效
本文指出了一个Spring声明式事务失效的常见问题。当一个类中的方法(如`autoMatch`)通过`this`关键字直接调用同一个类中另一个被`@Transactional`注解标记的方法(如`manualMatch`)时,声明式事务会失效。
根本原因在于,Spring的声明式事务是基于AOP代理实现的。通过`this`进行的内部调用会绕过代理对象,直接调用目标方法,导致事务增强逻辑无法被执行。
正确的解决方案是,必须通过Spring容器管理的代理Bean来发起调用。如文中的示例,通过`SpringUtil.getBean()`获取当前类的代理实例,再用该实例调用事务方法,即可确保事务被正确应用。
由米芾AI生成,内容仅供参考!
解决-win11-端口被-hyper-v-wsl2随机保留(占用)的问题
本文旨在解决Win11中因Hyper-V或WSL2随机保留端口,导致常用开发端口(如8088)无法使用的问题。其根本原因是Windows的“TCP动态端口范围”因故被重置为从低端口号开始,Hyper-V在此范围内保留端口时便引发了冲突。重启服务或电脑仅是碰运气的临时方案。根本性的解决方法是:以管理员身份运行`netsh`命令,将动态端口范围的起始端口手动设置为一个较高的值(如49152),然后重启电脑。这样可以有效避免系统保留常用端口,一劳永逸地解决问题。
由米芾AI生成,内容仅供参考!
快速定位oom
本文主要讲解了Java堆内存问题的分析方法。首先,可以通过`jstat`命令实时监控堆内存和垃圾回收(GC)的动态。核心在于获取和分析堆转储文件(Heap Dump)。
文章介绍了两种生成dump文件的场景:
1. **应用未崩溃时**:使用`jmap -dump`命令为正在运行的Java进程生成内存快照。
2. **应用崩溃时**:通过设置JVM启动参数`-XX:+HeapDumpOnOutOfMemoryError`和`-XX:HeapDumpPath`,可以在发生内存溢出(OOM)时自动生成dump文件,方便事后排查。
获取到dump文件后,可使用JVisualVM等可视化分析工具导入,通过查看类实例的直方图,快速定位占用内存最多的对象,从而找到内存泄漏或内存使用不当的根源。
——由米芾AI生成,内容仅供参考!
小学期
title: “芾医疗” date: “2022-09-25” categories: “project” 医疗项目 基于SpringCloud+Vue的医院挂号系统 本项目是一个完整的微服务预约挂号平台,包含 3 个系统: 预约挂号系统前台 预约挂号系统管理员后台 外部医院管理后台 技术栈 前端
消息的最终一致性
本文探讨了“可靠消息最终一致性”方案,以解决分布式事务难题。文章以“下单送积分”为例,对比分析了五种消息投递方式的演进过程。文章指出,将消息投递与本地事务强耦合(事务内或事务后直接发送)存在数据不一致的风险。推荐的优化方案是:引入独立的消息服务,在执行本地事务前预存“待发送”消息,待本地事务成功提交后再确认发送。该方案通过将远程调用移出本地事务,提升了系统性能和可靠性,并辅以定时任务和回查机制来处理异常,最终确保消息的可靠投递和数据一致性。
由米芾AI生成,内容仅供参考!