【算法打卡60天】打卡Day7栈:如何实现浏览器的前进和后退功能

2020-01-14  本文已影响0人  花生无翼

打卡Day7
今天学习了09 | 栈:如何实现浏览器的前进和后退功能?
09 | 队列:队列在线程池等有限资源池中的应用

如何理解“队列”?
先进者先出,这就是典型的“队列”。
栈只支持两个基本操作:入栈 push()和出栈 pop()。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。

顺序队列和链式队列
用数组实现的队列叫作顺序队列,用链表实现的队列叫作链式队列。

循环队列
如何写出没有bug的循环队列的实现代码?
确定好队空和队满的判定条件。

阻塞队列和并发队列
阻塞队列其实就是在队列基础上增加了阻塞操作.
线程安全的队列我们叫作并发队列。

线程池没有空闲线程时,新的任务请求线程资源时,线程池该如何处理?各种处理策略又是如何实现的呢?
有两种处理策略:
第一种是非阻塞的处理方式,直接拒绝任务请求;
另一种是阻塞的处理方式,将请求排队,等到有空闲线程时,取出排队的请求继续处理。

队列的应用场景
队列可以应用在任何有限资源池中,用于排队请求,比如数据库连接池等。实际上,对于大部分资源有限的场景,当没有空闲资源时,基本上都可以通过“队列”这种数据结构来实现请求排队。

本文参考【极客时间】专栏《数据结构与算法之美》

上一篇下一篇

猜你喜欢

热点阅读