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

制作app的公司是什么公司seo网站推广简历

制作app的公司是什么公司,seo网站推广简历,不改域名和空间 只改网站类型,wordpress如何导航网站模板下载数据管理模块功能#xff1a; 后续项目需要使用的数据如下 文件实际存储路径#xff1a;当客户端需要下载文件时#xff0c;从这个文件中进行读取响应文件压缩包存放路径名#xff1a;如果文件是非热点文件会被压缩 如果客户端需要下载这些文件#xff0c;需要先进行解压…数据管理模块功能 后续项目需要使用的数据如下 文件实际存储路径当客户端需要下载文件时从这个文件中进行读取响应文件压缩包存放路径名如果文件是非热点文件会被压缩 如果客户端需要下载这些文件需要先进行解压缩然后返回文件是否被压缩的标记位判断文件是否被压缩了文件大小文件最后一次修改时间文件最后一次访问时间文件访问url中的资源路径path 数据管理模块管理数据方式 用于数据信息访问使用哈希表在内存中管理数据url的path作为key值持久化存储管理使用json序列化将所有数据信息保存在文件中不使用数据库 数据管理模块被多个线程共享使用读写锁更好读共享写互斥。每次数据更新都要重新持久化存储避免数据丢失。每次服务器重启都要加载以前的数据 文件数据结构体设计如下 #pragma once #include ./util/fileutil.hpp #include unordered_map #include pthread.h #include ./config/config.hpp namespace CloudBackups {struct BackupInfo{bool packflag; // 压缩标记size_t size; // 文件大小time_t mtime; // 最后一次修改时间time_t atime; // 最后一次访问时间std::string real_path; // 实际文件存储位置std::string pack_path; // 文件压缩存储位置std::string url;// 打开文件初始化BackInfoBackupInfo(const std::string real_path){this-packflag false;FileUtil file(real_path);if (file.isExit()) // 文件存在时才可以获取下面的信息{this-size file.filesize();this-mtime file.last_modify_time();this-atime file.last_visit_time();this-real_path real_path;// 获取配置文件的压缩文件路径Config *config Config::GetInstance();std::string packdir config-GetPackfileDir(); // 压缩文件根目录std::string suffix config-GetPackfileSuffix(); // 压缩文件后缀std::string zipname file.filename() suffix;this-pack_path packdir / zipname; // 压缩文件路径std::string download config-GetDownloadPrefix();this-url download / file.filename(); // 下载请求路径}else{LOG(FATAL, file not found);}}}; }数据管理模块设计如下 #pragma once #include ./util/fileutil.hpp #include unordered_map #include pthread.h #include ./config/config.hpp #include ./util/json.hpp namespace CloudBackups {class DataMange{private:pthread_rwlock_t rwlock; // 读写锁读共享写互斥std::unordered_mapstd::string, BackupInfo backupMap; // 文件请求路径和对应信息的哈希表std::string backupFile; // 数据持久化信息文件文件格式为jsonpublic:// 将backupMap持久化存储bool Storage(){// 获取所有数据std::vectorBackupInfo backups;this-GetAll(backups);// 添加到Json::Value中Json::Value root;for (size_t i 0; i backups.size(); i){Json::Value backup;backup[packflag] backups[i].packflag;backup[size] Json::Int64(backups[i].size);backup[mtime] Json::Int64(backups[i].mtime);backup[atime] Json::Int64(backups[i].atime);backup[real_path] backups[i].real_path;backup[pack_path] backups[i].pack_path;backup[url] backups[i].url;root.append(backup);}// 持久化 序列化保存// 序列化std::string body;JsonUtil::serialize(root, body);// 保存文件FileUtil file(backupFile);file.setContent(body);return true;}// 加载配置信息初始化backupMapbool InitLoad(){// 读取Json文件FileUtil file(backupFile);if (file.isExit() false){// 服务器文件信息不存在无需初始化return true;}std::string body;file.getContent(body);// 反序列化Json::Value root;if (JsonUtil::unserialize(body, root) true){// 将反序列化的数据写到map上for (int i 0; i root.size(); i){BackupInfo backupInfo;backupInfo.packflag root[i][packflag].asBool();backupInfo.size root[i][size].asInt64();backupInfo.mtime root[i][mtime].asInt64();backupInfo.atime root[i][atime].asInt64();backupInfo.real_path root[i][real_path].asString();backupInfo.pack_path root[i][pack_path].asString();backupInfo.url root[i][url].asString();Insert(backupInfo);}return true;}return false;}DataMange(){backupFile Config::GetInstance()-GetBackupFile();pthread_rwlock_init(rwlock, nullptr);InitLoad();}~DataMange(){pthread_rwlock_destroy(rwlock);}// 数据管理模块插入信息bool Insert(const BackupInfo backupInfo){pthread_rwlock_wrlock(rwlock);backupMap[backupInfo.url] backupInfo;pthread_rwlock_unlock(rwlock);Storage();return true;}// 更新数据管理模块bool UpDate(const BackupInfo backupInfo){pthread_rwlock_wrlock(rwlock);backupMap[backupInfo.url] backupInfo;pthread_rwlock_unlock(rwlock);Storage();return true;}// 通过url获取这个文件bool GetByUrl(const std::string url, BackupInfo backupInfo){pthread_rwlock_wrlock(rwlock);auto pos backupMap.find(url);if (pos backupMap.end()){LOG(WARNING, url map not found you url is: url);pthread_rwlock_unlock(rwlock);return false;}backupInfo pos-second;pthread_rwlock_unlock(rwlock);return true;}// 通过http uri 获取文件信息bool GetByRealPath(const std::string real_url, BackupInfo backupInfo){pthread_rwlock_wrlock(rwlock);auto pos backupMap.begin();while (pos ! backupMap.end()){if (pos-second.real_path real_url){backupInfo pos-second;pthread_rwlock_unlock(rwlock);return true;}pos;}LOG(WARNING, http uti not found you uri is: real_url);pthread_rwlock_unlock(rwlock);return false;}// 获取请求映射下所有文件信息bool GetAll(std::vectorBackupInfo backups){pthread_rwlock_wrlock(rwlock);backups.clear();for (auto backup : backupMap){backups.push_back(backup.second);}pthread_rwlock_unlock(rwlock);return true;}}; }Gitee位置 Github位置
http://www.zqtcl.cn/news/919335/

相关文章:

  • 公司网站建设方案江门建设建筑网站
  • 网站是生成静态好还是动态好怎么找到域名做的那个网站
  • 婚纱网站页面设计上海商地网站建设公司
  • 模板手机网站建设多少钱百度搜索词排名
  • 怎么学做网站住房和城乡建设部网站一级建造师
  • 政务公开网惠州seo推广公司
  • 建设英文商城网站网站开发工具选择
  • 沈阳市浑南区城乡建设局网站淄博哪里有网站建设平台
  • 做不锈钢管网站口碑好的定制网站建设提供商
  • 做网站推广销售wordpress 随机页面
  • 陈坤做直播在哪个网站如何在建设银行网站预约纪念币
  • 如何做网站么新网站一天做多少外链
  • 用家用路由器ip做网站营销策略方案
  • 学历教育网站建设网页前端是什么
  • 相同网站名网站县区分站点建设
  • 医疗器械网站建设方案南京网站制作系统
  • 小网站托管费用企查宝企业查询
  • 专门做特卖的网站是什么外国炫酷网站网址
  • 学习网站的建设wordpress批量拿shell
  • 中企动力做的网站推软件
  • 北京财优化沧州seo公司
  • 收到网站代码后怎么做啥是东莞网站优化推广
  • 重庆商城网站开发网站建设中英版
  • 免费企业网站开发给酒吧做网站
  • 想用自己电脑做服务器做个网站吗网站制作工作室哪家比较好
  • 这样建立网站vs2008做网站
  • 做网站创业故事好看大方的企业网站源码.net
  • 做家常菜哪个网站最好香蜜湖附近网站建设
  • 网站index.php被修改seo网络推广经理招聘
  • 南京做网站联系南京乐识网站建设培训福州