文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据结构(三):队列

2023-01-31 00:29

关注

队列:先入先出(FIFO)表。

常用操作

  • Enqueue:入队,即将数据写入队列末尾
  • Dequeue:出队,即将队列开头的元素从队列中删除并返回

应用场景

  队列通常用来实现消息(任务)的快速读写,即消息队列。消息队列的常用来解决如下问题:

  • 提升系统的吞吐量:通过引入消息队列,将不是必须的业务逻辑异步处理,用户请求写入消息队列后即返回响应,而不必等待全部的业务逻辑完成,提高了cpu利用效率。
  • 实现应用解耦:用户请求通常是由一系列子业务系统配合完成,引入消息队列,可以避免业务系统间直接的相互调用,从而实现应用解耦,各子系统间相互独立,降低系统复杂度。
  • 流量削峰:类似秒杀的活动中,可以通过消息队列控制活动人数,消息队列满后,直接抛弃用户请求,缓解短时间内的高流量对服务器的压力。
  • 消息通讯:利用消息队列高效的通讯机制,实现点对点通讯或聊天室。
  • 日志处理:日志采集客户端将日志写入消息队列,日志处理服务器从读取消息队列中的日志,解决大量日志传输问题。

实现方式

  • 链表实现:比较简单,不再赘述
  • 数组实现:用数组实现一个队列,需要考虑元素出队后,数组位置单元循环利用的问题,即队列的循环数组实现

使用循环数组实现一个队列:

 1 from array import array
 2 
 3 class arr_queue(object):
 4     def __init__(self, maxsize):
 5         self._array = array('i', range(maxsize))
 6         self._head = 0
 7         self._tail = 0
 8         self._length = 0
 9         self._maxsize = maxsize
10 
11     def enqueue(self, value):
12         if self._length >= self._maxsize:
13             raise Exception('queue is full')
14         self._array[self._tail] = value
15         self._length += 1
16         self._tail += 1
17         if self._tail >= self._maxsize:
18             self._tail = 0
19 
20     def dequeue(self):
21         if self._length <= 0:
22             raise Exception('queue is empty')
23         value = self._array[self._head]
24         self._length -= 1
25         self._head += 1
26         if self._head >= self._maxsize:
27             self._head = 0
28         return value
29 
30     def __len__(self):
31         return self._length

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯