摘要: 同步工具类存在的意义 管程或者信号量可以解决所有的并发问题,那么同步工具类存在的意义是什么呢? 两个字:方便。 针对不同的并发场景,使用对应的工具类可以快速完成业务开发。 1. 锁工具 1.1 ReadWriteLock 读锁 写锁 1.1.1 使用场景 允许多个线程同时读共享变量 只允许一个线程写 阅读全文
posted @ 2023-11-30 15:25 kiper 阅读(24) 评论(0) 推荐(0) 编辑
摘要: JUC类图 1 定义 AQS(AbstractQueuedSynchronizer)是一个用来构建锁和同步器的框架,是Java并发包中的核心基础组件。 使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如ReentrantLock,Semaphore,其他的诸如ReentrantReadWri 阅读全文
posted @ 2023-11-29 11:45 kiper 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 0. 用锁的最佳实践 永远只在更新对象的成员变量时加锁 永远只在访问可变的成员变量时加锁 永远不在调用其他对象的方法时加锁 1. Lock与Synchronize区别 Lock是由代码实现,核心是CAS操作;synchronize则是关键字,通过修改对象头中的锁信息,由JVM实现调用。更详细的底层原 阅读全文
posted @ 2023-11-28 17:18 kiper 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 1. 线程池 作用 提升资源使用率,避免无意义的线程重复创建销毁成本 提升反应速度,已提前创建线程 方便管理线程资源,如可控制并发量、批量中断等 参数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keep 阅读全文
posted @ 2023-11-27 17:15 kiper 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 1.基本概念 互斥 只有一个线程能访问临界区。 临界资源 多个线程可以共享系统中的资源,但是临界资源只允许一个线程在某一时刻访问。如某些变量、硬件资源。 临界区 访问临界资源的代码即临界区。 2.信号量与管程 管程(Monitors)和信号量(Semaphores)是操作系统中用于实现并发编程的两种 阅读全文
posted @ 2023-11-25 16:36 kiper 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 1. 操作系统线程生命周期 操作系统线程生命状态有5种。 初始状态(New) 进程正在被创建时的状态。仅为线程对象开辟了一块堆内存,实际上线程在操作系统层面还未创建。 就绪状态 (Ready) 可运行,由于其他进程处于运行状态而暂时停止运行 运行状态 (Running) 该进程此时正占用CPU 阻塞 阅读全文
posted @ 2023-11-24 15:27 kiper 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 主从数据不一致 原因 异步复制导致数据不一致,可能是 网络传输延迟 从库处理复杂命令阻塞 措施 保证良好的网络环境 监控从库复制进度 通过INFO replication可以查看主库从库各自写命令的偏移(master_repl_offset及slave_repl_offset),SDK或者中间件组件 阅读全文
posted @ 2023-11-20 16:51 kiper 阅读(45) 评论(0) 推荐(0) 编辑
摘要: Redis命令的原子操作 redis虽然是单线程,但是一个客户端发送的一组命令却不是原子操作。 redis自带的原子操作命令有incr {key}、decr {key}等,但是更为复杂的命令,比如先获取值,然后乘以2,最后置为新值这三步操作,有可能中间会有其他客户端的命令插入导致值已经变化,出现并发 阅读全文
posted @ 2023-11-20 15:57 kiper 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 八个淘汰策略 volatile-random volatile-lru volatile-lfu volatile-ttl noeviction allkeys-lru allkeys-random allkeys-lfu LRU 标准LRU算法是由双向链表及Hash表实现,具体代码实现可以参考LR 阅读全文
posted @ 2023-11-16 21:20 kiper 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 缓存雪崩 大量缓存同时过期,就叫缓存雪崩。 缓存中有大量数据同时过期,导致大量请求缓存缺失 redis实例宕机 措施 设置过期时间时,随机小范围打散 服务降级 缓存命令率下降到警告值或者数据库负载突然增大时,很可能发生了缓存雪崩。 可以通过服务降级措施,来保证核心接口能正常查询数据库。也可以通过熔断 阅读全文
posted @ 2023-11-16 16:19 kiper 阅读(8) 评论(0) 推荐(0) 编辑