MySQL 逻辑删除遭遇唯一索引冲突的优雅解法 在现代化后端开发中,逻辑删除(Logical Delete) 几乎是互联网项目的标配。通过用一个 is_delete(0-未删除,1-已删除)字段来代替物理删除,既能防止用户误删数据,又便于后续的数据留存分析。 然而,当逻辑删除碰上唯一索引(Unique Key),一个隐藏的巨坑就悄然出现了。 今天 2026-06-13 后端探秘 8 野猪凌梦
设计模式实战:用 Java 优雅实现适配器模式解决接口不兼容 在日常的系统开发或重构中,我们经常会遇到这样的尴尬场景:系统需要引入一个新的第三方库,或者需要兼容一个老旧的遗留系统。但是,这些外部或老旧系统的代码往往与我们当前系统内部的标准接口不一致。甚至在很多历史遗留项目中,压根就没有定义接口规范,业务逻辑被死死地硬编码在具体的类中。 如果我们直接修改现有的核 2026-06-07 后端探秘 20 野猪凌梦
JDK 9+ 观察者模式最佳实践:告别废弃 API,拥抱 PropertyChangeSupport 在 Java 开发中,观察者模式(Observer Pattern)是我们处理对象状态变化与事件解耦的常用利器。很多老旧的教程中仍然在使用 java.util.Observer 和 java.util.Observable 来实现该模式,但如果你使用的是 JDK 9 或更高版本,你会发现这两个类已经 2026-06-06 后端探秘 8 野猪凌梦
深入理解单例模式:DCL 双重检查锁为什么必须加 volatile? 在 Java 开发中,单例模式是我们最常用的设计模式之一。为了实现延迟加载并保证线程安全,双重检查锁(Double-Checked Locking,简称 DCL)是一种非常经典的写法。 然而,很多人在手写 DCL 单例时,往往只记得加上 synchronized 同步锁,却忽略了极其关键的 vola 2026-06-05 后端探秘 13 野猪凌梦
告别繁琐配置:基于 Auth0 的超轻量级 Java JWT 工具类实现 在日常的 Java Web 开发中,JWT(JSON Web Token)已经成为了实现无状态认证的标配。提到 Java 的 JWT 库,很多人第一时间会想到 jjwt。不可否认 jjwt 功能强大,但对于一些简单的项目或是微服务节点,繁琐的 Builder 和复杂的配置往往显得有些“杀鸡用牛刀”。 2026-05-30 后端探秘 4 野猪凌梦
使用 AOP + 自定义注解优雅实现方法级权限校验 在日常的后端开发中,接口的权限校验是一个绕不开的话题。相比于在每个 Controller 方法里写一堆 if-else 来判断当前登录用户的角色,使用 自定义注解 + AOP(面向切面编程) 无疑是一种更加优雅、解耦且易于维护的解决方案。 今天这篇文章,我将结合实际项目代码,手把手带你实现一个 @A 2026-05-28 后端探秘 10 野猪凌梦
别再重复加密密码了!Spring Security 中正确验证旧密码的方式 在使用 Spring Security 构建用户认证系统时,我们通常会通过 BCryptPasswordEncoder 对用户密码进行加密存储,以保障安全性。但在实现“修改密码”功能时,我曾犯过一个看似低级却非常典型的错误——对用户输入的旧密码再次加密,然后与数据库中的密文直接比对。 直到调试时才发 2026-05-15 后端探秘 6 野猪凌梦
Spring AI 实战:为 AI Agent 封装一个本地终端命令执行 Tool 在开发基于大模型的 AI 应用时,让大模型拥有“行动能力”是迈向 AI Agent(智能体)的关键一步。通过 Spring AI 提供的 Function Calling(函数调用)机制,我们可以非常优雅地将本地 Java 方法暴露给 AI,让大模型根据上下文自主决定何时调用这些工具。 今天在这篇文 2026-05-15 后端探秘 15 野猪凌梦
滑动窗口:优雅解决 API 批量处理限制 在 AI 应用开发或者对接第三方服务时,我们经常会遇到一个非常现实的“拦路虎”:API 的调用限制。 比如最近我在做 RAG(检索增强生成)知识库时,需要把本地的 Markdown 文档向量化并存入 PostgreSQL。我使用的 DashScope(通义千问)嵌入模型虽然效果很棒,但它有一个硬性规 2026-05-13 后端探秘 20 野猪凌梦
Spring AI 消息持久化避坑指南:利用 Kryo 解决 Message 序列化难题 1. 背景:消失的 Serializable 在使用 Spring AI 开发对话系统时,我们通常需要将会话历史(List<Message>)保存到本地磁盘或 Redis 中,以便实现上下文记忆。 然而,Spring AI 中的 Message 接口及其实现类(如 UserMessage, Assi 2026-05-11 后端探秘 20 野猪凌梦