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

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

队列的实现

在直播平台搭建中,队列的实现分为队列的定义和操作,如前所述,队列是元素的有序集合,添加操作发生在其尾部,移除操作则发生在头部。队列的操作顺序是 先进先出(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()

 

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/772491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决--SecureCRT乱码问题

SecureCRT是一个商业终端连接工具,支持多种自定义设置。默认设置下,通过SecureCRT连接SSH服务器可能出现中文乱码的情况。这是由于SecureCRT字符编码与服务器的字符编码不一致造成的。解决:将SecureCRT字符编码设置成与服务器的字符编码一致即可,将SecureCRT字符编码设置成…

动态内存分配的策略研究

使用Carnegie Mellon University提供的C语言模拟代码为测试,验证多种分配策略的特性,为设计新的更高效的算法进行探路,工程文件附于文章末尾。 基本宏定义 阅读C语言测试模型,得到基本分配块的结构约定。#define ALIGNMENT 8 //校准字长,4或8 #define ALIGN(size…

Naplespu微体系结构内多个插件融合分析(草稿)

Naplespu微体系结构内多个插件融合分析(草稿) http://www.naplespu.com/doc/index.php?title=Detailed_studies 介绍 打算展示替换链是如何相对于L2缓存发生的,观察目录控制器是如何演变以管理此类情况的发生的。主要目的是测试发生L2替换的所有情况,如图所示:目录控制器…

python-if elif嵌套结构

if 条件:if语句块 elif 条件:elif语句块 else:else语句块 示例:

python-换行

a=10+\20+\30 #\是换行符print(a)b=(10+20+30) #括号换行 print(b)

浅谈 I/O 与 I/O 多路复用

1.基础知识网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人聊不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。下面说的都是Linux环境下,跟Windows环境不一样哈☺。1.1 用户空间和内核空间现在操作系统都采用虚拟寻址,处理器…

服务器性能监控系统安装与配置手册

服务器性能监控系统安装与配置手册 1. 前言 本手册旨在指导用户安装与配置服务器性能监控系统,并介绍系统的主要功能及使用方式。 2. 系统概述 本系统采用 [系统名称] 作为核心监控组件,并结合 [其他组件] 实现服务器性能的实时监控、告警和数据分析。 3. 系统架构监控节点: …

Java学习Day3_上 总结

1.算术运算符: %运算: a % b = a - a / b * b 2.关系运算符: 返回值是boolean类型. 3.逻辑运算符: PASS 4.三元运算符: 条件表达式 ? : 表达式1:表达式2; public class ThreeEye {public static void main(String arg[]) {int a = 1, b = 2;int c = a > b ? a : b;System…

太卷了,阿里云免费1个月大模型算力额度,玩转Llama3.1/Qwen2等训练推理

阿里云百炼平台发布推文,提供30天免费算力额度,助力玩转 Llama3.1 训练推理。老牛同学首当其冲,去体验一把,本文详细记录了整个过程,同时给出了老牛同学的一些想法,欢迎交流学习……早上收到朋友转发的阿里云公众号推文,阿里云为用户免费提供 1 个月的训练推理等算力额度…

【待做】【攻防技术系列+免杀】从零学习Webshell免杀

项目简介 这是一本能让你从零开始学习PHP的WebShell免杀的手册 博客地址: https://blog.zgsec.cn/index.php/archives/197/项目描述 一、PHP相关资料 PHP官方手册: https://www.php.net/manual/zh/PHP函数参考: https://www.php.net/manual/zh/funcref.php菜鸟教程: https:…

如何配置 pglogical | PostgreSQL 的流复制

pglogical 扩展为 PostgreSQL 提供逻辑流复制 我们使用以下术语来描述节点之间的数据流,有意重复使用早期的 Slony 技术: • 节点 - PostgreSQL 数据库实例 • 提供者和订阅者 - 节点承担的角色 • 复制集- 表的集合 建筑细节: • pglogical在每个数据库级别上工作,而不是像…

Go语言结构体(struct)面向对象编程基础篇

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.面向对象的引入1.Golang语言面向对象编程2.结构体的引入3.结构体定义4.结构体五种初始化方式5.结构体的互相转换6.匿名结构体二.结构体方法定义1.方法概述2.方法是值拷贝传递方式3.指针类型的接收者4.…