自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 用C++实现的websocket的服务端和客户端代码

在Linux上基于libwebsocket实现的服务端和客户端的代码。

2024-07-17 17:13:56 103

原创 基于开源的libwebsocket实现websocket服务端和客户端

但是当web界面刷新的时候,会在 lws_service处崩溃,怀疑是在调用 lws_callback_on_writable_all_protocol(pContext, &protocols[1]);的时候没有连接的客户端有效性做校验,后来代码对连接的客户端进行了sessionid的管理。case LWS_CALLBACK_CLIENT_ESTABLISHED: // 连接到服务器后的回调。某个协议下的连接发生事件时,执行的回调函数。//协议名称,协议回调,接收缓冲区大小。

2024-07-17 16:55:36 952

原创 【无标题】

Linux下时区夏令时开始时间结束时间获取最近组里的项目在做Linux化,我自己承接了Linux下时区相关的功能模块,之前windows上已有功能,但是windows上调用的是系统的api函数实现的,移植到Linux下是不能使用的,需要在Linux上做出同样的功能。首先,来看下windows下的功能,windows下获取系统当前时区调用的API函数是GetTimeZoneInformation,参数类型是TIME_ZONE_INFORMATION参数 类型及说明lpTimeZoneInformatio

2021-12-23 14:02:05 357

原创 Qt中connect第五个参数

connect()第五个参数的作用:默认,直接,队列(一)默认值 Qt::AutoConnection默认值,连接类型会在信号发射时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型,如果接收者和发送者不在同一个线程,则自动使用Qt::QueuedConnection类型。(二)直接 Qt::DirectConnection槽函数运行在信号发送者所在的线程,效果上就像是直接在信号发送的位置调用了槽函数。多线程下比较危险,可能会造成崩溃(三)队列 Qt::Q

2021-02-05 15:47:45 706

原创 前置声明

前置声明,也称前向声明(forward declaration)。在声明之后,定义之前,类Screen是个不完整类型(incomplete type),即已知Screen是一个类型,但是不知道包含哪些成员。不完全类型只能以有限方式使用。不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。...

2021-01-12 19:05:04 115

原创 C++四种强制类型转换

C++ 四种强制类型转换static_cast用法:static_cast (expression)主要用法如下:1)用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。2)用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。3)把空指针转换成目标类型的空指针。4

2021-01-12 11:11:04 444

原创 C和C++区别

C和C++的区别1、C89标准的C语言不支持函数默认值,C++支持函数默认值,且需要遵循从右向左赋初始值2、inline内联函数,C89没有,在调用点直接展开,不生成符号,没有栈帧的开辟回退,仅在Release版本下生效。一般写在头文件中3、C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载4、C语言中被const修饰的变量不是常量,叫做常变量或者只读变量,这个常变量是无法当作数组下标的。然而在C++中const修饰的变量可以当作数组下标使用,成为了

2020-12-21 11:47:40 119

原创 malloc, free和new, delete区别更新中

malloc、free和new、delete的区别1、malloc和free是函数,可以覆盖,C、C++中都可以使用;new和delete是运算符,可以重载,只能在C++中使用2、malloc在分配内存前需要大小,new不需要3、malloc不安全,需要手动类型转换,new不需要类型转换4、new是先调用构造函数再申请空间,free只释放空间,delete先调用析构函数再释放空间(如果需要)5、内存不足(开辟失败)时处理方式不同。malloc失败返回0,new失败抛出bad_alloc异常6、n

2020-12-21 11:17:39 162 1

原创 VS中设置MT和MD

对于MT/MTd,由于连接运行时库是LIBCMT.lib/LIBCMTD.lib,这两个库是静态库,所以此种方式编译的程序,移到另一台机器上面也可以正常运行。但是对于MD/MDd,连接的是动态库,所以如果另一台机器上没有MSVCRT.dll/MSVCRTD.dll时,就提示缺少动态库这样的错误。...

2020-12-18 16:42:44 372 1

原创 重载,重写,重定义

一、重载(overload):是函数名相同,参数列表不同,重载只是在类的内部存在。但是不能靠返回类型来判断。二、重写(override):叫做覆盖。是指派生类中存在重新定义的函数。其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(花括号内),派生类调用时会调用派生类的重写函数,不会调用被重写函数。重写的基类中被重写的函数必须有virtual修饰。三、重定义: 子类重新定义父类中有相同名称的非虚函数(参数列表可以不同) 。如果一个类。存在和父类相同的方法,除非你在调用的时

2020-12-18 16:37:03 694 1

原创 菱形继承

解决方法:1.作用域2.虚继承:虚继承是一种机制,类通过虚继承指出它希望共享虚基类的状态。对给定的虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象,共享基类子对象称为虚基类。虚基类用virtual声明继承关系就行了虚继承解决了在菱形继承体系中子类对象包含多份父类对象的数据冗余和浪费空间资源的问题,即决菱形继承中二义性和数据冗余的问题。...

2020-12-18 16:20:03 84 1

原创 Qt中的设计模式

Qt中使用到的设计模式1、单例模式qApp宏返回指向QApplication的单例#define qApp (static_cast<QApplication *>(QCoreApplication::instance()))12、MVC模型视图控制器框架模型是应用程序对象、视图是它的屏幕显示、控制器定义了用户界面对用户输入的反应。Qt的模型视图框架是经典的MVC模型,可以参考QListWidget、QTableWidget、QTreeWidget的源码。3、反射模式反射就是指

2020-12-18 15:36:19 2613 1

原创 深拷贝浅拷贝

深浅拷贝的区别:浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。深拷贝是在引用方面不同,深拷贝就是创建一个新的和原始字段的内容相同的字段,是两个一样大的数据段,所以两者的引用是不同的,之后的新对象中的引用型字段发生改变,不会引起原始对象中的字段发生改变。浅拷贝是只对指针进行拷贝,两个指针指向同一个内存块,深拷贝是对指针和指针指向的内容

2020-12-16 16:15:42 50

原创 内存对齐

内存对齐内存对齐的原则结构体成员按自身数据类型的对齐系数进行对齐:第一个结构体成员放在 offset(偏移量)为 0 的地方,后续每个成员的起始地址要从该成员大小的整数倍开始。结构体中成员为其他结构体,则结构体成员要按自身结构体内部的最大对齐值(成员中的数据类型所占空间值最大的那个)进行对齐:比如 struct A 中包含 struct B 类型的成员,B 中有 char、int、double 元素,那么 B 应该从 sizeof(double) 的整数倍开始存储。结构体的自身对齐值是其成员中自身对

2020-12-15 20:33:32 65

原创 VS在release下可调试

步骤1:工程项目上右键 -> 属性步骤2:c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi)步骤3:c++ -> 优化 -〉优化 选 禁止(/Od)步骤4:连接器 -〉调试 -〉生成调试信息 选 是 (/DEBUG)...

2020-12-15 10:01:35 70 1

用C++实现的websocket的服务端和客户端代码

用C++实现的websocket的服务端和客户端代码

2024-07-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除