别把文件上传写成一个 `save`:可靠上传接口的设计与实现 别把文件上传写成一个 `save`:可靠上传接口的设计与实现 别把文件上传写成一个 save:可靠上传接口的设计与实现 开发中的痛点 在头像、附件、合同、简历等业务中,文件上传接口看起来并不复杂:接收 MultipartFile,把文件写入对象存储,再保存一条数据库记录。 最直接的实现通常是: @Transactional public Long upload 2026-07-22 架构 18 竹溪
Challenge 机制详解:从身份验证到一次性操作授权 Challenge 机制详解:从身份验证到一次性操作授权 Challenge 机制详解:从身份验证到一次性操作授权 敏感操作真正需要的,不只是“验证码正确”,而是确认:哪个用户,正在对哪个资源,执行哪一种操作,并且这次确认只能使用一次。 Challenge 就是承载这段验证上下文和状态变化的一次性任务。 开发中的痛点 假设系统准备实现“注销账号”。最直接的 2026-07-22 应用安全 8 竹溪
Jakarta Bean Validation 自定义校验,实现 "自解释" 的角色编码校验 Jakarta Bean Validation 自定义校验,实现 "自解释" 的角色编码校验 title: Jakarta Bean Validation 自定义校验,实现 "自解释" 的角色编码校验 date: 2026-07-10 categories: [Java, Spring Boot, Jakarta Validation] tags: [Jakarta Bean Validat 2026-07-10 Jakarta Bean Validation 7 竹溪
手写 MyBatis 通用枚举 TypeHandler 手写 MyBatis 通用枚举 TypeHandler 开发中的痛点 在我们开发中,枚举在数据库字段是 TINYINT类型,而在Java中是 Enum类型。如果不书写转换器或者手动转换,Mybatis就没办法正常将两者映射。 而在我们日常开发中经常会采用以下: 手动 if-else/switch,来 2026-03-28 Mybatis 59 竹溪
Notion-笔记、文档、项目管理协同一体化平台 Notion-笔记、文档、项目管理协同一体化平台 Notion 是什么? Notion 的优势 强大的文本编辑与编排 无论是记录日记、笔记、整理资料、管理项目,还是构建代办事项、日程表,你都能在 Notion 找到合适的方式。 支持 Markdown 语法 丰富的块类型 文本、标题、待办清单、图片、 2026-03-27 办公 85 竹溪
@Transactional注解事务与锁引发的时序问题 spring事务与锁引发的时序问题 双重保险下暗藏问题 我们在使用spring事务时,都接触过spring的注解事务@Transactional。有些场景下,我们在使用事务的同时,为了保证原子性操作会引进应用层锁,如:Synchroized、CeenCrantLock等。 @Service publ 2026-03-27 Spring 34 竹溪
RBAC权限模型笔记 RBAC权限模型 最近在写一个项目,原本在权限控制模块使用的是层级的权限控制模型。而项目涉及到交错、交叉的权限,所以层级的权限控制就显得非常弱小。故而去学习了RBAC的权限模型,写了一篇学习笔记。 什么是RBAC权限模型? RBAC(Role-Based Acess Control)即基于角色的访问 2026-03-27 Spring 20 竹溪