TCP连接非正常断开连接情况

TCP连接非正常断开连接情况

在应用程序进程崩溃时,TCP连接的四次挥手有操作系统完成。在客户端或服务端出现断点断网情况下,并且有数据正在发送,则发送方在发送失败后尝试重发,知道一定次数与时间之后断开连接(不需要四次挥手)在客户端或服务端出现断点断网情况下,并且没有数据正在发送:keepalive开启时在一定的心跳检测之后结束(默认检测时间2H左右),keepalive未开启连接永远存在。收到对方的RST包强制断开连接(服务器断网后重新启动,客户端再次发送数据,服务器回复RST包)

C++ 变量复习(字节占用与范围)

C++ 变量复习(字节占用与范围)

变量类型编译器占用字节取值范围charx321-128~127(0~255)short(short int)x322-2^15~2^15-1(0~2^16-1)intx324-2^31~2^31-1(0~2^32-1)long(long int)x324-2^31~2^31-1(0~2^32-1)long longx328-2^63~2^63-1(0~2^64-1)floatx324-3.4E-38~3.4E+38doublex328-1.7E-308-1.7E+308指针x324-charx6

实际项目中的一个线程安全队列(boost)

实际项目中的一个线程安全队列(boost)

#ifndef _THREAD_SAFE_QUEUE_H_#define _THREAD_SAFE_QUEUE_H_#include<queue>#include<memory>#include <boost/thread/thread.hpp>#include<boost/thread/mutex.hpp>#include<boost/thread/condition_varia

inspinst Exe 使用

inspinst Exe 使用

inspinst Exe 是windows下检查工具,记录一个查看DLL,exe文件的方法。还有其他的功能有待学习:首先得安装该软件安装完毕不像其他程序一样有图标在桌面,只需要鼠标右击exe或者DLL文件点击查看“属性”选择TestLoad就可以查看到dll 的使用情况,如果有加载失败就可以在这里看到了。然后在具体查看即可

红黑树笔记

红黑树笔记

节点是红色或者黑色根节点必须是黑色黑色节点的子节点可以是黑色或者是红色每个红色节点必须有两个黑色子节点从任何一节点到每个叶子节点的所有简单路径都包含相同数目的黑色节点自平衡二叉搜索树

shared_ptr 与 make_shared  初识

shared_ptr 与 make_shared 初识

#define _ALLOCATE_MAKE_SHARED( \ TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4) \template<class _Ty COMMA LIST(_CLASS_TYPE)> inline \ shared_ptr<_Ty&

类模板,模板类的友元函数、模板类的左移运算符重载

类模板,模板类的友元函数、模板类的左移运算符重载

类模板在声明与实现分开为两个文件时,在使用时需要使用  类模板的.cpp文件(一般重命名为.hpp)类模板的友元函数需要在声明的时候加上 template<typename T> 的标识在具体实现的时候同样需要加上template<typename T>标识,并且所有的使用到的类型的地方需要加上<T>.h声明template<typename T>friend A<T> addA(const A<T>& a

函数模板与模板函数

函数模板与模板函数

模板函数是函数模板在编译的时候  根据推导或者具体化类型  根据函数模板生成的一个具体类型的函数函数模板对类型需要严格的匹配,不支持自动类型转换当普通函数与函数模板同时存在时,优先匹配普通函数。可以通过  函数名<>()  的方式,调用函数模板如果函数模板有更优的匹配(不需要隐式的类型转),优先使用函数模板而不是选择需要隐式转换类型的普通函数函数模板可以嵌套调用

类的析构函数是否一定要定义为vietual  虚函数

类的析构函数是否一定要定义为vietual 虚函数

当一个父类的指针  指向一个子类的对象,如果父辈的析构函数没有定义为virtual  虚函数,在执行delete  释放父类指针的时候,子类的虚函数则不会调用,导致内存泄漏。但是类的析构函数并不是一定要定义为virual!多态:virtual 虚函数,子类重写父类虚函数子类的虚函数表直接复制父类的虚函数表如果子类重写了父类的某个虚函数那么就替换复制的虚函数表如果子类增加了新的虚函数,就把虚函数添加到虚函数表的尾部

final  override  reportSingleClassLayout

final override reportSingleClassLayout

/d1 reportSingleClassLayoutSon final :class A final{}//A 不可以被继承class B{    virtual void func1() final ;   //该虚函数可以被继承  但是不能被重写了}Override:  覆盖重写子类中告诉代码编辑人员,这个虚函数是重写的父类的虚函数。如果父类不存在这个虚函数则报错。只需要在函数声明的时候使用。