摘要: static_cast 1. 基础类型之间互转。如:float转成int、int转成unsigned int等 2. 指针与void*之间互转。如:float*转成void*、CBase*转成void*、函数指针转成void*、void*转成CBase*等 3. 派生类指针【引用】转成基类指针【引用 阅读全文
posted @ 2020-04-22 14:40 Muzzik 阅读(201) 评论(0) 推荐(0)
摘要: #pragma once #include <Windows.h> class raii { private: CRITICAL_SECTION* _crit; public: raii(CRITICAL_SECTION* crit) { _crit = crit; EnterCriticalSec 阅读全文
posted @ 2020-04-13 10:36 Muzzik 阅读(200) 评论(0) 推荐(0)
摘要: 【模板类头文件重复】: #pragma once能解决模板类头文件重复包含问题【模板不定参的使用】: template <class... Args> void test(Args... args); 传递不定参:(std::forward<Args>(args)...) 阅读全文
posted @ 2020-04-09 03:33 Muzzik 阅读(148) 评论(0) 推荐(0)
摘要: 【1236错误】情况如下: 1.client连接server 2.client发送消息到server 3.client使用closesocket(sock); 4.server接收到关闭socket消息 (lpNumberOfBytesTransferred为0, 注意:如果客户端发送的是空消息同样 阅读全文
posted @ 2020-04-03 00:33 Muzzik 阅读(588) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/qq_28398301/article/details/105015492 阅读全文
posted @ 2020-03-27 18:05 Muzzik 阅读(1221) 评论(0) 推荐(0)
摘要: 代码测试休眠5秒钟,一秒钟休眠一次测试, WaitForSingleObject函数的精度比sleep和sleep_for的精度提高10ms左右; WaitForSingleObject在等待的过程中会进入一个非常高效的沉睡等待状态,只占用极少的CPU时间片。 使用代码: HANDLE eve = 阅读全文
posted @ 2020-03-11 23:28 Muzzik 阅读(4521) 评论(0) 推荐(0)
摘要: 如果实参与引用参数不匹配,C++将生成临时变量。如果引用参数是const,则编译器在下面两种情况下生成临时变量:1.实参类型是正确的,但不是左值2.实参类型不正确,但可以转换为正确的类型 Double refcube(const double& ra) { Returnra*ra*ra;}doubl 阅读全文
posted @ 2020-02-27 00:54 Muzzik 阅读(524) 评论(0) 推荐(0)
摘要: 小白记录贴 std::atomic<bool> a(true); //定义一个类型为atomic_bool的原子变量并赋初值为true原子操作:赋值: a = true;a.store(true); 读取:int b = a;int b = a.load(); 原子操作还可以包含一个参数:内存顺序( 阅读全文
posted @ 2020-02-12 12:07 Muzzik 阅读(6488) 评论(0) 推荐(2)
摘要: std::is_same判断两种类型是否相同,相同返回true,不同返回false std::is_same<int, int>::value结果为truestd::is_same<int, bool>::value结果为false std::decay则是去掉类型修饰符,如const、& 等... 阅读全文
posted @ 2020-02-11 08:02 Muzzik 阅读(470) 评论(0) 推荐(0)
摘要: 阻塞模式和非阻塞模式的主要区别在于无请求来到时,阻塞模式会一直停在接收函数即accep函数,直到有请求到来才会继续向下进行处理。而非阻塞模式下,运行接收函数,如果有请求,则会接收请求,如果无请求,会返回一个负值,并继续向下运行。一般来说,使用阻塞模式的程序比较多,因为阻塞模式是由内核保障等待请求的, 阅读全文
posted @ 2020-02-11 03:57 Muzzik 阅读(836) 评论(0) 推荐(0)