
原创
heihei36
这个作者很懒,什么都没留下…
展开
-
C++虚继承解决菱形继承的问题细节
#include <iostream>using namespace std;class A {public: A(int a) : a(a) { std::cout << "A construct: " << a << std::endl; } int a;};class B : virtual public A {public: B(int a) : A(a) { std...原创 2022-04-16 01:47:35 · 821 阅读 · 0 评论 -
IP地址uint32与string互换
#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>uint32_t addr_ston(const char* host) { uint32_t iaddr = inet_addr(host); return htonl(iaddr);}char* addr_ntos(const uint32_t host) { uint32_t iaddr = .原创 2022-04-12 14:09:37 · 2213 阅读 · 0 评论 -
判断ip是否为multicast
#include <arpa/inet.h>#include <netinet/in.h>#include <sys/socket.h>#include <iostream>bool is_multicast(const std::string& addr) { uint32_t iaddr = inet_addr(addr.c_str()); uint32_t net_addr = htonl(iaddr); //.原创 2022-04-12 13:46:38 · 244 阅读 · 0 评论 -
VS替换换行和制表符
相信许多小伙伴在使用VS时,都会将在.h文件中声明的接口,直接COPY到.CPP中,那么就有如下需求:将;号换成{ return;}只需打开查找,查找内容输入;,替换为输入\r\n{\r\n\treturn true;\r\n}\r\n\r\n,查找选项中将使用正则表达式勾,点击全部替换即可。如果函数较多,可以大大的提升工作效率,如下图实际效果图:点击全部替换后:...原创 2019-11-27 16:13:03 · 4851 阅读 · 0 评论 -
栈堆地址高低次序问题
结论:一、a地址大于b地址大于c地址验证栈是由高到低分配地址的(先进后出),c地址小于f地址小于e地址验证堆地址分配是无序的(先进先出)。二、无论堆或者栈,数组的内存的高低位都是由低到高的。原因即申请d[10]或者e时,是一次性申请的,而不是分十次申请的,这点不违反第一个结论。(这是我写此文的很重要的原因)直接上测试代码:int main(){ printf("*******...原创 2019-11-25 14:41:39 · 2755 阅读 · 0 评论 -
Linux 互斥锁
CLock.h#ifndef __CLOCK_H__#define __CLOCK_H__#include class ILock {public: virtual ~ILock() {}; virtual void Lock() const = 0; virtual void UnLock() const = 0;};class CMutex : public IL原创 2017-07-06 10:28:33 · 421 阅读 · 0 评论 -
Linux C++ zookeeper创建临时节点类封装
至于zookeeper环境搭建和c++ client端的编译,此处就不再赘述了。直接上实现代码吧。主要功能:zookeeper创建临时节点,可用于判断程序是否存在。实现思想:实现CZkCreateEphemeralNode类,在构造函数中创建临时节点,析构函数中删除或者不删除都是可以的。那么,定义一个全局对象或者NEW一个对象即可。CZkCreateEphemeralNode.原创 2017-08-05 09:26:39 · 1159 阅读 · 0 评论 -
C++跨平台互斥锁实现
CMyLock.h#ifndef __CMYLOCK_H__#define __CMYLOCK_H__#ifndef _WIN32#include <pthread.h>#else#include <windows.h>#endifclass ILock{public: virtual ~ILock() {}; virtual void Lock(...原创 2018-04-24 18:10:23 · 962 阅读 · 0 评论 -
mongodb C++ driver编译报错解决方案
错误信息:In file included from /usr/bin/mongo-cxx-driver-r3.1.1/src/bsoncxx/json.hpp:21:0, from /usr/bin/mongo-cxx-driver-r3.1.1/src/bsoncxx/document/element.cpp:24:/usr/bin/mongo-cx原创 2017-05-17 14:36:17 · 1296 阅读 · 0 评论 -
C++ odac ado 报错
C++使用ADO连接ORACLE在WIN7下正常,在WIN10下异常,ADO的错误信息为:ADODB.Connection未找到提供程序,该程序可能未正确安装。原因详解:由于ODAC的install.bat会调用configure.bat,而configure.bat会注册OraOLEDB11.dll(regsvr32 /s "%BAT_DIR%bin\OraOLEDB11.d原创 2017-05-24 17:51:10 · 684 阅读 · 0 评论 -
Visual Studio C1128错误解决方案
Visual Studio C1128错误信息:fatal error C1128: number of sections exceeded object file format limit : compile with /bigobj解决方案:属性-->C/C++-->Command Line-->其他选项 添加 /bigobj 选项。原创 2017-01-10 20:12:43 · 5805 阅读 · 1 评论 -
WINDOWS下BOOST库编译
1、 下载BOOST库官网下载地址:http://www.boost.org/users/download/2、 解压boost_1_60_0.zip3、 直接运行解压后的bootstrap.bat生成bjam.exe文件。4、 打开CMD,执行bjam.exe --toolset=msvc-10.0address-model=64 threading=multi --build-原创 2016-10-13 14:50:29 · 602 阅读 · 0 评论 -
32位和64位C++程序使用ADO访问ORACLE注意事项和区别
32位:1、安装32位ORACLE客户端。2、在stdafx.h文件中增加: #import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")3、连接串为: "Provider=MSDAORA.1;Passw原创 2016-08-17 18:38:33 · 3874 阅读 · 0 评论 -
C++互拆锁
CLock.h#ifndef __CLOCK_H__#define __CLOCK_H__#include class ILock {public: virtual ~ILock() {}; virtual void Lock() const = 0; virtual void UnLock() const = 0;};class CMutex : public原创 2017-10-12 10:01:36 · 441 阅读 · 0 评论 -
linux C++ Utf8toGb2312 Gb2312toUtf8 MyA2W和MyW2A实现
CHealper.h#ifndef __CHELPER_H__#define __CHELPER_H__#include int Utf8toGb2312(const char *sourcebuf, size_t sourcelen, char *destbuf, size_t* destlen);int Gb2312toUtf8(const char *sourcebuf, s原创 2017-09-01 09:25:03 · 888 阅读 · 0 评论 -
LINUX C++ 按修改时间清理过期文件函数实现
#define _IS_DIR_ 0x4#define _IS_FILE_ 0x8void DeleteFolder(const char* dir, int nSpanTime){ if (dir == nullptr || strlen(dir) <= 0) return; struct stat s; lstat(dir, &s); if ( !S_ISDIR(s.st_mo原创 2017-12-09 18:37:20 · 1021 阅读 · 0 评论 -
linux c删除超时文件包括空目录
bool DeleteTimeOutFile(const char* dir, int nSpanTime){ if (dir == nullptr || strlen(dir) <= 0) return false; struct stat s; //lstat(dir, &s); stat(dir, &s); if (!S_ISDIR(s.st_mode))...原创 2018-03-08 17:29:01 · 505 阅读 · 0 评论 -
LINUX能new最大空间是多少?
new最大空间大小 = 操作系统剩余内存大小 + 操作系统剩余交换分区大小 另外,在测试过程中发现以下问题是我之前没注意到的,或者说是没细想过的:1、单纯的new是不会实际占用内存空间的,只要等到真正的用到时才会占用内存空间。2、new申请的超出最大空间(剩余内存大小 + 剩余交换分区大小)后,才会报出异常且得到一个空指针。3、int64_t nSize = 1024 * 10...原创 2018-10-25 14:50:33 · 2659 阅读 · 1 评论 -
简记MYSQL调优--IN改为INEER JOIN ON
近期有一个关于排行榜的需求,有以下几点需求:一、排行榜只显示前500名二、同一用户发布多个文章,取点赞量最高的那个文章三、点赞数相同,先达到这个点赞数的前在前建表语句及表设计:CREATE TABLE `t_article_thumbup_cnt` ( `user_id` bigint(20) NOT NULL, `article_id` varchar(128) N...原创 2019-07-09 16:57:38 · 534 阅读 · 0 评论 -
ES及插件-环境搭建
以下仅为安装ES及插件需要注意的地方,主要用于避坑,想看详细教程的绕行吧。一、下载安装包,直接解压即可。二、不允许使用root用户启动,需要使用非root用户否则报错。三、配置文件(config/elasticsearch.yml),需有以几项,其中标红二项不配置的话,会影响ES插件的功能。cluster.name: my-applicationnode.name: node-1ne...原创 2019-07-31 15:49:01 · 265 阅读 · 0 评论 -
spring cloud 使用ElasticSearch(6.x升级7.x版本)实例
说明:这实例中的代码包含6.x和7.x版本,其中接口以6为后缀的为6.3.1版本,无6后缀的为7.2.0版本,spring boot版本为2.0.3。ES官方文档已经说明7摒弃了type的概念,此文档对需要将ES版本由6升至7的场景有一定的借鉴意义。另外,6和7的代码皆验证通过,ES的JAVA客户端API目前比较流行RestHighLevelClient。配置: //compi...原创 2019-08-19 20:02:46 · 3715 阅读 · 0 评论 -
x264命令行格式转化方法
输入命令:x264 -o xxx.mkv xxx.yuv 352x288提示错误:raw [error]: raw input requires a resolution.x264 [error]: could not open input file `xxx.yuv' 解决方法:分辨率应该在文件名里,要将xxx.yuv重命名为xxx_352x288.yu原创 2012-09-21 16:29:27 · 2260 阅读 · 0 评论 -
剪贴板功能-C++实现
#include #include using namespace std;int main(){ HWND hWnd = NULL; OpenClipboard( hWnd );//打开剪切板 EmptyClipboard();//清空剪切板 HANDLE hHandle = GlobalAlloc(GMEM_FIXED, 1000);//分配内存 char* pData原创 2015-06-25 14:40:07 · 7792 阅读 · 0 评论 -
PROC简单使用用例--VC连接ORACLE
操作系统:windows 7数据库版本:oracle 10gVS版本:VS2010前言:连接ORACLE的方式有很多,此处仅以PROC为例,说明如何连接oracle,有不妥之处,望诸位看官指出,学习共进。一、安装oracle 10g对应的客户端版本。 注意事项:做好客户配置,以本机为例:D:\oracle\product\10.2.0\client_2\NETWORK\A原创 2014-10-16 16:44:51 · 4988 阅读 · 0 评论 -
利用生产者(读)消费者(写)模型拷贝大文件
#include #include #include #define nComsers 3#define nLenth 4*1024HANDLE g_hProducer;HANDLE g_hComsuers[nComsers];HANDLE g_hFullSemaphore;HANDLE g_hEmptySemaphore;HANDLE g_hMutex原创 2012-11-21 15:29:01 · 827 阅读 · 0 评论 -
关于dialog有多个属性页的一点想法
近日,做MFC的一些东西,很简单是一个dialog有多个属性页的问题。 一般情况下,一个dialog如果有多个属性页,只需要将其中的一个设置为Active,其余的待点击这个属性页时会自动激活为Active。 但是如果此dialog里有多个属性页需要与内存数据做交互,这时就需要将这些属性页设置为活动的。 不然当与内存的数据做交互时,就会找不到这个属性页,程序就会崩溃。 所以S原创 2012-11-21 15:12:04 · 1010 阅读 · 0 评论 -
Linux下如何生成和使用动静态库
动态库的生成和使用的方法vi dtku.c1 #include 2 float Calculator( float num1, float num2, char ch )3 {4 if( ch == '+' ) return( num1+ num2 );5 else if( ch == '-' ) retur原创 2012-10-16 09:03:45 · 7215 阅读 · 0 评论 -
Windows下如何生成使用库文件
环境:VS2008语言:C++一、生成动态库1、打开VS2008---Visual C++---Win32---Win32项目(test_dll2)---应用程序设置---DLL---完成2、在test_dll2.cpp添加如下代码:#include __declspec(dllexport) void print(){std::cout原创 2012-10-13 11:12:56 · 877 阅读 · 0 评论 -
使用curl的简单实例
a) 使用vs新建一个win32的控制台程序。b) 在工程目录下,新建一个include的文件夹,将libcurl-7.18.0-win32-msvc/include/curl这个目录拷贝到include目录下。c) 项目―――〉属性―――〉C/C++―――〉常规―――〉附加包含目录 添加 ./include/d)原创 2012-09-21 16:24:03 · 1775 阅读 · 0 评论 -
C++实现UrlEncode和UrlDecode
#include "stdafx.h"#include #include #include using namespace std;std::string UrlEncode(const std::string& szToEncode) { std::string src = szToEncode; char hex[] = "0123456789ABCD原创 2012-10-07 11:46:42 · 1506 阅读 · 0 评论 -
使用curl实现http传输,Url编解码问题
当Url字符串中有汉字时,curl会出现乱码的问题。解决方法:首先,要将工程更改为对方编码格式相同的工程(如utf-8、gb2312等)。以VS为例: 选中项目---文件----另存为----保存类型----utf-8项目类型其次,需要将Url转化为与对方编码格式相同的格式(如utf-8、gb2312等)。原创 2012-10-07 14:03:46 · 10930 阅读 · 0 评论 -
utf-8与gb2312互转
#include #include #include using namespace std;//UTF8ToGB2132string UTF8ToGB2132(string strSrc) { string result; WCHAR *wstrSrc = NULL; char *szRes = NULL; int i; //原创 2012-09-28 11:21:58 · 860 阅读 · 1 评论 -
关于铁道部网站可以选择卧铺测试和一些感言
注意:勿必使用Chrome浏览器。 顺带说一句,如果Chrome浏览器访问12306网站出现501错误,那么可以在高级设置里面把https/ssh的那个勾给勾掉。然后安装证书。访问Chrome浏览器,如果首页可以打开而其它链接不可以打开的话,就随便打开一个链接,如果报错,就把那个网址给COPY下来,CRTL+C到Chrome地址栏。这时候会报一个警告,选择继续访问,你就会发现以会再访问C原创 2013-01-07 15:29:40 · 1471 阅读 · 3 评论 -
解数独算法--C++实现
时间比较仓促,未优化。大牛看客,勿笑话。当然有好的建议,我洗耳恭听。若有时间再用MFC写一个界面。好了,废话不多说,代码如下:#include using namespace std;//可选数字int candidate[] = {1,2,3,4,5,6,7,8,9};//标记这个空格是否为原始数据int g_a[9][9] = {0};//打印函数void print(原创 2013-01-06 19:39:24 · 3874 阅读 · 2 评论 -
switch case语句详解---连C++ Primer都会出现的语法错误
优快云大牛较多,本人小白,若交流,本人欢迎,若言语偏颇,请绕行。这二天,工作比较空闲,就看了一些基础的C++语法知识,收获颇多,下面只讲switch case语句的一些语法细节。请大家坚持看完,第五大点是重点,经测试连C++ Primer都给出了错误的讲解。若为大牛,请直接拖到文章最后看最后一大点。一、case标号内是否可以使用continue代替break? 答案是否定的。原创 2013-01-08 18:50:38 · 3986 阅读 · 2 评论 -
ORA-01405: 提取的列值为 NULL--报错原因及解决方案
此使用SEL原创 2014-10-29 18:24:02 · 15361 阅读 · 0 评论 -
删除指定文件夹下小于指定大小的全部文件
void CdelsmallfileDlg::OnBnClickedButtonSetsize(){ // TODO: Add your control notification handler code here UpdateData(TRUE); std::string strTemp = m_strSize.GetBuffer(m_strSize.GetLength()); m_s原创 2014-10-09 14:26:50 · 3429 阅读 · 0 评论 -
数据库无法登陆解决方法(错误码:ora-00257)
数据库无法登陆解决方法(错误码:ora-00257)删除归档日志方法:一、 进入小机的root用户,执行cd /GAFIS/flash_recovery_area/ORAGAFIS/archivelog命令。二、 运行rm –rf 命令删除归档日志。三、 进入root用户,执行rman target /命令,原创 2013-12-12 17:32:04 · 4964 阅读 · 0 评论 -
RAW数据格式的图片转换--常用于相机开发和图片旋转
近日,开发多款相机,在作视频流处理时,常用的流数据转换方法有以下几个函数。以作共享,欢迎讨论。 #define GFP_OPERATORIMAGEDATA_TYPE_INVERSE 1 // 反像图像数据#define GFP_OPERATORIMAGEDATA_TYPE_HMIRROR 2 // 水平镜像图像数据#define GFP_OPERATORIMA原创 2013-11-14 15:01:56 · 1346 阅读 · 0 评论 -
64位DLL不能正常调用32位DLL解决方案
64位DLL不能正常调用32位DLL解决方案 只需中间做一层转化,用64位的OCX封装32位DLL,然后再进行正常的调用 。VS2010下测试通过,能够正确使用。太晚了,要回家了,若有时间把代码敬上。原创 2013-11-19 21:00:36 · 6082 阅读 · 0 评论