摘要: Q:CAS的实现 A:gcc提供了两个函数 这两个函数提供原子的比较和交换,如果*ptr == oldval,就将newval写入*ptr, 第一个函数在相等并写入的情况下返回true,这个函数比第二个好在,返回bool值可以知道有没有更新成功. 第二个函数在返回操作之前的值。 第二个函数可以用c语 阅读全文
posted @ 2017-12-10 16:24 hanhuihanhui 阅读(548) 评论(0) 推荐(0) 编辑
摘要: SecureCRT 绝佳配色方案, 保护你的眼睛 关键词:SecureCRT配色, SecureCRT设置颜色, Linux终端颜色设置. 终端有一个好的配色,不仅能保护自己的眼睛,也能给人一个好心情,本配色方案适合任意一种SSH客户端软件. 设置背景颜色 Options => Sessions o 阅读全文
posted @ 2018-09-24 15:24 hanhuihanhui 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 1.“That's it. No big deal. Just three stories.”jobs的这句话很有魅力 2.“Your time is limited, so don't waste it living someone else's life.”把每一天当成最后一天去活,听从内心的声 阅读全文
posted @ 2018-09-24 13:00 hanhuihanhui 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 背景 日常查看qq消息的时候,看到群里有位同学问到 在处理怎样让对象只能生成在堆上而不能生成在栈上的问题的时候,发现当私有化析构函数以后 , 为什么调用 operator new [] 会报错? 把问题翻译成代码 原因 这个问题,我没有碰到过,但是有一本书《C++反汇编与逆向技术揭秘》,书上从汇编角 阅读全文
posted @ 2018-09-24 11:32 hanhuihanhui 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 滑动窗口 滑动窗口(Sliding window)是一种流量控制技术。保证了端到端设备之间的 1.可靠性 2.发送数据的速率不超过设备承受能力 发送端窗口分为两部分 1.已经发送了的,但是还没有收到ACK的 2.准备就绪好,放进缓存区了的 发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确 阅读全文
posted @ 2018-03-31 14:35 hanhuihanhui 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 下面的图片都是用的vs编译器生成的 对于这种多继承的类TestClassD D的构造是先调用C的构造再调用B的构造 C和B的构造函数又调用了A的构造函数 然后再构造D的成员 A中有虚函数fun A构造时 创建了虚函数表vftable 并且 在类中创建了vfptr的成员指向vftable 派生类B构造 阅读全文
posted @ 2018-03-27 22:33 hanhuihanhui 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 《程序员的自我修养》这本书偏底层,来来回回读了有三四遍了,每一次都有新的收获,不过很快又会忘记,所以写下了这本书从17年12月份至今的全书的笔记,留作以后自己复习。 第二章:编译和链接 源代码生成可执行文件经过了几个步骤: 预编译 编译 汇编 链接 每个步骤做的事分别有 预编译 主要处理#号开头的预 阅读全文
posted @ 2018-03-26 16:42 hanhuihanhui 阅读(215) 评论(0) 推荐(0) 编辑
摘要: Q:套接字特点 A:管道,消息队列,信号量,共享内存这些通信机制只能允许同一计算机上运行的进程相互通信,而套接字不仅可以提供在同一计算机上的进程间通信,还可以提供不同计算机上的进程间通信。 服务器端: 创建套接字描述符->将套接字与地址关联->监听套接字->接受链接 客服端: 创建套接字描述符->发 阅读全文
posted @ 2018-03-22 13:39 hanhuihanhui 阅读(431) 评论(0) 推荐(0) 编辑
摘要: Q:怎么从用户态切换到内核态 A:用户程序调用系统调用的时候,用户程序先将系统调用号放入eax,执行int0x80指令触发中断,中断发生时,cpu切入内核态,从 用户栈 切换到 内核栈 ,在 内核栈 中依次压入用户态的寄存器,也就是保护现场,根据中断号在中断向量表中查找对应的中断处理程序,并调用它。 阅读全文
posted @ 2018-03-21 11:30 hanhuihanhui 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Q:为什么需要makefile A:对大型程序来说,如果只修改了一部分文件,不应对所有源文件重新编译。而make命令可以只重新编译所有受改动影响的源文件,但是你必须要提供一个文件告诉make怎么构造,这个文件就叫makefile。 make介绍 make命令选项和参数 -k 发现错误时继续执行 -n 阅读全文
posted @ 2018-03-21 11:27 hanhuihanhui 阅读(124) 评论(0) 推荐(0) 编辑
摘要: Q:静态库和共享库的区别 A: 静态库是牺牲了空间效率,换取了时间效率,共享库是牺牲了时间效率换取了空间效率 linux上扩展名不同: 静态库以.a结尾,共享库以.so结尾 linux储存位置:静态库的保存位置和共享库是一样的 /lib(系统启动时需要的库,执行shell需要的库,是系统最关键的库) 阅读全文
posted @ 2018-03-21 11:24 hanhuihanhui 阅读(234) 评论(0) 推荐(0) 编辑