自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ Windows触发刷新桌面

C++ Windows触发刷新桌面。

2022-09-01 18:55:00 892

原创 局部static变量

不通的模板类型会创建不同的函数,所以即使同为一个函数(其实编译器会根据不同的类型生成不同的函数)函数内的静态局部变量会根据类型的不同分别初始化。(4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。(2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;(3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为 0;(1)该变量在全局数据区分配内存;

2022-09-01 18:53:46 306

原创 蓄水池抽样算法

有一个在大数据下很现实的例子:“给出一个数据流,这个数据流的长度很大或者未知。并且对该数据流中数据只能访问一次。请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等。”解决这个问题既需要算法设计,又需要一些概率论知识,因此对于大多数人,起码包括我,这不是一个立刻就能想出答案的问题。解决这个问题的算法叫蓄水池采样(Reservoir Sampling)算法。本篇博客介绍该算法的原理、证明和代码实现。

2022-09-01 18:53:09 193

转载 git 项目过大clone报错问题处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-juZtxnHv-1662029450544)(/upload/2022/01/image-d8d3fca848c7485f8b08e8f716b4487d.png)]链接:https://www.jianshu.com/p/1031dd2a6c3a。商业转载请联系作者获得授权,非商业转载请注明出处。解决方法很简单,在git clone时加上–depth=1即可解决。作者:SuperBinlin。

2022-09-01 18:52:30 3085

原创 C printf可变参数的实现原理

所以参数的地址从左到右依次增大),从右到左依次初始化,所以,函数的参数位置是确定的,一旦我们知道了某一个参数的地址我们就可以获得所有参数的地址。由于函数参数是存放在栈中的,printf函数有__cdecl声明,所以是是从右到左依次入栈(栈地址是由高地址向低地址生长的。

2022-09-01 18:50:27 189

原创 std::tie 创建左值引用的 tuple,或将 tuple 解包为独立对象

但里面什么也没有做,直接将传进来的值抛弃。利用了赋值操作运算符和模板,可以抛弃任意类型的值。: 创建左值引用的 tuple,或将 tuple 解包为独立对象。可以对std::tuple以及std::pair进行解包。含左值引用的 std::tuple 对象。

2022-09-01 18:49:20 174

原创 C++14中引入std::shared_mutex

std::shared_mutex用于管理可转移和共享所有权的互斥对象,适用场景比较特殊:一个或多个读线程同时读取共享资源,且只有一个写线程来修改这个资源,这种情况下才能从shared_mutex获取性能优势。C++14中引入std::shared_mutex。

2022-09-01 18:47:59 431

原创 适配器模式

【代码】适配器模式。

2022-09-01 18:47:18 46

原创 差分 数组

今天在做leetcode每日一题的时候,又学到了一个特殊的数组《差分数组》。链接。

2022-09-01 18:45:01 71

原创 NSIS 设置多语言以及自动跟随随系统

NSIS 设置多语言以及自动跟随随系统

2022-07-18 19:07:21 887

原创 windows terminal 设置随机图背景

windows terminal设置指定的背景图片可能很多人不知道windows terminal 是支持随机图api的。步骤:12在这儿输入随机图api的链接地址就可以随机图api整理,地址

2021-09-07 16:01:36 205

原创 STL中std::set、std::map的lower_bound和upper_bound

STL中std::set、std::map的lower_bound和upper_boundstd::set::lower_bound 返回给定值在set中第一个大于等于该值的迭代器std::set::upper_bound 返回给定值在set中第一个大于该值的迭代器第一次见介绍这两个函数看的 很迷惑,都返回了包含大于关键字的迭代器,跟我们理解的low与up相对的概念不太相同。之后又发现了一篇文章,专门说明这么设计的原因。感觉有必要记录一下,免得以后又忘记了。std::set::upper_bound

2021-04-17 17:42:00 798

原创 基于openssl的aes_ecb加解密

基于openssl的aes_ecb加密aes基于openssl的aes_ecb加密基于openssl的aes_ecb解密aesAES五种加密模式(CBC、ECB、CTR、OCF、CFBecb是aes加密的多种模式中的一种, 这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。基于openssl的aes_ecb加密int32_t Encrypt(const string& content, string& strOut){ int len = content.le

2020-12-01 17:18:09 910

原创 基于openssl的base64编解码

基于openssl的base64编解码base64原理基于openssl的base64编码基于openssl的base64解码base64原理base64是一种编码,并不是一种加密方式。一串base64编码的数据被任何人得到都可以进行解码。base64编码原理建议参考:base64编码原理基于openssl的base64编码size_t BcBase64Encode(const void* data, int data_len, string& res){ BIO* b64 =

2020-12-01 16:29:38 211

原创 C++遍历windows进程及获取进程的各种信息

C++遍历windows进程及获取进程的各种信息遍历进程遍历进程struct ProcessInfo{ wstring szProcessName; wstring szcmdline; DWORD processId; DWORD numOfthread; int64_t cpuInfo; uint64_t memoryInfo; uint64_t IDiskBytes; uint64_t ODiskBytes; uint64_t INetReceiveBytes; uint64

2020-11-15 17:00:25 6309 1

原创 C++windows 进程提权

windows进程提权使用到的系统函数代码使用到的系统函数OpenProcessToken, LookupPrivilegeValueW,AdjustTokenPrivilegesBOOLWINAPIOpenProcessToken( //打开与进程相关联的访问令牌 _In_ HANDLE ProcessHandle, //所要提升进程的句柄 _In_ DWORD DesiredAccess, //选择所要操作的类型,指定请求的访问令牌访问类型 _Outptr_ PH

2020-11-15 16:45:11 1715

原创 自用Windows API 整理

自用Windows API 整理进程相关进程相关CreateToolhelp32Snapshot//CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、//进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。HANDLE CreateToolhelp32Snapshot( DWORD dwFlags, //指定快照返回的对象 DWORD th32ProcessID //要获取的进程id,指定为0时默认获取所有进程的快照 );

2020-11-13 17:26:10 87

原创 C++Leetcode--329. 矩阵中的最长递增路径

329. 矩阵中的最长递增路径中文版本链接link思路:该题直接是由dfs会超时,我使用的是dfs+记忆的方法ac的。关键点在于对于已经遍历过的节点保存以其为根的最长增长路径,这样在再次访问到这个节点的时候就可以直接返回不需要再次求取了。class Solution {public: int dfs(vector<vector<int>>& matrix, int row, int col, vector<vector<int>>&

2020-11-11 21:21:25 308

原创 C++Leetcode--31. 下一个排列

31. 下一个排列中文版本链接link思路:1.首先从右向左遍历列表,找到第一个下降的点即nums[i] < nums[i+1],这个i就是需要替换的位置。2.将i之后的点即[i+1, nums.size()-1]这个区间里的数倒序排列3.在[i+1, nums.size()-1]这个区间里找到大于nums[i]且最接近num[i]的点,交换位置。class Solution {public:void nextPermutation(vector<int>& nu

2020-11-11 21:12:20 95

原创 windbg命令整理

windbg命令整理基础命令调试命令模块信息调试符号线程栈设置断点基础命令说明命令用法描述帮助?/.help/.hh?/.help/.hh常规命令/元命令/打开windbg help文档清空屏幕.cls.cls清空屏幕查看异常信息.excr/.lastevent/.exr -1/!analyze!analyze -v/!analyze -hang/!analyze -f显示当前异常信息/分析线程栈,看是否有线程blocking其他线程/See an

2020-10-13 17:15:24 214

原创 一些QT控件类的属性初始化

一些QT控件类的属性初始化QListWidgetQTableWidgetQListWidget//列表初始化,并隐藏 QVBoxLayout* vlayout = new QVBoxLayout(); ui.widget_2->setLayout(vlayout); m_pListwidget = new QListWidget(ui.widget_2); m_pListwidget->setAlternatingRowColors(true); //交替行颜色 m_pListwi

2020-09-05 15:46:06 1238

原创 QT实现窗口可拖动

QT实现窗口可拖动QT实现串口可拖动需要在窗口类中重写以下三个函数:virtual void mousePressEvent(QMouseEvent* event);virtual void mouseMoveEvent(QMouseEvent* event);virtual void mouseReleaseEvent(QMouseEvent* event);同时定义以下三个类属性用于窗口拖动判断和位置偏移计算:bool m_bDragging; // 是否正在拖动QPoint m_p

2020-09-05 11:56:18 2883

原创 lambda表达式

lambda表达式学习 Effective Modern C++ 第6章 笔记避免lambda表达式的默认捕获模式按引用捕获的危险情况按值引用的危险情况要点速记使用初始化捕获将对象移入闭包C++14 中使用初始化捕获将对象移入闭包C++11 中模拟初始化捕获要点速记学习 Effective Modern C++ 第6章 笔记避免lambda表达式的默认捕获模式C++11有两种默认捕获模式:按引用与按值。按引用捕获的危险情况std::function 头文件 #include < functi

2020-08-21 17:26:34 294 1

原创 使用微软API读写用户自定义ini文件

使用微软API读写ini文件写ini文件的API写文件读ini文件的API读文件写ini文件的APIWritePrivateProfileSectionWritePrivateProfileString WritePrivateProfileStruct写文件WritePrivateProfileString(L"test", TEXT("SD"), TEXT("12"), L"C:\\Users\\test\\source\\repos\\test\\test\\a.ini");其中"t

2020-08-21 15:09:05 179

原创 windows C++获取本机IP地址列表,本机时间,程序运行路径

windows下C++获取本机IP地址列表int32_t GetLocalIP(std::vector<std::string>& vdata){ WSADATA wsaData; int iResult; DWORD dwRetval; struct addrinfo* result = nullptr; struct addrinfo* ptr = nullptr; struct addrinfo hints; struct addrinfo* cur = null

2020-08-18 18:06:07 401

原创 C++递归式遍历文件夹及文件

C++遍历文件夹及文件void GetAllFullTypeFileX86(std::map<std::string, std::string>& files, const std::string& path, const std::string& fileType){ int32_t hFile = 0; //文件句柄 struct _finddata_t fileinfo; //文件信息读取结构 std::string p; i

2020-08-18 18:02:35 754

原创 C++进行文件读写

C++文件读写读文件写文件读文件//逐行读取文件int32_t ReadLineFromFile(const std::string& fileName, std::vector<std::string>& infos){ std::fstream file; file.open(fileName, std::ios::in); if (false == file.is_open())return MYRESULT::OPEN_FILE_ERROR; std::s

2020-08-18 17:58:38 126

原创 C++各种字符串转码实现集合

C++各种转码实现集合string -> wstringwstring -> string更改string编码为gbk格式string -> wstringstd::wstring StringToWstring(const std::string& str){ std::wstring result; //获取缓冲区大小,并申请空间,缓冲区大小按字符计算 int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(),

2020-08-18 17:45:50 653

原创 使用vcpkg 编译支持sftp的libcurl

使用vcpkg 编译支持sftp的libcurllibcurl的编译下载vcpkg编译vcpkg使用vcpkg编译所需的库vs中使用vcpkglibcurl文件上传使用实例libcurl的编译下载vcpkg使用git将vcpkg从github上clone下来:github地址git clone https://github.com/microsoft/vcpkg编译vcpkg使用cmd进入vcpkg所在目录执行批处理文件完成安装。F:\vcpkg>cd vcpkgF:\vcpkg\v

2020-08-18 17:22:49 1582

原创 C++调用外部exe, 并传参获取返回值

C++调用外部exe, 并传参获取返回值调用exeCreateProcess函数原型CreateProcess示例调用exeC++调用使用CreateProcess函数调用外部exe传参并获取其执行结果。CreateProcess函数原型MSDN官方地址介绍BOOL CreateProcess( LPCWSTR pszImageName, // an exe file. LPCWSTR pszCmdLine, // parameter for your exe fi

2020-08-18 16:48:19 6265

空空如也

空空如也

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

TA关注的人

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