研究过Teamtalk的伙伴会发现它的线程池和连接池与很多文件有关联, 这篇文章主要写,把它的线程池连接池拆出来需要用到哪些文件。
其实我本来只想测试它的连接池的,但发现连接池里套的有线程池,于是就一起拆出来了。

整个工程的树目录结构如下:
这里可以忽略build目录内部的所有文件,因为这是cmake后产生的。

base目录里的文件如下:
因为连接池是在db_proxy_server服务器上的,所以这里我与teamtalk保持一致创建的是db_proxy_server目录,内容如下:

这里比较重要的是libbase.a , libslog.so, libhiredis.a
简单讲解这三个库文件来自哪里,
libslog.a: 与base同级目录下有一个slog文件夹,不是我这上边的slog文件夹(我这个是base目录里的slog,只包含了头文件,因为util.h会用到这个头文件), 将里面的源文件编译为库文件(libslog.a)即可,还有一点需要说明, slog日志库就是对log4c××的封装。

libbase.a: 就是base目录里面的所有源文件编译出来的库。
libhiredis.a: 这个是安装hiredis的时候生成的库,作为一个客户端与redis服务器通讯,在redis连接池中需要用到。
强调一点, 这三个库文件,直接放到/usr/lib中,cp libbase.a , libslog.so, libhiredis.a /usr/lib 不然找不到, 当然你可以通过CMakeLists.txt文件自定义路径。

看一下比较关键的CMakeLists.txt文件内容:可以着重看一下我里面的注释,对于LINK_DIRECTORIES是有细节的,它的路径决定了libbase.a , libslog.so, libhiredis.a的寻找路径, 如果你把这三个库文件放到了/usr/lib中则可以不用在这里配置这三个库文件的寻找路径(但还是需要这句话,因为还有mysql的库文件路径)。

cmake_minimum_required(VERSION 2.6)
PROJECT(dbpool_test)AUX_SOURCE_DIRECTORY(./ SRC_LIST)SET(EXECUTABLE_OUTPUT_PATH  ./)SET(MYSQL_INCLUDE_DIR /usr/include/mysql)
SET(MYSQL_LIB /usr/lib64/mysql)#加上 -static 表示显式调用静态库
ADD_DEFINITIONS( -g -W -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DAC_HAS_INFO
-DAC_HAS_WARNING -DAC_HAS_ERROR -DAC_HAS_CRITICAL -DTIXML_USE_STL
-DAC_HAS_DEBUG -DLINUX_DAEMON -std=c++11 -DENCRYPT )#这个相当于 -I   指定头文件路径
INCLUDE_DIRECTORIES(./ ../base ${MYSQL_INCLUDE_DIR})#这个相当于 -L   指定库文件路径
#这里有个细节, 如果新建了build目录,cd build -> cmake .. 则这里必须要多退一级,比如./ 要更换为 ../
#而上边的那些却不用
LINK_DIRECTORIES(./  ../ ../base ${MYSQL_LIB} )ADD_EXECUTABLE(dbpool_test ${SRC_LIST})TARGET_LINK_LIBRARIES(dbpool_test base pthread mysqlclient slog hiredis)

db_proxy_server中有三个头文件不是自己写的
read.h, sds.h, hiredis.h, 这三个头文件都是安装hiredis的时候,里面搬运过来的。

整个编译过程就是在db_proxy_server中:
mkdir build -> cd build -> cmake … -> make 即可

整个工程链接
提取码:o0ma

如果你因为某些库文件导致无法运行,不用担心, 我这里使用shell脚本把所有依赖的库打包下来, 一定可以运行。
所有库文件打包好的
提取码:0cem

简单说明两个链接的区别, 第一个工程链接是所有源文件,以及那三个库文件的打包,如果你以前成功编译过teamtalk工程, 就一定可以运行, 但如果是新手就不能运行,因为可能缺少某些依赖;
而下边这个链接,我已经用脚本打包好了所有依赖的库,不管你以前有没有编译过teamtalk ,都可以直接运行。

把TeamTalk(即时通讯项目)中的线程池连接池拆出来单独测试。相关推荐

  1. 【MySQL】JavaWeb项目中配置数据库的连接池

    在META-INF目录下新建context.xml <?xml version="1.0" encoding="UTF-8"?> <Conte ...

  2. Android-IM从零开始开发一个即时通讯项目

    Android-IM从零开始开发一个即时通讯项目 https://www.jianshu.com/p/dca480006691 关于聊天室项目 聊天室项目,也被称为即时通讯(IM). 其原理是服务器是 ...

  3. IM即时通讯项目讲解(一) 实现类似qq微信表情面板无缝切换

    IM即时通讯项目讲解(一)--实现类似qq微信表情面板无缝切换 标签(空格分隔): 开源项目 ###该系列技术课程来源慕课IM实战 带后台的IM即时通讯App 全程MVP手把手打造 #####通过该课 ...

  4. 关于即时通讯系统中消息发送、转发、展示、提示等专利初探

    关于即时通讯系统中消息发送.转发.展示.提示等专利初探 即时通讯是目前Internet上最为流行的通讯方式,实时通信(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使 ...

  5. 在独立Java应用程序中使用Tomcat JDBC连接池

    这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...

  6. jsp 配置 oracle数据库连接池,tomcat5/tomcat4中配置数据库(oracle)连接池

    tomcat5/tomcat4中配置数据库(oracle)连接池 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 在tomcat 5 OR tomcat4中配 ...

  7. IM即时通讯项目讲解(一)--实现类似qq微信表情面板无缝切换

    该系列技术课程来源慕课IM实战 带后台的IM即时通讯App 全程MVP手把手打造 通过该课程可以学习到以下知识点 1.了解和开发后台项目(这个是需要长期积累的,有了这个可以说入门没问题) 2.学习到I ...

  8. 盘点im即时通讯开发中Android后台保活方案

    对于IM应用和消息推送服务的开发者来说,在Android机型上的后台保活是个相当头疼的问题. 老板一句:"为什么微信.QQ能收到消息,而你写的APP却不行?",直接让人崩溃,话说老 ...

  9. 即时通讯项目 java版本qq (含服务器和客户端)源码_即时通讯安卓-QQ互联网和即时通讯云,如何实现即时通讯,这是Android还是Java...

    Android是系统平台. 应用程序所做的是应用程序的开发和完成 也就是说,通信是网络通信,但在手机环境中,网络的情况更复杂,所以我们必须做好结构 安卓即时通讯. 怎么做?安卓版TT即时通讯排行. A ...

最新文章

  1. java集合框架综述
  2. 人一生要解决的50个关键问题
  3. njust 1927 谁才是最强战舰!(anti-nim博弈论)
  4. 深度学习100例 | 第33天:迁移学习-实战案例教程
  5. EOS 智能合约源代码解读 (10)token合约“简介”
  6. linux 查看开放的端口_如何在 Linux 中查看正在使用的端口
  7. 2017年7月27日 老大传授的知识
  8. 3、Eternal框架-控制器
  9. pku2250--Compromise(最长公共子串,记录结果)
  10. Linux考试题(带答案)
  11. 使用RTX Server SDK帮助文档开发
  12. 视频格式转换库--libyuv的简介与编译
  13. Android 开发中版本兼容性问题
  14. 当你爸妈吐槽你的微信头像时,你该如何反击?
  15. Epicor系统二次开发
  16. 避免 Time Limit Exceeded
  17. DHCP的IP地址租约、释放
  18. CCS中调试DM6467高清视频采集(TVP7002输入)
  19. Vue——watch选项详解
  20. 那些年我们一起手写过的单例

热门文章

  1. 电脑游戏录屏哪个好用免费?这2款录屏软件,用过都说好!
  2. tdoa/aoa定位的扩展卡尔曼滤波定位算法matlab源码,TDOA/AOA定位的扩展卡尔曼滤波定位跟踪算法Matlab源码...
  3. ip地址转换数字函数 iton_字符串IP地址转换成IP数值函数
  4. Java介绍和基础知识
  5. OpenCORE原理和核心代码破解,增加AVI格式。
  6. 数字电路_1. 逻辑门表达式 真值表
  7. 降维算法PCA的应用----高维数据的可视化
  8. 20221103 C语言自学笔记第一天
  9. 【计算机组成】计算机组成原理大纲含思维导图
  10. PowerPoint 中缺少think-cell 加载项丨解决方案丨使用教程