iv019-Spring支持的常用数据库事务传播属性和事务隔离级别
摘要:事务是恢复和并发控制的基本单位 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 | 属性 | 释义 | | | | | 原子性(atomicity) | 一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。 | | 一致性(consiste
阅读全文
posted @
2021-03-22 11:08
whn051799
阅读(54)
推荐(0)
iv018-redis的LRU算法简介
摘要:LRU:least recently used 最近最少使用的 LRU的算法核心是哈希链表(本质就是HashMap+DoubleLinkedList) 编码实现: public class LRUDemo<K, V> { private int cacheSize; private Map<K, N
阅读全文
posted @
2021-03-22 10:49
whn051799
阅读(74)
推荐(0)
iv017-Redis缓存过期淘汰策略
摘要:###1.Redis内存满了怎么办? ####1.1查看Redis最大占用内存 打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。 ####1.2redis默认内存多少可以用? 如果不设置最大内存大小或者最大内存大小为0,在64位操作系统下不限制内
阅读全文
posted @
2021-03-22 10:46
whn051799
阅读(55)
推荐(0)
iv016-Redis传统五大数据类型落地应用
摘要:###1.string ####1.1最常用 set key value get key mset k1 v1 k2 v2 mget k1 k2 ####1.2数值增减 递增数字:INCR key 增加指定的整数:INCRBY key increment 递减数值:DECR key 减少指定的整数:
阅读全文
posted @
2021-03-22 10:41
whn051799
阅读(47)
推荐(0)
iv015-spring的aop顺序和spring的循环依赖
摘要:###1.spring的aop顺序 ####1.1Aop常用注释 @Before:前置通知:目标方法之前执行 @After:后置通知:目标方法之后执行 @AfterReturning:返回后通知:执行方法结束前执行(异常不执行) @AfterThrowing:通知异常:出现异常时候执行 @Aroun
阅读全文
posted @
2021-03-22 10:20
whn051799
阅读(112)
推荐(0)
iv014-转载-java AQS的实现原理(大部分同步类都依赖AQS实现)
摘要:转载地址:https://www.jianshu.com/p/279baac48960 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)!,类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问
阅读全文
posted @
2021-03-22 09:52
whn051799
阅读(61)
推荐(0)
iv013-AQS
摘要:###1.AQS是什么? AbstractQueuedSynchronizer简称AQS,抽象队列同步器。 是用来构建锁或者其他同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类型变量表示持有锁的状态。 ###2.为什么AQS是J
阅读全文
posted @
2021-03-18 11:57
whn051799
阅读(55)
推荐(0)
iv012-LockSupport
摘要:###1.LockSupport是什么? LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park()和unPark()的作用分别是阻塞线程和解除阻塞线程 ###2.线程等待唤醒机制(wait/notify) 1.三种让线程等待和唤醒的方法 方式1:使用
阅读全文
posted @
2021-03-18 11:51
whn051799
阅读(48)
推荐(0)
iv011-死锁编码及定位分析
摘要:###1.死锁是什么? 死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,线程的资源请求都能得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 ###2.产生死锁的主要原因 1.系统资源不足 2.
阅读全文
posted @
2021-03-18 11:36
whn051799
阅读(106)
推荐(0)
iv010-线程池
摘要:###1.为什么用线程池,线程池的优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 他的主要特点为:线程复用,控制最大并发数,线程管理。 第一:降低
阅读全文
posted @
2021-03-18 11:26
whn051799
阅读(119)
推荐(0)
iv009-Callable接口
摘要:###1.Callable构建线程的使用 示例代码: class MyThread implements Callable<Integer> { @Override public Integer call() throws Exception { int sum = 0; for (int i =
阅读全文
posted @
2021-03-18 11:09
whn051799
阅读(71)
推荐(0)
iv008-线程之间通信之生产者消费者
摘要:###1.wait和notify传统版本 示例代码: class MyData { private int number = 0; public synchronized void add() throws InterruptedException { while (number != 0) { t
阅读全文
posted @
2021-03-18 11:08
whn051799
阅读(67)
推荐(0)
iv007-synchronized和Lock的区别
摘要:###1.原始构成 synchronized是关键字属于JVM层面, monitorentry(底层是通过monitor对象来完成,其wait/notify等方法也是依赖于monitor对象只有在同步块或方法中才能调用wait/notify等方法) monitorexit Lock是具体类(java
阅读全文
posted @
2021-03-18 11:05
whn051799
阅读(68)
推荐(0)
iv006-阻塞队列
摘要:阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下 当阻塞队列是空的时候,从队列中获取元素的操作将会被阻塞。 当阻塞队列是满的时候,往队列里添加元素的操作将会被阻塞。 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。 试图往已满的阻
阅读全文
posted @
2021-03-18 11:01
whn051799
阅读(80)
推荐(0)
iv005-CountDownLatch,CyclicBarrier,Semaphore
摘要:###1.CountDownLatch 让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。 CountDownLatch主要有两个方法,当一个或多个线程调用await()方法时,调用线程会被阻塞。其它线程调用countDown()方法会将计数器减1(调用countDown方法的线程不会阻塞),当
阅读全文
posted @
2021-03-18 10:50
whn051799
阅读(71)
推荐(0)
iv004-java锁
摘要:###1.公平锁和非公平锁 公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。 非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或者饥饿现象。 并发包中ReentrantLock的创建可
阅读全文
posted @
2021-03-18 10:46
whn051799
阅读(96)
推荐(0)
iv003-集合类不安全之并发修改异常
摘要:###1.ArrayList并发更新导致的异常 单线程情况下示例代码: public class ListDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i
阅读全文
posted @
2021-03-18 10:35
whn051799
阅读(141)
推荐(0)
iv002-CAS是什么
摘要:###1.CAS是什么? CAS的全称是 compare and swap(比较并交换),它是一条CPU并发原语。 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类中的各个方法。调用UnSaf
阅读全文
posted @
2021-03-18 10:27
whn051799
阅读(79)
推荐(0)
iv001-volatile是什么
摘要:###1.volatile是Java虚拟机提供的轻量级同步机制 1.1保证可见性(一个线程对主内存中变量的修改,其他线程会马上收到通知) 1.2不保证原子性 1.3禁止指令重排 ###2.JMM(Java Memory Model)(Java内存模型) JMM本身是一种抽象的概念并不真实存在,它描述
阅读全文
posted @
2021-03-18 10:14
whn051799
阅读(97)
推荐(0)