Spring Boot 文件上传实战:从单文件到分片断点续传
文件上传大概是每个后端都写过的功能:Controller 接一个 MultipartFile,存盘,返回路径,结束。但同样是上传,有人写的版本被一张 2MB 的头像打崩,有人写的版本稳稳扛住 500MB 的合同原件。
Filter、Interceptor、AOP 拦截机制实战:一次串号事故
先讲一个真实的事故。一个多租户 SaaS 系统,用户反馈"看到了别家公司的订单"。排查半天,代码逻辑没有问题:租户过滤条件都带了。最后在日志里发现规律——出问题的请求,前一个请求属于另一家租户。也就是说,线程复用的时候,上一个请求的租户信息没清干净,漏给了下一个请求。
spring打印http接口请求和响应
在程序日志中打印出接口请求和响应的内容是一个基本的技术需求。如果在每个接口中实现请求响应的日志打印,程序编写会很繁琐,我们可以利用spring提供的机制,集中处理接口请求响应的日志打印。 具体的代码参照 示例项目 https://github.
Java、Spring、Dubbo三者SPI机制的原理和区别
Java SPI暴露缺陷,Spring改进有限,Dubbo教你什么是真正的插件化说到SPI,刚开始学Java那会儿我根本不知道这是个啥。后来接触框架多了才发现,这东西其实就是个服务发现机制,让程序能在运行的时候动态加载不同的实现,不用硬编码。
连接池被打空:100%占满,服务没崩但查询全在排队
#头条我来了#数据库连接池100%被占满,服务进程活得好好的,CPU也不高,但所有查询都在getConnection上排队,最长的等了47秒才拿到连接。这是比服务崩溃更难受的一种故障形态——监控全绿、进程没死、接口全慢。
AI 加的 @Transactional 加在方法上,却没生效
先说结论:AI 加的 @Transactional 加在了方法上,但事务很可能压根没生效。而且它不报错。上个月 review 一段 AI 写的下单代码,注解写得挺讲究:@Transactional(rollbackFor = Exception.class),该有的都有。
Spring Boot 运维命令中心实战:把"救命命令"管起来
锁在 finally 里释放,但 TTL 设了 5 分钟兜底——进程被 kill 时锁也能自动过期,不会把后续执行全部堵死。
设计模式(6):适配器模式——接口不兼容怎么办,包一层就行
老系统用的是 XML 接口,新系统只认 JSON;第三方 SDK 返回英文字段名,你这边定义的全是中文驼峰;日志框架从 Log4j 换成 SLF4J,满屏的 logger.info() 要不要全改一遍?适配器模式的思路很直接:不改原始代码,在中间加一层转换,把不兼容的接口对接上。