当前位置: 首页 > news >正文

建设网站公司专业榆次建设局网站

建设网站公司专业,榆次建设局网站,基本建设程序,线上h5是什么意思连接池初始化 OVERVIEW 连接池初始化1.Connection类Connection.hConnection.cpp 2.CommonConnectionPool类CommonConnectionPool.hCommonConnectionPool.cpp 1.Connection类 封装Connection类#xff0c;在该类内调用mysql提供的接口实现对数据库的增删改查#xff0c; Con…连接池初始化 OVERVIEW 连接池初始化1.Connection类Connection.hConnection.cpp 2.CommonConnectionPool类CommonConnectionPool.hCommonConnectionPool.cpp 1.Connection类 封装Connection类在该类内调用mysql提供的接口实现对数据库的增删改查 Connection.h #ifndef _CONNECTION_H #define _CONNECTION_H#include string.h #include iostream #include mysql/mysql.h using namespace std;#define LOG(str) \cout __FILE__ : __LINE__ \__TIMESTAMP__ : str endl;// 封装Connection对象 实现数据库增删改查 class Connection { public:// 初始化数据库连接Connection();// 释放数据库连接资源~Connection();// 连接数据库bool connect(string ip, unsigned short port, string user, string password, string dbname);// 更新数据库操作 insert delete updatebool update(string sql); private:// 表示和 MYSQL Server的一条连接MYSQL *_conn; };#endifConnection.cpp #include Connection.hConnection::Connection() {_conn mysql_init(nullptr); }Connection::~Connection() {if (_conn ! nullptr) mysql_close(_conn); }bool Connection::connect(string ip, unsigned short port, string user, string password, string dbname) {MYSQL *p mysql_real_connect(_conn, ip.c_str(), user.c_str(), password.c_str(), dbname.c_str(), port, nullptr, 0);return p ! nullptr; }// insert delete update bool Connection::update(string sql) {if (mysql_query(_conn, sql.c_str())) {LOG(update failed!~ sql);return false;}return mysql_use_result(_conn); }2.CommonConnectionPool类 需求分析 在整个系统中数据库连接池对象出现一次即可有数据库连接需求时从同一个数据库连接池中获取 Connection 对象即可 连接池不需要创建多个所以可以通过单例模式来设计数据库连接池类但是服务器肯定是多线程的肯定会有多个线程都来获取连接池的单例所以还需要保证数据库连接池的线程安全问题 CommonConnectionPool类设计需要通过单例模式实现并保证数据库连接池的线程安全问题线程安全的单例 功能实现启动连接池构造函数读取基本的配置文件、初始化连接池数量initSize CommonConnectionPool.h #ifndef _COMMONCONNECTIONPOOL_H #define _COMMONCONNECTIONPOOL_H#include queue #include string #include mutex #include atomic #include thread #include Connection.h using namespace std;// 实现连接池功能模块 class ConnectionPool { public:static ConnectionPool* getConnectionPool(); private:ConnectionPool();bool loadConfigFile();// 连接池参数int _initSize; // 初始连接量int _maxSize; // 最大连接量int _maxIdleTime; // 最大空闲时间int _connectionTimeout; // 连接超时时间// 数据库信息string _ip;unsigned short _port;string _username;string _password;string _dbname;// 数据库连接存储queueConnection* _connectionq; // 存储mysql连接的队列mutex _queueMutex; // 维护连接队列的线程安全的互斥锁atomic_int _connectionCnt; // 创建连接的数量 操作是线程安全的 };#endifCommonConnectionPool.cpp #include public.h #include CommonConnectionPool.h// 懒汉单例模式 // 对于静态局部变量的初始化 由编译器自动进行 lock与unlock ConnectionPool* ConnectionPool::getConnectionPool() {static ConnectionPool pool;return pool; }// 初始化连接池 ConnectionPool::ConnectionPool() {// 1.加载配置项if (!loadConfigFile()) return;// 2.创建初始数量的连接for (int i 0; i _initSize; i) {Connection *p new Connection();p-connect(_ip, _port, _username, _password, _dbname);_connectionq.push(p);_connectionCnt;}// 3.启动一个新的线程作为连接的生产者 }// 读取配置文件 bool ConnectionPool::loadConfigFile() {FILE *fp fopen(config.conf, r);if (fp nullptr) {LOG(Config file error, file not exists!);return false;}while (!feof(fp)) {// 逐行读取配置文件char line[1024] { 0 };fgets(line, 1024, fp);string str line;// 查找配置项int idx str.find(, 0);if (idx -1) continue;// 无效配置项int edx str.find(\n, 0);string key str.substr(0, idx);string value str.substr(idx 1, edx - idx - 1);// 初始化成员变量if (key ip) {_ip value;} else if (key port) {_port atoi(value.c_str());} else if (key username) {_username value;} else if (key password) {_password value;} else if (key dbname) {_dbname value;} else if (key initSize) {_initSize atoi(value.c_str());} else if (key maxSize) {_maxSize atoi(value.c_str());} else if (key maxIdleTime) {_maxIdleTime atoi(value.c_str());} else if (key connectionTimeout) {_connectionTimeout atoi(value.c_str());}}return true; }
http://www.hkea.cn/news/14348391/

相关文章:

  • 网站开发需要多少钱新闻辽宁省建设工程信息网招标规定
  • 男女插孔做暖暖试看网站大全网站建设实训个人总结1000字
  • 分析企业网站建设流程做音乐网站没有版权
  • 深圳在哪些网站找什么好处17做网店官网
  • 黑龙江省网站备案公司品牌推广方案
  • wordpress建站吧关键词是网站seo的核心工作
  • 黄山找人做网站保定制作网站软件
  • 网站建设设计 网络服务网页设计学校官网
  • 网站建设技术工具做网站流量怎么卖
  • 怎么样做网站卖东西织梦图片瀑布流网站模板
  • 给别人做网站挣钱it运维工程师需要掌握什么技能
  • 网站怎么做dns解析免费网络短剧
  • 沈阳论坛建站模板cve wordpress
  • 淄博网站建设-中国互联wordpress加文章顶部全局广告图片
  • 网站群建设 效果个人网站名可以和别人一样吗
  • 网站怎么用PS做做木工的网站
  • 网站设计常州做外贸的如何上国外网站
  • 做网站外包价格天翼云服务器
  • 黑龙江电商网站建设wordpress升级主题
  • 股票网站怎么做动态表格有没有专门做蛋糕的网站
  • 冠县网站建设费用dz论坛识别手机网站自动跳转
  • 润商网站建设西安百度框架户
  • 系统网站开发虚拟主机免费空间
  • 酒类网站该怎么做网站建设的收获
  • 简述网站建设优劣的评价标准网页设计网站首页代码
  • 重生做皇帝小说网站女生学动漫制作技术好就业吗
  • 天津建设信息网站哈尔滨建设网站
  • 有哪些官网做的比较好的网站html网页模板大全
  • 面签拍照 网站备案公司查询系统官网
  • 网站备案时核验单网站备案后 换服务器