03 2025 档案
摘要:一、底层原理 在 MySQL 8.0 中,当使用 LIMIT offset, count 进行分页查询时,如果 offset 非常大(例如 LIMIT 200000, 10),性能会显著下降。 这是因为 MySQL 需要扫描 offset + count 行数据,然后丢弃前 offset 行,只返回
阅读全文
摘要:步骤一、启用慢查询日志 慢查询日志是MySQL记录执行时间超过指定阈值的SQL语句 配置慢查询日志 在MySQL配置文件(如my.cnf或my.ini)中设置以下参数: slow_query_log:是否启用慢查询日志 slow_query_log_file:指定慢查询日志文件的保存位置 long_
阅读全文
摘要:一、ThreadLocal 内存泄漏的原因 ThreadLocal 的内存泄漏问题主要与其底层实现 ThreadLocalMap 的结构和垃圾回收机制有关。以下是核心原因: 1、ThreadLocalMap 的 Entry 设计 键(Key)是弱引用:ThreadLocalMap 中的键(Key)是
阅读全文
摘要:一、定义 CyclicBarrier 的 await() 方法是其核心功能之一,用于让线程在屏障点等待,直到所有参与的线程都到达屏障后,才能继续执行。 其底层实现依赖于 AQS(AbstractQueuedSynchronizer) 和 ReentrantLock,以下是 await() 方法的底层
阅读全文
摘要:一、release() 方法代码解析 当调用 release() 方法时,实际调用的是 AQS 的 releaseShared(1) 方法。以下是其详细工作流程: public final boolean releaseShared(int arg) { if (tryReleaseShared(a
阅读全文
摘要:一、acquire() 的工作流程 当调用 acquire() 方法时,实际调用的是 AQS 的 acquireSharedInterruptibly(1) 方法。以下是其详细工作流程: // acquire() -> sync.acquireSharedInterruptibly(1),可中断 p
阅读全文
摘要:一、简单使用 在聊它的源码之前,我们先来做个简单的使用说明。当我在IDEA中创建了一个简单的Demo之后,它会给出以下提示 提示文字 在使用阻塞等待获取锁的方式中,必须在try代码块之外,并且在加锁方法与try代码块之间没有任何可能抛出异常的方法调用,避免加锁成功后,在finally中无法解锁。 1
阅读全文
摘要:一、CountDownLatch的构造方法 // 创建倒数闩,设置倒数的总数State的值 CountDownLatch doneSignal = new CountDownLatch(N); 二、countDown() 方法的作用 countDown() 方法的主要作用是将 CountDownLa
阅读全文