- 博客(18)
- 收藏
- 关注
原创 Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
本文详解Axios请求从前端发出到SpringBoot后端处理的完整流程:Axios发送HTTP请求,经由Tomcat接收并解析,通过Filter链进入DispatcherServlet;DispatcherServlet借助HandlerMapping定位Controller,由HandlerAdapter执行方法;@RequestBody通过HttpMessageConverter(如Jackson)将JSON请求体反序列化为Java对象;Controller调用Service处理业务后返回对象,Spr
2026-11-13 15:18:23
266
原创 Redis 分布式锁有哪些问题?如何解决?
本文系统分析了Redis分布式锁在实际应用中的七大核心问题,包括锁过期、误释放、主从切换、业务超时、不可重入、网络异常及旧客户端继续执行等,并提出基于SETNX+PX原子操作、Lua脚本校验、Redisson Watchdog自动续期、FencingToken等解决方案。强调生产环境中应结合数据库唯一约束与业务幂等性保障数据一致性,避免过度依赖分布式锁。建议使用Redisson等成熟客户端,遵循“原子加锁、安全释放、合理续期、多重防护”的原则,构建高可靠分布式系统。
2026-11-13 15:14:06
361
原创 基于 Spring Boot 3 + JDK 17 开发 MCP Server,并接入 AI Agent
MCP,全称 Model Context Protocol,中文名称为模型上下文协议(Model Context Protocol)。MCP 是一种标准化协议,主要用于解决大语言模型(LLM)如何连接外部工具、数据源和业务系统的问题。在传统 AI 应用开发中,如果希望大模型能够查询数据库、读取文件、调用业务接口,通常需要开发者自行编写工具调用逻辑,并将工具定义、参数结构和执行方式与模型进行适配。当外部工具越来越多时,这种方式会带来较高的集成成本。
2026-11-10 14:31:04
133
原创 MySQL 索引失效的 10 种场景,你踩过几个?
总结MySQL索引失效的10大常见场景,包括函数使用、字段计算、通配符开头、类型不匹配、OR条件、最左前缀缺失、范围查询影响后续字段、ISNULL/ISNOTNULL误判、不等值条件及深分页问题。强调索引是否生效取决于优化器成本估算,而非仅看语法。建议通过EXPLAIN分析执行计划,结合ANALYZE验证,避免盲目建索引,优先改写SQL或调整索引结构,实现高效查询。
2026-11-10 14:13:12
318
原创 Group By 很慢,如何优化?
MySQL中GROUPBY性能下降的原因,包括数据量大、索引缺失、索引顺序不当、排序开销及过滤不充分等。提出核心优化策略:为分组字段建立合适索引,设计WHERE与GROUPBY联合索引,减少扫描数据量,避免函数操作和冗余字段,合理使用汇总表,并通过EXPLAIN分析执行计划验证优化效果。强调应结合实际数据规模与执行计划,避免盲目加索引,实现高效聚合查询。
2026-11-04 10:33:59
147
原创 为什么不建议在 Docker 中跑 MySQL?
在生产环境中将MySQL部署于Docker容器的潜在风险,指出其在数据持久化、性能、资源隔离、故障恢复、备份机制及运维复杂度方面的挑战。尽管Docker适用于开发与测试环境,但核心生产数据库应优先考虑物理机或虚拟机部署,确保数据安全与业务连续性。只有在具备完善备份、高可用架构与专业运维能力的前提下,方可谨慎采用容器化方案。
2026-11-04 10:30:24
326
原创 Spring事务失效的15种场景,你踩过几个坑?
Spring事务失效常见于自调用、异常捕获未抛出、私有/final方法、代理未生效、异常类型不匹配、数据库引擎不支持事务等场景。核心原因在于事务代理未触发或回滚规则未生效。需注意:方法必须通过Spring代理调用,异常应正确抛出,rollbackFor配置准确,使用InnoDB引擎,避免手动实例化对象,合理处理异步与多数据源场景。排查时可开启日志,结合AOP机制理解事务原理,确保事务真正生效。
2026-11-03 11:30:41
305
原创 final、finally、finalize的区别?
final、finally、finalize三者形似而意迥异:final为关键字,用于限制变量赋值、方法重写与类继承;finally是异常处理中的代码块,确保无论是否出错均执行收尾操作,常用于资源释放;finalize()是Object类中已废弃的方法,曾用于对象回收前的清理,但因不可靠已被淘汰。现代Java应使用try-with-resources替代finalize进行资源管理。
2026-09-15 17:44:25
46
原创 重载(Overload) 和 重写(Override)的区别
重载(Overload)是同一类中同名方法但参数不同,编译时根据参数确定调用,属编译时多态;重写(Override)是子类重实现父类方法,方法名与参数相同,运行时根据实际对象类型决定调用,属运行时多态。核心区别:重载看参数,重写看继承关系与方法签名。
2026-09-15 16:58:29
358
原创 Java类与接口核心解析
类是对一类具有相同属性和行为的对象的抽象描述。学生A:姓名:张三年龄:20学习()学生B:姓名:李四年龄:21学习()可以把共同的特征抽象成一个Student// 属性// 方法System.out.println("学生正在学习");Student:类student:对象name、age:属性study():行为/方法类 = 对象的模板,对象 = 类的具体实例。接口可以理解成一种规范、约定或者能力定义。void eat();这个接口规定:只要一个类实现Animal。
2026-08-20 10:57:32
177
原创 Java基本数据类型:4类8种详解
Java基本数据类型├── 整数型│ ├── byte│ ├── int│ └── long├── 浮点型├── 字符型│ └── char└── 布尔型一句话记忆:4类8种 = 4个整数 + 2个浮点 + 1个字符 + 1个布尔。除了这 8 种基本数据类型,Java 还有引用数据类型,例如String、数组、对象、接口等,它们不属于基本数据类型。
2026-08-20 10:36:05
190
原创 Jdk和Jre和JVM的区别
JVM 是运行 Java 字节码的虚拟机;JRE 是 JVM 加上运行 Java 程序所需要的类库和组件;JDK 是用于开发 Java 程序的工具包,传统上包含 JRE 以及编译器、调试器等开发工具。JDK 负责开发,JRE 负责运行,JVM 负责执行字节码。不过这里有一个容易需要注意的细节:从 JDK 9 开始,JDK 的运行时镜像结构发生了变化,不能机械地理解成安装目录里一定存在一个独立的jre/子目录;现代 Java 中更准确的是从功能和组件关系理解,而不是死记目录结构。Oracle 文档。
2026-08-17 10:25:36
164
原创 JVM内存探秘:栈与堆的存储之道
栈(Stack)和堆(Heap)是 JVM 运行时内存中的两个重要区域,存放不同类型的数据。生活类比栈 = 书桌上正在看的书 (用完就收走)堆 = 书架上长期存放的书 (需要时去取)
2026-08-17 10:22:09
156
原创 Spring定时任务实现高效跨库数据同步
功能描述:从数据库读取同步任务配置,根据每个任务配置的 Cron 表达式判断是否需要执行,支持灵活的定时策略。2. 从配置表获取启用的数据库连接配置(源库URL、用户名、密码、schema,目标库对应信息)功能描述:从配置表中读取源库和目标库的连接信息,以及需要同步的表列表,实现跨库数据同步。5. 逐表执行同步:先从源库查询全量数据,然后删除目标库原有数据,最后批量插入新数据。2. 配置化设计:数据库连接、同步表、同步 SQL 均存储在数据库中,支持动态配置。4. 分别建立源库和目标库的 JDBC 连接。
2026-04-15 22:24:00
384
原创 三种方式创建SpringBoot项目
b.设置 Name、Location、Add Archetype。创建Maven项目,选择 new Project。a、打开pom.xml文件。3.借助idea使用阿里云代理接口搭建项目。a、创建项目 修改。等待加载完毕(第一次加载比较慢)
2026-04-09 21:56:29
51
原创 Tomcat详细安装步骤
上面不是有一张图片,提到删除项目名称吗,如果不删除,他就会在浏览器上显示,个人觉得比较乱,所以说在己,保留与否。运行之后,出来Hello World!代表 Tomcat 配置成功,程序也部署到 Tomcat 了。我下载的是10.1.7版本,官网现在有最新版本,可以自行选择相应的版本进行下载。Tomcat 配置好,项目也加载上,就是下方图片,点击运行。第一次点击,可能什么也没有,需要配置一下。第一步选中,刚刚下载的解压包。Idea配置Tomcat。第二步 选择JDK版本。
2024-10-15 18:54:11
638
原创 Maven安装使用
plexus-classworlds是一个类加载器框架,相对于默认的 Java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库。一般情况下,我们更偏向于复制该文件至/.m2/目录下(表示用户目录),然后修改该文件,在用户范围定制 Maven 的行为。:该目录包含了所有 Maven 运行时需要的 Java 类库,Maven 本身是分模块开发的,因此用户能看到诸如maven-core-3.0.jar和maven-model-3.0.jar之类的文件。3.编辑Maven环境变量。
2024-10-14 13:53:20
593
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅