栈(Stack)和队列(Queue)
栈(Stack)和队列(Queue)是两种操作受限的线性表。
栈与队列的相同点:
- 都是只允许在端点处插入和删除元素的数据结构。
栈与队列的不同点:
- 栈是仅在栈顶进行访问,遵循后进先出的原则(LIFO);队列是在队尾插入数据,在队头删除数据(FIFO)。
栈与队列的应用场景:
-
栈
网络浏览器多会将用户最近访问过的网址组织为一个栈。这样,用户每访问一个新页面,其地址就会被存放至栈顶;而用户每按下一次“后退”按钮,即可沿相反的次序访问此前刚访问过的页面。
-
队列
当我们使用邮箱群发邮件时,只需等待很短的时间,浏览器提示提交成功,正在发送之类的信息时,用户就可以关掉浏览器,稍后,收件地址栏里的邮箱将陆续收到该群发邮件,再比如群发定时邮件,以及当商城系统中有客户下单,客户,客服,仓库等相关人员收到订单邮件信息。
目前我使用的是使用ActiveMQ消息队列,用于给用户发送异步通知。