摘要: 关于算法 参加了41场LeetCode周赛,保三冲四,波动性太大了。菜还是一如既往的菜,薄弱点太多,复盘时不仅要知道如何做,更重要的是了解在这个过程中有没有哪些地方做的不好,方便下次注意和改进。 几点痛的领悟:1)首先考虑的是在时间复杂度允许的范围内,用可读性良好的代码实现。不要提前优化!提前优化可 阅读全文
posted @ 2022-01-03 20:02 sjmuvx 阅读(24) 评论(0) 推荐(0) 编辑
摘要: Ubuntu作为时间服务器,Windows去同步时间的配置过程 阅读全文
posted @ 2021-11-30 20:04 sjmuvx 阅读(1059) 评论(0) 推荐(0) 编辑
摘要: 介绍MySQL事务隔离级别与锁的关系 阅读全文
posted @ 2021-09-29 14:26 sjmuvx 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 1)读写锁支持非公平模式和公平模式;2)reader和writer都支持重入,且writer可以重入读锁,但reader不能重入写锁;3)写锁可降级为读锁,读锁不能升级为写锁;4)支持中断;5)写锁支持 Condition;6)提供方法来判断锁的持有和竞争状态 阅读全文
posted @ 2021-06-09 18:00 sjmuvx 阅读(41) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal可以让一个对象是共享变量,统一设置初始值,但是每个线程对这个对象的修改都是互相独立的。 阅读全文
posted @ 2021-05-16 19:37 sjmuvx 阅读(125) 评论(0) 推荐(0) 编辑
摘要: CountdownLatch用于等待事件,是一次性的;countDown 递减计数器,表示有一个事件已经发生;await 等待计数器达到0,表示所有需要等待的时间已经发生。 CyclicBarrier用于等待其他线程,可重复使用;线程到达栅栏位置将调用 await 方法,这个方法会阻塞直到所有线程都到达栅栏位置;还可以在构造函数中传入 RUNNABLE,最后到达栅栏的线程执行它 阅读全文
posted @ 2021-05-12 22:39 sjmuvx 阅读(46) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock实现了非公平锁和公平锁,默认使用非公平锁。非公平锁相对于公平锁的不同之处在于,非公平锁在lock过程中,会先进行一次CAS抢锁,抢锁失败才会去看state状态是否为0,为0的话再次CAS抢锁;而公平锁没有第一次的CAS抢锁,如果state为0还要再看CLH队列中是否有等待的线程,没有等待的线程才会CAS抢锁。 阅读全文
posted @ 2021-05-10 22:38 sjmuvx 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 约定 CLH 队列,在 AQS 的实现中也被称为同步队列(SyncQueue) 源码 Node类 static final class Node { // 共享模式和独占模式的标记 static final Node SHARED = new Node(); static final Node EX 阅读全文
posted @ 2021-05-09 15:11 sjmuvx 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 阻塞机制由 doAcquireShared 方法实现,唤醒机制由 doReleaseShared 方法实现 阅读全文
posted @ 2021-05-07 22:39 sjmuvx 阅读(252) 评论(0) 推荐(1) 编辑
摘要: 阻塞机制由 acquireQueued 方法实现,唤醒机制由 unparkSuccessor 方法实现 阅读全文
posted @ 2021-05-06 21:35 sjmuvx 阅读(81) 评论(0) 推荐(1) 编辑