- 博客(12)
- 收藏
- 关注
原创 redis的应用
使用offer 推送到延迟队列(RDelayedQueue), 延迟队列的消息到期后, 会移动至RBlockingQueue(阻塞队列中), 订阅者从阻塞队列中获取消息进行消费。redisson的配置。
2024-01-02 13:58:15
409
1
原创 代理的应用
不同点:jdk的动态代理要求该类必须有接口, 且只能处理接口中的方法, cglib 没有这个限制。相同点:都是为了增强某一个类中的方法。基于 cglib的动态代理。基于jdk的动态代理。
2023-12-27 10:30:26
399
1
原创 基于锁的几种更新
在规定时间内, 反复尝试获取锁, 获取到锁, 处理业务逻辑, 否则等待, 直到过期。尝试一次, 获取锁资源, 获取锁才能进行下面的操作, 否则等待, 过期释放。尝试注册节点路径, 注册成功代表获取锁。底层基于redis的setNx 命令。查询时不加锁, 更新时通过版本号。查询时加锁, 更新时不加锁。
2023-12-13 19:28:31
90
原创 集合遍历时删除元素的几种方法
CopyOnWriteArrayList在添加/删除元素时, 不直接添加元素, 先将原容器复制生成一个新的容器, 在新的容器上添加/删除元素, 之后再用原容器指向新容器, 才用了读写分离的思想, 在迭代的过程中不需要检测fast-fail异常。在test0方法中, 在集合遍历的过程中添加删除元素, 会抛出ConcurrentModificationException,在遍历的过程中, 检测到对象的并发修改, 但不允许这种修改, 就会抛出该异常。Vector:读写相同的容器, 读写互斥(加锁)
2023-12-13 16:17:45
283
原创 集合排序的几种方式
comparable:使某个类具备可排序的能力, 实现comparable, 重写compareTo 即可。comparator:比较器接口, 给不具备排序能力的对象进行排序。
2023-12-13 11:08:06
85
原创 索引覆盖和索引下推
索引下推是mysql 5.6引入的一种优化技术, 默认开启, 当使用索引下推时, explain 执行计划中extra 字段为。2.把第一步查出的索引和a>a2和c=c1 传给 mysql存储引擎, 存储引擎自行判断不符合条件的数据, 减少了回表次数。idx_abc(a, b, c) a,b,c为一个联合索引。查询一个语句时, 只用从索引中就能获取, 不必从表中获取, 无需回表。1.mysql 会先查询a>a2 的所有索引,1.mysql 会先查询a>a2 的所有索引。
2023-12-08 15:41:59
128
原创 ReentrantLock
tryLock(5, TimeUnit.SECOND): 获取锁的最大等待时间为5秒, 其间会一直申请锁。非公平锁:不按照顺序获得锁, 同时尝试获得锁, 能获取到就直接获取锁, 获取不到进入队列等待。与非公平锁类似, 多了一个前置条件, 先判断队列中是否有线程, 没有时尝试申请锁。公平锁:按照申请顺序获得锁, 所有线程在队列中排队, 队列中的第一个先拿到锁。缺点:可能会导致队列中的线程, 长时间或一直获取不到锁, 最后饿死的情况。优点:cpu不必唤醒所有线程, 减少唤醒线程的开销, 吞吐率高点。
2023-12-01 15:32:09
413
1
原创 volitale
volitale修饰的变量在修改时, 会把工作内存的值刷回主内存, 根据缓存一执性原则, 其他线程的工作内存也会把主内存中的值加载进自己的工作内存, 实现了可见性。若是情况二, 在执行外层singleton==null时, 可能对象已赋值, 返回ture, 但此时对象还未初始化, 后续在用到这个对象时, 容易出现空指针异常。在并发情况下, 两个线程同时执行1, 拿到的内存的值一样, 自增完, 值只加了一次。volitale修饰singleton对象, 禁止指令重排, 控制对象的初始化。
2023-12-01 14:31:56
119
1
原创 AQS和CAS
CAS操作包含3个操作数, 内存位置V, 预期原值A, 新值B, 在进行并发修改的时候, 先比较A和V的值是否相等, 如果相等, 把值替换为B, 否则不进行任何操作。工作原理:多个线程通过对state共享变量进行修改来实现竞态条件, 竞争失败的线程加入FIFO队列并阻塞(阻塞的前提是,当前线程所在节点的前置节点是正常状态,避免链表中存在异常线程导致无法唤醒后续线程), 抢到竞态资源的线程释放资源后, 后续的线程按照FIFO顺序实现有序唤醒。1.加入阻塞队列的线程,需要判断前置节点是否是正常状态。
2023-11-28 23:48:17
556
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅