- 博客(129)
- 资源 (6)
- 收藏
- 关注
原创 Redis中关于sdshdr8 结构体的理解和使用
解析sdshdr8#pragma pack(1) struct __attribute__((__packed__)) sdshdr8 { uint8_t len; /* used */ uint8_t alloc; /* excluding the header and null terminator */ unsigned char flags; /* 3 lsb of type, 5 unused bits */ char buf[]; };1字节对齐,sdshdr8结构体有
2022-01-11 00:21:34 899
原创 C++自带sort函数对vector容器元素进行排序
#include<iostream>#include<algorithm>#include<vector>#include <string>using namespace std;//自定义排序函数 bool sortFun(const string p1, const string p2){ string ss1 = p1.substr(6, 7); //获取子字符串。 int val1 = std::stoi(ss1...
2021-06-12 00:08:17 1560
原创 消息总线设计
消息框架设计消息定义消息格式:msg+消息类型+消息名称msg.sys.msgname。消息类型:以msg.sys前缀开头的为系统消息。msg.othername前缀开头的为用户自定义小。定义方式字符串宏定义平台消息统一存放 /include/msg.h头文件中。//msg.h#define MSG_SYS_MSGNAME "msg.plat.msgname"消息类型同步消息说明:发送消息立即到达接收端。使用场景:同一线程内部发送消息。异步消息
2020-08-20 00:35:05 943
原创 cef中c++和javascript数据交互
文章目录基础知识render进程browser进程进程通信CEF 进程间消息传递窗口绑定功能和窗口绑定功能和扩展使用JS回调总结基础知识cef中有两种进程,render进程和browser进程。render进程render进程负责显示web页面,运行javascript代码。v8引擎的初始化是在render进程中调用的,所以你的javascript代码是在render进程中执行的。即使你在browser进程中调用frame->ExecuteJavaScript()你也要清楚,代码是发
2020-08-19 22:53:29 1546
原创 STL库中的equal_range()
简介equal_range 根据键值,返回一对迭代器的pair对象。如果该键值在容器中存在,则pair对象中的第一个迭代器指向该键关联的第一个实例,第二个迭代器指向该键关联的最后一个实例的下一位置。如果找不到匹配的元素,则pair对象中的两个迭代器都将指向此键应该插入的位置。总之,equal_range返回迭代器位置区间 [ lower_bound, upper_bound )举例#include <iostream>#include <map>int main (){
2020-08-19 17:12:34 528
原创 选项模块实现
选项模块实现接口设计消息类型的定义流程用例图交互流程子页面注册使用选项对话框的构建过程创建非模态对话框对话框初始化时,尝试加载树结构选项配置文件格式:文件格式xml文件解析处理主对话框内的动作:存在问题:树结构代码实现参数读取与保存子页面实现对数据的读写Dll资源切换接口设计消息类型的定义子页面消息定义:用于通知主框架,子页面的创建状态(主框架监听的消息处理)#define MSG_PLUGIN_OPTIONS_PAGE_CREATED “msg.plugin.options.page_c
2020-08-19 00:51:38 579
原创 IO多路复用介绍
IO多路复用介绍IO多路复用介绍什么是IO多路复用IO多路复用适用如下场合:为什么有IO多路复用机制?同步阻塞(BIO)同步非阻塞(NIO)IO多路复用(现在的做法)IO多路复用的三种实现方式select 讲解select 基本原理:select缺点select函数接口select使用示例poll讲解poll函数接口poll使用示例poll缺点epoll讲解基本原理:epoll函数接口epoll使用示例epoll的优点epoll缺点epoll LT 与 ET模式的区别水平触发LT(level trigger
2020-08-18 17:13:37 858
原创 接收和发送缓冲区的设计
文章目录环形队列前言概念示意图环形队列与普通队列的区别设计图源码环形队列前言循环队列:队列有着先入先出的特性。但是对于队列如果删除队头以后剩下的空间将不会被释放,又由于队列只能由队尾插入这就导致被删除部分的空间被浪费。解决这个问题就是循环队列。循环队列顾名思义就是将队列串起来形成一个类似与环的结构。概念示意图内存中不存在环形数据结构,均由基础结构实现逻辑上的闭环效果环形队列与普通队列的区别front头部指针:一般队列:front头部指针初始值为-1,从队列取数据时,该值依次递增,
2020-08-18 00:43:02 802
原创 Windows WSAEventSelect 网络通信模型
文章目录Windows WSAEventSelect 网络通信模型WSAEventSelect模型介绍WSAEventSelect 用于服务器端**WSAWaitForMultipleEvents**WSAEnumNetworkEvents函数完整代码Windows WSAEventSelect 网络通信模型WSAEventSelect 网络通信模型是 Windows 系统上常用的一种异步 socket 通信模型,下面来详细介绍下其用法。WSAEventSelect模型介绍 WSAEventSel
2020-08-17 23:45:32 815
原创 c++ map中key为结构体
map中key为结构体项目中需要将结构体作为hash的key,一开始用hash_map,但是结构体中多值比较一直失败,所以尝试了map。hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级别;而map的查找速度是log(n)级别。hash还有hash函数的耗时。当有100w条记录的时候,map也只需要20次的比较,200w也只需要21次的比较!所以并不一定常数就比log(n) 小。hash_map对空间的要求要比map高很多,所以是以空间换时间的方法,而且,hash_m
2020-08-14 22:49:42 3237
转载 面试时如何不简单de介绍自己的项目经验?
在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。第一印象就不好了,至少会感觉该候选人表述能力不强。一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问10个问题,那么至少有5个问题会根据候 选人所介绍的项目背景来问,候选人如果没说好,那么就没法很好地引导后继问题了,就相当于把提问权完全
2020-08-11 23:05:55 213
原创 智能指针类
文章目录C++ 98/03 的尝试——std::auto_ptrC/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念。这里不置贬褒,手动分配内存与手动释放内存有利也有弊,自动分配内存和自动释放内存亦如此,这是两种不同的设计哲学。有人认为,内存如此重要的东西怎么能放心交给用户去管理呢?而另外一些人则认为,内存如此重要的东西怎么能放心交给系统去管理呢?在 C/C++ 语言中,内存泄露的问题一直困扰着广大
2020-08-05 10:18:37 409
原创 回退重做数据管理实现
回退重做数据管理实现前言关于回退重做事件的实现逻辑用例图类图关于回退重做数据管理的实现实现代码分析目前实现框架的优势和局限优点局限前言 关于回退重做的实现之前,需要考虑目前到软件框架的执行流,目前平台操作的实现,是基于event事件进行实现的。而参数数据是基于Json数据进行解析获取的。继承监听类IPlantListerner,即可以通过消息进行传递数据。关于回退重做事件的实现逻辑用例图类图关于回退重做数据管理的实现实现代码分析1、定义回退操作的基类 对于用户需要关注回退重做事件
2020-08-03 00:11:32 596
转载 虚函数表详解
虚函数表详解概述类的虚表虚表指针动态绑定总结参考资料示例代码关键词:虚函数,虚表,虚表指针,动态绑定,多态概述 为了实现 C++ 的多态,C++ 使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。类的虚表虚表是一个指针数组,其元素是虚函数的指针,每个元素对应一个虚函数的函数指针。需要指出的是,普通的函数即非虚函数,其调用并不需要经过虚表,所以虚表的元素并不包括普通函数的函数指针。虚表内的条目,即虚函数指针的赋值发生在编译器的编译阶段,也就
2020-08-02 01:41:40 411
原创 数据结构查找算法(二分查找)
查找算法之二分查找二分查找二分算法步骤描述二分查找的应用场景:二分查找的实现(递归算+非递归)递归算非递归实现参考例子后记:二分查找二分查找算法,说白了就是在有序的数组里面给予一个存在数组里面的值key,然后将其先和数组中间的比较,如果key大于中间值,进行下一次mid后面的比较,直到找到相等的,就可以得到它的位置。前提: 线性表中的记录必须是关键字有序(通常从小到大),线性表必须采用顺序存储。基本思想: 取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关
2020-08-01 13:48:00 893
原创 内存问题排查工具 --- valgrind
概述在用C/C++编程的时候,经常会出现下面三种内存问题:内存泄漏悬挂指针多次释放同一块内存本系列文章简要介绍排查这三个问题的工具和方法,先看看ValgrindValgrindValgrind是一款可以监测内存使用情况、监测内存泄漏的工具。对于一些规模不是很大的应用程序,Valgrind是一把利器。ubuntu16.04上安装valgrind1、下载最新版本:http://valgrind.org/downloads/current.html#current2、tar -jxvf val
2020-07-30 00:21:38 463
原创 封装基于opc客户端通信机制的代理服务器COM动态库接口
封装基于opc客户端通信机制的代理服务器COM动态库接口项目综述时间工作负责模块背景:任务:**行动**:**结果**:实现逻辑项目综述时间2020年04月 – 2020年05月工作负责模块 基于OPC DA2.0 客户端通信机制,封装COM组件的Dll动态库接口,配合前端python调用接口,与OPC.Server服务器进行数据交互。背景: 项目之前是基于开源的opc 客户端dll文件,进行访问opc.server抓取数据的。但后期不能正常采集到数据了。任务: 基于OPC DA2.
2020-07-26 23:39:30 260
原创 windows进程通信 -- WM_COPYDATA消息
windows进程通信 -- WM_COPYDATA消息WM_COPYDATA消息发送端接收端WM_COPYDATA消息WM_COPYDATA消息,在win32中用来进行进程间的数据传输。typedef struct tagCOPYDATASTRUCT { // cds DWORD dwData; DWORD cbData; PVOID lpData; } COPYDATASTRUCT;其中dwData为32位的自定义数据, lpData为指向数据的指针,cbDa
2020-07-24 23:49:06 3150 1
原创 后端数据解析过程中,更新前端UI进度条
后端数据解析过程中,更新前端UI进度条前言源码解析源码测试逻辑前言在做前端ui进度条时,总会遇到后端数据解析过程中,前端ui不能同步更新的问题。为解决以上问题。想到最好的办法是通过消息进行通知,ui类监听此消息,进行ui刷新。源码解析源码开放API接口,可用其他模块进行交互#pragma once//进度条类接口class ICStatusProgress{public: ICStatusProgress() { }; ~ICStatusProgress() { };public:
2020-07-24 22:12:26 410
转载 FTP协议讲解
文章目录FTP 概述FTP 协议命令端口数据端口主动模式 (PORT)被动模式 (PASV)主要用到的 FTP 命令FTP 响应码Socket 编程的几个重要步骤实现 FTP 客户端上传下载功能客户端和 FTP 服务器建立 Socket 连接图 1. 客户端连接到服务器端清单 1. 客户端连接到 FTP 服务器,接收欢迎信息客户端登录 FTP 服务器图 2. 客户端登录 FTP 服务器清单 2. 客户端发送用户名和密码,登入 FTP 服务器客户端让 FTP 服务器进入被动模式图 3. 客户端让服务器进入被动
2020-07-15 00:31:53 866
原创 MFC关于按钮下拉菜单的功能实现
MFC关于按钮下拉菜单的功能实现前言参考类似word相应功能实现:产品工作需求设计:产品最终实现效果思路具体实现前言根据产品工作需求要求,要实现个剖切管理的功能,关于界面ui的实现,有一模块是类似word文档实现按钮下拉菜单功能的实现。这块实现遇到不少坑,特总结一下经验,为后人少掉坑。参考类似word相应功能实现:产品工作需求设计:产品最终实现效果思路参考了不少网上文档,没有找到合适的相关实现。但是给我提供了实现的思路:利用CMFCMenuButton按钮加上CMenu菜单按钮,进行
2020-06-04 22:45:39 1359
原创 基于Window的 WSAEventSelect 网络通信模型
Windows WSAEventSelect 网络通信模型 WSAEventSelect 网络通信模型是 Windows 系统上常用的一种异步 socket 通信模型,下面来详细介绍下其用法。 WSAEVENTSELECT 用于服务器端 我们先从服务器端来看这个模型,在 Windows 系统上正常的一个服务器端 socket 通信流程是先初始化套接字库,然后创建侦听 socket,接着绑定 ip 地址和端口,再调用 listen 函数开启侦听。代码如下: //1. 初始化套接字库.
2020-05-31 16:14:14 1226
原创 Windows 的 WSAAsyncSelect 网络通信模型
Windows 的 WSAAsyncSelect 网络通信模型WSAAsyncSelect ** 是 Windows 系统非常常用一个网络通信模型,它的原理是将 socket 句柄绑定到一个 Windows 窗口上并利于 Windows 的窗口消息机制实现了网络有消息时调用窗口函数。WSAAsyncSelect ** 函数签名如下:int WSAAsyncSelect( SOCKET s, HWND hWnd, u_int wMsg, long lEvent);参数...
2020-05-31 16:00:56 512
原创 MFC 光标设置总结
函数功能分析LoadCursorA从与应用程序实例关联的可执行文件(. exe)加载指定的游标资源。语法HCURSOR LoadCursorA( HINSTANCE hInstance, LPCSTR lpCursorName);参数 hInstance 模块实例的句柄,其可执行文件包含要加载的游标。 lpCursorName 要加载的游标资源的名称。或者,该参数可以由低序字中的资源标识符和高序字中的零组成。也可以使用MAKEINTRESO...
2020-05-29 16:33:47 1179
原创 mysql错误:Subquery returns more than 1 row
mysql错误:Subquery returns more than 1 rowMysql报错基于两个表信息解决方案:方案一:limit 1方案二:group_concat()方案三: any和some参考例子Mysql报错Mysql报错:1242 - Subquery returns more than 1 row错误的意思是指子查询结果多于一行。报错如下:mysql> selec...
2020-03-06 10:40:45 41454 4
原创 C++设计模式系列文章
设计模式系列代码资源:https://github.com/FengJungle/DesignPattern01.设计模式——设计模式概述博客地址:https://blog.csdn.net/sinat_21107433/article/details/10251348502.设计模式(二)——UML类图介绍博客地址:https://blog.csdn.net/sinat_21...
2020-01-04 22:44:13 191
原创 STL容器和迭代器(二)--Vector的实现原理剖析
Vector的实现原理剖析杂谈vector的实现原理以及实现机制实现机制:浮想联翩(问题):vector:向量API函数使用vector中的reserve和resize的比较我们先来看一下C++中对resize与reservede的表示:两者区别reserve与resize的相同点:C++之迭代器失效及解决解决迭代器失效的问题参考网址杂谈在学习C++的时候我们会接触两个库,一个是boost库,...
2020-01-02 19:04:12 582
原创 类的设计模式(1)--单例模式
单例模式描述UML图:单例代码分析测试代码总结描述单例的一般实现比较简单,下面是代码和UML图。由于构造函数是私有的,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance。UML图:单例代码//Singleton.h class Singleton { public: static Singleton* GetInstance()...
2019-12-30 15:16:12 269
原创 C++之迭代器失效及解决
C++之迭代器失效及解决描述基于CStringList来实现数据插入删除代码逻辑描述代码实现崩溃界面显示分析基于链表式容器List来实现数据存储代码实现崩溃问题描述错误分析网上关于错误描述:关于迭代器失效总结解决方案:网络资料参考描述在霍尼韦尔门禁项目中,通过遍寻霍尼韦尔设备获取设备信息后,GotMessage会不断收到消息,并把消息数据添加到容器里面。在回调函数线程中,进行循环获取处理容器数...
2019-12-23 19:03:40 1483
原创 vs2019 加载符号慢,如何避免调试时加载符号
vs2019 加载符号慢,如何避免调试时加载符号用VS2013打开代码文件,按下F5进行调试,可以看到系统会自动加载符号。关闭调试,打开“工具”-“选项”-“调试”,在调试中找到符号选项在下图中取消勾选如下选项,确定并退出即可。总结用VS2013打开代码文件,按下F5进行调试,可以看到系统会自动加载符号。关闭调试,打开“工具”-“选项”-“调试”,在调试中找到符号选项在下图中取消勾选如下...
2019-12-05 17:59:04 17728 5
原创 VS编译问题汇总
VS编译问题汇总问题汇总:问题汇总:问题解决:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”https://blog.csdn.net/u012814856/article/details/76343540?utm_source=blogxgwz7MSB8041 MFC libraries are required for ...
2019-12-04 11:50:33 127
原创 关于结构体数组的使用
关于结构体数组的使用类型定义结构体定义map定义构建结构体数组结构体数组添加到map容器中查询类型定义结构体定义typedef struct DevStatueInfo{ CString sStatueId; CString sDescribe;};map定义map<CString, CString> m_devInfoMap;构建结构体数组static De...
2019-11-21 22:10:26 363
原创 C++面试总结
C++面试总结一、C-C++面试知识点总结二、C++面试总结三、C++面试总结之C++语言特性四、C++面试常问问题汇总五、网络总结:六、数据库总结七、C++面试总结之算法八、C++面试总结之操作系统一、C-C++面试知识点总结1、C/C++面试知识点总结(一)https://blog.csdn.net/qq_18297675/article/details/770752452、C/C++...
2019-11-05 23:29:47 392
原创 关于#ifdef _DEBUG失效问题
关于#ifdef _DEBUG失效问题前言现象显示问题解决前言今天跟进项目遇到了一个问题。问题描述:调用动态库dll库函数时,动态库API函数不能正常进行跟进。现象显示(1)异常图示一:而正常图示二为:问题描述:正常的“#define new DEBUG_NEW”是一直都是灰色显示,而本次发生错误时,无论是release模式还是debug模式,“#define new DEB...
2019-11-04 15:05:18 1662
MFC关于下拉菜单按钮源码实现
2020-06-04
QtqmlDemo.rar
2019-09-29
REGSTAR_src.zip
2019-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人