前言本文亲手操练直播项目,对其中的原理及源码进行解读和剖析。一、直播模型与框架图一个通用的直播模型一般包括三个模块:主播方、 服务器端和播放端。一个描述数字音视频传输和播放流程的简单步骤:录制 -> 编码 -> 网络传输 -> 解码 -> 播放首先是主播方,它是产生视频流的源头,由一系列流程组成:第一,通过一定的设备来采集数据;第二, ......
73
0
0
2024-03-08
一、前言C语言作为一种高效、灵活的编程语言,标准库的使用对于开发人员来说是不可或缺的。其中,stdlib.h是C语言中一个重要的标准库头文件,提供了许多常用的函数和工具,以便开发人员能够更加便捷地进行内存管理、字符串处理、随机数生成等操作。本文将对stdlib.h中的各个函数进行全面介绍,包括它们的功能和使用方法,以帮助开发者更好地理解和利用该标准库。二、s ......
70
0
0
2024-03-07
🔭个人主页: 北 海🛜所属专栏: Linux学习之旅、神奇的网络世界💻操作环境: CentOS 7.6 阿里云远程服务器文章目录🌤️前言🌦️正文TCP网络程序1.字符串回响1.1.核心功能1.2.程序结构服务器1.3.初始化服务器1.4.启动服务器1.4.1.处理连接请求1.4.2.业务处理1.4.3.回调函数1.5.服务器源文件客户端1.6.初始化客户端1 ......
69
0
0
2024-03-07
单链表基本操作的实现导言大家好,很高兴又和大家见面啦!!! 在上一篇中,我们详细介绍了单链表的两种创建方式——头插法与尾插法,相信大家现在对这两种方式都已经掌握了。今天咱们将继续介绍单链表的基本操作——查找、插入与删除。在开始今天的内容之前,我们先通过尾插法创建一个单链表,如下所示://定义单链表数据类型 typedef struct LNode{ i ......
67
0
0
2024-03-06
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlTableModule组件的常用方法及灵活运用。在多数情况下我们需要使用SQL的方法来维护数据库,但此方式相对较为繁琐对于表格等数据的编辑非常不友好,在Qt中提供了QS ......
70
0
0
2024-03-06
线程池实现基于C++可以说是一道经典的计算机本科学生练习题。本篇文章会从一个传统实现的线程池开始讲起。一、线程池和任务我们看一下线程池类的基本结构。线程池本质是有一些线程在后台等待队列执行任务,我们只需要将任务存储在队列中。线程会从任务队列中获取任务执行。这里最基本的成员就是线程队列,任务队列,条件变量用于通知线程组任务事件,队列锁避免竞争,终止条件。cla ......
61
0
0
2024-03-06
前言在C++中很多地方需要用到图片,图片格式的转换成了难题。不过,可以使用一些库来实现图片格式的转换。其中,OpenCV 是一个广泛使用的计算机视觉库,它提供了许多图像处理和转换的功能。本文将用一些简单的实例来展示如何使用 OpenCV 进行图片格式的转换。环境安装如果你不想编译的话,如果你是在Ubuntu下可以使用apt命令安装opencv库:sudo a ......
88
0
0
2024-03-06
在这篇博客中,我们将学习如何使用C++和OpenGL构建一个简单的3D游戏引擎。我们将涵盖图形初始化、渲染循环、3D模型加载等基本概念,并提供代码示例来帮助你入门游戏引擎的开发。步骤1:设置开发环境首先,确保你的系统中已经安装了C++编译器(如g++)和OpenGL。然后,你需要使用一个图形库来方便地与OpenGL进行交互。在这里,我们将使用GLFW(一个轻 ......
85
0
0
2024-03-04
一、set 集合容器遍历1、使用迭代器进行正向迭代与反向迭代std::set 集合容器 提供了 begin、end、rbegin 和 rend 这几个成员函数,用于 获取 迭代访问链表中的元素 的 迭代器 , 函数原型如下 :获取首元素迭代器 : 返回一个迭代器 , 指向集合的第一个元素 ;iterator begin(); const_iterato ......
69
0
0
2024-03-03
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableView与TreeView组件联动的常用方法及灵活运用。本章我们继续实现表格的联动效果,当读者点击TableView或TreeView中的某一行时,我们让其实现自动 ......
75
0
0
2024-03-03
讲解 "string size must be a multiple of element size" 错误在编程过程中,尤其是在使用一些底层编程语言或库时,您可能会遇到各种错误消息。其中之一是 "string size must be a multiple of element size"。本篇博客文章将向您解释这个错误消息的含义,并给出解决方案。错误解读 ......
60
0
0
2024-03-03
一、priority_queue 优先级队列容器1、priority_queue 优先级队列容器简介容器简介 : priority_queue 优先级队列容器 是一种数据结构 , 可以 存储元素并根据优先级进行访问 ;容器元素顺序排列 : priority_queue 优先级队列容器 中的 元素顺序 , 是根据 优先级 决定的 , 优先级 最高的元素 , 位 ......
64
0
0
2024-03-03
一、list 双向链表容器 的 中间位置 插入 元素1、在指定位置插入 1 个元素 - insert 函数下面的 std::list#insert 函数原型的作用是 在 指定的 迭代器位置 position 上 , 插入 1 个 value 值元素 ;iterator insert(const_iterator position, const value_t ......
63
0
0
2024-03-03
一、前言随着数字化时代的到来,人们在各个方面需要使用密码来保护个人隐私和敏感信息的安全。为了确保密码的安全性,密码应该是足够强大和难以猜测的,这就需要密码生成器来帮助用户生成高强度的随机密码。随机密码生成器是一种计算机程序,通过使用随机化算法和密码字符集合,生成具有预定长度和复杂性的密码。它可以用于创建密码保护的账户、加密文件、访问控制等场景。本项目使用 C ......
77
0
0
2024-03-03
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableView组件与数据库联动的常用方法及灵活运用。在Qt中,通常我们不会在TableView等组件中保存数据,一般会将这些数据存储至数据库或者是文件中保存,当使用时则动 ......
80
0
0
2024-03-02