04 2021 档案

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