【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-表示整个工程开始(源点:入度为0的顶点) 事件v9-表示整个工程结束(汇点:出度为0的顶点) 关键路径:路径长度最长的路径 求解关键路径问题(AOE网) 定义四个描述量 …...
SSTI注入漏洞
SSTI注入漏洞 1.SSTI注入概述2.SSTI检测工具3.SSTI利用方法Java基本FreeMarker (Java)ThymeleafSpring Framework (Java)Spring视图操作(Java)Smarty (PHP)Twig (PHP)Jade (NodeJS)NUNJUCKS (NodeJS)ERB (Ruby)Jinja2 (Python)Mako (Python)ASP 1.SSTI注…...
Day11 - Day15
Day11 - Day15 Day11(1998年Text1) 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学习路线与策略指南
在全球范围内,信息学奥林匹克竞赛(NOI)不仅是青少年展示编程和算法能力的舞台,更是未来计算机科学家和工程师的摇篮。本文将为志在参加NOI的青少年们提供一条清晰的学习路线和实用的建议,帮助你们在这条充满挑战与机遇…...
易舟云财务软件:数字化时代的财务管家
在数字化浪潮的推动下,财务软件成为了企业提升财务管理效率、实现数字化转型的关键工具。易舟云财务软件,正是这样一款深受企业喜爱的财务管理系统。本文将带你详细了解易舟云财务软件的特点、版本区别以及如何使用它来优化财务工作。 易舟云财务软件的特…...
catia零件装配中通过指南针移动零件
1 将零件导入进来后 2 把指南针移动到零件上 具体移动哪个可以通过模型树点击选中,选中那个就可以移动那个。 这种情况需要注意的是 需要双击选择要移动零件的父节点 如下图,Product2蓝色表示是激活的,这样才可以单击选中下面的零件后通过…...
如何使用免费的 Instant Data Scraper快速抓取网页数据
Instant Data Scraper 是一款非常简单易用的网页数据爬虫工具,你不需要任何代码知识,只需要点几下鼠标,就可以把你想要的数据下载到表格里面。以下是详细的使用步骤: 第一步:安装 Instant Data Scraper 打开谷歌浏览…...
【仿真建模-anylogic】事件之手动定时触发
Author:赵志乾 Date:2024-06-11 Declaration:All Right Reserved!!! 问题:建模过程中经常遇到需要临时规划特定逻辑执行时机的场景; 解决方案:在Event的User Control模…...
ElasticSearch学习笔记之三:Logstash数据分析
第3章 Logstash数据分析 Logstash使用管道方式进行日志的搜集处理和输出。有点类似*NIX系统的管道命令 xxx | ccc | ddd,xxx执行完了会执行ccc,然后执行ddd。 在logstash中,包括了三个阶段: 输入input --> 处理filter(不是必须…...
求职力扣刷题DAY20--二叉树 part06
20 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 n…...
Error:Kotlin: Module was compiled with an incompatible version of Kotlin.
一、问题:运行spring boot项目时,idea报出错误:时提示报错如下图: 错误代码: 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> 二:以下是对应的文件目录 注意事项:俩处xml都配置一下,配置一样就可以了...
计量校准证书和检定证书区别,企业仪器校准要哪种证书好?
很多企业做校准,会要求校准机构出具相关证书,而有时候也会被机构询问,是要做检定还是校准,出具的证书是要校准证书还是检定证书?那么两者有什么区别呢? 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 思路真是无比巧妙,把区间利润拆成每天的利润,其实就是算出每天的利润,然后只取其中的正值即可。 在代码中计算是否计算加时还与0取最大值,相当于大于0才加入。 class Sol…...
Qt之QGraphicsView —— 笔记3:矩形图元连接(附完整源码)
效果 完整源码 注意:在ui文件中拖入一个QGraphicsView类窗口控件,然后用MyGraphicsView提升该类。 main.cpp #include "widget.h" #include <QApplication>int main(...
2024年,计算机相关专业还值得选择吗?
2024年,计算机相关专业还值得选择吗? 随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里…...
流批一体计算引擎-10-[Flink]中的常用算子和DataStream转换
pyflink 处理 kafka数据 1 DataStream API 示例代码 从非空集合中读取数据,并将结果写入本地文件系统。 from pyflink.common.serialization import Encoder from pyflink.common.typeinfo import Types from pyflink.datastream import StreamExecutionEnviron…...
Java进阶_多态特性
生活中的多态 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 现实中,比如我们按下 F1 键这个动作,同一个事件发生在不同的对象上会产生不同的结果。…...
一个热门的源码整站数据打包完整代码(开箱即用),集成了最新有效数据和完美wordpress主题。
分享一个资源价值几千元的好代码资源网整站打包代码,这个wordpress网站基于集成了ripro9.1完全明文无加密后门版本定制开发,无需独立服务器,虚拟主机也可以完美运营,只要主机支持php和mysql即可。整合了微信登录和几款第三方的主题…...
操作系统真象还原-第3章 完善MBR
继续学习第三章,MBR这个引导程序上一次只是打印一个字符串,没有起到引导作用,这一章估计是要做引导了,我设想一个扇区应该不够,会再load一段代码,然后跳到这段代码执行。 开始吧: 3.1 地址/se…...
翻转链表-链表题
LCR 141. 训练计划 III - 力扣(LeetCode) 非递归 class Solution { public:ListNode* trainningPlan(ListNode* head) {if(head ! nullptr && head->next ! nullptr){ListNode* former nullptr;ListNode* mid head;ListNode* laster nul…...
【Android面试八股文】volatile和synchronize有什么区别?
volatile和synchronize有什么区别? 在 Java 多线程编程中,volatile 和 synchronized 是两个重要的关键字,它们分别用于处理并发访问共享变量的问题。尽管它们都可以用于确保多线程环境下的数据一致性,但在实际应用中却有着明显的区别和适用场景。 作用范围: volatile 只能…...
linux flask | 接口保持在后台一直运行、python后端接口长期调用、python后台持续运行方法、python提供后端接口
文章目录 一、flask接口二、长期运行接口2.1、nohup与&后台运行 实际项目中我们需要用python提供一个后端接口,并在linux上持续运行这个程序,以供其他项目调用。下面就用个简单示例讲解下怎么写python后端接口,以及如何将程序长期运行在l…...
二分查找算法:穿越算法迷宫的指南
✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 目录 前言 一. 二分查找算法介绍 二 二分查找的题目解析 2.1 二分查找 2.2 在排序数组中查找元素的第一个位置和最后一个位置 2.3 搜索插入位置 2.4 x的平方根 2.5 山峰数组峰顶的索引 2.6 寻找峰值 2.7 寻找旋转数…...
【Week-R3】天气预测,引入探索式数据分析方法(EDA)
文章目录 1. 导入模块2. 导入数据3.探索式数据分析方法(EDA)3.1 数据相关性探索3.2 是否会下雨3.3 地理位置与下雨的关系3.4 湿度和压力对下雨的影响3.5 气温对下雨的影响 4.数据预处理4.1 处理缺损值4.2 构建数据集 5 预测是否会下雨5.1 构建神经网络5.…...
VBA excel 表格将多行拆分成多个表格或 文件 或者合并 多个表格
excel 表格 拆分 合并 拆分工作表按行拆分为工作表工作表按行拆分为工作薄 合并操作步骤 拆分 为了将Excel中的数万行数据拆分成多个个每个固定行数的独立工作表,并且保留每个工作表的表头,你可以使用以下VBA脚本。这个脚本会复制表头到每个新的工作表&…...
利用Redis的队列模式实现消息的发送和订阅,适合分布式场景,Java实现代码
在Redis中,通常使用发布/订阅模式(Pub/Sub)来进行消息的实时通信。然而,标准的Redis发布/订阅模式并不直接支持确保一条消息只被一台机器消费。在这种模式下,所有订阅了特定频道的客户端都会收到发布的消息。 但是&…...
软件下载安装【汇总】
软件下载安装【汇总】 前言版权推荐软件安装【汇总】最后 前言 2024-5-12 21:38:34 以下内容源自《【汇总】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog.csdn.net 禁止其他平台发布…...
深圳市建设管理中心网站首页/平台推广是做什么的
免责声明:文中有一些图片来源自网络,如有版权请通知我删除,谢谢!网络启动最早用于无盘系统,那时的电脑只配备软驱也没有网络,系统启动速度慢而且功能简单。后期虽然有了硬盘后,但造价昂贵、管理…...
wordpress简洁风模板/seo优化信
叶子节点个数为n1,度为2的节点数为n2,用n2表示n1。 证:因为节点分为度为1,2,3,的所以设x节点总数。 xn1n2y(度为1) 边数1 2*n2y1 n1n2y2*n2y1 n2n1-1 转载于:https://www.cnblogs.com/wls001/p/4962439.html...
网站流量做那些好/seo外包顾问
Windows XP是一款经典的操作系统,同时也是一款很老的操作系统,不过尽管如此,还是有一批用户在使用XP系统,所以发行一些软件的时候还是要测试在XP系统中能否运行,这时候我们就可以借助VirtualBox虚拟机安装一个XP系统来…...
wordpress头像尺寸/搜索引擎排名优化seo课后题
目录 前言 消息队列 搜索引擎 缓存 分库分表 读写分离 分布式系统 系统拆分 分布式服务框架 分布式锁 分布式事务 分布式会话 高可用架构 高可用系统 限流 熔断 降级 数据库CRUD操作 1.删除表 drop table 表名称 2.修改表 3.删除数据库 CRUD操作 1、…...
怎么做免费推广网站/拓客引流推广
为什么要学习Spring的框架a: 方便解耦,简化开发 Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理 b:AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行…...
中国建设银行人事网站/百度下载安装最新版
2019独角兽企业重金招聘Python工程师标准>>> Grails是一个约定胜于配置的框架。以下是Grails在controller,servic,domain等方面的约定。 Controller和View的约定 所有的Controller类的命名都以Controller结尾,并放在grails-app/controllers文件夹中 Con…...