面试题3
LockSupport
用于创建锁和其他同步类的基本线程阻塞原语。
- 3中让线程等待和唤醒的方法
- Object的wait()和notify()
- 必须在synchronized代码块里
- notify()在wait()后面时,程序无法执行,无法唤醒
- Condition的await()和sinal()
- 必须和Lock()unLock()搭配使用
- 顺序不能错
- LockSupport的park()和unpark()
- 无锁块要求
- 可以先唤醒,后等待
- 线程阻塞需要消耗凭证,凭证最多一个
- Object的wait()和notify()
AQS (抽象的队列同步器)
- FIFO等待队列
- 抢不到锁的需要排队等候

AQS=state+CLS队列
Node=waitStatus+前后指针指向
AQS队列的基本结构

Spring的AOP
- 常用注解

- @Before>@AfterReturning>@After
Spring的循环依赖
- setter注入且为Singleton,就不会有循环依赖问题
- Spring内部通过三级缓存来解决循环依赖问题---DefaultSingletonBeanRegistry



Redis






zset


redis过期淘汰策略
- 内存达到使用上限,会报OOM
- 达到过期时间,三种删除方式
- 定时删除,产生大量性能消耗,也会影响读写。
- 惰性删除,下次访问数据时,未过期返回数据,过期删除返回nil,对内存不友好。
- 定期删除,每隔一段时间执行一次删除过期见键操作。
8种缓存淘汰策略


浙公网安备 33010602011771号