10 2020 档案
摘要:log4z.h: /* * Log4z License * * * Log4z is licensed under the terms of the MIT license reproduced below. * This means that Log4z is free software and
阅读全文
摘要:一、 当多个线程对同一资源进行使用时,会产生“争夺”的情况,为了避免这种情况的产生,也就出现了线程间的同步这个技术,本篇博文中将介绍使用信号量Semaphore达到线程间同步的目的。 二、相关函数和头文件 //头文件 #include <windows.h> //创建信号量API HANDLE WI
阅读全文
摘要:1.select: select本质上是通过设置或者检查存放fd标志位的数据结构数据结构来进行下一步的处理,时间复杂度:O(n) 缺点: 1)、每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大; 2)、同时每次调用select都需要在内核遍历传递进来的所有fd,
阅读全文
摘要:一、WSAEventSelect网络事件模型介绍: 事件选择(WSAEventSelect)模型是另一个有用的I/O模型,和WSAAsyncSelect模型类似的是,他也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递到一个
阅读全文
摘要:void erase(int arr[], int arr_size, int index) { if (arr || index >= 0) { for (int i = index; i<arr_size - 1; ++i) arr[i] = arr[i + 1]; } }
阅读全文
摘要://降低数据库压力方法 1.队列+连接池 2.主要的业务逻辑挪到应用服务器处理,数据库只做辅助的业务处理 3.缓存 (1)如何同步缓存的问题: 1)缓存具有时效性,隔一段时间缓存数据就会失效,如果缓存失效,此时去数据库查询,然后更新缓存。缺点:实时性比较差 2)一旦数据库数据改变,立即通知前端更新缓
阅读全文
摘要:一、可调用对象包装器: std::function是可调用对象的包装器。它是一个类模板,可以容纳除了类成员(函数)指针之外的所有可调用对象。通过指定它的模板参数,它可以用统一的方式处理函数,函数对象,函数指针,并允许保存和延迟执行它们。 二、基本用法: (1)包装普通函数 #include "std
阅读全文
摘要:一、使用原因: 在实现高并发的服务器日志系统过程中,由于在工作线程中直接进行IO操作,相比较于高速的CPU,IO磁盘操作是很慢的,直接在某些工作线程(包括UI线程)写文件,程序执行速度太慢,尤其是当日志数据比较多的时候,此时,我们可以使用一个队列,需要写日志时,将日志加入队列中,另外一个专门的日志线
阅读全文
摘要:为什么需要nullptr? NULL有什么毛病? C++在底层源码中 NULL 这个宏是这样定义的: #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif 也就是说如果源
阅读全文
摘要:1.auto的功能: auto 可以自动推理数据类型。 使用语法如下: #include<iostream> #include<typeinfo> using namespace std; int main() { //auto变量定义时必须初始化 auto x = 3; auto y{23}; /
阅读全文
摘要:一:介绍bitset 有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了st
阅读全文
摘要:一:范例运行结果: 二:具体实现步骤步骤: (1)创建2个窗口类CSelectView和CDisplayView,到时候负责往上图1和2的位置显示东西。 (2)主窗口中定义一个切分窗口类的对象,通过对象进行拆分: CSplitterWnd m_spliter; //切分窗口类对象 (3)重写主窗口O
阅读全文
摘要:一:TabControl使用步骤: (1).项目中添加2个文件(CTabSheet.h和CTabSheet.cpp) (2).添加TabControl控件,添加变量m_tab,注意变量类型为CTabSheet。 (3).添加2个窗口,设置属性border为None,style为child,并且给2个
阅读全文
摘要:一:范例代码: //树控件使用 //1 、设置图标 //准备HICON图标 HICON icons[4]; icons[0] = AfxGetApp()->LoadIconW(IDI_ICON1); icons[1] = AfxGetApp()->LoadIconW(IDI_ICON2); icon
阅读全文
摘要:法一:加载bmp #define HBMP(filepath,width,hight) (HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,hight,LR_LOADFROMFILE|LR_CREATEDIBSE
阅读全文