首页 > 其他分享 >直播平台搭建,需要实现的核心要素之队列

直播平台搭建,需要实现的核心要素之队列

时间:2024-07-27 08:55:41浏览次数:12  
标签:队列 items self 元素 列表 直播 def 搭建

直播平台搭建,需要实现的核心要素之队列

队列的实现

在直播平台搭建中,队列的实现分为队列的定义和操作,如前所述,队列是元素的有序集合,添加操作发生在其尾部,移除操作则发生在头部。队列的操作顺序是 先进先出(FIFO),它支持以下操作。

  • Queue() :创建一个空队列。它不需要参数,且会返回一个空队列。
  • enqueue( item ) :在队列的尾部添加一个元素。它需要一个元素作为参数,不返回任何值。
  • dequeue() :从队列的头部移除一个元素。它不需要参数,且会返回一个元素,并修改队 列的内容。
  • isEmpty() :检查队列是否为空。它不需要参数,且会返回一个布尔值。
  • size() : 返回队列中元素的数目。它不需要参数,且会返回一个整数。

在直播平台搭建中创建一个新类来实现队列抽象数据类型是十分合理的。像之前一样,我们利用简洁强大的列 表来实现队列。 既然要创建队列,我们首先要确认队列的头尾,在这里我们假设队列的尾部在列表的位置 0 处。

首先我们对队列类进行定义,一个队列中最主要最核心的要素就是队列中的元素,而新生成一个队列时,这个队列中往往没有任何元素,因此我们对队列的初始化定义为:队列中的元素为空,即引用的列表为空列表。

代码如下:

class Queue:
    def __init__(self):
        self.items = []

 

当一个队列生成以后,最常见的计算队列长度的操作是必不可少的,因此只需要计算引入列表的长度即可。

代码如下:

def size(self):
        return len(self.items)

 

既然可以计算长度,那么我们也可以判断队列是否为空,通常我们只需判断引入的列表是否为空列表即可判断队列是否为空了。

代码如下:

def isEmpty(self):
        return self.items == []

 

接下来就是我们似曾相识,但是又用途非常广泛的两种操作了,插入和删除,我们在前面讲解栈的时候进行了出栈和入栈的操作,而在队列中也有类似的操作,即入队和出队,而队列和栈最大的不同便是,入队和出队并不是在同一个地方执行的。添加操作发生在“尾部”,移除操作则发生在“头部”。

我们在此设引入的列表的 0 号位为队列的尾部,传入要插入的元素 item ,默认将其插入到列表首位,即队列的入队操作,代码如下:

def enqueue(self, item):
        self.items.insert(0,item)

 

我们在此设引入的列表的表尾为队列的头部,要进行出队操作,只需删除列表的最后一个元素即可。代码如下:

def dequeue(self):
        return self.items.pop()

 

整体的代码如下:

class Queue:
    def __init__(self):
        self.items = []
        
    def isEmpty(self):
        return self.items == []
    
    def size(self):
        return len(self.items)
    
    def enqueue(self, item):
        self.items.insert(0,item)
        
    def dequeue(self):
        return self.items.pop()

 

以上就是直播平台搭建,需要实现的核心要素之队列, 更多内容欢迎关注之后的文章

 

标签:队列,items,self,元素,列表,直播,def,搭建
From: https://www.cnblogs.com/yunbaomengnan/p/18326607

相关文章

  • 质押托管模式APP开发/智能合约DAPP系统开发搭建
    质押托管模式APP的开发是一个涉及多个技术环节和业务流程的复杂过程。以下是一个概括性的开发指南,旨在帮助理解质押托管模式APP的基本框架和开发要点:一、需求分析明确业务场景:首先,需要明确质押托管模式APP的业务场景,包括质押资产的种类(如加密货币、传统金融资产等)、质押流程......
  • 大牛直播SDK跨平台RTMP直播推送模块技术设计和功能列表
    整体架构大牛直播SDK跨平台RTMP直播推送模块,始于2015年,支持Windows、Linux(x64_64架构|aarch64)、Android、iOS平台,支持采集推送摄像头、屏幕、麦克风、扬声器、编码前、编码后数据对接,功能强大,性能优异,配合大牛直播SDK的SmartPlayer播放器,轻松实现毫秒级的延迟体验,满足大多数行......
  • DAY10 栈与队列part01
     理论基础文章讲解:https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html232.用栈实现队列 注意为什么要用两个栈题目链接/文章讲解/视频讲解:https://programmercarl.com/0232.%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%......
  • C++优先队列 涵盖各种易错,技巧,应用和原理(附手写代码)
    当然也可以不看==> 阅读我的文章前请务必先阅读此文章! 都是废话这个文章里有视频,不知道为什么一点开文章就会播放,可以先翻到最后暂停一下再回来看目录阅读文章须知引言优先队列的概念优先队列的创建优先队列的操作*还有一些不常用的:优先队列的技巧如果类型是结构......
  • 数据分析平台搭建指南
    数据分析平台搭建指南1.引言本文档旨在为企业提供搭建数据分析平台的指南,涵盖平台架构、技术选型、部署实施和运维管理等方面的关键内容。2.平台架构2.1架构概述本数据分析平台采用分层架构设计,包含数据采集层、数据存储层、数据处理层、数据可视化层和应用层。数据采集......
  • 软考-软件设计师(3)-数据结构与算法:树、图、队列、查找算法、排序算法、霍夫曼编码/
    场景软考-软件设计师-数据结构与算法模块高频考点整理。以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。注:博客:霸道流氓气质-CSDN博客实现知识点树:节点的度、树的度、深度、高度、满二叉树、完全二叉树、平衡二叉树、B树、二叉排序树节点......
  • 搭建.Net WebApi并配置Swagger(一)
    C#进阶之WebAPI(一)那么首先第一点:什么是WebAPI?首先我们了解一下.netframework的框架构成:   可以看到,WebAPI和mvc同属于B/S模板框架的一种,官方对于WebApi的定义是:WebAPI是一个框架,可以轻松构建HTTP服务,覆盖广泛的客户端,包括浏览器和移动设备,WebAPI是在.NetFramwo......
  • 代码随想录day10 || 232 栈实现队列, 225 队列实现栈,20 删除有效括号,1047 删除字符串相
    232实现队列//go本身并不支持原生的栈和队列结构,都是通过切片实现的//leetcodesubmitregionbegin(Prohibitmodificationanddeletion)typeMyQueuestruct{ Data[]int Sizeint}funcConstructor()MyQueue{ returnMyQueue{}}func(this*MyQueue)Push(......
  • 搭建nfs服务器
    客户端可以从该服务器的/share目录上传并下载文件一.服务端192.168.29.131的操作第一步:创建共享目录,查看share权限第二步:写配置文件第三步:更改share权限第四步:关闭防火墙第五步:看getenforce状态第六步:重启nfs服务第七步:客户端访问前先自己访问二.客户端192.16......
  • Day10 栈和队列Part1
    任务232.用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)思路算是一个模拟类的题目,用py中,用列表加上限制条件表示栈(只能用pop表示对栈顶元素出栈处理)push:用stackIn保存入队元素pop:出队时,分三种情况,如果队列......