摘要:
msvc 预备知识 参数类型,可以分为一元(unary)和二元(binary),这个概念很重要,gcc的实现里也用到。 可以看到msvc里定义了三个_Arg_types:无参数类型;接受一个参数,一元;接受两个参数,二元。 并且_Arg_types没有成员变量,只是定义了对应的类型。 templat 阅读全文
摘要:
引言 TCP提供面向连接的、可靠的字节流服务 在一个TCP连接中,仅有两方进行彼此通信 TCP通过下列方式提供可靠性 应用数据被分割成TCP认为最适合发送的数据块。这和UDP不同,应用程序产生的数据报长度不变。 超时重传。TCP发出一个段后,会启动一个定时器,等待目的端确认收到这个报文段,如果不能及 阅读全文
摘要:
引言 UDP是面向数据报的运输层协议 UDP不提供可靠性,他把应用程序传给IP层的数据发送出去,但是并不保证他们能到达目的地 UDP数据报由8字节的UDP首部和不定长的UDP数据组成 UDP首部 IP分片 物理网络层一般要限制每次发送数据帧的最大长度(MTU),如果UDP数据报长度大于MTU则需要进 阅读全文
摘要:
nullptr表示指针,它的类型是std::nullptr_t(nullptr有类型!NULL没有类型),它是prvalue 可以看到nullptr经编译器生成的汇编代码会直接变为0,所以nullptr是一个有类型的常量0(注意有极个别的平台可能不为0,"Seriously, have any ac 阅读全文
摘要:
设计原则与思想 面向对象 封装、抽象、继承、多态分别可以解决哪些编程问题 封装 what:隐藏信息,保护数据访问 how:暴露有限的接口和属性,通过 public/private why:提供有限的接口能让使用者更简单的上手;控制属性访问权限能防止被偷偷地修改 抽象 what:隐藏方法的具体实现 h 阅读全文
摘要:
resize 改变大小 ###resize(n, value), 不够的部分填充为value vector<int> nums{ 1, 2, 3, 4, 5, 6 }; nums.resize(3, 100); // size缩小, 保持原状 -> {1, 2, 3} nums.resize(5, 阅读全文
摘要:
# # System platform value # # AIX "aix" # Linux "linux" # Windows "win32" # Windows/Cygwin "cygwin" # MacOS "darwin" # atomac==1.1.0; sys_platform == 阅读全文
摘要:
创建型(Creational Pattern) 单例模式 class Singleton { public: static Singleton& instance() { // c++11 起 static Singleton ins{}; return ins; } private: Single 阅读全文
摘要:
AList = [A()] * n, 此时AList里的所有元素具有相同id, 即是同一个对象,修改AList[0]相当于修改AList的所有元素 AList = [A() for i in range(n)], 此时AList里的所有元素都是不同的id, 即是不同的对象, 这样修改任意元素不会影响 阅读全文
摘要:
源码 在<type_traits>头文件里有void_t的定义 template <class... _Types> using void_t = void; 很简单,其实就是void,只不过可以传入模板参数,比如std::void_t<int, float, double>,但归根到底他还是voi 阅读全文