- 博客(17)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 模板类的友元函数
VS2013 编译《C++沉思录》ch14中的源码时,出现无法解析的外部符号:错误 1 error LNK2019: 无法解析的外部符号 "class Pointer<int> __cdecl operator+(class Pointer<int> const &,int)" (??H@YA?AV?$Pointer@H@@ABV0@H@Z),该符号...
2019-09-30 15:16:22 202
原创 c可变参数实现
一,使用介绍 void _cdecl MsgFormat(TCHAR *pDst, const TCHAR *pFormat, ...){ va_list pArgs; va_start(pArgs, pFormat); _vstprintf(pDst, pFormat, pArgs); //字符串溢出,调用者保证 va_end(pArgs);}c标准...
2019-06-25 15:35:33 945
原创 mpc-hc源码分析---EventDispatcher.h
一. 前言 界面控件非常多的时,需要一种通知机制。mpc-hc中的EventDispatcher实现了这种通知机制。二.类关系图在mpc-hc中,定义宏GetEventd()获取全局唯一的EventRouter对象,控件拥有一个EventClient对象。1)控件初始化时,使用EventRouter::Connect接口,注册该控件可以触发(fires)的事件,...
2019-06-17 11:07:23 401
原创 C lambda值引用 失效
#include <algorithm>#include <iostream>#include <chrono>#include <thread>using namespace std;std::thread thrd;void work(const std::function<void()> &func){ ...
2019-04-10 11:29:45 1116
转载 Inno Setup 初次使用
一,需求 1)发行程序需要,安装配置mysql, 安装配置Ftp Server,转载 来自北方:https://www.cnblogs.com/dehai168/p/4512484.html 2)安装包需要管理员权限,转载https://www.cnblogs.com/SnailProgramer/p/4243666.html...
2019-03-20 10:33:13 298
原创 C++ delete自定义数据库类型导致内存泄露
一, 问题场景 代码中使用自定义数据类型时,为了提高入参,出参普遍性。使用了void *指针类型管理入参出参。当释放内存时没有指定指针指向的类型,从而导致内存泄露。typedef std::shared_ptr<SPIWorker> SPIWorker;typedef std::weak_ptr<SPIWorker> WPIWorker;typedef ...
2019-03-14 16:20:54 391
原创 window下安装mysql并配置主从数据库
一、安装mysql网上找到教程安装mysql,遇到几点坑: 1)data文件创建:使用mysqld--initialize-insecure命令生成,而不是手动创建此文件夹 2)my.ini文件配置: a) linux下配置文件名称为my.cnf,window下配置文件名称为my.ini ...
2019-03-05 11:20:21 238
转载 replication slave设置
一、问题描述使用mysql创建从数据库访问账号时:grant replication slave on dbName.* to 'replicate'@'192.168.1.3' identified by '123456';出现‘’Incorrect usage of DB GRANT and GLOBAL PRIVILEGES‘’。https://www.cnblogs.com/t...
2019-03-04 16:52:16 6153
原创 C++ 实现数据库版本升级接口
一、应用场景 随着需求的变化,数据库表结构可能发生改变,这个时候就需要对数据库文件进行升级。抽象接口如下://注:class IDataBase;//typdef shared_prt<IDataBase> SPIDataBase;class IDBVersion;class IDBVersionFactory;typedef shared_ptr&...
2019-03-01 16:16:20 560
原创 C++智能指针在接口中的应用
一,应用场景 使用mysql数据库时, 当应用数据写入mysql失败后,使用sqlite数据库作临时存储,然后更新到mysql数据库中。抽象接口如下:#include <iostream>#include <memory>class IDataBase;class CMysqlDataBase;class CSqliteDataBase;...
2019-03-01 15:28:39 788
原创 FindNextFile函数
一、问题描述 使用FindFirstFile与FindNextFile遍历指定文件夹时,获取不到该文件夹下的文件。 class CMySharedFile;bool GetAllFiles(LPCTSTR lpDir, std::set<CMySharedFile> files);......std::set<CMySharedF...
2019-02-26 20:31:52 2538 1
原创 SQLite死锁
一,场景描述 有两个线程,一个线程对SQLite数据库读操作。另外一个线程对数据库写操作,写操作是通过begin transaction, commit transaction操作完成。业务层操作保存数据时,出现卡死现象 通过日志打印,发现commit transaction时,出现数据库死锁二.解决过程 通过https://blog.csdn.net/u012160319/ar...
2018-06-08 18:39:06 4050
原创 CTimer,对同一定时器,多次调用SetTimer
1.结论 对同一定时器,多次调用SetTimer,定时器会被重置。2.验证LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; RECT rect; DWORD tick; stati...
2018-06-04 20:11:00 4363
原创 输入输出缓存刷新
一,问题场景 使用getchar获取用户输入,根据用户输入判断是否退出循环,输入字符之后,发现连续出现两次提示输入 int main( int argc, char **argv ) { char condition; do { printf("input y or Y to quit\n"); condition = getchar();...
2018-04-25 15:50:03 489
原创 模态对话框结束,界面上却没有消失
一,场景描述 今天维护代码的时候,在主框架的WindowProc函数中,显示了一个模态对话框。点击模态对话框上面的按钮之后,会调用EndDialog函数。通过打印发现,模态对话框已经销毁了,模态对话框却一直存在界面上。二,问题定位 后台线程在像被模态对话框遮挡的窗口上投递Windows消息。被遮挡的窗口处理消息时,是通过invalidRect方式,局部重绘窗口。三,解决办法 结束...
2018-04-23 21:04:38 491
原创 阅读C项目初次感受
一,介绍 在阅读C代码时,快速掌握方式,就是弄清楚各个项目工程之间的关系,各个工程中编译单元(.c)的关系。例如,我们一般将UI和底层逻辑分离成为两个工程: -solution.sln +xxxUI.vcproj +XXXLogic.vcproj 二、项目之间的关系 项目一般是通过连接库方式提供:静态链接库(xxxLogic.lib)或者动态连接库(x...
2018-04-23 20:36:14 1029
QTableWidget cellWidget
2018-01-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人