技术点总结
- ThreadLocal 就是对ThreadLocalMap的封装,数据本质还是在线程threadLocalMap中
- 线程池是队列满了之后,才会扩容:从coreSize 大小扩容到 maxSize
- 场景:如果线程池满了又不能丢任务,那么可以考虑将任务持久化到数据库中,这样就不会丢失任务
- 有界队列和无节队列区别:有界队列:像固定大小的水桶,水满后会溢出或停止接水。无界队列:像无底洞的水桶,可能装下整个海洋,但最终会淹没你的房间(OOM)
- AQS 就是抽象队列同步器,用在JUC的同步器实现,用于状态变更、线程排队等操作
- CompletableFuture 感觉功能很强大,很适合做任务编排, asyncTool后续可以深入了解一下
- DelayQueue 通常用于实现定时任务调度和缓存过期删除等场景
- 区分度最高的列放在联合索引的最左侧:这是最重要的原则。区分度越高,通过索引筛选出的数据就越少,I/O 操作也就越少。计算区分度的方法是 count(distinct column) / count(*)。最频繁使用的列放在联合索引的左侧:这符合最左前缀匹配原则。将最常用的查询条件列放在最左侧,可以最大程度地利用索引。
- 隐式转换会导致索引失效,如数字id = ‘111’;id的类型为数字的时候,会使用隐式转换
- 子查询性能差的原因:子查询的结果集无法使用索引,通常子查询的结果集会被存储到临时表中,不论是内存临时表还是磁盘临时表都不会存在索引,所以查询性能会受到一定的影响
技术点总结
https://www.lewismind.site/2025/02/25/20250001/