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

【lesson11】客户端backUp类的实现

文章目录

  • 成员变量
  • 成员函数
    • backUp
    • getFileIdentifier
    • isNeedUpload
    • upLoad
    • RunMoudle

成员变量

private:std::string _back_dir;//备份文件夹路径名dataManager* _data;//dataManager指针对象

成员函数

backUp

backUp(const std::string& back_dir, const std::string& back_file):_back_dir(back_dir)
{_data = new dataManager(back_file);//创建dataManager对象指针fileUtil fu(_back_dir);//如果没有_back_dir文件夹就创建它if (fu.exists() == false)fu.createDirectory();
}

getFileIdentifier

//传入文件名就可以得到getFileIdentifier返回的唯一标识
std::string getFileIdentifier(const std::string& filePath)
{fileUtil fu(filePath);if(fu.exists() == false){ std::cout << "getFileIdentifier fail not exists" << std::endl;return "";}//自己设计的唯一标识std::stringstream s;s << fu.fileName() << "-";s << std::to_string(fu.fileSize()) << "-";s << std::to_string(fu.lastModifyTime());return s.str();
}

isNeedUpload

//判断文件是否需要备份上传
bool isNeedUpload(const std::string& filePath)
{//1.获取哈希表中文件之前的唯一标识std::string old_id;bool ret = _data->getUniqueIdentifierByFilePath(filePath , &old_id);if (ret != false){//2.获取现在的唯一标识std::string new_id = getFileIdentifier(filePath);//3.判断两者是否相同,相同者表明不需要备份上传,否则就需要if (new_id == old_id)return false;}//如果文件超过设置的时间内都没有变化,则需要上传,否则不需要fileUtil fu(filePath);if (time(nullptr) - fu.lastModifyTime() <= 3){return false;}return true;
}

upLoad

bool upLoad(const std::string& filePath)
{//1.获取数据std::string body;fileUtil fu(filePath);fu.getContent(&body);//2.搭建客户端, 并发送请求httplib::Client client(SERVER_IP, SERVER_PORT);//2.1构建上传请求内容httplib::MultipartFormData item;item.name = "file";item.filename = fu.fileName();item.content = body;item.content_type = "application/octet-stream";httplib::MultipartFormDataItems items;items.push_back(item);//2.2发送请求auto ret = client.Post("/upload", items);if (!ret && ret->status != 200){return false;}return true;
}

RunMoudle

bool RunMoudle()
{while (true){//1.获取文件夹所有文件的信息fileUtil fu(_back_dir);std::vector<std::string> arry;fu.getDirectory(&arry);//2..遍历所有文件for (auto& e : arry){/*_data->insert(e, id);*///2.1判断是否需要上传,是:继续往下走,否:继续遍历下一个文件if (isNeedUpload(e) == false){continue;}std::string id = getFileIdentifier(e);if (id.empty())continue;//3.上传成功则修改备份信息if (upLoad(e) == true){_data->insert(e, id);}}Sleep(1);}
}

相关文章:

【lesson11】客户端backUp类的实现

文章目录 成员变量成员函数backUpgetFileIdentifierisNeedUploadupLoadRunMoudle 成员变量 private:std::string _back_dir;//备份文件夹路径名dataManager* _data;//dataManager指针对象成员函数 backUp backUp(const std::string& back_dir, const std::string& b…...

数据结构--关键路径

事件v1-表示整个工程开始&#xff08;源点&#xff1a;入度为0的顶点&#xff09; 事件v9-表示整个工程结束&#xff08;汇点&#xff1a;出度为0的顶点&#xff09; 关键路径&#xff1a;路径长度最长的路径 求解关键路径问题&#xff08;AOE网&#xff09; 定义四个描述量 …...

SSTI注入漏洞

SSTI注入漏洞 1.SSTI注入概述2.SSTI检测工具3.SSTI利用方法Java基本FreeMarker (Java)ThymeleafSpring Framework (Java)Spring视图操作&#xff08;Java&#xff09;Smarty (PHP)Twig (PHP)Jade (NodeJS)NUNJUCKS (NodeJS)ERB (Ruby)Jinja2 (Python)Mako (Python)ASP 1.SSTI注…...

Day11 - Day15

Day11 - Day15 Day11&#xff08;1998年Text1&#xff09; Perhaps it is humankind’s long suffering at the mercy of flood and drought that makes the idea of forcing the waters to do our bidding so fascinating. 也许正是人类长期在洪水和干旱支配下所遭受的苦难&a…...

启航信息学奥林匹克:青少年NOI学习路线与策略指南

在全球范围内&#xff0c;信息学奥林匹克竞赛&#xff08;NOI&#xff09;不仅是青少年展示编程和算法能力的舞台&#xff0c;更是未来计算机科学家和工程师的摇篮。本文将为志在参加NOI的青少年们提供一条清晰的学习路线和实用的建议&#xff0c;帮助你们在这条充满挑战与机遇…...

易舟云财务软件:数字化时代的财务管家

在数字化浪潮的推动下&#xff0c;财务软件成为了企业提升财务管理效率、实现数字化转型的关键工具。易舟云财务软件&#xff0c;正是这样一款深受企业喜爱的财务管理系统。本文将带你详细了解易舟云财务软件的特点、版本区别以及如何使用它来优化财务工作。 易舟云财务软件的特…...

catia零件装配中通过指南针移动零件

1 将零件导入进来后 2 把指南针移动到零件上 具体移动哪个可以通过模型树点击选中&#xff0c;选中那个就可以移动那个。 这种情况需要注意的是 需要双击选择要移动零件的父节点 如下图&#xff0c;Product2蓝色表示是激活的&#xff0c;这样才可以单击选中下面的零件后通过…...

如何使用免费的 Instant Data Scraper快速抓取网页数据

Instant Data Scraper 是一款非常简单易用的网页数据爬虫工具&#xff0c;你不需要任何代码知识&#xff0c;只需要点几下鼠标&#xff0c;就可以把你想要的数据下载到表格里面。以下是详细的使用步骤&#xff1a; 第一步&#xff1a;安装 Instant Data Scraper 打开谷歌浏览…...

【仿真建模-anylogic】事件之手动定时触发

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-11 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 问题&#xff1a;建模过程中经常遇到需要临时规划特定逻辑执行时机的场景&#xff1b; 解决方案&#xff1a;在Event的User Control模…...

ElasticSearch学习笔记之三:Logstash数据分析

第3章 Logstash数据分析 Logstash使用管道方式进行日志的搜集处理和输出。有点类似*NIX系统的管道命令 xxx | ccc | ddd&#xff0c;xxx执行完了会执行ccc&#xff0c;然后执行ddd。 在logstash中&#xff0c;包括了三个阶段: 输入input --> 处理filter&#xff08;不是必须…...

求职力扣刷题DAY20--二叉树 part06

20 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 n…...

Error:Kotlin: Module was compiled with an incompatible version of Kotlin.

一、问题&#xff1a;运行spring boot项目时&#xff0c;idea报出错误&#xff1a;时提示报错如下图&#xff1a; 错误代码&#xff1a; Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected …...

关于flutter 启动 页面加载空白(三四秒空白页面)

一:可以在 对应的xml配置启动动画 <item><bitmapandroid:gravity"center"android:src"mipmap/ic_launcher" /></item> 二&#xff1a;以下是对应的文件目录 注意事项&#xff1a;俩处xml都配置一下&#xff0c;配置一样就可以了...

计量校准证书和检定证书区别,企业仪器校准要哪种证书好?

很多企业做校准&#xff0c;会要求校准机构出具相关证书&#xff0c;而有时候也会被机构询问&#xff0c;是要做检定还是校准&#xff0c;出具的证书是要校准证书还是检定证书&#xff1f;那么两者有什么区别呢&#xff1f; 1-检测方式不同 首先两种证书是不同检测方式所给的证…...

解析Java中1000个常用类:StackWalker类,你学会了吗?

推荐一个我自己写的小报童专栏导航网站: http://xbt100.top 收录了生财有术项目精选、AI海外赚钱、纯银的产品分析等专栏,陆续会收录更多的专栏,欢迎体验~复制URL可直达。 以下是正文。 Java 9 引入了许多新特性,其中之一是 StackWalker 类。StackWalker 提供了一种高效…...

【代码随想录算法训练Day32】LeetCode 122 买卖股票的最佳时机 II、LeetCode 55.跳跃游戏、LeetCode 45.跳跃游戏II

Day32 贪心第二天 LeetCode 122 买卖股票的最佳时机 II 思路真是无比巧妙&#xff0c;把区间利润拆成每天的利润&#xff0c;其实就是算出每天的利润&#xff0c;然后只取其中的正值即可。 在代码中计算是否计算加时还与0取最大值&#xff0c;相当于大于0才加入。 class Sol…...

Qt之QGraphicsView —— 笔记3:矩形图元连接(附完整源码)

效果 完整源码 注意:在ui文件中拖入一个QGraphicsView类窗口控件,然后用MyGraphicsView提升该类。 main.cpp #include "widget.h" #include <QApplication>int main(...

2024年,计算机相关专业还值得选择吗?

2024年&#xff0c;计算机相关专业还值得选择吗&#xff1f; 随着2024年高考落幕&#xff0c;数百万高三学生又将面临人生中的重要抉择&#xff1a;选择大学专业。在这个关键节点&#xff0c;计算机相关专业是否仍是“万金油”的选择&#xff1f;在过去很长一段时间里&#xf…...

流批一体计算引擎-10-[Flink]中的常用算子和DataStream转换

pyflink 处理 kafka数据 1 DataStream API 示例代码 从非空集合中读取数据&#xff0c;并将结果写入本地文件系统。 from pyflink.common.serialization import Encoder from pyflink.common.typeinfo import Types from pyflink.datastream import StreamExecutionEnviron…...

Java进阶_多态特性

生活中的多态 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作&#xff0c;如图所示&#xff1a; 现实中&#xff0c;比如我们按下 F1 键这个动作&#xff0c;同一个事件发生在不同的对象上会产生不同的结果。…...

3步精通哔哩下载姬:零基础掌握B站视频高效下载与管理全攻略

3步精通哔哩下载姬&#xff1a;零基础掌握B站视频高效下载与管理全攻略 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&…...

从if-else到assign:聊聊RTL代码风格如何影响X态传播与电路质量

从if-else到assign&#xff1a;RTL代码风格对X态传播与电路质量的深层影响 在数字IC设计领域&#xff0c;X态就像电路中的"幽灵信号"&#xff0c;它无声无息地潜伏在设计中&#xff0c;直到某个关键时刻突然显现&#xff0c;引发难以追踪的异常行为。对于RTL工程师而…...

F3D开发环境搭建:从零开始编译和构建这个开源3D项目

F3D开发环境搭建&#xff1a;从零开始编译和构建这个开源3D项目 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d F3D是一款快速且极简的3D查看器&#xff0c;本指南将带你从零开始搭建其开发环境&#xff0…...

三极管基极下拉电阻在高速电路中的关键作用解析

1. 三极管基极下拉电阻的基础认知 第一次接触三极管电路时&#xff0c;我和很多新手一样&#xff0c;对基极那个看似多余的下拉电阻充满疑惑。明明没有它电路也能工作&#xff0c;为什么工程师们总爱画蛇添足&#xff1f;直到有次调试电机驱动电路&#xff0c;三极管莫名其妙地…...

AI 大模型落地系列|Eino 组件核心篇:ChatTemplate 为什么不是字符串拼接

声明&#xff1a;本文数据源于官方文档与官方实现&#xff0c;重点参考 ChatTemplate 使用说明。 为什么很多人学 Eino 后&#xff0c;写 Prompt 时还是把 ChatTemplate 用成了字符串拼接&#xff1f;1. ChatTemplate 是什么&#xff0c;不是什么2. 接口虽短&#xff0c;但起的…...

APK Editor Studio:从入门到精通的完整Android应用编辑指南

APK Editor Studio&#xff1a;从入门到精通的完整Android应用编辑指南 【免费下载链接】apk-editor-studio Powerful yet easy to use APK editor for PC and Mac. 项目地址: https://gitcode.com/gh_mirrors/ap/apk-editor-studio 在Android应用开发和逆向工程领域&am…...

MySQL技巧(八) :死锁解决与实战案例

在数据库高并发场景下&#xff0c;死锁是一个绕不开的经典难题。两个或多个事务相互持有对方需要的锁&#xff0c;导致都无法继续执行&#xff0c;就像两辆车在狭窄路口互不相让。本文将带你从原理到实战&#xff0c;掌握死锁的排查、解决和预防全流程。一、死锁快速定位当应用…...

TSMaster与珠海创芯CAN卡的集成指南

1. 珠海创芯CAN卡与TSMaster的基础认知 第一次接触珠海创芯CAN卡时&#xff0c;我和很多工程师一样好奇&#xff1a;这个硬件到底有什么特别之处&#xff1f;实测下来发现&#xff0c;它最大的优势在于高性价比和兼容性。珠海创芯的CAN卡采用标准USB接口&#xff0c;支持CAN2.0…...

技术揭秘:深入解析Universal-IFR-Extractor固件逆向工程工具

技术揭秘&#xff1a;深入解析Universal-IFR-Extractor固件逆向工程工具 【免费下载链接】Universal-IFR-Extractor Utility that can extract the internal forms represenation from both EFI and UEFI modules. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-IF…...

Orleans分布式追踪终极指南:Jaeger与Zipkin深度对比分析

Orleans分布式追踪终极指南&#xff1a;Jaeger与Zipkin深度对比分析 【免费下载链接】orleans dotnet/orleans: Orleans是由微软研究团队创建的面向云应用和服务的分布式计算框架&#xff0c;特别适合构建虚拟 actor模型的服务端应用。Orleans通过管理actors生命周期和透明地处…...