
工作杂项问题
文章平均质量分 65
Lasuerte
这个作者很懒,什么都没留下…
展开
-
C++11 线程池
#include <cstdlib>#include <string>#include <iostream>#include <memory>#include <thread>#include <vector>#include <queue>#include <mutex>#include <condition_variable>#include <atomic>#i.原创 2020-06-13 14:42:59 · 329 阅读 · 0 评论 -
linux下拷贝动态库遇到的问题
linux默认cp命令是有别名的,也就是说在执行cp命令的时候,实际上执行的是别名的命令。通过alias命令可以查看当前系统的别名设置情况:可以看到cp命令已经设置了别名。这样即使使用cp -f也不会生效。\cp会调用原生cp命令不使用别名,因此能达到效果。除了\cp外还有一种写法:#unalias cp#cp -rf ***首先取消别名,然后再调用。unalias命令不是永久生效的。===========通过ln -s 创建软链接语法为:ln -s 源文件路径 软链接文原创 2020-05-28 10:20:16 · 1142 阅读 · 1 评论 -
【转】C/C++中可变参数的详细介绍(va_list,va_start,va_arg,va_end)
可变参数的函数原理其实很简单,而va系列是以宏定义来定义的,实现跟堆栈相关.我们写一个可变函数的C函数时,有利也有弊,所以在不必要的场合,我们无需用到可变参数。如果在C++里,我们应该利用C++的多态性来实现可变参数的功能,尽量避免用C语言的方式来实现。 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况,提...转载 2020-04-28 09:55:54 · 352 阅读 · 0 评论 -
linux x86_64 下编译grpc总结
grpc库的编译需要依赖多个三方库,官方建议通过./.gitmodules去获取依赖库,但我的linux环境是不能联网的,必须离线安装。查看./.gitmodules文件,其实是去github把代码拉取到gprc的thirdparty/对应的目录下,具体如下将编译过程中缺少的三方库在windows下载好,拷贝至对应的目录即可编译过程中会报错unrecognized command ...原创 2020-04-15 09:45:21 · 1534 阅读 · 0 评论 -
通过递归打印组合
void PrintNum(int nNum, std::vector<int>& vecNums);void PrintNumOut(int nNum){ std::vector<int> vecNums{ 0,0,0,0 }; PrintNum(nNum, vecNums);}void PrintNum(int nNum, s...原创 2020-03-05 09:52:38 · 237 阅读 · 0 评论 -
C++中类大小的计算
c++中类所占的大小计算并没有想象中那么简单,因为涉及到虚函数成员,静态成员,虚继承,多继承以及空类等,不同情况有对应的计算方式,在此对各种情况进行总结。首先要明确一个概念,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 我们这里指的类的大小,其实指的是类的对象所占的大小。因此,如果用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。关于类/对象大小的计算首先...转载 2018-11-07 16:49:11 · 261 阅读 · 0 评论 -
注册OCX控件并在VS2013的mfc程序中使用及常见问题总结
注册OCX控件需在cmd内使用regsvr32命令,具体操作如下图1.模块"XXX.ocx"已加载,但对DllRegisterServer的调用失败,错误码为0x80040201这个问题应该是未使用管理员身份运行cmd导致。2.模块"XXX.ocx"加载失败。请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题。找不到指定的模块。...原创 2019-02-01 11:03:57 · 2851 阅读 · 0 评论 -
LoadLibraryEx报错GetLastError返回错误193
HINSTANCE m_DLL = ::LoadLibraryEx("E:\\JnPlatformV2.1\\bin\\Debug\\Plugins\\Uniview\\NetDEVSDK.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);auto Lasterror = GetLastError();上边的代码返回错误193,即%1 不是有效的 Win...原创 2019-01-23 11:50:32 · 6180 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)
C++文件读写详解(ofstream,ifstream,fstream) 这里主要是讨论fstream的内容:1 #include <fstream> 2 ofstream //文件写操作 内存写入存储设备 3 ifstream //文件读操作,存储设备读区到内存中 4 fstream //读写操作,...转载 2019-04-24 09:39:37 · 508 阅读 · 0 评论 -
linux下,C++编译报错 undefined reference to "XXX"
在编译工程的时候遇到了这个问题,前提是头文件与库文件都是正确的,且CMakeLists.txt已将库和头文件配置进去了,结果编译时仍然报错无法解析的外部符号,究其原因,是因为库之间存在依赖关系,写CMakeLists时,需要将被依赖的库写在后边,将库的依赖顺序调整好后,编译通过。...原创 2019-06-14 17:20:07 · 1528 阅读 · 0 评论 -
linux下计算pod的cpu利用率与mem使用情况
一、计算CPU利用率(计算方式与top指令源码方式相同)1.计算宿主机的cpu核数2. 从文件中读取本身进程的一段时间使用情况,即隔一段时间分别获取使用情况,通过这段时间的(使用时间)/(总时间),即可得到cpu利用率,代码如下:#include "stdlib.h"#include "stdio.h"#include "unistd.h"#include <ios...原创 2019-08-05 20:03:11 · 2078 阅读 · 0 评论 -
C++中大数运算简单处理
这里说的是在数据类型表示范围内的处理,如果是非常大的数,可以封装bignumber用字符串运算。遇到问题是unsigned long long int = 1024*1024*1024*4;用一个超级大的类型在32位程序上,只要超过int表示范围也会变为0,因为右边的默认为int操作,所以需要指定类型:u :表示无符号整形(unsigned)l:表示long类型...原创 2019-10-11 09:48:37 · 1287 阅读 · 0 评论 -
解决error MSB6006: “CL.exe”已退出,代码为 -1073741515。
我的VS2012出现莫名其妙的问题。到C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin目录下找到的cl.exe;发现cl.exe打开会报错;结果是缺少msobj110.dll、mspdb110、mspdbcore.dll及mspdbsrv.exe这几个文件;将C:\Program Files (x86)\Micro...原创 2018-10-24 10:45:19 · 31051 阅读 · 7 评论 -
win32程序增加mfc支持
首先,在 stdafx.h中,屏蔽掉 #include<windows.h>然后在 stdafx.h中加入#ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif #include <afx.h> #include <afxwin.h> ...原创 2018-10-31 11:11:01 · 919 阅读 · 0 评论 -
Shell API
第一个问题: ShellExecute()函数的第一个参数 HWND hwnd 究竟有什么用? 我调用该函数打开一个文件的时候,以NULL为参数也没出什么问题呀。 ShellExecute的多种用法 ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定转载 2017-11-01 11:08:32 · 631 阅读 · 0 评论 -
常用的设置备忘
设置程序管理员启动方式启动原创 2018-05-18 13:31:30 · 205 阅读 · 0 评论 -
编写dll程序遇到的一些问题
首先是这些东西必须要有#ifndef _JN_ASYNC_SOCKET_CMN_H_#define _JN_ASYNC_SOCKET_CMN_H_//---------------------------------------------------------#ifdef WIN32 // Windows#ifdef JNASYNCSOCKETLIB_EXPORTS#ifndef ...原创 2018-06-06 18:30:06 · 197 阅读 · 0 评论 -
Windows下软件提示“没有注册类”问题解决
相关的dll没有注册,手动注册后,发现 regsvr32 C:\Windows\SysWOW64\***.dll 会提示加载失败,查到原因为管理员的命令行(批处理)默认的是system32文件夹。所以需要把dll放到C:\Windows\System32\ 下,然后用管理员权限运行刚刚的注册指令,注册成功后,软件就可以用了...原创 2018-06-21 12:02:10 · 31016 阅读 · 1 评论 -
小细节问题记录
1.memcpy 与strcpy 的区别是1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用me...原创 2018-06-19 14:10:02 · 240 阅读 · 0 评论 -
包含目录、库目录、附加包含目录、附加库目录、附加依赖项
VS项目中的包含目录、库目录、附加包含目录、附加库目录、附加依赖项均在"项目->属性->配置属性"下进行配置,具体说明如下:VC++目录: 包含目录:寻找#include<xxxx.h>中的xxxx.h的搜索目录 库目录:寻找.lib文件的搜索目录C/C++: 常规->附加包含目录:寻找#include<xxxx.h>中的xxxx.h的搜...转载 2018-06-26 17:03:07 · 323 阅读 · 0 评论 -
vs2013设置不生成.sdf和ipch文件
使用VS2013建立解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大。本文介绍两种方法使得在vs2013中不产生.sdf和ipch文件 方法一:Tools->Options->Text Editor->C/C++->Advanced->Disable Database,设置为Tr...转载 2018-07-16 11:25:49 · 434 阅读 · 0 评论 -
修改VS项目名称
1.修改项目头文件xxx.h与CPP文件xxx.cpp名为yyy.h与yyy.cpp2.修改sln,vcxproj及vcxproj.*文件名xxx.* 为 yyy.*3.用notepad++等编辑器打开sln,vcxproj与vcxproj.* 文件,将所有xxx替换为yyy这样就可以了,注意替换后所有包含头文件的地方都要修改直接Ctrl+H替换即可...原创 2018-08-29 09:50:07 · 629 阅读 · 0 评论 -
网络传输粘包解包处理
有时候发送的数据过长,接收的时候只接收了一部分,会出现错误。这里以客户端接收服务端消息为例,讲解一种解包的方法,作为备忘(总是忘没办法)1.客户端有一段缓冲区char m_szAnalysisBuf[51200] 成员变量,用于存放接收数据,在回调函数收到数据后,判断缓冲区是否满了(一般不会满),未满的话将新接收的数据加入到缓冲区中,并更新缓冲区长度。如果缓冲区满了,则舍弃掉原缓冲区的数据,将...原创 2018-09-12 11:05:57 · 833 阅读 · 0 评论 -
常用工作函数代码
1.产生从 nStart到nEnd的连续不重复随机数#include <time.h> // time(0)#include<stdlib.h> // rand srand#include <process.h> // getpidint randNum(__in int nStart, __in int nEnd, __...原创 2018-10-18 11:40:25 · 277 阅读 · 0 评论 -
非MFC工程使用MFC库
非MFC工程使用MFC库时,可参考以下步骤1、工程设置中,将MFC的使用由原来的“使用标准windows库”改为“在共享DLL中使用MFC”(VC71)如果是英文版,相关选项是:Microsoft Foundation Classes: Use MFC in a shared dll, no using MFC(VC6)NOTE:因为我用的是中文版的vc71,英文版的vc6.转载 2017-10-30 13:36:35 · 537 阅读 · 0 评论