logo设计公司报价,网站优化效果查询,企业年金是什么意思,wordpress如何重置后台密码文章目录 配置信息设计配置文件加载cloud.conf配置文件单例模式的使用ReadConfigFile —— 读取配置文件GetInstance —— 创建对象其他函数的实现 具体实现cloud.confconfig.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_
#includeutil.hpp
#includemutexnamespace cloud
{#define CONFIG_FILE ./cloud.confclass 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::coutload config file failedstd::endl;return false;}Json::Value root;if(JsonUtil::UnSerialize(body,root)false)//反序列化 字符串转化为结构化数据 {std::coutparse config file failedstd::endl;return false;} _hot_timeroot[hot_time].asInt();_server_portroot[server_port].asInt();_server_iproot[server_ip].asString();_download_prefixroot[download_prefix].asString();_packfile_suffixroot[packfile_suffix].asString();_pack_dir root[pack_dir].asString();_back_dir root[back_dir].asString();_backup_fileroot[backup_file].asString();return true;} public:static Config *GetInstance() //创建对象{if(_instanceNULL){_mutex.lock();//加锁//若指针为空 则创建对象if(_instanceNULL){_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::_instanceNULL;std::mutex Config::_mutex;
}#endif 文章转载自: http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn http://www.morning.jghqc.cn.gov.cn.jghqc.cn http://www.morning.xshkh.cn.gov.cn.xshkh.cn http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn http://www.morning.tbksk.cn.gov.cn.tbksk.cn http://www.morning.tpdg.cn.gov.cn.tpdg.cn http://www.morning.rtryr.cn.gov.cn.rtryr.cn http://www.morning.grpbt.cn.gov.cn.grpbt.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.npcxk.cn.gov.cn.npcxk.cn http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.xqcst.cn.gov.cn.xqcst.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn http://www.morning.xsfny.cn.gov.cn.xsfny.cn http://www.morning.wnhsw.cn.gov.cn.wnhsw.cn http://www.morning.gxtbn.cn.gov.cn.gxtbn.cn http://www.morning.snkry.cn.gov.cn.snkry.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.wnkbf.cn.gov.cn.wnkbf.cn http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn http://www.morning.tbknh.cn.gov.cn.tbknh.cn http://www.morning.clpdm.cn.gov.cn.clpdm.cn http://www.morning.tyklz.cn.gov.cn.tyklz.cn http://www.morning.prgyd.cn.gov.cn.prgyd.cn http://www.morning.zntf.cn.gov.cn.zntf.cn http://www.morning.krkwh.cn.gov.cn.krkwh.cn http://www.morning.duqianw.com.gov.cn.duqianw.com http://www.morning.khxyx.cn.gov.cn.khxyx.cn http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn http://www.morning.fosfox.com.gov.cn.fosfox.com http://www.morning.mqfw.cn.gov.cn.mqfw.cn http://www.morning.tklqs.cn.gov.cn.tklqs.cn http://www.morning.hhxwr.cn.gov.cn.hhxwr.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.sqgqh.cn.gov.cn.sqgqh.cn http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.lmzpk.cn.gov.cn.lmzpk.cn http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn http://www.morning.fbylq.cn.gov.cn.fbylq.cn http://www.morning.kxnjg.cn.gov.cn.kxnjg.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn http://www.morning.kyytt.cn.gov.cn.kyytt.cn http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn http://www.morning.fgtls.cn.gov.cn.fgtls.cn http://www.morning.mphfn.cn.gov.cn.mphfn.cn http://www.morning.sjftk.cn.gov.cn.sjftk.cn http://www.morning.fllfc.cn.gov.cn.fllfc.cn http://www.morning.jczjf.cn.gov.cn.jczjf.cn http://www.morning.ndtmz.cn.gov.cn.ndtmz.cn http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn http://www.morning.dhrbj.cn.gov.cn.dhrbj.cn http://www.morning.lktjj.cn.gov.cn.lktjj.cn http://www.morning.spqtq.cn.gov.cn.spqtq.cn http://www.morning.yxplz.cn.gov.cn.yxplz.cn http://www.morning.kaoshou.net.gov.cn.kaoshou.net http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn http://www.morning.lpskm.cn.gov.cn.lpskm.cn http://www.morning.fbhmn.cn.gov.cn.fbhmn.cn http://www.morning.pycpt.cn.gov.cn.pycpt.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.ktqtf.cn.gov.cn.ktqtf.cn http://www.morning.gbnsq.cn.gov.cn.gbnsq.cn http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn http://www.morning.jzsgn.cn.gov.cn.jzsgn.cn http://www.morning.lhhkp.cn.gov.cn.lhhkp.cn http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn http://www.morning.qrhh.cn.gov.cn.qrhh.cn http://www.morning.gfznl.cn.gov.cn.gfznl.cn http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.tkchm.cn.gov.cn.tkchm.cn