Loading

面试题3

LockSupport

用于创建锁和其他同步类的基本线程阻塞原语。

  • 3中让线程等待和唤醒的方法
    • Object的wait()和notify()
      • 必须在synchronized代码块里
      • notify()在wait()后面时,程序无法执行,无法唤醒
    • Condition的await()和sinal()
      • 必须和Lock()unLock()搭配使用
      • 顺序不能错
    • LockSupport的park()和unpark()
      • 无锁块要求
      • 可以先唤醒,后等待
      • 线程阻塞需要消耗凭证,凭证最多一个

AQS (抽象的队列同步器)

  • FIFO等待队列
  • 抢不到锁的需要排队等候
  • image

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

Spring的AOP

  • 常用注解
    image
  • @Before>@AfterReturning>@After

Spring的循环依赖

  • setter注入且为Singleton,就不会有循环依赖问题
  • Spring内部通过三级缓存来解决循环依赖问题---DefaultSingletonBeanRegistry
    image
    image
    image

Redis

image
image
image
image
image
image
zset
image
image

redis过期淘汰策略

  • 内存达到使用上限,会报OOM
  • 达到过期时间,三种删除方式
    • 定时删除,产生大量性能消耗,也会影响读写。
    • 惰性删除,下次访问数据时,未过期返回数据,过期删除返回nil,对内存不友好。
    • 定期删除,每隔一段时间执行一次删除过期见键操作。
      8种缓存淘汰策略
      image
posted @ 2022-07-24 17:03  改冩自己ζ  阅读(31)  评论(0)    收藏  举报