C++ 技术
文章平均质量分 76
hzhxxx
这个作者很懒,什么都没留下…
展开
-
std::bind 绑定类成员重载函数和函数指针的高级用法
//todo/*[root@Slave02 thread]# g++ bind.cpp -o bind -g -Wall -std=gnu++11 -lpthread;./bindclass void Test::print(const std::string& str,int32_t i) 对比测试 std::mem_fn 和 std::bind,并调用类重载函数,1class voi...原创 2018-05-10 15:04:32 · 5917 阅读 · 0 评论 -
编译安装 gcc 4.9并验证使用
编译安装 gcc 4.9并验证使用原创 2014-06-05 16:05:07 · 19849 阅读 · 4 评论 -
hadoop2.3安装和wordcount运行验证
以下描述了centos linux(2.6.32-279.el6.x86_64)位机器下,安装32位hadoop 2.3,并通过运行系统自带的 WordCount 例子来验证服务正确性的步骤。原创 2014-03-06 17:15:29 · 10026 阅读 · 0 评论 -
CGI原理解析之二------WEB服务和CGI交互数据
CGI原理解析,解析了WEB服务器和CGI程序进行数据交互。原创 2014-07-17 16:14:09 · 5081 阅读 · 0 评论 -
CGI原理解析系列之一----CGI如何获取WEB服务器数据
CGI 原理解析原创 2014-07-17 16:11:45 · 5569 阅读 · 0 评论 -
linux eventfd 应用案例
#include #include #include #include #include #include #include #include int evfd;void * f(void *p){ int ret = 0,j = 100; while(ret >= 0) { uint64_t i =原创 2014-04-25 10:20:25 · 3777 阅读 · 0 评论 -
PHP(xml转成json)样例
$content = file_get_contents("d:\\aaa.xml");print_r($content);print_r("\n\n");$xml = simplexml_load_file("d:\\aaa.xml");if(is_object($xml)){ foreach($xml->entry as $photo) {原创 2014-03-18 15:17:08 · 9488 阅读 · 0 评论 -
LINUX C 输出重定向例子
输出重定向原创 2014-01-08 10:23:39 · 5196 阅读 · 1 评论 -
网络通信之--accept死循环
通信服务器一直运行,每次成功 accept ,都会分配新的 socket 资源,但是因为未能有效的检测和处理socket 的关闭事件,导致未能释放 socket,最后,socket 资源被耗尽,再也不能接入新的连接了。同时,新的连接不断的通过 TCP 层,内核不断的通知应用层有新的可读事件,但是因为 accept 无法创建新连接,无法消除这些读事件。导致内核和accept 陷入死循环。这种情况是使用 epoll的 LT (level trigger)和 seelct 情况下会发生。原创 2013-11-06 11:11:18 · 4362 阅读 · 1 评论 -
LINUX 64位下运行32位程序加载和读取大数据段共享内存
LINUX 64位下运行32位程序加载和读取大数据段共享内存1. 查看当前机器共享内存1073741824 = 1024 * 1024 * 1024[root@six shm]# ipcs------ Shared Memory Segments --------key shmid owner perms bytes nat原创 2013-10-17 17:53:14 · 3377 阅读 · 0 评论 -
日志规范
后台服务日志输出规范 在后台服务中添加程序日志记录可以跟踪代码运行时轨迹,作为日后审计的依据;并且担当集成开发环境中的调试器的作用,向文件打印代码的调试信息;同时规划化输出的日志文件,便于和其他相关人员交流分析使用。本规定C++ 后台服务项目必须使用。1. 日志文件日志文件按应用需求功能分为访问日志和应用日志和系统日志。日志文件统一命名格式如下:服务名称.应用类型.时间.索引。中原创 2013-08-30 12:57:29 · 11347 阅读 · 0 评论 -
使用最新的log4cplus(1.1.1)输出多个自定义日志文件,隔离不同的 log 文件输出
//APP 和 APP_DAILY 共用了一个 logger配置static Logger APP = Logger::getInstance(LOG4CPLUS_TEXT("APPfilelogger.APP"));static Logger APP_DAILY = Logger::getInstance(LOG4CPLUS_TEXT("APPfilelogger.APP_DAILY"));//SYS,ACC 是独立的 logger 配置,这样 SYS,ACC,APP(APP_DAILY) 分别属原创 2013-09-03 12:03:32 · 8176 阅读 · 1 评论 -
指定结构体排序字段的STL实现版本(C++ 2011系列)
// c2011.cpp : 定义控制台应用程序的入口点。////#include "stdafx.h"#include #include //#include #include #include #include #include #in原创 2011-09-09 15:57:54 · 1246 阅读 · 0 评论 -
[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(3)]模板函数指针的的各种组合以及调用的方式
// function.cpp :/*测试例子演示了函数指针的的各种组合以及调用的方式如果你的编译器编译失败,请尽可能的先去掉 const 后编译,如果全部去掉后还是编译失败,请把你的编译器升级到最高版本或者换了它。*/#include "stdafx.h"#include "stdafx.h"#include #include #include #原创 2013-08-12 16:50:53 · 1324 阅读 · 0 评论 -
[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(2)]熟悉一些宏定义和模版偏特化或叫模版专门化
[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(2)]熟悉一些宏定义和模版偏特化或叫模版专门化// point_test.cpp : 知识点练习和测试,用于单步调试,跟踪。//#include "stdafx.h"#include #include #include using namespace std; //for _1, _2原创 2013-08-08 19:05:03 · 2722 阅读 · 0 评论 -
C/C++指针的指针(**p)和指针的引用(*&)使用案例分析
C/C++指针的指针(**p)和指针的引用(*&)使用案例分析一个简单的映射描述:int **pp = 5;[pp=0x***]---->[*pp=0x****]---->[**p = 5]typedef int * INT_P;INT_P a 等同于 int *a,那 INT_P &a 就等同于 int *&a,也即指针的引用了原创 2014-06-06 13:15:14 · 21282 阅读 · 0 评论 -
google protocl buffer 序列化和反序列化的一个例子
google protocl buffer 序列化和反序列化的一个例子原创 2013-09-25 10:15:38 · 5166 阅读 · 0 评论 -
mysql主从同步配置步骤
1. 启用 主库的 log_bin 日志,设置日志格式 binlog_format=MIXED,或者 binlog_format=ROW,启用主库的 server-id#主库上加#只记录 ka_app 库的同步日志binlog_do_db=ka_app#不记录下列库的同步日志binlog_ignore_db=mysqlbinlog_ignore_db=performan原创 2015-06-18 18:01:46 · 1826 阅读 · 0 评论 -
gcc 5.4 编译通用 C++ 线程池实现
//todo/*[root@Slave02 thread]# g++ thread_pool.cpp -o thread_pool -g -Wall -std=gnu++11 -lpthread;./thread_poolHello ThreadPoolclass Test2 Hello world,0Current thread id: 140287557768960, glo...原创 2017-06-22 15:08:09 · 977 阅读 · 0 评论 -
模板函数重载
#include #include using namespace std;class A{public:template void add_extend(const std::string &key,const T &value){std::string ss = key;ss += std::to_string(value);std::cout原创 2017-07-10 15:10:20 · 518 阅读 · 0 评论 -
网络通讯服务设计的几个原则
9. 目前业务处理线程里面需要包含重的 Work_Socket 对象,网络处理和业务混合在一起,耦合比较强;按网络是网络,网络是数据通道;业务是业务,业务利用数据通道的一般原则,这样,业务开发人员基本不需要知道网络怎么通讯,开发难道可以降低,业务开发人员也就无法直接去和客户端交互,可以有效屏蔽错误;建议业务处理层只是保留一个轻量级别的连接ID结构,而不是一个完整的 socket 对象,原创 2013-08-29 13:26:00 · 1397 阅读 · 0 评论 -
protobuf 数据的一种封装
struct ProtobufTransportFormat __attribute__ ((__packed__)){ int32_t len; int16_t flag; int16_t nameLen; char typeName[nameLen]; char protobufData[len - nameLen - 8]; int32_t checkSum;}1. flag 从最低位开始,第0位用作校验类型, 0: adler3原创 2017-02-21 12:26:32 · 3877 阅读 · 0 评论 -
C++ 模板全特化和偏特化
1. 模板特化按对象类型(类和全局函数)分为两种: 类模板的特化和全局模板函数的特化;2. 按特化的类型分全特化和偏特化(也就是多个模板参数可以选定只特化一个或者多个),全局模板函数的特化不支持偏特化;3. 全局模板函数的特化需要关注几个重要元素函数返回值 函数名 形参类型、个数和顺序,eg:template <class T> T max_(const T &, const T &)4. 类模板的特化需要关注几个重要元素类名,形参类型和个数,形参的顺序倒不重要了;原创 2015-12-03 09:30:12 · 3843 阅读 · 1 评论 -
CGI原理解析系列之三----CGI如何完整获取WEB服务器数据
//模拟了服务器端 httpd 进程启动 cgi的过程,//完整展现了 get,post 方法支持原创 2014-12-02 17:22:09 · 2433 阅读 · 0 评论 -
使用连接池访问memcached(libmemcached)的完整例子
使用连接池访问memcached(libmemcached)的完整例子原创 2014-12-16 15:53:03 · 7954 阅读 · 1 评论 -
centos 7 已经支持 gcc 编译32位程序
centos 7 已经支持 gcc 编译32位程序原创 2014-11-28 11:16:21 · 8198 阅读 · 0 评论 -
LINUX vi(vim) 高亮显示语法文件
" 在目录 /etc/ 下面,有个名为vimrc的文件," 这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主" 目录下,都可以自己建立私有的配置文件,命名为:.vimrc" 取消自动注释au FileType c,cpp setlocal comments-=:// comments+=f://" 设置编码支持let &termencoding=&enco原创 2013-10-18 16:13:07 · 5407 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针和指针数组的区别http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二转载 2014-07-16 09:22:07 · 825 阅读 · 0 评论 -
protocol buffer C(linux)安装
下面描述了在 GNU/Linux x86_64(centeros)下安装 protocol buffer,支持 C 和 C++ 。1. google protocol buffer 下载下载 google protocol buffer,使用版本 2.5的,主页http://code.google.com/p/protobuf/下载地址:http://code.google.c原创 2013-12-18 15:56:48 · 8583 阅读 · 0 评论 -
linux后台服务器开发环境部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))
CentOS 6.3(Linux version 2.6.32-279.el6.x86_64)gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)本次配置Nginx 1.5.8Apache 2.4.7php 5.3.26FASTCGI原创 2014-05-13 17:20:21 · 4966 阅读 · 2 评论 -
CentOS 7 构造GCC 4.8.2 32位编译环境
CentOS 7 构造GCC 4.8.2 32位编译环境原创 2014-07-15 10:05:07 · 12832 阅读 · 0 评论 -
[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(1)]准备知识
/*prepare.cpp演示了阅读 STL 原代码的一些预备知识*///标明是使用 MS版本,本处使用 VS2012 update 4#include "stdafx.h"#include #include using namespace std;#define join_1(a,b) a+b#define join_2(a,b) ab#defin原创 2013-08-05 11:32:04 · 1808 阅读 · 0 评论 -
C++ 标准库中的异常
1. 相关定义标准库 c++ 异常类基类 std::exception 定义在文件 exception 中。class exception { public: exception() throw() { } virtual ~exception() throw(); /** Returns a C-style character string de原创 2012-05-30 14:47:44 · 8131 阅读 · 2 评论 -
转换二进制数数据为可输出结果(类似抓包显示)
const std::string printbinary(const std::string &binary){ std::string out = ""; for(int m = 0;m { //printf("%02X ",(unsigned int)(unsigned char)binary[m]); char buff[4] = {0}; sprintf(buff,"%02X "原创 2010-05-06 17:47:00 · 1818 阅读 · 1 评论 -
一个比较好用的socket 类封装(封装http 请求)
/*****************************************************************///name : myhttp.h//function : http 请求//copyright : //author : mark//date : 2008-05-13/**********原创 2009-08-14 17:44:00 · 5781 阅读 · 1 评论 -
一个好用的日期时间类(c++)
/**********************************************************///name : datetime.h//function : 时间日期类的定义//copyright : //author : //date : 2007-08-27/*********************原创 2009-04-28 10:38:00 · 2473 阅读 · 0 评论 -
多线程同步对象汇总
多线程同步对象汇总 1。包括常用的互斥锁,条件变量和读写锁,使用了c++ 的构造锁定和析构解锁的原理,能方便安全的使用。2。目前windows 只是支持临界区,linux 的都支持。3。不支持循环递归锁定,需要自己判断。否则会死锁。 //头文件myosmutex.h#ifndef _MYOSMUTEX_H_#define _MYOSMUTEX_H_ #ifde原创 2009-03-21 12:02:00 · 1318 阅读 · 0 评论 -
怎么实现带超时功能的 connect 函数
怎么实现带超时功能的 connect 函数原理:今天仔细看了 man connect,明白了错误的原因:EINPROGRESSThe socket is non-blocking and the connectioncannot be completed immediately. It is possibleto select(2) or poll(2) for compl原创 2007-07-23 16:09:00 · 2061 阅读 · 0 评论 -
一次面试失败的反思
//目的描述: 为了查找指定字符串中最长的重复字符串(允许字符重复),并求出最多个数//算法描述:需要的是重复字符串,重复字符串的长度最大可能是全字符串长度减去1,这样我们从//可能最大的开始,依次减少,到字符串里面找出所有长度为指定最大的重复字符串并计数.//在遍历字符串的过程中,我们把字符串分成两个部分遍历,一个是从0 到当前位置,一个是从//当前位置加1到字符串末尾,只要找到,这些就肯定是最原创 2007-04-16 12:55:00 · 1359 阅读 · 0 评论 -
C 语言标准中一些预定义的宏
C 语言标准中一些预定义的宏C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。__DATE__进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)__FILE__代表当前源代码文件名的字符串文字__LINE__代表当前源代码中的行号的整数常量__TIME__源文件编译时间,格式类似 "hh:mm:ss",字符串类型__fun原创 2006-07-19 17:31:00 · 1184 阅读 · 0 评论