摘要:
1.noexcept 在C++11中,noexcept关键字有两种主要用法:作为异常说明符(Exception Specifier)和作为运算符(Operator)。下面我们来研究这两种用法。 2.noexcept作为异常说明符 在异常处理的代码中,我们可能会看到如下的异常声明表达式: void e 阅读全文
摘要:
1 线程的基本操作 1.1 线程的创建 Linux平台上使用pthread_create来创建线程,其签名如下: int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (voi 阅读全文
摘要:
背景 在流式协议一章中,我们使用了固定长度头部来处理消息边界问题,但是固定长度头部按预定义的固定顺序有和长度排列,每个字段的位置和大小在协议设计时已经确定,无法动态调节。 示例:IP头部固定为20个字节,其中包含版本、TTL、源地址等字段,每个字段的位置和长度固定。 那么,如果我们考虑后期协议的拓展 阅读全文
摘要:
搞清楚TCP流式协议的概念 假设应用层通过TCP发送数据"HelloWorld",发送方可能分两次发送,比如"Hello"和"World",但是接收方可能一次就收到"HelloWorld!",或者有可能分多次收到,比如先收到"Hell",再收到"oWorld"。这说明TCP传输的数据是没有消息边界的 阅读全文
摘要:
Ubuntu安装docker 1.删除旧版本docker sudo apt-get remove docker docker-engine docker.io containerd runc 2.安装docker 更新apt包索引,输入一下命令: apt update 安装apt依赖包,用于通过HT 阅读全文
摘要:
1.指针的算术运算 假设我们要完成一下工作。给定一个储存整数的vector,以及一个整数值,如果此值存在于vector内,我们必须返回一个指针指向该值;反之则返回0,表示此值不在vector内。以下便是我的做法: const int *find(const vector<int> &vec, int 阅读全文
摘要:
const与volatile const从字面意思上是表示“常量”。最基础的用法就是定义程序用到的数字、字符串常量,代替宏定义。 const int MAX_LEN = 1024; const std::string NAME = "metroid"; 不过从C++程序的生命周期角度来看的话,con 阅读全文
摘要:
1、RTMP介绍 RTMP全程Real Time Protocal(实时小时传输协议)。 该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS、RTMPE等多种变种协议。 RTMP是是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的 阅读全文
摘要:
set与重载< set是有序容器,在定义容器的时候必须要指定 key 的比较函数。只不过这个函数通常是默认的 less,表示小于关系,不用特意写出来: template< class Key, // 模板参数是key类型,即元素类型 class Compare = std::less<Key> // 阅读全文
摘要:
C++ explicit explicit关键字有两个用途: 指定构造函数或者转换函数(C++11起)为显示,即它不用用于隐式转换和赋值初始化。 可以与常量表达式一同使用。当该表达式为true才为显示转换(C++20起)。 1.将构造函数标记为显式 C++中的explicit关键字通常用来将构造函数 阅读全文