数据结构(一)-位运算
参考文献
位运算
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920 ...
数据结构-延迟队列
参考文献
一口气说出 6种 延时队列的实现方法,面试官也得服
延迟队列浅析
延迟队列概念
顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费
使用场景
有效期:限时活动、拼团等
超时处理:取消超时未支付订单、超时自动确认收货等
延迟处理:机器人点赞/观看数/评论/关注、等待依赖条件等
重试:网络异常重试、打车派单、依赖条件未满足重试等
定时任务:智能设备定时启动等
具体实现
DelayQueue延迟队列
JDK 中提供了一组实现延迟队列的API,位于Java.util.concurrent包下DelayQueue。
DelayQueue是一个BlockingQueue(无界阻塞)队列,它本质就是封装了一个PriorityQueue(优先队列)。
PriorityQueue内部使用完全二叉堆来实现队列元素排序,我们在向DelayQueue队列中添加元素时,会给元素一个Delay(延迟时间)作为排序条件,队列中最小的元素会优先放在队首。队列中的元素只有到了Delay时间才允许从队列中取出。队列中可以 ...
数据结构-阻塞队列
参考文献
什么是队列
队列是一种特殊的线性表;
特殊之处在于,它只允许在表的前端(Front)进行删除操作,在表的后端(Rear)进行插入操作;
和栈一样是一种操作受限的线性表;
是一种先进先出(FIFO的数据结构;
什么是阻塞队列
当队列为空时,消费者挂起,队列已满是,生产者挂起,这就是生产者-消费者模型,阻塞就是将线程挂起.若生产者的生产速度和消费者速度之间不匹配,就可以通过阻塞队列让速度快的暂时阻塞.
阻塞队列会通过挂起的方式来实现生产者和消费者之间的平衡,这是和普通队列最大的区别;
Java中的阻塞队列java.util.concurrent.BlockingQueue
Throws Exception
Special Value
Blocks
Times Out
Insert
add(e)
offer(e)
put(e)
offer(e,time,unit)
Remove
remove(e)
poll()
take()
poll(time,unit)
Examine
element()
peek()
offer(E e): 若队列没 ...