Skip to content

Instantly share code, notes, and snippets.

View wen-long's full-sized avatar
☘️
wish to be lucky

wen-long

☘️
wish to be lucky
View GitHub Profile

###C++ Primer第5版 学习笔记

####第五章

  1. 复合语句也被称作块,一个块就是一个作用域,名字的有效区域始于声明语句,终于声明语句所在的作用域末端

  2. case 标签之后不一定必须换行,几个 case 标签可以写在一行

    switch (ch) {
    

case 'a': case 'e': case 'i': case 'o': case 'u':

###C++ Primer第5版 学习笔记

####第六章

  1. 函数实参求值顺序取决于编译器
  2. 列表形参为空,相当于 void
  3. 名字 -> 作用域,对象 -> 生命周期
  4. 只存在于块执行期间的对象称为自动对象,形参是自动对象
  5. 局部静态变量在程序执行路径第一次经过对象定义语句时初始化,直到程序终止才被销毁,内置类型的.如果没有显式初始值,局部静态变量初始化为 0
  6. .obj(Windows) .o(UNIX)含义是文件包含对象代码(object code)

###C++ Primer第5版 学习笔记

####第七章

  1. 类的成员函数通过顶层 const 指针 this 访问调用它的那个对象,任何对类成员的直接访问都被看做 this 的隐式引用,不得自定义名为 this 的参数或变量,可以在成员函数体内使用 this
  2. const 成员函数相当于将 this 定义为底层 const,这种函数叫常量成员函数
  3. 编译器处理类,先编译成员声明,然后才轮到成员函数体,因此成员函数体可以随意使用其他成员而无需考虑顺序
  4. 有些非成员函数,概念上属于类,但实际上不属于类本身,那么如果他们不是定义在类中,则一般应与类声明(而非定义)在同一个头文件内
  5. 一般来说,如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内
  6. 编译器创建的构造函数称为合成的默认构造函数(synthesized default constructor)
@wen-long
wen-long / Argument-dependent lookup.md
Created July 6, 2014 09:44
也被称作“克尼格查找”(Koenig lookup)

仅当对未限定名字的正常名字查找不能发现匹配的名字,ADL才被使用。这时,函数实参的数据类型相关的命名空间也被搜索。 任何数据类型的T的相关的命名空间包括:

  1. 数据类型T的结构化作用域(structural scope),这可用于定位友函数(friend functions);
  2. 数据类型T被定义所处的命名空间;
  3. 如果T是结构类型,定义类型T所必须的结构类型相关的命名空间,但排除定义结构成员所必需的类型相关的命名空间。
#include <iostream>

###C++ Primer第5版 学习笔记

####第十章

下面说的算法都是本章的泛型算法

  1. 迭代器令算法不依赖于容器,但算法依赖于元素类型的操作,一般也有重载函数允许我们自己提供谓词函数代替默认的运算符
  2. 算法自身永远不会执行容器的操作,永远不会改变底层容器的大小
  3. accumulate 第三个参数的类型决定了使用哪个加法运算符和返回值类型,auto sumstring = accumulate(strvec.cbegin(), strvec.end(), "");会尝试使用 const char* 的加运算符,导致编译错误
  4. 算法不检查写操作,fill_n, copy 函数对木渎位置的有效性不做判断

###C++ Primer第5版 学习笔记

####第十二章

  1. 定义 shared_ptr 时常使用 make_shared 函数和 auto,如auto p = make_shared<vector<string>>(5, "aaa");,这种带初始化的,括号中的参数不能是单纯的列表初始化形式 *[list initialization (since C++11)][1]
  2. shared_ptr 在引用计数变为 0 时,自动销毁对象并释放内存,当把 shared_ptr 放在容器中时,不需要时应及时 erase 掉
  3. new 可以使用直接初始化,括号构造,和列表初始化来初始化
  4. new 可以分配 const 对象const int* cip = new const int(42);
  5. 接受指针参数的智能指针的构造函数是 explicit 的,初始化时只能且必须使用直接初始化形式
  6. 用 unique_ptr 初始化 shared_ptr 时,unique_ptr 会被置空,shared_ptr 接管

###C++ Primer第5版 学习笔记

####第十三章

  1. 拷贝构造函数可以有自身引用以外的参数,不过必须有默认值
  2. 拷贝构造函数经常被隐式使用,一般不应该是 explicit 的
  3. 调用标准库容器的 insert 和 push 使用拷贝初始化, emplace 使用直接初始化
  4. 赋值运算符应返回左侧对象的引用,且正确处理自赋值
  5. =default显示要求编译器生成合成的函数,=delete将函数定义为删除的函数来阻止该操作
  6. 析构函数不能 =delete

##Gratuitous ARP

Gratuitous ARP could mean both gratuitous ARP request or gratuitous ARP reply. Gratuitous in this case means a request/reply that is not normally needed according to the ARP specification (RFC 826) but could be used in some cases. A gratuitous ARP request is an Address Resolution Protocol request packet where the source and destination IP are both set to the IP of the machine issuing the packet and the destination MAC is the broadcast address ff:ff:ff:ff:ff:ff. Ordinarily, no reply packet will occur. A gratuitous ARP reply is a reply to which no request has been made.

GARP 指 GARP 请求或 GARP 响应.这里的 Gratuitous 指 ARP specification (RFC 826) 说明的在一般情况下,请求/响应报文都是没有必要的.一个 GARP 请求报文是也一个 ARP 请求报文,特别之处在于源 IP 和目的 IP 都是发送者的 IP,且目的 MAC 为ff:ff:ff:ff:ff:ff,一般没有响应.GARP 响应是不针对任何请求的响应


####Gratuitous ARPs 主要有四个用处:

  • 可以用来检测 IP 地址冲突.如果机器收到了源 IP 与本机 IP 相同的 ARP 请求,则说明有 IP 冲突
  • 可以用来更新其他机器的 ARP 表,当本机需要移动某网卡的 IP 到另一张网卡时,可发送 GARP 更新其他机器的 ARP 表
iptables -N http
iptables -A http -m string --string "HTTP/1.1 302 Moved Temporarily" --algo bm -j RETURN
iptables -A http -m string ! --string "HTTP/1.1 302 Found" --algo bm -j RETURN
iptables -A http -m string ! --string "Connection: close" --algo bm -j RETURN
iptables -A http -m string --string "videoplayer" --algo bm -j LOG --log-prefix "http_302" --log-level 5
iptables -A http -m string --string "videoplayer" --algo bm -j DROP
iptables -A http -j LOG --log-prefix "WTF" --log-level 5
iptables -I FORWARD -i eth0.2 -p tcp --sport 80 -m ttl --ttl-eq 127 -j http

现整理收集C++世界里那些“牛人”的个人博客。凡三类:一是令人高山仰止的大牛,对C++语言本身产生过深远的影响的人;二是C++运用炉火纯青的高手,有原创性的技术干货;三是中文世界里的C++牛人。

C++大牛的博客