
C++框架&开源库
文章平均质量分 76
zhu2695
Coding life....
展开
-
C++ 用libcurl库进行http通讯网络编程
一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网 h转载 2016-07-21 20:48:18 · 776 阅读 · 0 评论 -
开源C/C++网络库比较
在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。支持跨平台。Boost的ASIO是一个异步IO库,转载 2016-05-02 12:07:48 · 827 阅读 · 0 评论 -
开源C++库:ACE及其安装使用
什么是ACE? ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务。据推测在新的C++Builder中,将转载 2016-05-02 11:49:25 · 14659 阅读 · 0 评论 -
Log4cpp介绍及使用
Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能。使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流、内存字符串队列、文件、回滚文件、调试器、Windows日志、本地syslog和远程syslog服务器中。1、Log4cpp简介 Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一转载 2016-04-30 21:21:53 · 1485 阅读 · 0 评论 -
boost.log 架构研究和主要使用总结
前面做了不少boost log的例子,现在来总结一下,下面是boost log库的架构图: 下面总结一下和这个架构相关的知识:1. 如何获得Logging core#include ...boost::shared_ptr core = logging::core::get();2. 如何安装Sink对象一个core可以安装多个Sink,下面的代码假转载 2016-04-30 21:16:15 · 1579 阅读 · 0 评论 -
Boost log 简单使用
该示例是在VC2010 MFC Unicode环境下使用内容包括1 启动关闭日志2 设置日志存储路径3 设置输出日志等级4 日志是否立即写入文件5 设置单个文件的大小6 设置磁盘最小可利用空间Logger.h[cpp] view plain copy #pragma on转载 2016-04-30 21:08:59 · 1608 阅读 · 0 评论 -
boost.log要点笔记
常用简写:namespace logging = boost::log;namespace src = boost::log::sources;namespace expr = boost::log::expressions;namespace sinks = boost::log::sinks;namespace attrs = boost::log::attributes;nam转载 2016-04-30 21:07:16 · 1661 阅读 · 0 评论 -
Boost.log的应用
本文首先介绍了boost.log的几个重要的概念,然后分析其框架结构,最后详细解析了一段示例代码,并总结了将boost.log应用到自己的程序中时的步骤。1. 几个概念日志记录:一个独立的消息包,这个消息包还不是实际写到日志里的消息,它只是一个候选的消息。属性:日志记录中的一个消息片。属性值:那就是上面所说的属性的值了,可以是各种数据类型。日志槽(LOG SINK):日志写向的目标转载 2016-04-30 21:04:55 · 1102 阅读 · 0 评论 -
C++单元测试工具unittest++使用小结
UnitTest++是一个C++的单元测试工具,这个工具小巧,使用简单.测试结果支持输出到屏幕和保存成xml文件. 这个项目的地址是:http://unittest-cpp.sourceforge.net/UnitTest++.html 本文章是基于版本1.4 使用环境是:linux fedora64 2.6.35.6 使用介绍: 1.如果还没该工转载 2016-04-30 20:58:24 · 8557 阅读 · 0 评论 -
Linux下Google Test (GTest)测试环境搭建步骤
本文将介绍单元测试工具Google Test(GTest)在Linux操作系统中测试环境的搭建方法。本文属于Google Test使用的基础教程。在Linux中使用Google Test之前,需要对如下知识有一些了解:(1)C/C++编程方法(2)makefile的编写(3)Linux命令行操作(4)GTEST背景知识:它是用来干什么的?它用什么语言编写的?它的一些转载 2016-04-30 14:10:12 · 1516 阅读 · 0 评论 -
如何用googletest写单元测试
googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版本gtest写自己的单元测试。本文包括以下几部分:1、获取并编译googletest(以下简称为gtest);2、如何编写单元测试用例;3、如何执行单元测试。4、google test内部是如何执行我们的单元测试用例的。转载 2016-04-30 14:04:48 · 771 阅读 · 0 评论 -
我对开源C++网络库简单应用总结
网上有篇文章《开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山》,看了之后觉得每个库都不错,这里我具体下载这些库看一下,简单总结一下;顺便添加一些我找到的网络库; (1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE转载 2016-05-02 12:12:47 · 672 阅读 · 0 评论 -
那些年我们追过的网络库
为什么要用 C++ 编写服务端程序?如果说答案是性能,那么肯定有人会满不在乎。觉得性能不够的话, 只要加机器就可以了。然而更少的机器,意味着更低的能耗,更少的硬件投入,更少的人力资源投入去维护机器。总而言之,更低的成本。肯定会有人说,C++的开发速度太慢了。然而这并不是绝对的。C++也可以做到非常快速的开发。有句俗语 * “脚本一时爽,重构火葬场” * 说的正是脚本语言开发的项转载 2016-05-02 12:29:51 · 836 阅读 · 0 评论 -
DuiLib——几种控件的常规属性介绍
很多控件共有的属性name="thebtn"(用处:代表当前控件。)text="文字"(用处:控件上显示的文字。textcolor可以设置它的颜色。disabledtextcolor禁用时的颜色。textpadding文字边距。)tooltip="提示文字"(用处:鼠标放上去提示的文字。)bgcolor="#FF00FF00"(用处:背景色。bkcolor2与bkc转载 2016-07-21 13:37:29 · 24269 阅读 · 0 评论 -
Windows下zlib库和libPng库的编译和使用
关于zlib库和libpng是干嘛的,我就不说了,度娘和谷歌都能告诉你。这里主要记录下windows下如何利用vs2010编译和使用这两个库。一、zlib库的编译 首先要下载这个库,这个谷歌和百度也都可以找得到的。我下载的是zlib-1.2.5,下载完解压出来即可。下边就开始编译吧。(包括动态库和静态库两种)1. 首先开启VS2010的Command Prompt (转载 2016-07-20 09:35:50 · 920 阅读 · 0 评论 -
数据库连接池libzdb的使用
在上一个项目的性能测试中,发现瓶颈主要在对数据库的操作上,原来的系统对数据库操作只有一个连接,而IO操作的效率相对于计算的效率而言简直是一种不可容忍的。所以就产生了在这个项目中使用数据库连接池这种想法。 由于时间比较紧张,碰巧在网上找到了一个开源的数据库连接池,所以也就诞生了这篇博文。 当然对于技术实力比较强的团队来说,可以会选择根据自己的需要去自己去做一个连接池。转载 2016-06-03 00:36:50 · 994 阅读 · 0 评论 -
libzdb简介
第1节 Libzdb 简介api地址:http://www.tildeslash.com/libzdb/#apiLibzdb 实现了一个小型、快速、易用、线程安全的连接池数据库API,可连接多种数据库,零配置,通过URL指定连接信息。它具有以下特性:1.线程安全的数据库连接池2.连接到多个数据库系统3.零配置,通过URL指定连接信息4.支持MySQL, Postg转载 2016-06-03 00:35:23 · 1103 阅读 · 0 评论 -
libzdb
api地址:http://www.tildeslash.com/libzdb/#apiLibzdb 实现了一个小型、快速和易用的线程安全的连接池数据库API,可连接多种数据库,零配置,通过URL指定连接信息。它具有以下特性:线程安全的数据库连接池连接到多个数据库系统零配置,通过URL指定连接信息支持MySQL, PostgreSQL, SQLite and Oracle 可以不转载 2016-06-03 00:33:58 · 3081 阅读 · 0 评论 -
cppunit测试的一个小例子
下面是一个利用cppunit框架进行单元测试的例子,结合gcov,lcov实现对 测试覆盖情况的统计测试部分 由两部分组成:testfixture, main ;用两种颜色分开以示区别。原理:在 CppUnit 中,一个或一组测试用例的测试对象被称为 Fixture(设施,下文为方便理解尽量使用英文名称)。Fixture 就是被测试的目标,可能是一个对象或者一组相关的对象转载 2016-05-06 23:43:31 · 2519 阅读 · 0 评论 -
高性能的通讯库-zeroMQ的几个高性能特征
这两天研究了一下zeroMQ,号称史上最好的通讯库,比rabbitMQ快很多,基于c语言开发的,实时流处理sorm的task之间的通信就是用的zeroMQ。zeroMQ在使用模式上支持多种,有req-reply,publish-subscribe,pipe。 下图是zeroMQ的架构图简单说明一下,从上到下依次是网络、zeroMQ、用户的应用,相当于转载 2016-05-02 15:02:19 · 793 阅读 · 0 评论 -
C/C++网络编程总结与ZeroMQ
现在几乎所有C/C++的后台程序都需要进行网络通讯,其实现方法无非有两种:使用系统底层socket或者使用已有的封装好的网络库。本文对两种方式进行总结,并介绍一个轻量级的网络通讯库ZeroMQ。1.基本的Scoket编程关于基本的scoket编程网络上已有很多资料,作者在这里引用一篇文章中的内容进行简要说明。基于socket编程,基本上就是以下6个步骤:转载 2016-05-02 14:57:38 · 3982 阅读 · 1 评论 -
ZeroMQ,史上最快的消息队列 —– ZMQ的学习和研究
一、ZeroMQ 的背景介绍 引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,转载 2016-05-02 14:52:16 · 1264 阅读 · 0 评论 -
ZeroMQ 的模式
在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。最近读完了 ZeroMQ 的 Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自转载 2016-05-02 14:47:38 · 595 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架转载 2016-04-30 14:03:05 · 517 阅读 · 0 评论 -
Boost Test学习总结(C++)
1. 常用的C++单元测试框架 测试驱动开发(TDD)已经是一种非常流行的开发方式了,在Java和.Net中都提供了非常好的单元测试框架,最近研究C++下面的单元测试,发现其实在C++中还是有很多选择:CPPUnit:著名的XUnit系列产品之一,熟悉JUnit、NUnit的开发人员可以很快上手。CXXTest:需要进行预处理,需要安装Perl或Python。Bo转载 2016-04-30 13:54:12 · 2107 阅读 · 0 评论 -
C++加密库botan混合编译和简单使用
C++加密库botan混合编译和简单使用最近要用到加密数据,找了半天,有许多加密库:botancrypto++tomcryptopensslMCryptCryptlibPolarSSLyaSSLGnuPG尝试后发现还是botan简单好用。botan加密库是什么,百度一下就知道,在这里就不多说了。首先,我不想用lib或者dll,于是乎想直接生成.h和.cpp文件加入工程使用。原创 2016-04-26 00:54:31 · 6805 阅读 · 1 评论 -
hello,intel TBB
Intel Threading BuildingBlocks(Intel TBB)是一个使用ISO C++代码实现的多平台、可扩展并行编程库。但目前为止这方面的中文资料却很少。初步了解TBB时,并非每个人都打算看官方提供的资料,即使是Intel Threading BuildingBlocks Tutorial。准备l 下载编译TBB免费版本的TBB可以从下面的链接下转载 2016-04-26 00:35:41 · 515 阅读 · 0 评论 -
学习 Intel 线程构建块开源库(TBB)
学习 Intel 线程构建块开源库简介我们发现了 POSIX 线程和基于 Windows 的线程的一种强大替代,即 Intel 线程构建块,该构建块是专为并行编程而设计的基于 C++ 的框架。并行编程是未来的发展趋势,但是如何实现高性能的并行编程,从而有效地利用多核 CPU 呢?使用诸如 POSIX 线程这样的线程库当然也是一种选择,不过,最初引入 POSIX 线程转载 2016-04-26 00:32:57 · 6594 阅读 · 0 评论 -
TBB(Intel Threading Building Blocks)学习笔记
TBB(Intel Threading Building Blocks)学习笔记并行与并发是相对的,OS里讲的是并发而在架构方面更多的是说并行。并行是分多个层面的,个人认为基本上可以分为这么几个层面:1、指令级的并行;即所谓的微程序、指令流水线等,现在cpu的一级缓存、二级缓存都很大,所以这个cache的效果还是比较好的(基于局部性原理)2、线程级的并行;即同一个时刻多个函数在运行(现在的cp转载 2016-04-26 00:30:11 · 1667 阅读 · 0 评论 -
Libev和Libuv的区别
参考一:libev和libuv的区别libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Library 都写了一些东西,下面就来说一说我本人对两者共同与不同点的主观表述。高性能网络编程这个话题已经被讨论烂了。异步,异步,还是异步。不管是 epoll 也好,kqueue 也罢,总是免不了异步这个话题。转载 2016-04-25 23:09:23 · 2084 阅读 · 0 评论 -
利用Libuv编写异步多线程的addon实例
利用libuv编写异步多线程的addon实例 最近cnode上很多TX在问关于node的异步回调以及单线程的事情,今天看了libuv的一些api和demo,自己简单写了一个利用libuv实现异步多线程的addon的例子,真心希望大牛指正啊。demo例子的地址:https://github.com/DoubleSpout/libuv_ex也可以npm转载 2016-04-25 23:04:11 · 1758 阅读 · 0 评论 -
Libuv库概述
[-]序言本书为谁而写背景本书代码Libuv 基础事件循环Event loopsHello Worldlibuv 的默认事件循环Default loop监视器Watchers空转Idling文件系统读写文件文件系统相关操作Filesystem operations缓冲区与流Buffers and Streams文件变更事件File c转载 2016-04-25 22:55:20 · 2343 阅读 · 0 评论 -
Libev事件库
事件库之Libev(一)使用LibevLibev的作者写了一份很好的官方Manual,比较的齐全,即介绍了Libev的设计思想,也介绍了基本使用还包括内部各类事件详细介绍。这里略微赘述一下。Libev通过一个 ·struct ev_loop· 结结构表示一个事件驱动的框架。在这个框架里面通过ev_xxx结构,ev_init、ev_xxx_set、ev_xxx_start转载 2016-04-25 22:48:26 · 1095 阅读 · 0 评论 -
Boost Asio 介绍
一 简介 Boost Asio ( asynchronous input and output)关注异步输入输出。Boost Asio库提供了平台无关性的异步数据处理能力(当然它也支持同步数据处理)。一般的数据传输过程需要通过函数的返回值来判断数据传输是否成功。Boost Asio将数据传输分为两个独立的步骤:采用异步任务的方式开始 数据传输。将传输结果通知调用端转载 2016-04-25 22:41:07 · 811 阅读 · 0 评论 -
boost asio ——深入框架
要用好它,就必须先了解它,而且不能停止于表面,必须深入到内部。而了解一件事物,先要了解它的框架,再了解它的细节。了解了框架,我们就有了提纲挈领的认识。关于 boost asio 框架结构,在其文档中,用了这样一张图来描述: 简单解释一下:这里由使用者(Initiator)启动一个异步操作(Asynchronous Operation),在启动异步的同时它要负转载 2016-04-25 22:39:23 · 615 阅读 · 0 评论 -
基于事件的开源网络库—libevent:应用介绍
一、简介因memcached(见上一篇“数据缓存系统-memcached介绍”)使用了libevent作为它对外界事件(磁盘、网络等)的监控,所以对libevent就一同进行了了解、应用。按libevent的官网(http://libevent.org/)介绍,libevent是一个监视特定事件,提供回调函数的C++库,它可以监视的事件包括:1. 能以文件描述符表转载 2016-05-25 00:15:10 · 584 阅读 · 0 评论 -
libevent介绍及示例
一、Libevent简介 libevent是一个基于事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。官网:http://libevent.org/特点:事件驱动,高性能;轻量级,专注于网络,不如ACE那么臃肿庞大,只提供了简单的网络API的封装,转载 2016-05-25 00:19:01 · 1387 阅读 · 0 评论 -
C++单元测试:boost.test
目录[-]C++单元测试:boost.test1) 准备1.1) 编译boost test1.2) 引入boost test2) 使用2.1) Hello the testing world2.2) 自动注册测试套件(Test suites)2.3) 使用测试夹具(Test fixtures)3) 总结附1:样例工程btest_start转载 2016-04-30 13:51:23 · 7414 阅读 · 0 评论 -
Boost库单元测试使用配置
Boost库单元测试使用配置1 Boost库简介Boost官网:http://www.boost.org/。中文简介见百度百科:http://baike.baidu.com/view/663725.htm。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost中比较有名气的几个库:Regex 正则转载 2016-04-30 13:49:16 · 1498 阅读 · 0 评论 -
C++使用oracle的occi库操作oracle数据库
// C++使用oracle的occi库操作oracle数据库//步骤//1、创建OCCI上下文环境//2、创建数据库连接//3、创建Statement对象//4、执行查询SQL//5、执行插入SQL//6、终止Statement对象//7、断开数据库连接//8、释放OCCI上下文环境// 代码示例如下:[cpp] view转载 2016-04-30 12:29:21 · 1096 阅读 · 0 评论