数据库池DBPool
AdairJun
莫道谗言如浪深,莫言迁客似沙沉。
千淘万漉虽辛苦,吹尽狂沙始到金。
展开
-
数据库连接池DBPool分析(五):Makefile
Makefile的设计思想是编译MysqlObj和RedisObj,并将它们链接成静态库和动态库,供外部调用。这里是供gtest来调用。这里参考了leveldb的Makefile的设计思想。这里有个需要小心的地方,因为用到了gtest,所以编译的时候需要链接-lgtest,-lgtest必须要放在-lpthread前面,否则编译会错误还有一个Makefile的magic,我把它称为安静模式,这是我公原创 2015-09-26 19:54:29 · 763 阅读 · 0 评论 -
数据库连接池DBPool分析(四):mysql连接池 mysql_connection_pool
这个class的设计和MysqlObj不一样了,不会像MysqlObj提供Connect函数来进行连接,这里我直接就在构造函数当中创建好池,因为如果再提供一个init之类的函数来创建池的话我觉得与这个class的设计语意违背,毕竟池创建好就能直接使用了。在构造函数当中使用到了boost的property_tree,目的就是从config里面读取database.xml或者database.json配原创 2015-09-26 19:50:31 · 2441 阅读 · 0 评论 -
数据库连接池DBPool分析(七):Redis连接控制 RedisObj
因为这个连接控制的class当中使用了大量的引用,所以设置一个宏IN和OUT,仅仅只是一个标志,标记是输出还是输入。 这个class的设计和MysqlObj的设计非常像,但是不同的是这里并不需要一个对象来专门保存查询值,就因为Redis是key-value的,查询是直接返回一个字符串或者数字。 所以这里只需要一个成员变量来保存查询值,就是redisReply* r_pResult; redis原创 2015-09-26 19:58:29 · 781 阅读 · 0 评论 -
数据库连接池DBPool分析(六):gtest
gtest是google的C++测试框架,很好用。 我借鉴了http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html里面的教程来使用gtestgoogle test的单元测试仅需要TEST()和TEST_F()两个宏, TEST:定义一次测试 第一个参数是测试用例名,第二个参数是测试名通过RUN_ALL_TESTS()来运行它原创 2015-09-26 19:56:19 · 556 阅读 · 0 评论 -
数据库连接池DBPool分析(一):简介
刚刚毕业的本科生,在研究了公司的框架之后,自己花了三天的时间用C++实现了简单的数据库连接池,包括了Mysql。正在加入Redis的支持。请访问我的github:https://github.com/adairjun/DBPool概述所谓池的概念,就是一次性向系统申请多个资源并保存下来,等到程序需要向系统申请资源的时候,就直接向池当中去申请。相当于在执行程序和系统资源之间加了一层。 有高人云:“计原创 2015-09-26 19:45:03 · 3403 阅读 · 1 评论 -
数据库连接池DBPool分析(二):存放Mysql的查询结果 QueryResult.h
这个class的设计参考了xPool当中的QueryResult.h,我觉得这个设计足够用了。 毕竟这个class的设计思想只有一个,一般来说存放Mysql的查询结果是使用的是二维vector,也就是vectorQueryResult.h#ifndef _QUERYRESULT_H#define _QUERYRESULT_H#include <vector>#include <string>u原创 2015-09-26 19:47:09 · 1001 阅读 · 0 评论 -
数据库连接池DBPool分析(八):redis连接池 redis_connection_pool
更新完上一篇博客的时候恰逢十一黄金周,回家休息了一会。现在补充DBPool的Redis连接池。 我刚开始写mysql_connnection_pool的时候,用的是map这个数据结构来保存连接,每次从池当中取出连接的时候都需要遍历一边map,根据map的第二个参数的bool值来判断是否可用。这样的话效率很低,所以我在这里改用list来保存。每次取出连接的时候都pop_front出来,没次释放连接的原创 2015-10-18 15:38:57 · 4052 阅读 · 0 评论 -
数据库连接池DBPool分析(三):Mysql连接控制:MysqlObj
这个class的设计是这样的,初始化的时候并不建立连接,仅仅简单地初始化成员变量(IP地址,User,password等),而是单独提供一个Connect函数来建立连接,连接的时候把mysql的编码设置为gb2312,关闭连接也有一个Close函数,析构的时候会调用Close. Dump函数是用来debug用的,将m_pMysql指针指向的值打印出来。MysqlObj并不使用QueryResult原创 2015-09-26 19:48:59 · 749 阅读 · 0 评论 -
数据库连接池DBPool分析(九):Theron库+gtest来测试
国庆节在家里面学习了Theron这个高并发的库的使用方法,获益良多。 Theron的官网:http://www.theron-library.com/最特别的就是Theron 是Actor的模型,而不是object。这一点由于我并非是从JAVA转向的C++语言,所以没有万物皆是对象这个强烈的观点。 一般面向对象的三个特性:组合,继承,和多态。从组合上来说,就是一个class A为了调用c原创 2015-10-18 17:02:10 · 767 阅读 · 0 评论