- 博客(65)
- 资源 (10)
- 收藏
- 关注
原创 GTEST死亡测试
gtest-death-test.cc:1122:: Death tests use fork(), which is unsafe particularly in a threaded context. For this test, Google Test detected 2 threads.
2022-06-21 19:06:58
669
原创 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
820
原创 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
原创 判断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
243
原创 git 查看本次提交所有变更的文件内容
使用git status查看所有的变更文件,再用git diff看每个文件的变更,较为麻烦,可以使用以下指令,一次性查看所有的文件变更:git status | grep modify | awk '{print $2}' | git diff
2022-01-27 20:54:31
1662
原创 希尔排序C++实现
网上关于希尔排序的文章很多,清一色的一顿理论分析然后给出一致错误的代码实现,让人非常怀疑人生。其实,这个算法的现实也就十来行,真的不明白哪来这么多的一致的错误实现。希尔排序的理论分析,我就不去复印粘贴了,大家自行检索,一大堆一大堆的。我只给出代码实现和必要的注释。void shell_sort(std::vector<int>& arr) { int j = 0; // 计算gep,也就是分组的次数,gep为1停止 for (int gep = arr.
2021-12-08 17:52:29
763
原创 RVO、NRVO和-fno-elide-constructors
若有时间再详细地解释一下,RVO和NRVO都做了什么,此文只说结论。一、RVO和NRVO优化后(NVO和NRVO是什么,自行google,此处不做解释),形如:Test func() { Test t; return t;}Test tt = func();只会调用一次构造函数。若想解除RVO和NRVO,编译时加上 -fno-elide-constructors 参数。若加上-fno-elide-constructors,函数调用顺序为:1、构造函数, func.
2021-10-14 20:34:08
353
原创 关于gcc 5.5.0关于宏展开的BUG
gcc版本:5.5.0vs版本:vs 2015如下宏定义代码#define LOGDEBUG(format, ...) fprintf(stdout, "DEBUG file:%s, line:%d, msg: " format"\n", __FILE__, __LINE__, ##__VA_ARGS__)//#define LOGDEBUG(format, args...) fprintf(stdout, "DEBUG file:%s, line:%d, msg: " format"\n"
2021-01-13 18:55:50
304
原创 时间定时器(TimeEvent) C++实现
注:Semaphore.h源码见https://mp.youkuaiyun.com/console/editor/html/103927034TimeEvent.h/** * desp: time event * auth: wangkui * date: 2020/01/09 */ #ifndef __TIMEEVENT_H__#define __TIMEEV
2020-07-31 14:22:34
1149
原创 C++实现信号
Signal.h/** * desp: * auth: wk * date: 2020/01/13 */#ifndef __SIGNAL_H__#define __SIGNAL_H__#include <mutex>#inc...
2020-01-13 11:02:56
445
原创 C++实现信号量
Semaphore.h/** * desp: * auth: wangkui * date: 2019/12/23 */#ifndef __SEMAPHORE_H__#define __SEMAPHORE_H__#include <...
2020-01-10 16:38:28
634
原创 大小端转换C++实现
#include <endian.h>class Endness {public: template<typename T16> static inline T16 swap16(const T16& v, BOOL desEndness) { if (!(__BYTE_ORDER == __LITTLE_ENDIAN ^ desEndness)...
2019-12-04 17:01:40
1951
原创 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
原创 栈堆地址高低次序问题
结论:一、a地址大于b地址大于c地址验证栈是由高到低分配地址的(先进后出),c地址小于f地址小于e地址验证堆地址分配是无序的(先进先出)。二、无论堆或者栈,数组的内存的高低位都是由低到高的。原因即申请d[10]或者e时,是一次性申请的,而不是分十次申请的,这点不违反第一个结论。(这是我写此文的很重要的原因)直接上测试代码:int main(){ printf("*******...
2019-11-25 14:41:39
2755
原创 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
原创 ES及插件-环境搭建
以下仅为安装ES及插件需要注意的地方,主要用于避坑,想看详细教程的绕行吧。一、下载安装包,直接解压即可。二、不允许使用root用户启动,需要使用非root用户否则报错。三、配置文件(config/elasticsearch.yml),需有以几项,其中标红二项不配置的话,会影响ES插件的功能。cluster.name: my-applicationnode.name: node-1ne...
2019-07-31 15:49:01
264
原创 简记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
原创 LINUX能new最大空间是多少?
new最大空间大小 = 操作系统剩余内存大小 + 操作系统剩余交换分区大小 另外,在测试过程中发现以下问题是我之前没注意到的,或者说是没细想过的:1、单纯的new是不会实际占用内存空间的,只要等到真正的用到时才会占用内存空间。2、new申请的超出最大空间(剩余内存大小 + 剩余交换分区大小)后,才会报出异常且得到一个空指针。3、int64_t nSize = 1024 * 10...
2018-10-25 14:50:33
2659
1
原创 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
961
原创 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
原创 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
原创 linux c 创建多级目录接口实现
void casMkdir(const char* dir){ int nIndex = 1; char* tmp = (char*)dir; while ( nIndex < strlen(dir) + 1 ) { if (*(dir+nIndex) == '/' || *(dir+nIndex) == '\0') { char parent[256] = {0};
2017-10-30 14:04:54
1249
原创 linux c copyFile接口实现
LINUX本身并不提供拷贝文件的接口,于是自己实现了一个。int copyFile(const char* src, const char* des){ int nRet = 0; FILE* pSrc = NULL, *pDes = NULL; pSrc = fopen(src, "r"); pDes = fopen(des, "w+"); if (pSrc && pDes)
2017-10-30 14:00:23
4063
原创 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
440
原创 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
原创 Linux C++ zookeeper创建临时节点类封装
至于zookeeper环境搭建和c++ client端的编译,此处就不再赘述了。直接上实现代码吧。主要功能:zookeeper创建临时节点,可用于判断程序是否存在。实现思想:实现CZkCreateEphemeralNode类,在构造函数中创建临时节点,析构函数中删除或者不删除都是可以的。那么,定义一个全局对象或者NEW一个对象即可。CZkCreateEphemeralNode.
2017-08-05 09:26:39
1158
原创 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
原创 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
原创 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
原创 zookeeper客户端命令详解
zookeeper客户端命令详解简介查阅了网上相关资料,介绍zookeeper客户端命令并不是非常全面,大多数都是简单介绍ls、get、set、delete、stat这几个简单命令的,下面我把help中的所有命令简单介绍一下以供参考。首先说明一下如何打开zk服务端和客户端,cd到zk安装目录下,运行bin/zkServer.shstart即可启动服务端,运行bin/zkCli.sh –
2017-04-27 18:23:08
23571
1
原创 程序无法远程访问异地共享文件
WINDOWS在访问异地共享文件时,打开文件失败。在打开文件前添加以下代码,即可。注:此代码无需每次都执行,若机器未重装系统则只需执行一次即可(WINDOWS会保存访问的用户名和密码)。char buf[512] = {0};char path[256] = {0};char password[24] = {0};char username[24] = {0};sprintf_s(buf,
2017-03-29 17:38:29
795
原创 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
原创 自定义越轻量级C++异常类
/********************************************************************************.h*********************************************************************************/class CInterfaceException{pub
2016-08-26 19:58:39
507
原创 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
原创 剪贴板功能-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
原创 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
原创 删除指定文件夹下小于指定大小的全部文件
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
3427
elasticsearch-head.zip
2019-07-31
vs2015编译MONGODB C/C++驱动
2016-10-14
学生管理系统
2016-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人