C++ Muduo 库
C++ Muduo 库https://www.bilibili.com/video/BV1UE4m1R72y/?spm_id_from=333.337.search-card.all.click&vd_source=28887ecca1f25a715214067a2b3b58ac noncopyable 禁止拷贝我们在看Muduo库代码的时候可以看到,基本上大多数class都会继承noncopyable类,我们看一下noncopyable.h代码 #ifndef NONCOPYABLE_H#define NONCOPYABLE_Hclass noncopyable{public: noncopyable(const noncopyable&) = delete; noncopyable& operator=(const noncopyable&) = delete;protected: noncopyable() = default; ~noncopyable() =...
基于IPV4的流媒体广播
基于IPV4的流媒体广播这个项目和webserver挺像的,但是这个是基于UDP的,实现了一个组播。有服务端和客户端两个。 服务端:主要是不停的向外广播自己的节目单和节目内容(没错,就算没有客户端开启,也会一直广播) 客户端:主要是根据自己的需求订阅服务端的节目单,然后接收相应的节目数据,传递给ffmpeg,让ffmpeg来解析一下内容,然后播放出来(是不是感觉挺高大上的,其实不是,只是简单的接收所有的数据,然后判断这个数据里面的ID是不是自己选择的就好,是自己选择的就保留,不是就丢弃) 运行起来原项目git:https://github.com/litbubo/Streaming_media_broadcasting_system_based_on_IPv4 环境: Ubuntu 20.04...
ffmpeg
C++ FFMPEG 项目这个项目主要是为了学习FFMPEG 完整的主要功能 是 实现对一个封装格式的视频(比如MP4)进行解码,随后获取音视频采样的数据,通过实现音视频同步之后再调用音频驱动与视频取驱动进行播放 这里做了一些简化操作 完成的功能 是 解码之后再进行编码最后再将之组合一下 形成 一个新的 封装好的mp4文件 整体的框架是这样的: FFMPEG介绍对于FFMPEG这个强大的的跨平台多媒体框架就不过多介绍了。咱们平时再用的时候主要是用他的命令行来进行操作。这个项目主要是使用C++结合FFMPEG对音视频进行处理。所以这里主要介绍一下C++...
tinyWebServer
tinyWebServer 项目写在前面: 学习了C++很久一直很想找个项目来做做看一看,验证一下自己目前的学习进度,于是在网上搜了一下,几乎每一篇博客都会有这个项目的推荐,也有人说这个项目做的人很多,不可以写在简历上。但是我觉得做的人很多就代表着很经典,咱们应该尝试着做一下。 刚开始看这个项目的代码的时候完全不知道如何下手,看也看不懂,搞的我都快怀疑自己的能力了。后来想了一下,确实不应该这么着急,可以提前了解一下项目的知识再重新来做一下。 于是就先做了三个小项目,每个项目都挺经典的,而且项目的代码量也很小。 线程池的项目:(主要学习线程池的概念和用法) 项目介绍:https://blog.zqzhang2025.com/2025/04/13/ThreadPool/ git链接:https://github.com/zqzhang2023/zzqStudy/tree/main/project/2_ThreadPool tinyhttpd...
chatRoom
chatRoom 项目git:https://github.com/zqzhang2023/zzqStudy 简单介绍:socket的简单应用,简单来说,就是一个服务端:server 许多个客户端:client1 client2 client3 client4… 现在要把这么多客户端拉到一个聊天室里面,实现群聊通信 实现方式:其实思想很简单,就是 client_i 向 server发送消息,然后server接收到消息之后,把消息转发给除却 client_i 之外的所有的 客户 这里主要学习 I/O多路复用技术 之前学习的基础的 socket 是客户端 服务器 一对一的,现在需要服务器接收多个客户端的连接,因此需要用到 I/O多路复用技术 I/O多路复用技术为什么使用socket 中的许多操作会阻塞进程,比如服务端的accept 还有两端的 recv 等操作,如果要接受多个客户端,就不能阻塞进程。 有一种方法就是 多线程操作,每个线程接收一个,但是这种方法会严重的浪费内存空间,高并发的程序中 上千个客户端,就需要申请上千个线程 而且每一次切换线程...
数据结构 王道2026学习笔记(还没学习完)
数据结构 王道2026学习笔记第一章 绪论1.1 数据结构的基本概念概念和术语 数据数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 数据元素数据元素是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。 数据项一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。 数据对象数据对象是性质相同的数据元素的集合,是数据的子集。 数据类型 数据类型是一个值的集合和定义在此集合上的一组操作的总称。 原子类型:其值不可再分的类型,如整型、浮点型、字符型等。 结构类型:其值可以再分的类型,如整形数组、浮点型数组、结构体、链表、栈、队列等。 抽象数据类型(Abstract Data Type,...
计算机操作系统 王道2026学习笔记
擦作系统 王道2026学习笔记第一章 计算机系统概述1.1 操作系统的基本概念操作系统的定义:控制和管理整个计算机系统的硬件与软件资源,合理地资助、调度计算机的工作和资源的分配,基进而为用户和其他软件提供方便的接口与环境的程序集合。操作系统是计算机中族基本的软件系统。 操作系统的功能和目标1.系统资源的管理者 处理器管理 存储器管理 文件管理 设备管理 2.作为用户和计算机系统之间的接口 命令接口 联机命令接口:强调交互性,用户输入命令,操作系统来完成指令 脱机命令接口:批处理命令接口,用户提前编辑命令列表,操作系统来完成 程序接口 由一系列的系统调用组成,用户通过请求这些命令来使得操作系统完成指令(GUI界面的等) 3.实现了对计算机资源的扩充 工人 操作 机器,机器就有更大的作用,于是,工人 便成为了 机器 的...
计算机网络 王道2026学习笔记
计算机网络 王道2026学习笔记第一章 计算机网络体系结构1.1 计算机网络概述计算机网络的概念计算机网络是一个将分散的、独立的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 由若干节点(计算机,集线器,交换机或路由器等)和连接这些节点的链路组成。 网络之间通过 路由器...
C++ 设计模式
...
C++ Thread
C++线程基本介绍:1.多线程的含义 多线程(multithreading),是指在软件或者硬件上实现多个线程并发执行的技术。具有多核CPU的支持的计算机能够真正在同一时间执行多个程序片段,进而提升程序的处理性能。在一个程序中,这些独立运行的程序片段被称为“线程”(Thread),利用其编程的概念就叫作“多线程处理”。 2.进程与线程的区别 进程是指一个程序的运行实例,而线程是指进程中独立的执行流程。一个进程可以有多个线程,多个线程之间可以并发执行。 一个程序有且只有一个进程,但可以拥有至少一个的线程。 不同进程拥有不同的地址空间,互不相关,而不同线程共同拥有相同进程的地址空间。 线程创建thread #include<iostream>#include<thread>using namespace std;void ThreadFunctionA(int A){ for(int i=0;i<A;i++){ cout<<"线程...