
读书笔记
个人读书笔记
神秘的火柴人
学习不是短时间的冲刺,而是有节制的坚持:)
展开
-
深度探索c++对象模型(四)补充
1. 普通成员变量的存储顺序按照在类中定义的顺序class A{public: int m_i; static int m_si; int m_j; static int m_sj; int m_k; static int m_sk;};int main(){ A a; a.m_i = 2; a.m_k = 5; a.m_j = 3; return 0;...原创 2019-11-10 13:39:22 · 106 阅读 · 0 评论 -
深度探索c++对象模型(五)
1. 虚继承的引入(解决访问二义性)class A{public: int m_a;};class B:public A{public: };class C :public A{public: };class D :public B, public C{public: };int main(){ D d; d.m_a = 5; //error...原创 2019-09-05 22:23:55 · 115 阅读 · 0 评论 -
深度探索c++对象模型(四)
单一继承下数据成员布局引入继承关系后,可能会带来内存空间的额外增加class A{public: int a; int b; char c; char d;};int main() { cout << sizeof(A) << endl; return 0;}结果:class A{public: int a; int...原创 2019-09-04 08:07:21 · 148 阅读 · 0 评论 -
深度探索c++对象模型(三)
1. 验证vptr指针位置环境:vs2019结果2. 通过对象的vptr指针来手动调用虚函数结果注意点:若将类A中的虚函数改为private,运行结果相同。(不管公有还是私有,只要是虚函数,它的函数地址都会放在虚函数表vftable中)3....原创 2019-08-27 19:50:43 · 142 阅读 · 0 评论 -
深度探索c++对象模型(二)
成员初始化列表何时必须使用成员是个引用成员是const类型继承的基类有一个有参的构造函数有类类型的成员变量,并且该类的构造函数带有参数注意:若该类的构造函数带有参数并且参数带有默认值,可以不用参数列表初始化列表的好处没用初始化列表初始化类类型成员变量结果使用初始化列表结果结论:提高效率注意点:初始化列表中变量的初...原创 2019-08-16 14:05:49 · 145 阅读 · 0 评论 -
深度探索c++对象模型(一)
vs调试技巧:F5调试F9加断点shift+F9 :查看变量内存地址1. 对象1.1 sizeof(空类)== 11.2 类的成员函数不占用 类对象 的内存空间1.3 静态成员变量属于类,不占用 类对象 的内存空间1.4 虚函数虚函数表一般是保存在可执行文件中的,在程序执行的时候载入到内存中来...原创 2019-08-16 14:05:35 · 152 阅读 · 0 评论 -
Linux高性能服务器编程(四)
文章目录9. I/O复用9.1 文件描述符(事件)就绪9.2 ET、LT9.3 select、poll、epoll区别10. 信号10.1 信号产生10.2 发送信号10.3 信号默认处理方式:SIG_DFL10.4 标准信号10.5 signal、sigaction10.6 统一事件源9. I/O复用I/O复用:使得程序能同时监听多个文件描述符9.1 文件描述符(事件)就绪可读:...原创 2019-05-18 20:07:41 · 2656 阅读 · 0 评论 -
Linux高性能服务器编程(五)
1. 各层主要协议应用层负责处理应用程序的逻辑。数据链路层、网络层、传输层负责处理网络通信细节,这部分必须既稳定又高效,因此它们都在内核中实现。数据链路层 ARP协议:IP——》MAC 工作原理:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其他机器都将收到这个请求,但只有目标机器会回应一个ARP应答,其中包含自己的物理地址。网络层...原创 2019-05-22 20:49:20 · 203 阅读 · 0 评论 -
Linux高性能服务器编程(二)
文章目录5.网络编程api5.1 主机字节序、网络字节序5.2 创建socket5.3 绑定地址5.4 创建一个监听队列来存放待处理的客户连接5.5 从监听对列中接受一个连接5.6 发起连接5.7 关闭连接5.8 数据读写5.9 获取socket地址(本端、对端)5.10 获取、设置socket选项5.11 根据主机名(IP)获取主机的完整信息5.12 根据名称(端口号)获取某个服务的完整信息5...原创 2019-05-12 11:12:05 · 841 阅读 · 0 评论 -
Linux高性能服务器编程(三)
文章目录7. Linux服务器程序规范7.1. UID、EUID7.2. 进程间关系7.3 查看、修改资源限制7.4 获取、改变工作目录7.5 设置后台进程7. Linux服务器程序规范7.1. UID、EUID一个进程拥有两个用户ID:UID、EUID做任何一个操作时,最终看它有没有权限,是在判断有效用户ID是否有权限比如su程序,要访问 /etc/passwd,而访问该文件需要r...原创 2019-05-16 10:30:51 · 336 阅读 · 0 评论 -
Linux高性能服务器编程(一)
文章目录1. 各层主要协议2.IP协议2.1 IP服务特点2.2 IP分片2.3 IP的路由机制3. TCP协议3.1 TCP服务特点3.2 复位报文段(RST)3.3 Nagle算法3.4. 拥塞控制1. 各层主要协议应用层负责处理应用程序的逻辑。数据链路层、网络层、传输层负责处理网络通信细节,这部分必须既稳定又高效,因此它们都在内核中实现。数据链路层 ARP协议:IP——》M...原创 2019-05-07 21:26:47 · 1319 阅读 · 0 评论 -
《Essential C++》读书笔记
文章目录2 面向过程的编程风格3 泛型编程风格iterator(泛型指针)引入4 基于对象的编程风格2 面向过程的编程风格建议在传递内置类型时,不要使用传址方式;传址机制主要用于传递class object函数默认参数值只能够指定一次,可以在函数声明处,亦或在函数定义处,但不能够在两个地方点后指定;一般在头文件指定函数重载:参数列表(参数类型、参数个数)不相同的两个或多个函数,...原创 2019-01-06 17:05:13 · 568 阅读 · 0 评论