IPv4的头部校验和只校验了头部, 不校验内容 IPv6没有头部校验和 IPv4中的TOS字段被分为了DS Field和ECN字段. DS字段用于区分不同的服务(用于降低/提...
IPv4的头部校验和只校验了头部, 不校验内容 IPv6没有头部校验和 IPv4中的TOS字段被分为了DS Field和ECN字段. DS字段用于区分不同的服务(用于降低/提...
Cmake是一种工具, 通过读取CMakeList.txt来定制项目的编译流程, 从而生成特定平台相关的MakeFile(Linux)或Visual Studio工程(win...
隐藏了系统内部的类和细节, 封装了一个外观给用户去调用 注意事项: 不要增加额外的功能 不要返回内部子系统的组件给客户, 但是必要的时候提供native_handle方法给客...
动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。 角色: 抽象构件:; 是具体构件和装饰类的共同基类, 定义了run()方...
组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。 最理想的例子是树, 每次调用树的Add()方法来为他添加新的叶子...
将抽象部分与它的实现部分解耦,使得两者都能够独立变化。 例子: 对于颜色和笔头粗细, 这是不可分割的两种特性, 属于设计不当. 但是毛笔可以将水彩色和笔头粗细两种正交特性分开...
2.1 适配器模式 把一个类的接口转化成客户希望的另外一种形式. 回调函数中需要用到的function<>绑定就是一种适配器. 原有的接口不支持, 通过适配器让其支持. 适配...
不做赘述, 单例模式想必大家已经烂熟于心了. 这里提一下多线程如何保证的单例模式的线程安全. 外部的if判断不加锁, 内部又有一层if判断, 这个判断加锁, 只要有了第一次的...
我的学习材料完全取自于冯Jungle[https://zhuanlan.zhihu.com/p/94877789] 为了解决某一类问题而提供的通用的解决方案, 也可用于为软件...
所有角色: Product: 要制造的产品 iWorker: 抽象建造者, 纯虚函数描述了所有要实现的方法 Worker1, Worker2: 继承自iWorker, 实现了...
3.1 责任链模式 将一个请求的发送者和接收者解耦,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。 设计的时...
1.1 简单工厂模式 首先介绍简单工厂方法. 简单工厂可以向用户隐蔽创造的实现细节, 用户只需要提供一些简单的好记的变量, 就能创建出一个完整的目标对象.所有的产品都继承自抽...
RTSP可用于向服务器拉去媒资, 邀请服务器加入会与或者向演示中加入额外的媒资. RTSP服务器记录连接的状态, 可以基于可靠连接或者不可靠连接. Interleaved模式...
string使用"引用"不一定会更加降低负载, 每次解引用也有开销, 这个时候考虑使用迭代器, 遍历的时候不会每次都去解引用. C++11最大的一个好处就是右值和移动, 一定...
RTTI 运行时类型识别 依靠两个工具: dynamic_cast typeid dynamic_cast 可以转换指针类型, 引用类型, 和非左值类型(也就是&&) 常用于...
本文记录了我之前在 Ubuntu 系统使用 VSCode + makefile 来调试 C 程序的过程。如果不习惯在 Linux 使用命令行 gdb 调试 C/C++ 程序,...
命名空间 inline命名空间 inline声明的命名空间, 可以无视本层命名空间, 而可以被直接使用. 用处: 可以方便的变更版本, 如: 同时, namespace使用的...
tuple 一个快速而随意的数据结构 操作含义tuple<T1, T2, T3>t(v1, v2, v3)初始化tmake_tuple(v1, v2 v3)用给定的值来类型推...
慢启动和丢包重传 在TCP连接刚开始的时候, 不启用延迟确认功能(而是立刻对数据包发送ACK), 这样可以让连接迅速渡过快启动模式 慢启动只会在刚开始和超时重传之后发生. 同...