获得徽章 9
- 记一次生产者消费者模型多线程导出线程饥饿导致的线程假死:多线程拉取数据,单线层读写数据到Excel,由于先创建的是读线程,读线程将数据放入有界队列后,有界队列满,读线程不再工作,由于机器核心数较小,线程数=核心数*2。写线程被创建后,线程池的线程都被读线程Hold住阻塞,卡在了往有界队列push数据那一步,写线程因为没有线程数导致写线程无法take数据,导致生产者无法继续生产,消费者无法消费的局面。展开4点赞
- 阿波罗实现动态监听配置类
@Data
@ConfigurationProperties(prefix = "express-ex")
@RefreshScope
@Component
@Slf4j
public class ExpressExceptionConfig implements ApplicationContextAware {
@ApolloConfigChangeListener("expressApiMontoring.properties")
public void onChange(ConfigChangeEvent event) {
if (event.changedKeys().parallelStream()
.anyMatch(changedKey -> changedKey.startsWith("express-ex"))) {
refreshScope.refresh("scopedTarget.expressExceptionConfig");
}
}
}展开赞过评论3 - 记一次分页bug排查。
临近年底,临时支援其它项目组,做开发报表的需求。
其中有1个分页总是报:未明确定义列,生成的sql嵌套了2层分页。
百思不得其解,打断点看源码发现生成的sql会经过2个拦截器,经过一次就会加一层分页嵌套。
2个拦截器分别是:MybatisPlusInterceptor和PaginationInnerInterceptor。
其中MybatisPlusInterceptor是拦截器链,包含了PaginationInnerInterceptor。
所以相当于经过了2次PaginationInnerInterceptor。
在MybatisPlusConfig中不再添加PaginationInnerInterceptor,完美解决。
同时恍然大悟为什么项目中没有连接查询的分页让我参考一下了![[奸笑]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_17.bcebf79.png)
下班~展开等人赞过评论5
![[奸笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_17.bcebf79.png)