C/C++/VC
文章平均质量分 70
newzai
打破沙锅问到底
展开
-
SQL C++代码自动生成器(sql2class)介绍
sql2class 是一个工具,用于把数据库表格转换为一个C++对象。配合odbcwrapped 和mysqlwrapped 2个面向对象的数据库接口封装库一起使用。 odbcwrapped 用C++类封装了Windows OBDC API的调用。mysqlwrapped 用C++类封装了 Mysql C API的调用。 2个库都使用统一的接口。简化了程序员在开发数据库相关原创 2008-11-11 22:51:00 · 3375 阅读 · 0 评论 -
web socket RFC6455 frame 打包、解包
#ifndef __APP_WEBSOCKET_FRAME_H__#define __APP_WEBSOCKET_FRAME_H__#include "memory.hpp"class buffer;struct websocket_frame{ websocket_frame(); ~websocket_frame(); static const unsigned int f原创 2014-05-16 18:46:17 · 2494 阅读 · 0 评论 -
Web Socket rfc6455 握手 (C++)
web socket rfc6455 握手。。原创 2014-05-16 18:40:38 · 1846 阅读 · 0 评论 -
Base64 基于C++ bitset实现。
Base64基础知识可以参考此文章,非常详细:http://blog.csdn.net/morewindows/article/details/11871429转换为Base64,输入数据必须以三个字节为一组,转为为4个字节的可视字符。下面主要是根据下图的映射表就行编程:以下代码实现了Base64的编码规则#include #include #include原创 2014-05-06 21:36:24 · 1737 阅读 · 0 评论 -
基于C++11的线程池
封装了一个基于C++11的线程池对象。异步执行的任务,从线程池中分配一个空闲的线程来执行该任务.如果没有空闲的线程可以执行,则进入队列排队 task_pool_init(10); for( int i = 0 ; i < 200 ; i ++ ) { run_job([i]{ std::this_thread::sleep_for(std::chrono::seconds(1)); }); } ...........................原创 2014-05-06 16:09:10 · 2188 阅读 · 0 评论 -
C++ 11 并发: 正确 的使用条件变量-condition_variable
1. 标准实例http://en.cppreference.com/w/cpp/thread/condition_variable在cppreference提供的对 cv的例子,condition_variable和mutex都是全局变量。但是我们的程序不可能到处使用全局变量。如果把condition_variable和mutex的定义放到main函数中进去,作为局部变量,并且循环原创 2014-05-06 16:40:42 · 3544 阅读 · 1 评论 -
C++ Class Mapped Google Protocol Buffer Message
摘要Google Protocol Buffer 是一个优秀的基于二进制的网络消息编解码框架。应用于项目时,可以节省不少的人力资源、开发时间和程序BUG。但其不足之处是protobuf编译器生成的C++消息类(或者Java等其他语言的消息类)冗余数据过多,需要依赖于protobuf的编解码库,一般情况下都不能用于作为业务逻辑对象。因此大部分情况下,程序都需要另外独立定义业务逻辑对象,并且使原创 2013-06-03 14:53:29 · 4063 阅读 · 5 评论 -
SNMP MIB 文法分析--基于Scala Parser模块
1.为何要分析SNMP MIB文件。 分析MIB文件主要为了提取MIB文件中的oid定义及其对应的OID值,包含(OBJECT-IDENTIFIER 和OBJECT-TYPE等具有OID值的对象).2. 提取OID对象和其值后,有何用户呢?搞SNMP网管开发时,业务对象一般是居于C++,Java,C#等类,而且这些类一般只包含基础成员,没有指针,没有对象成员,没有集合成员等。这些业务对象再也SNM原创 2013-06-03 10:35:30 · 2918 阅读 · 0 评论 -
protobuf-wireshark编译小结
一直使用protobuf作为网络开发的私有协议消息通信。但是抓包分析是个问题。幸好目前已经有了支持wireshark的protobuf插件。该插件是基于linux的代码编写的。1. 首先要先搭建好wireshark编译环境,可以参考官方的wireshark编译环境配置,安装上面的配置基本上是无问题。 本人出现在 nmake -f Makefile.name setup 时出现了解压压缩包原创 2013-04-18 16:18:33 · 4708 阅读 · 0 评论 -
wireshark protobuf 插件
搞网络开发的时候,涉及到很多私有协议。方便是方便,不过抓包分析问题就麻烦了,wireshark是不可能会为我们自己的网络协议开发分析工具的,唯有自己开发协议分析插件。在私有协议方面,google protobuf是一个类似与IDL的语言,用于定义消息接口,并且支持很多语言,原生支持C++、Java和python,而且还有很多第三方的支持,基本上支持C、C#、object-c,AS3,PHP等.原创 2013-04-18 13:45:03 · 11094 阅读 · 5 评论 -
shared_ptr 在 stl容器中排序的陷阱。
实例代码:// test1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include #include using namespace std;using namespace std::tr1;原创 2012-01-14 00:14:35 · 4128 阅读 · 3 评论 -
说出来不好意思:从学C++开始,到现在8年了,才知道的using还有这种用法。
#include #include class A{public:A(){}virtual ~A(){}virtual void print(int a) { printf("A:%d\r\n",a);}virtual void print(const std::string & str ) {printf("A:%s\r\n",str.c_st原创 2011-12-24 15:55:06 · 2137 阅读 · 1 评论 -
google protobuf repeated 字段二义性
protobuf 消息的repeated字段,可以包含0~N个相同的内容。当包含的内容大于0时,可以认为是在修改数据或者数据有改变。当包含的内容是0时,也就是不包含时,究竟是不改变原来的数据,还是清空呢?因此在设计协议时,遇到repeated字段时,最好在与某个optional字段相组合,用来指示是否包含相应的repeated字段。例如。message MSG1{原创 2011-11-02 18:01:19 · 14721 阅读 · 0 评论 -
Google Protobuf 使用介绍
直接在 www.google.com.hk 上搜索google protobuf 后下载官方版本。官方版本支持C++\Java\Python三门语言。还有很多非官方的语言版本支持,如C\NET(C#/Vb.net)\Flex(AS3)等. 要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。原创 2011-10-26 11:15:08 · 19274 阅读 · 2 评论 -
ACE学习手记-----智能指针(ACE_Intrusive_Auto_Ptr)
前面一篇写了智能指针,重点介绍了ACE_Auto_Ptr和ACE_Refcounted_Auto_Ptr 两个智能指针的使用,以及他们的不同点。当时对ACE_Intrusive_Auto_Ptr指针还没有深入的了解、也不知道ACE_Intrusive_Auto_Ptr智能指针的用途是什么? ACE_Intrusive_Auto_Ptr和ACE_Refcounted_Auto_Ptr原创 2008-11-30 21:08:00 · 2113 阅读 · 0 评论 -
ACE学习手记 -----关于 ACE_CDR
ACD_CDR编译时的4个宏、下面4个宏在ACE编译时默认都是关闭的。如果要让自己的ACE库有相关的能力需要在config.h中定义以下宏ACE_InputCDR 相关的宏 ACE_CDR_IGNORE_ALIGNMENT 该宏让CDR Stream忽略输入流的字节对其,全部按单字节对其。 如果没有设置该宏,ACE采用8个字节对输入流进行默认对其。 ACE_DISABLE_SWAP_ON原创 2008-11-27 16:21:00 · 2910 阅读 · 1 评论 -
ACE学习手记--- 智能指针(ACE_Auto_Ptr / ACE_Refcounted_Auto_Ptr)
ACE库提供的智能指针的功能是相当强大的。主要有ACE_Auto_PtrACE_Refcounted_Auto_PtrACE_Intrusive_Auto_Ptr三个智能指针,其中用的比较多的却容易使用的是前面2个。最后一个需要在自己的类中实现一些规定的函数。在这里主要介绍前面2个指针的使用。 ACE_Auto_Ptr ACE_Auto_Ptr 更像RAII的应原创 2008-11-24 20:14:00 · 3911 阅读 · 0 评论 -
web socket RFC6455 connection --asio C++11
#ifndef __APP_WEBSOCKET_CONNECTION_H__#define __APP_WEBSOCKET_CONNECTION_H__#include #include "tcp_connection.hpp"class websocket_connection : public tcp_connection{public: websocket_connecti原创 2014-05-19 15:41:18 · 1785 阅读 · 0 评论