- 博客(4)
- 收藏
- 关注
原创 Java手写堆实现
poll方法是从堆顶移除一个元素,所以移除之后也要调整,堆是基于数组的,和末尾元素交换就行了,之后再向下调整。java的优先队列底层也是数组,每次调用offer()方法插入一个元素之后,要对堆进行重新调整,关键函数是。堆只是保证了堆顶的原始是整个堆中最大的或最小的,并不能保证层序遍历得到的序列是有序的。小根堆可以看到堆顶元素是最小的,每颗子树的根节点都是该树所有元素中最小的。堆中插入元素之后,在对应的位置需要up。,他的底层实现就是堆,常见的操作有。的堆叫做最大堆或大根堆,的堆叫做最小堆或小根堆。
2024-10-03 18:35:21 461
原创 ThreadLocal
ThreadLocal是通过线程副本隔离的方式来保证线程安全的ThreadLocalMap的key是弱引用主要是为了避免内存泄漏在使用线程池的应用场景下有弱引用也会出现内存泄漏,主要原因是线程可能不会被销毁,从而导致引用一直存在,需要手动去remove防止内存泄漏。
2024-10-01 18:52:14 476 1
转载 请求限流算法
临界问题,假设窗口大小还是1,阈值还为5,假设第一个请求是0.1刻打来的,lastAcquireTime=0.1,后四个请求是0.5-1.0之间打来的,1s内5和请求没有什么问题。然后1.1刻又打来一个请求,此时窗口更新,lastAcquireTime=1.1,之后在1.1s-1.5s内又打入4个请求,在该窗口内仍然是没什么问题的,但是在0.5s-1.5s这个窗口内请求次数为9次,超过了定义的阈值5。假设窗口大小是1s,限流阈值是5,则在1s内的请求限制在5次内,多出的请求都会被拒绝。
2024-10-01 01:46:27 9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人