- 博客(11)
- 收藏
- 关注
原创 优雅解决Java中多分支调用:Map + Function 策略模式
本文提出使用Map+Function模式替代传统的if-else/switch-case写法,通过一个用户增长指标案例展示了具体实现。核心思路是将kpiCode作为Map的key,对应处理函数作为value,利用@PostConstruct初始化映射关系。这种方案具有高内聚低耦合、易于扩展、性能优秀等优势,完美符合开闭原则,特别适用于类型码分发业务逻辑的场景。相比传统写法,Map+Function模式使代码更加简洁优雅,是处理多分支问题的理想选择。
2025-11-11 10:01:16
534
原创 记一次 RocketMQ “磁盘满”故障排查:du 和 df 的差异暴露了 Docker 缓存黑洞
摘要:本文记录了一次RocketMQ因磁盘空间不足导致服务中断的排查过程。虽然修改了broker.conf配置允许更高磁盘使用率,但问题仍未解决。通过对比df与du命令输出差异,发现大量被删除但未释放的文件(lsof+L1显示(deleted))。进一步检查发现Docker构建缓存占用380GB空间。最终通过清理Docker缓存(docker builder prune -a)和重启服务释放空间解决问题。文章总结了排查流程与预防建议,强调要关注基础设施层面的"幽灵占用"问题,建议定期清理
2025-11-04 14:08:00
666
原创 Java 打包文件后,windows 解压报错
就是因为这个格式,windows 文件名是不支持 :(冒号)的,所以解压的时候会报错,把时间戳格式转换为。我遇到的是,错误的文件名导致的,在生成文件的时候,我们常常会加上时间戳,由于习惯我是用了。有些是流没有关闭导致的。
2024-09-01 12:56:04
259
原创 Spring Boot 父类自动注入属性
原因是我在一个开源项目中看到一个类,类上面没有使用 Spring 的注解,但是里面确使用了 @Autowired,起初我以为是通过 AutowireCapableBeanFactory 去另外注入的,后面发现这个类只被另外一个类所继承,不过子类有被注入 Spring。当然,子类是无法拿到父类的私有属性的,但是子类可以拿到父类,所以可以通过递归的方式先拿父类。于是,我想 Spring 对于这个子类,是不是也会自动帮他把父类里面的属性进行注入,因为父类的方法是公共的,要是属性不注入那就无法使用了。
2024-08-24 13:19:17
370
原创 Java 使用阻塞队列拿取异步回调的值
本文的场景是在一个线程中去调用另外一个系统,另外一个系统只能使用回调的方式来返回请求结果,但是当前线程却需要返回这次回调的结果。这个场景相当于一个线程等待结果,另外一个线程去唤醒它。这样就可以做到等待和唤醒的操作了。
2024-08-22 13:01:08
286
1
原创 SpringBoot 发送 POST 请求 form-data 格式
记录一下,发送请求时,替换文件名的一种写法。下面这个方法是 上传文件到企微。
2024-01-03 11:25:04
1641
1
原创 SpringSecurity 使用自定义过滤器解决跨域问题
因为跨域的请求,对于浏览器来说是复杂请求,所以会先发送一个 OPTIONS 类型的 HTTP 请求,这个请求不会携带任何信息,它的作用就是为了试探服务端是否能正常处理后续请求。我们知道 spring security 的本质就是一个过滤器链。所以我们只需要在第一个过滤器之前加入我们自定义的过滤器来处理跨域信息即可。所以当 OPTIONS 请求进来,我们需要在响应头中告诉浏览器可以发送后续请求。配置也很简单,只需要将这个过滤器放在过滤器链的第一个位置就行。跨域的解决方案有很多,这里介绍的是利用过滤器来解决。
2023-04-23 09:51:55
611
1
原创 JDBC insert 返回自增主键原理
插入是返回自增 id 这个功能在 jdbc 上就已经实现了,所以 mybatis 只是对其进行了封装,先研究 jdbc 返回自增主键得原理。以下是部分 jdbc 代码首先可以看到,在进行预处理得时候,就通过 Statement.RETURN_GENERATED_KEYS 来设置这次会话可以拿到自增主键。执行完 sql 后我们看 getGeneratedKeys() 是怎么拿到主键得。接着点下去会发现,只是通过 long beginAt = getLastInsertID();
2023-03-31 11:40:29
1186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅