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

要做网站找谁帮忙做html5做手机网站

要做网站找谁帮忙做,html5做手机网站,万户网,html5支持最好的浏览器重写Sylar基于协程的服务器#xff08;2、配置模块的设计#xff09; 重写Sylar基于协程的服务器系列#xff1a; 重写Sylar基于协程的服务器#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar#xff09; 重写Sylar基于协程的服务器#xff08;1、日志模…重写Sylar基于协程的服务器2、配置模块的设计 重写Sylar基于协程的服务器系列 重写Sylar基于协程的服务器0、搭建开发环境以及项目框架 || 下载编译简化版Sylar 重写Sylar基于协程的服务器1、日志模块的架构 重写Sylar基于协程的服务器2、配置模块的设计 重写Sylar基于协程的服务器3、协程模块的设计 配置模块存在的必要性 一个服务器软件可能会运行在不同的机器上机器的配置、网络环境、实际需求等都是千变万化在服务器软件中为了适应这些变化可能就是调整几个变量的值。开发人员不可能每次外在因素的改变就重新编译软件再发布这明显是不现实的。于是配置模块就在这时发挥它的关键作用利用好配置模块就不需要再次编译让配置模块自己加载参数动态调节就行了。 配置模块的设计与实现 配置模块序列化和反序列化效果支持std::各种容器 YAML 的基本语法如下 大小写敏感。 利用缩进表示层级关系缩进只能使用空格空格的数量不重要。 #表示注释。 数据类型对象键值对的集合即K-V对。数组一组按次序排列的值。纯量scalars单个的、不可再分的值包括字符串、布尔值、整数、浮点数、Null、时间、日期。 测试配置文件定义了一个key为spacevalue也是一个map类型的节点该map有两个kv对它们的key分别是vec、numvalue分别是数组类型和纯量类型。如下 test_config.yml: space:vec: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]num: 7测试代码 void test_logConfig(){// 创建配置变量lunar::ConfigVarstd::vectorint::ptr vec lunar::ConfigVarMgr::GetInstance()-lookUp(space.vec, std::vectorint(), vec test);lunar::ConfigVarint::ptr num lunar::ConfigVarMgr::GetInstance()-lookUp(space.num, int(), num test);// 解析配置文件lunar::ConfigVarMgr::GetInstance()-loadFromFile(test_config.yml);// 反序列化配置 输出到控制台LUNAR_LOG_INFO(g_logger) vec-toString();LUNAR_LOG_INFO(g_logger) num-toString(); }解析结果 [rootlocalhost build]# ../bin/test_config 2024-01-31 21:02:02 2433 unknow 4294967295 [INFO] [system] /root/workspace/lunar/tests/test_config.cc:53 - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 2024-01-31 21:02:02 2433 unknow 4294967295 [INFO] [system] /root/workspace/lunar/tests/test_config.cc:54 7配置模块类的设计 在Yaml提供的数据类型的基础上我们的配置文件还需要支持对象类型所以我们需要通过模板以泛型编程的方式实现对复杂数据类型的解析除此之外我们还要对各个配置变量进行集中管理综上所述类的设计如下 LexicalCast对象转换类模板仿函数使用C的模板二次封装Boost库的boost::lexical_cast模板函数实现基础类型和字符串类型间相互转换。然后对LexicalCast类模板进行偏特化让其支持C标准库的容器的序列化与反序列化。所以我们实现的LexicalCast类模板默认支持基础类型和C容器想要支持自定义类型的序列化和反序列化用户需要自己实现全特化LexicalCast。 ConfigVarBase配置变量基类抽象出配置参数共有属性和方法比如变量名、对变量的描述、互斥锁、toString()、fromString()等方便ConfigVarManager类使用多态对配置变量进行统一的管理。 ConfigVar配置变量类模板继承ConfigVarBase类含有m_value成员变量利用LexicalCast类模板实现toString方法将配置变量序列化成Yaml String实现fromString方法将Yaml String反序列化成配置变量。此外还支持变更通知在set方法中调用变更回调通知引用配置变量的地方更新变量。 ConfigVarManager配置变量管理类利用std::map容器管理所有ConfigVar变量std::map以配置变量名作为key以配置变量基类智能指针作为value支持配置变量的查询用户在查询一条配置变量时会提供该变量的变量名、默认值、变量描述如果配置变量不存在ConfigVarManager还会自动通过new 运算符利用默认值创建一个类型相同的配置变量然后将变量名自动创建的配置变量插到std::map中并返回给用户因此ConfigVarManage还有自学习的能力。此外提供了loadFromYaml函数支持对Yaml文件的解析通过递归的方式解析Yaml文件中的每个map node节点因为Yaml文件的map类型就是key, value对这里keyvalue在配置文件中的含义和成员变量std::map中元素的含义是一致的,所以取解析到的每个map node节点的key去查该key是否存在于std::map成员中如果存在就调用相应配置变量基类的fronString函数将map node的value作为参数反序列化成一个配置变量。 ConfigVarManager的伪代码如下 yaml配置文件解析的核心代码如下 // 递归枚举每一个类型为map的节点。static void __ListAllYamlNode(std::string prefix,const YAML::Node node,std::vectorstd::pairstd::string, YAML::Node output){output.push_back(std::make_pair(prefix, node));if(node.IsMap()){for(auto it node.begin(); it ! node.end(); it){__ListAllYamlNode((prefix.empty() ? prefix :prefix .) it-first.Scalar(), it-second, output);}}}void ConfigVarManager::loadFromFile(const std::string val){std::vectorstd::pairstd::string, YAML::Node nodes;YAML::Node root YAML::LoadFile(val);__ListAllYamlNode(, root, nodes);for(auto it nodes.begin(); it ! nodes.end(); it){ConfigVarBase::ptr var lookUpConfigVarBaseByName(it-first);if(var ! nullptr){ // 有配置变量就解析该节点std::stringstream ss();ss it-second;var-fromString(ss.str());// for debug//LUNAR_LOG_DEBUG(LUNAR_LOG_NAME(system)) var-toString();}}}关于yaml-cpp的使用可以参考官方文档https://github.com/jbeder/yaml-cpp/wiki/Tutorial。 感兴趣的同学可以阅读一下本文实现的源码https://github.com/LunarStore/lunar 本章完结
http://www.zqtcl.cn/news/575148/

相关文章:

  • 湖北网站设计流程旺旺食品有限公司网页设计
  • 无锡专业网站建设华企网站建设推广优化
  • 做网站公司流程cms203片
  • wordpress网站主机名如何优化培训体系
  • 安平网站建设团购网站建设目的
  • 长春网页网站制作做网站时搜索的代码是什么
  • 排名好的移动网站建设陕西恒业建设集团网站
  • 怎么用ps做简单网站个人商城网站建设
  • mvc做门户网站自适应网站制作费用
  • 建设工程协会网站查询系统成品网站源码在线观看
  • 宝塔做两个网站安卓版wordpress
  • 即墨网站建设招聘企业类网站有哪些
  • 汕头网站建设开发软件开发属于哪个专业
  • 企业网站建设规划书阿里云虚拟机怎么做多个网站
  • 营销平台网站建设做视频怎么做
  • 吉林房地产网站开发icp网站授权函
  • 深圳公司网站建设哪家好郑州短视频培训机构
  • 网络培训班答案百度seo收录软件
  • 中核工建设集团有限公司网站网站建设管理中se是什么意思
  • 网站如何做关键词引流网站怎么快速做收录
  • 网站建设文案网站设计要学哪些
  • 品牌网站建设gs平台搭建工具
  • 怎么把自己做的网站弄到域名上柳州游戏网站建设
  • 做衣服类网站策划书高端建设网站企业
  • 珠海网站建设公司有哪些代替做网站推广
  • 泰安的网站建设公司旅游网站建设规划报告怎么写
  • 如何建设淘宝客网站什么是网络营销常用的网络营销方法有哪些
  • 大连华南网站建设深圳网站建设公司的外文名是
  • 做招投标网站云南昆明网站建设价格
  • 越秀区网站建设公司微网站菜单