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

厦门数字引擎 怎么打不开网站北京微信网站开发

厦门数字引擎 怎么打不开网站,北京微信网站开发,高新区网站建设,wordpress搜索下拉菜单文章目录 配置信息设计配置文件加载cloud.conf配置文件单例模式的使用ReadConfigFile —— 读取配置文件GetInstance —— 创建对象其他函数的实现 具体实现cloud.confconfig.hpp 配置信息设计 使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活 配置信息&am…

文章目录

  • 配置信息设计
  • 配置文件加载
    • cloud.conf配置文件
    • 单例模式的使用
      • ReadConfigFile —— 读取配置文件
      • GetInstance —— 创建对象
      • 其他函数的实现
    • 具体实现
      • cloud.conf
      • config.hpp

配置信息设计

使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活

配置信息:
1.热点判断时间(多长时间没有访问算是非热点文件)
2.文件下载URL前缀路径 (用于表示客户端请求是一个下载请求)
3.压缩包后缀名称 (文件原名称之后 加上后缀 “.lz”)
4.上传文件存放路径 (决定了文件上传之后实际存储在服务器哪里)
5.压缩文件存放路径(决定非热点文件压缩后存放的路径)
6.服务端备份信息存放文件(服务端所记录的备份文件信息的持久化存储处)
7.服务器的监听IP地址 (当程序要运行在其他主机上,则不需要修改程序)
8.服务器的监听端口


配置文件加载

cloud.conf配置文件

创建 cloud.conf 配置文件


单例模式的使用

因为要设计单例中的懒汉模式,所以需要将构造函数私有化
同时为了保证每次获取都是同一个对象,所以定义一个静态的类类型的指针 _instance
需在类外将静态指针初始化
由于多线程下存在线程安全的问题,所以 定义一个静态锁 ,用于保护函数中的实例对象
而锁在类外初始化时不需要给值


_hot_time ——表示热点判断时间
_server_port ——表示 服务器的监听端口
_download_prefix ——表示 下载的url前缀路径
_packfile_suffix ——表示 压缩包后缀名称
_back_dir ——表示备份文件存放目录
_pack_dir ——表示压缩包存放目录
_server_ip ——表示服务器IP地址
_backup_file —— 表示数据信息存放文件


ReadConfigFile —— 读取配置文件

将 上述 配置文件 cloud.conf 看作一个 宏 CONFIG_FILE


使用 之前实现过的文件类 FileUtil 实例化一个对象 fu
创建一个 字符串 body
通过 FileUtil 类中的 GetContent 函数
cloud.conf 文件数据 放入 body 中
若读取失败,则返回 false


使用之前实现过的 Json类(包含序列化和反序列化功能) 实例化一个对象 root
通过Json类 的 UnSerialize 函数实现反序列化 即将body中的数据 放入 root中


root[“hot_time”].asInt() 表示 获取到 root_time 对应数据中的string数据
所以使用 asString 表示 获取对应的string数据

root[“server_port”].asInt() 表示 获取到 server_port 对应数据中的int数据
所以使用 asInt 表示 获取对应的int数据


GetInstance —— 创建对象

若只是单纯加锁解锁,当两个线程t1 t2同时进入if循环中
当线程t1 new后解锁,线程t2获取锁,继续new,就会造成覆盖 丢失数据


所以采用 双检查加锁 的方式,来解决这一问题

其他函数的实现

在配置文件 函数中 已经将 各个 私有的成员变量 进行赋值
所以在这些函数中 只需返回对应的私有成员变量即可

具体实现

cloud.conf

{"hot_time": 30,  "server_port":9090, "server_ip":"192.144.206.100","download_prefix":"/download/","packfile_suffix":".lz","pack_dir": "./packdir/","back_dir": "./backdir/","backup_file":"./cloud.dat"
}

config.hpp

//防止头文件被重复包含
#ifndef _MY_CONFIG_
#define _MY_CONFIG_
#include"util.hpp"
#include<mutex>namespace cloud
{#define CONFIG_FILE "./cloud.conf"class Config{private:Config(){ReadConfigFile();//读取配置文件信息}static Config*    _instance;static std::mutex _mutex;private:int _hot_time;                //热点判断时间int _server_port;             //服务器的监听端口std::string _server_ip;       //下载的url前缀路径    std::string _download_prefix; // 压缩包后缀名称std::string _packfile_suffix; //备份文件存放目录std::string _pack_dir;        // 压缩包存放目录 std::string _back_dir;        // 服务器IP地址std::string _backup_file;     // 数据信息存放文件bool ReadConfigFile()//读取配置文件{FileUtil fu(CONFIG_FILE);std::string body;//获取文件内容到body中if(fu.GetContent(&body) ==false)//读取失败{std::cout<<"load config file failed"<<std::endl;return false;}Json::Value root;if(JsonUtil::UnSerialize(body,&root)==false)//反序列化 字符串转化为结构化数据 {std::cout<<"parse config file failed"<<std::endl;return false;}   _hot_time=root["hot_time"].asInt();_server_port=root["server_port"].asInt();_server_ip=root["server_ip"].asString();_download_prefix=root["download_prefix"].asString();_packfile_suffix=root["packfile_suffix"].asString();_pack_dir   =root["pack_dir"].asString();_back_dir   =root["back_dir"].asString();_backup_file=root["backup_file"].asString();return true;} public:static Config *GetInstance()  //创建对象{if(_instance==NULL){_mutex.lock();//加锁//若指针为空 则创建对象if(_instance==NULL){_instance= new Config();//实例化对象}_mutex.unlock();}return _instance;}int  GetHotTime()//获取热点时间{return _hot_time;}int  GetServerPort()      //端口号{return _server_port;}std::string GetServerIp() //IP地址{return _server_ip;}std::string GetDownloadPrefix()//URL前缀路径{return _download_prefix;}std::string GetPackFileSuffix()//压缩包后缀名称{return _packfile_suffix;}std::string GetPackDir() //压缩包存放路径{return _pack_dir;}std::string GetBackDir()//备份文件存放目录{return  _back_dir;}std::string GetBackupFile()//数据信息存放文件{return _backup_file;}};  Config* Config::_instance=NULL;std::mutex Config::_mutex;
}#endif
http://www.yayakq.cn/news/894299/

相关文章:

  • 给钱做h事都行的网站名怎么自己做网站服务器linux
  • 青岛谁优化网站做的好处软件定制开发公司在哪里
  • 二手书网站开发设计网上书城网站开发的结论和不足
  • 深圳建科技有限公司网站首页企业百度网站建设
  • php网站开发工资客户管理系统服务
  • 安徽省工程建设网站来宾网站优化
  • 做网站的流程与步骤网络开发人员
  • 免费网站免费领地国内做轮胎网站
  • 墨刀网站开发原型图教程万网 网站模板
  • 营销型网站建设的5大技巧上海购房网官网
  • 企业网站建设算什么费用做网店哪个网站好
  • 做产品推广哪个网站好通付盾 网站建设公司
  • 网页排版精美的中文网站wordpress页脚添加音乐
  • 优秀甜品网站沧州百度爱采购
  • 网站排名软件包年怎么做游戏平台网站
  • 瓯北网站建设wordpress调用最新评论
  • 六安论坛网站互联网行业都有哪些工作赚钱
  • 凯里展示型网站设计杭州网站排名提升
  • 施工方案下载免费网站wordpress 搭建交易所
  • 如何查看一个网站是什么程序做的做网站主要来源
  • 网站建设与实践心得体会摄影网站介绍
  • 服装集团网站建设黄山手机网站建设公司排名
  • 建设网站的基础知识建设网站比较好公司
  • 有空间与域名 怎么做网站extjs做的网站
  • 交易猫钓鱼网站制作教学油边机 东莞网站建设
  • 图片库网站建设网站cms系统
  • 大通县公司网站建设电商网站开发方案模板
  • 网件路由器做网站广告制作的软件
  • 装饰公司网站如何布局微信分享网站显示图片
  • 单页网站规划设计书正规网站建设咨询电话