摘要:
基础知识 非活跃,是指客户端(这里是浏览器)与服务器端建立连接后,长时间不交换数据,一直占用服务器端的文件描述符,导致连接资源的浪费。 定时事件,是指固定一段时间之后触发某段代码,由该段代码处理一个事件,如从内核事件表删除事件,并关闭文件描述符,释放连接资源。 定时器,是指利用结构体或其他形式,将多 阅读全文
摘要:
上一篇主要对状态机和服务器解析请求报文做了介绍。本篇将介绍服务器如何响应请求报文,并将该报文发送给浏览器端。首先介绍一些基础API,然后结合流程图和代码对服务器响应请求报文进行详解。 基础API部分,梳理stat、mmap、iovec、writev 流程图部分,描述服务器端响应请求报文的逻辑,各模块 阅读全文
摘要:
上篇对http连接的基础知识、服务器接收请求的处理流程进行了介绍,本篇将结合流程图和代码分别对状态机和服务器解析请求报文进行详解 流程图部分:描述主,从状态机调用关系与状态转移过程 代码部分:结合代码对http请求报文的解析进行详解 流程图与状态机 从状态机负责读取报文的一行,主状态机负责对该行数据 阅读全文
摘要:
概述 在服务器项目中,http请求的处理与响应至关重要,关系到用户界面的跳转与反馈,这里将分为上、中、下三个部分简介,具体如下: 上篇:梳理基础知识,结合代码分析HTTP类及请求接收 中篇:结合代码分析请求报文分析 下篇:结合代码分析请求报文响应 基础知识方法,包括epoll、HTTP报文格式、状态 阅读全文
摘要:
# 基础知识 ## 静态成员变量 将类成员变量声明为static,则为静态成员变量,与一般的成员变量不同,无论建立多少对象,都只有一个静态成员变量的拷贝,静态成员变量属于一个类,所有对象共享。 静态变量在编译阶段就分配了空间,对象还没创建时就已经分配了空间,放到了全局静态区。 * 静态成员变量 * 阅读全文
摘要:
本篇主要围绕服务器项目中涉及的知识进行介绍,详细可参考《Linux下高性能服务器编程》。 # 服务器编程基本框架 主要由I/O单元,逻辑单元和网络存储单元组成,其中每个单元之间通过请求队列进行通信,从而协同完成任务。 I/O单元:用于处理客户端连接,读写网络数据; 逻辑单元:用于处理业务逻辑的线程; 阅读全文
摘要:
RAII RAII译名为"资源获取即初始化" 在构造函数中申请分配资源,在析构函数中释放资源。因为C++的机制保证了吗,当一个对象创建的时候,自动调用构造函数,当对象超出作用域的时候会自动调用析构函数。所以,在RAII的指导下,应该使用类来管理资源,将资源和对象的生命周期绑定 RAII的核心思想是将 阅读全文
摘要:
# 为什么需要视频编码 视频是由图像组成的,比如一张1920x1080分辨率的高清图片,我们一共需要1920x1080x8x3个bit。1920x1080 是像素的数量,3 代表的是RGB三个值,而 8bit 则是每个像素值的大小。这样一张图片,算下来总共 47Mb。 现在的视频一般都是 30fps 阅读全文
摘要:
# 主流图像存储格式 参考文章:[一文读懂 YUV 的采样与格式 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/113122344) RGB颜色编码,每个像素点都有红,绿,蓝三个原色,其中每种原色都占用8bit,即1个字节,那么一个像素点也就占用24b 阅读全文
摘要:
## IEEE802协议概览 | 协议 | 说明 | 功能 | | | | | | IEEE802 | IEEE802是一种物理协议,因为有很多子协议,把这些协议汇集在一起就叫802协议集 | | | IEEE 802.1x | 基于端口的访问控制协议 | 能够在利用IEEE 802局域网优势的基础 阅读全文