- 博客(45)
- 资源 (5)
- 收藏
- 关注
原创 cmake 学习之路 记录中间所遇到过的所有错误与问题的解决 <四>
CMAKE_BUILD_TYPE 宏匹配问题:错误代码: # Linux operation system IF (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "None" OR CMAKE_BUILD_TYPE MATCHES "")
2015-06-18 15:23:13
2342
原创 简单的C/S 程序 windows 版
很早写的了,感觉有点烂。// server.cpp 服务器主要程序逻辑#include #include #include #include #include #pragma comment(lib, "WS2_32.LIB") static DWORD __stdcall ThreadFunc(LPVOID lpParam);int main(){
2015-05-01 21:22:07
1449
原创 CMAKE 中平台判断
CMAKE 中判断当前操作系统平台:MESSAGE(STSTUS "###################################")MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}")IF (CMAKE_SYSTEM_NAME MATCHES "Linux") MESSAGE(STATUS "current platf
2015-04-28 22:03:31
17852
原创 CMAKE 指定编译调试版本或者发布版本
# CMAKE 中可以像Windows 一样指定编译成Debug 版本还是Release 版本# 这个在使用cmake 命令时指定# 如:cmake -DCMAKE_BUILD_TYPE=Debug/Release ../source_codeIF (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "
2015-04-28 13:52:48
10808
1
原创 SHELL 中的数组
# 定义一个数组ARR_NAME="shardb_server login_server world_server gateway_server log_server"# 显示整个数组printf '${ARR_NAME[*]} = 'echo ${ARR_NAME[*]}# 声明数组declare -a SVRSi=0for NAME in ${ARR_NAME}do
2015-04-26 09:43:31
492
原创 cmake 学习之路 笔记<一>
CMAKE 中有一些默认定义的变量,我们可以直接使用,在有时候是很方便的。1、CMAKE_SOURCE_DIR ==> 这个是最顶层的cmake 目录2、PROJECT_SOURCE_DIR==> 这个是当前项目的目录3、PROJECT_BINARY_DIR==> 这个应该是你执行cmake 命令生成Makefile 文件的目录
2015-04-20 23:12:22
458
原创 dup2()
dup2(fd1, fd2); 函数功能是将fd1 复制到fd2 上。但是怎么理解呢?APUE 上有写,如果fd2 是一个已经打开的文件描述符则关闭它,但是如果fd1和fd2 相等,则不会关闭。这最终的结果,实际上是:当你调用write() 函数(或者其它相关文件描述符的函数) 最终的结果是全部写到了fd1 上,当然了,如果是读也是一样的效果。最终都是从fd1 中读。我前初一直
2015-04-18 22:32:50
674
原创 不同进程之间的线程互斥锁的使用
/* process_svr.c */#include #include #include #include #include #include #include #include #include #include #define NONE "\033[m"#define RED "\033[0;32;31m"#define LIGHT_RED "\033[1;31
2015-04-11 20:42:12
4687
原创 setitmer() linux 下的精确定时函数
#include #include #include #include #include void alrm_func(int sn);int main(int argc, char *argv[]){ signal(SIGALRM, alrm_func); // 第一次在1.0 秒后,之后每0.5 秒发送一个SIGALRM 信号 struct itimerval iti
2015-04-11 20:31:01
727
转载 pthread_once 函数
转自:http://blog.youkuaiyun.com/lmh12506/article/details/8452659在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread_once)会比较容易些。int pthread_once(pt
2015-04-11 15:15:55
739
原创 cmake 学习之路 记录中间所遇到过的所有错误与问题的解决 <三>
在使用CMAKE 的过程中遇到了一个问题:在程序代码中将自己的中间代码编译成一个静态库,提供给其它的几个程序代码时,总是找到这个库。愁了好久,终于在一个不起眼的小地方,发现了一个可能的问题。在使用TARGET_LINK_LIBRARIES( )时,链接到安装在/usr/local/lib/libprotobuf.a 时使用两种书写情况都OK。TARGET_LINK_LIBRAR
2015-01-04 21:15:25
1928
原创 libevent bufferevent_enable(bev, EV_READ) 失败!
留下一个问题吧: 使用libevent 做网络库,创建一个服务端, 1、初始化struct event_base 成功; 2、创建监听器成功,evconnlistener_new_bind(); 3、创建信号事件成功,evsignal_new() 成功; 4、添加信号事件成功,event_add() 成功;
2015-01-03 22:47:26
5204
2
原创 libevent evsignal_new() 信号事件回调函数未被触发。
之前一直使用libevent 信号注册事件函数:evsignal_new() 进行信号事件注册。然后也一直都很正常,但是有一次,这个函数也一样的使用,结果发送信号时,回调函数却没有被调用。与之前的代码进行对比,却没有任何不一样的地方。苦恼了好久,终于在今天花了几个小时的时间找到了这个问题的解决方法。只要在evsignal_new() 函数调用成功之后,再调用event_add() 函数,即可。
2015-01-03 01:38:33
5342
1
原创 libevent evconnlistener_new() 创建监听器函数
libevent 的创建监听器 evconnlistener_new() evconnlistener_new_bin() 的简单讲解。
2014-12-31 14:47:18
3887
原创 C++ 类成员函数中的静态变量的作用域
本来的一个想法是C++ 的类的成员函数是属于这个类的,那么这个类的成员函数中的静态变量也是属于这个类的。不过越想越感觉不对劲,于是写了个测试代码,试了一下。还真不对,结果是类的成员函数中的静态变量,他的作用域是这个成员函数,不管是不是这个类的同一个实例化对象,他们都共用这一个静态变量。也就是说函数的静态变量还是跟C 一样的解释。直接给出测试代码吧。// test.h#ifndef
2014-12-28 13:25:24
8219
1
原创 libevent 客户端,简单整理
#include #include #include #include #include #include #include const unsigned short PORT = 9995;void readcb(struct bufferevent *bev, void *ptr){ char buf[1024]; int n; struct evbuffer *
2014-12-15 17:14:23
2778
原创 libevent 服务器代码,简单的整理。
#include #include #include #ifndef WIN32#include # ifdef _XOPEN_SOURCE_EXTENDED# include # endif#include #endif#include "event2/bufferevent.h"#include "event2/buffer.h"#include "event2/
2014-12-15 17:11:08
1587
原创 C++ Json 对文件的读写操作
#include #include #include "json.h"static bool write_jscon( const char * json_file, const Json:: Value & val){ if ( json_file == NULL) return false;
2014-12-11 15:44:39
5212
1
原创 C++ 临时变量做函数参数时的生命周期
C++ 中如果函数参数是一个类对象的引用时,是否可以创建一个临时变量来传入呢?这里其实考虑的主要是这个临时变量的生命周期,到底是在进入函数时就被销毁了,还是在函数调用完成之后才被销毁的。暂时还没有看到比较权威的资料,只是写了一段代码看了一下现象,从现象上看该临时变量是在函数调用完成之后才被销毁的。下面的一段代码在Windows 和CentOS 下做过测试,结果是一样的。
2014-11-26 18:05:00
3445
原创 boost TCP 异步读/写操作 函数接口
异步写方法一:boost::asio::io_service ioservice;boost::asio::ip::tcp::socket m_socket(ioservice);// 写到对端数据是:"link successed!"boost::asio::async_write( m_socket, // 与对端通信的连接描述符 boo
2014-11-25 11:31:07
1034
原创 boost bind 全局函数(非成员函数)
一般boost::bind() 函数的调用,第一个参数是绑定函数指针,第二个参数是指定这个函数所属的类对象指针。后面开始是这个函数所需要的参数,顺序给出即可。如果boost::bind() 想要绑定到一个全局函数(非类成员函数) 的话,只需要忽略类对象指针即可,第二个参数直接传递该函数所需要的参数。
2014-11-25 11:27:53
850
原创 boost tcp 同步方式 笔记
// server 端#include #include int main(int argc, char *argv[]){ // 所有的asio 类都需要io_service 对象 boost::asio::io_service iosev; boost::asio::ip::tcp::acceptor acceptor( iosev, boost::asio::ip::t
2014-11-19 10:53:32
627
原创 cmake 学习之路 记录中间所遇到过的所有错误与问题的解决 <二>
PROJECT(HELLOLIB)# 添加子项目ADD_SUBDIRECTORY(lib)# 设置二进制库文件的生成目录SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)按照上面的
2014-11-09 16:18:16
627
转载 10个我最喜欢问程序员的面试问题
10个我最喜欢问程序员的面试问题2014-11-04 分类:程序员人生5人评论分享到:更多本文是码农网原创翻译,转载请看清文末的转载要求,谢谢合作!最近我拜读很多文章,都是介绍面试问题的,我真心不理解,面试官代表公司想要聘用的是最优秀的程序员,那就意味着需要想出一些有意义的面试问题。如果你就提一些毫无用处的垃圾问题,那么很容易遗漏很多能干的程序员。
2014-11-05 13:55:54
829
原创 protobuf 一个.proto 文件的简单讲解
package tutorial;message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message Pho
2014-10-25 10:50:59
3513
原创 SVN Windows 没有对应文件的状态符号
昨天在Windows 下安装了一个SVN 客户端,档下了代码后,发现档下的文件跟以前的SVN 档下的文件不一样。文件或者文件夹上没有区别该文件与服务器的不同或者相同的符号,比如
2014-10-10 10:25:33
4160
原创 一个简单的C/S 架构程序
// server.c#include #include #include #include #include #include #include #include // 通过命令行参数传入绑定端口号int main(int argc, char *argv[]){ if (argc < 2) { fprintf(stderr, "Usage: %s .\n", a
2014-07-21 23:06:23
1483
原创 提炼字符串
/* * 功能:提炼字符串;按第二个参数为分隔符解析字符串,返回由 * 参数nWhichOne 指定下标(由1开始计算)处的字符地址,其 * 长度保存在参数pLength 中。 * 参数: * const char *szSourcString, 要解析的字符串; * char chSeparator, 指定分隔符; * int nWhichOne, 指定要得到解析出来的第
2014-06-20 14:06:00
644
原创 Win32 TCP粘包处理,源代码。
// #ifndef SHARE_HEAD_FILE_H#define SHARE_HEAD_FILE_H#define PORT (8888)#define DATA_SIZE (4000)// 在网络上传输结构体,指定结构体的字节对齐#pragma pack(4)struct STRU_Package{ unsigned long lDataLength; // arrBu
2014-05-15 22:11:17
661
原创 剔除冗余空格字符
// 剔除冗余的空格字符(第一个和最后一个字符不能为空格字符,中间空格不能有连续两个存在int RemoveUnnecessarySpaceBar(char *strSource){ if (strSource == NULL) return -99; int nLen = strlen(strSource); char *pStringPtr = new char[nLen +
2014-03-25 19:55:19
1073
原创 Win32 ::CreateEvent() 函数
HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,// 安全属性BOOL bManualReset,// 复位方式BOOL bInitialState,// 初始状态LPCTSTR lpName // 对象名称);// 函数介绍:创建一个事件内核对象,当该事件内核对象为受信状态时,所以等待该事件内核
2014-03-20 15:43:36
2993
转载 Linux 链接库
静态链接库创建:zj@zj:~/C_pram/practice$ gcc -c fun.czj@zj:~/C_pram/practice$ ar cqs libfun.a fun.ozj@zj:~/C_pram/practice$ gcc call.c -static -L. -lfun -o fun_static_callzj@zj:~/C_pram/practice$ ./fu
2013-08-20 12:43:19
718
转载 setsockopt 函数说明
简述:设置套接口的选项。#include sys/types.h>#include int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);sockfd:标识一个套接口的描述字。level:选项定义的层次;支持SOL_SOCKET、IP
2013-03-25 20:04:36
1096
基于log4cplus-1.2.0-rc5 版本自实现的一个appender(RollingAppender)
2017-05-08
MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0
2015-06-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人