C/C++
lightjia
这个作者很懒,什么都没留下…
展开
-
libuv封装共享信号量
#ifndef __CUVSEM__H_#define __CUVSEM__H_#include "uv.h"class CUvSem{public: CUvSem(); ~CUvSem();public: void Post(); void Wait(); int TryWait();private: uv_sem_t mstUv...原创 2018-11-21 16:12:35 · 486 阅读 · 0 评论 -
libuv封装线程
#ifndef __CUVTHREAD__H_#define __CUVTHREAD__H_#include "uv.h"#include "UvSem.h"#include "CLogmanager.h"class CUvThread{public: CUvThread(); virtual ~CUvThread();public: int Start(...原创 2018-11-21 16:10:45 · 301 阅读 · 0 评论 -
libuv锁的封装
libuv进行锁封装#ifndef __CUVMUTEX__H_#define __CUVMUTEX__H_#include "uv.h"class CUvMutex{public: CUvMutex(); ~CUvMutex();public: void Lock(); int TryLock(); void UnLock(); ...原创 2018-11-21 16:09:17 · 469 阅读 · 0 评论 -
libuv封装uvloop自动创建新的loop循环
#ifndef __CUVLOOP__H_#define __CUVLOOP__H_#include "UvThread.h"#include "UvBase.h"#include "UvMutex.h"#include <queue>class CUvLoop : public CUvThread, public CUvBase{public: CUvLoo...原创 2018-11-21 16:07:37 · 1179 阅读 · 0 评论 -
Libuv文件操作封装
#ifndef __CUVFILE__H_#define __CUVFILE__H_#include "UvBase.h"class CUvFile : public CUvBase{public: CUvFile(); virtual ~CUvFile();public: static void FsOperCb(uv_fs_t* pFileReq);...原创 2018-11-21 16:03:26 · 434 阅读 · 0 评论 -
libuv TCP开发封装
如下是创建TCP服务器#ifndef __CUVTCPSVR__H_#define __CUVTCPSVR__H_#include "UvNetBase.h"class CUvTcpSvr : public CUvNetBase{public: CUvTcpSvr(); virtual ~CUvTcpSvr();public: static void Co...原创 2018-11-21 15:43:00 · 1422 阅读 · 0 评论 -
libuv UDP开发封装
#ifndef __CUVUDP__H_#define __CUVUDP__H_#include "UvNetBase.h"struct tagUvUdpPkg { struct sockaddr_in stAddr; uv_buf_t stBuf;};class CUvUdp : public CUvNetBase{public: CUvUdp(); ...原创 2018-11-21 15:40:32 · 2729 阅读 · 0 评论 -
libuv网络公共库的封装
如下是提取libuv开发过程中UDP以及TCP的公共基类#ifndef __CUVNETBASE__H_#define __CUVNETBASE__H_#include "UvBase.h"#include "UvMutex.h"#include <string>class CUvNetBase : public CUvBase{public: CUvNe...原创 2018-11-21 15:38:37 · 732 阅读 · 0 评论 -
libuv封装pipe通信封装
#ifndef __CUVPIPEBASE__H_#define __CUVPIPEBASE__H_#include "UvBase.h"#include <string>class CUvPipeBase : public CUvBase{public: CUvPipeBase(); virtual ~CUvPipeBase();public...原创 2018-11-24 15:39:54 · 1765 阅读 · 0 评论 -
c/c++创建动态导出库模版
#ifndef __EXPORT__H_#define __EXPORT__H_#if defined WIN32 || defined _WIN32#if defined DLL_EXPORT#define EXPORTAPI __declspec( dllexport )#else#define EXPORTAPI#endif#endifextern "C" { ...原创 2018-11-28 18:08:39 · 409 阅读 · 0 评论 -
libuv封装rwlock
#ifndef __CUVRWLOCK__H_#define __CUVRWLOCK__H_#include "uv.h"class CUvRwLock{public: CUvRwLock(); ~CUvRwLock();public: void RdLock(); void RdUnLock(); int RdTryLock(); ...原创 2018-12-19 17:54:07 · 330 阅读 · 0 评论 -
libuv封装barrier
#ifndef __CUVBARRIER__H_#define __CUVBARRIER__H_#include "uv.h"class CUvBarrier{public: CUvBarrier(); ~CUvBarrier();public: int Init(int iCount); int Wait();private: uv_ba...原创 2018-12-19 17:21:50 · 229 阅读 · 0 评论 -
libuv封装cond
#ifndef __CUVCOND__H_#define __CUVCOND__H_#include "UvMutex.h"class CUvCond{public: CUvCond(); ~CUvCond();public: void Signal(); void BroadCast(); void Wait(); int Time...原创 2018-12-19 17:19:57 · 547 阅读 · 0 评论 -
win下生成core文件
#ifndef __CCOREMGR__H_#define __CCOREMGR__H_#include "singleton.h"#include "CLogmanager.h"#if defined(WIN32) || defined(_WIN32)#include<Windows.h> #include<DbgHelp.h> #pragma co...原创 2018-12-12 19:45:35 · 988 阅读 · 0 评论 -
事件监听器
#ifndef __CEVENTMGR__H_#define __CEVENTMGR__H_#include "singleton.h"#include "CMutex.h"#include "CLogmanager.h"#include <string>#include <map>#include <set>class CEventList..原创 2018-12-03 10:21:42 · 1227 阅读 · 0 评论 -
libuv库的封装
在后端开发中用到一些libuv库,如下是对libuv库的一些封装,便于以后扩展使用。uvdefine.h#ifndef __UVDEFINE__H_#define __UVDEFINE__H_#include "uv.h"#define UV_DEFAULT_BUF_SIZE 10240 //default 10KB buffer sizestruct tagUvBuf {...原创 2018-11-21 15:30:30 · 1350 阅读 · 0 评论 -
Linux下一个进程重启自己的简单实现
#include #include #include #include #include int main(int argc, char* argv[]){ int fd = open("tmp.txt", O_CREAT | O_APPEND | O_RDWR, 0666); char buf[] = "hello huang jia jia\n"; wr原创 2017-10-12 20:17:19 · 3444 阅读 · 0 评论 -
win32创建共享内存
首先尝试打开,失败则创建HANDLE h_tmp = OpenFileMappingA(FILE_MAP_ALL_ACCESS, FALSE, MEMMAPFILENAME);if(NULL == h_tmp){ h_tmp = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int),原创 2017-11-07 15:51:35 · 777 阅读 · 0 评论 -
堆排序
直接上代码#include #include #include #include #define MAXRANDOM 10000 //产生最大随机数#define LINESHOWNUM 18 //每行显示的数目void swap(int* pA, int *pB){ if(NULL == pA || NULL == pB) { retur原创 2016-08-15 11:49:01 · 269 阅读 · 0 评论 -
快速排序
直接贴代码了#include #include #include #include #define MAXRANDOM 1000 //产生最大随机数#define LINESHOWNUM 8 //每行显示的数目void swap(int* pA, int *pB){ if(NULL == pA || NULL == pB) { retur原创 2016-08-10 16:40:57 · 221 阅读 · 0 评论 -
字符串中去掉空格
在面试或者工作中,我们需要对字符串进行操作,现在记录下删除字符串中空格的思路。void DelBlank(char* pSrc){ if(NULL == pSrc) { return; } char* pTmp = pSrc; char* pDes = pSrc; while(*pTmp != '\0') { if(*pTmp != ' ') { *pDes原创 2016-05-04 15:30:41 · 346 阅读 · 0 评论 -
C语言数组遍历
注意数组名取地址!#include int main(int argc, const char *argv[]){ int nArray[] = {1, 2, 3, 4, 5}; int (*pTemp)[5] = &nArray; printf("%p %p\n",*pTemp, &pTemp); printf("%p %p\n", nArray, &nArray); int原创 2016-04-14 12:50:37 · 1485 阅读 · 0 评论 -
使用dup2重定向IO流拷贝文件
直接贴代码:#include #include #include #include #include extern int errno;//Author:HuangJiaJiaint main(int argc, const char *argv[]){ if(argc < 3) { fprintf(stdout, "USE %s [s原创 2016-04-13 20:09:33 · 300 阅读 · 0 评论 -
C语言之内存对齐
我们对自定义数据类型sizeof获取大小时,并不是每个成员的大小进行累加,操作系统为了便于内存访问,往往以成员所占大小最大的成员进行对齐。比如struct test{char c;double d;};我们可以通过#pragma pack(n) n为对齐参数进行调整,直接贴代码#include #pragma pack(1) //设置对齐对齐参数为1 及原创 2016-04-09 12:52:52 · 310 阅读 · 0 评论 -
win下局域网内下载文件
有时我们需要在局域网中下载文件,win下可以通过共享文件夹来传输文件,而在局域网内使用系统自带API来下载文件速度比自己搭建服务器快。首先,我们要共享一个文件,WIN下首先要共享文件夹并设置无密码。直接贴代码:// ClinDataSer.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #原创 2016-02-25 20:30:52 · 948 阅读 · 0 评论 -
C语言柔性数组分配内存
#include #include #include #include #include #include #include #include typedef struct tagNode{ size_t len; int key[0];}Node;int main(int argc, char* argv[]){ Node *n原创 2017-10-13 10:54:40 · 644 阅读 · 0 评论 -
技巧积累
#define exit_if(r, ...) if(r) {printf(__VA_ARGS__); printf("%s:%d error no: %d error msg %s\n", __FILE__, __LINE__, errno, strerror(errno)); exit(1);}原创 2018-02-28 20:53:07 · 162 阅读 · 0 评论 -
简单单例类
工作中用到的单例类经常是用于管理,保证在内存中唯一。1.第一种创建单例类的方式是程序加载时就创建,好处是实现简单,但程序在运行过程中始终存在不会销毁,代码实现如下:#ifndef __SINGLETON__H_#define __SINGLETON__H_template <class T>class singleton{public: static T* Ins...原创 2018-04-11 15:09:56 · 270 阅读 · 0 评论 -
libevent封装
EvDefine.h#ifndef __CEVUDEFINE__H_#define __CEVUDEFINE__H_#if defined(WIN32) || defined(_WIN32)#include <winsock2.h> #elif __linux__#endif#if defined(WIN32) || defined(_WIN32)typede...原创 2018-10-19 14:29:09 · 875 阅读 · 0 评论 -
Makefile编译
1.多目录编译SUBDIRS=HdvonBase HdFramework HdThread RECURSIVE_MAKE=@for subdir in $(SUBDIRS);do \ echo "making in $$subdir"; \ (cd $$subdir && $(MAKE)) || exit 1; \ done RECURSIVE_CLEA...原创 2018-07-31 11:42:46 · 557 阅读 · 0 评论 -
Linux下找出CPU过高的线程
确定是CPU过高使用top观察是否存在CPU使用率过高现象找出线程对CPU使用率过高的进程的所有线程进行排序ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep xxx得到如下结果,其中线程2909使用了7.8%的CPU. 2907 2913 0.0 ./xxx 2907 2909 7.8 ./xxx也可以通过查看/proc中的信息来确定高CP...转载 2018-07-24 16:06:26 · 514 阅读 · 0 评论 -
小工具
#ifndef __UTIL__H_#define __UTIL__H_#include <algorithm>#include "common.h"//mem#define DOFREE(X) do{if(nullptr != X) {free(X); X = nullptr;}}while(0)#define DODELETE(X) do{if(nullptr !=...原创 2018-04-11 15:19:01 · 186 阅读 · 0 评论 -
日志类简单封装
在程序开发过程中,我们需要动态了解程序运行状况,以及排查问题时程序的调用流程,尤其是在多线程程序中,调用关系用日志记录下来比较重要,方便以后排查问题。以下是自己开发过程中封装的日志功能类。common.h#ifndef __COMMON__H_#define __COMMON__H_#include <stdio.h>#include <stdlib.h>...原创 2018-04-11 15:17:40 · 1308 阅读 · 0 评论 -
休眠简单封装
1.在多线程后端程序中,我们经常需要等待休眠,如下是自己封装等待休眠的API.#ifndef __CIDLE__H_#define __CIDLE__H_#include "common.h"class CIdle{public: CIdle(); ~CIdle();public: void Sleep(unsigned long iTime = 500); void ...原创 2018-04-11 15:16:20 · 189 阅读 · 0 评论 -
线程简单封装
在后端开发中,我们经常需要使用多线程,频繁的调用系统API创建线程比较繁琐,而且代码有冗余,所以对Linux以及win下的API进行封装。如下是代码实现#ifndef __CTHREAD__H_#define __CTHREAD__H_#include "common.h"#include "CMutex.h"#include "Idle.h"enum THREADSTATE{...原创 2018-04-11 15:15:16 · 316 阅读 · 0 评论 -
互斥锁封装
#ifndef __CMutex__H_#define __CMutex__H_#include "common.h"class CMutex{public: CMutex(); ~CMutex(); void Lock(); void UnLock();private:#if defined(WIN32) || defined(_WIN32) CRITICAL_SECT...原创 2018-04-11 15:13:12 · 330 阅读 · 0 评论 -
简单内存管理
#ifndef __CMem__H_#define __CMem__H_#include "CLogmanager.h"using namespace std;//堆分配内存自动释放 template<typename T>class CMem{public: CMem() :m_pData(NULL), m_iSize(0){} CMem(const unsi...原创 2018-04-11 15:11:13 · 181 阅读 · 0 评论 -
Linux 下C/C++解析XML文件
在工程项目中我们的项目需要根据不同的环境配置不同的程序参数,而常用的两种文件分别是ini文件和XML文件,接下来我来分析下在Linux下解析XML文件过程。原创 2015-11-27 16:11:20 · 9348 阅读 · 0 评论