04 2021 档案
摘要:JDK 的 CopyOnWriteArrayList/CopyOnWriteArraySet 容器正是采用了 COW 思想,它是如何工作的呢?简单来说,就是平时查询的时候,都不需要加锁,随便访问,只有在更新的时候,才会从原来的数据复制一个副本出来,然后修改这个副本,最后把原数据替换成当前的副本。修改
阅读全文
摘要:1.1 使用场景 1:在对象跨层传递的时候,使用ThreadLocal可以避免层次之前数据传递; 2:线程之间的数据隔离; 3:保存一些事物,数据库连接信息 1.2 实际原理 方法1:get public T get() { Thread t = Thread.currentThread(); Th
阅读全文
摘要:1:SQL优化 1.1 MySql优化 1.1.2 ICP(index condition pushdown) 自MySQL5.6引入的优化方式,只能用于二级索引(secondary index)。 优化前:当进行索引查询时,首先根据索引查询记录(Storage Engine),然后再根据WHERE
阅读全文
摘要:1:Tansaction实现 1.1:开启事物的注解及功能 1.1.1 注解 @EnableTransactionManagement 使用@Import注解: @Import(TransactionManagementConfigurationSelector.class) 最终会加在Bean:
阅读全文
摘要:1:高性能锁 1.1 互斥 在分布式高并发的条件下,需要保证,同一时刻只能有一个线程获得锁。 1.2 防止死锁 在分布式高并发的条件下,比如有个线程获得锁的同时,还没有来得及去释放锁,就因为系统故障或者其它原因使它无法执行释放锁的命令,导致其它线程都无法获得锁,造成死锁。 所以分布式非常有必要设置锁
阅读全文
摘要:1:CountDownLatch CountDownLatch countDownLatch = new CountDownLatch(1);new Thread(()->{ try { Thread.sleep(10000L); } catch (InterruptedException e)
阅读全文
摘要:1:使用代码 1.1:Callable使用 可以用于在需要有返回值得时候使用。 Callable<String> callable = new Callable<String>() { @Override public String call() throws Exception { System
阅读全文
摘要:1:公平锁和非公平锁 1.1 流程图 1.2 源码分析 锁使用 final Lock lock = new ReentrantLock(); new Thread(()->{ lock.lock(); try { System.out.println(" "); Thread.sleep(100
阅读全文

浙公网安备 33010602011771号