C++项目——云备份-①-项目介绍环境搭建

news2024/9/24 11:32:51

文章目录

  • 专栏导读
  • 1.什么是云备份
  • 2.实现目标
  • 3.服务端程序负责功能
  • 4.服务端功能模块划分
  • 5.客户端程序负责功能
  • 6.客户端功能模块划分
  • 开发环境
  • 环境搭建
    • 1. gcc 升级7.3版本
    • 2.安装 jsoncpp 库
    • 3.下载bundle数据压缩库
    • 4.下载 httplib 库

专栏导读

🌸作者简介:花想云 ,在读本科生一枚,C/C++领域新星创作者,新星计划导师,阿里云专家博主,CSDN内容合伙人…致力于 C/C++、Linux 学习。

🌸专栏简介:本文收录于 C++项目——云备份

🌸相关专栏推荐:C语言初阶系列C语言进阶系列C++系列数据结构与算法Linux

在这里插入图片描述

1.什么是云备份

云备份指自动将本地计算机指定文件夹中需要备份的文件上传备份到远端服务器中。并且能够随时通过浏览器进行查看或下载,其中下载过程还支持断点续传功能。服务器会对上传的文件进行热点管理(经常被访问的文件称为热点文件),将非热点文件进行压缩存储,节省磁盘空间。

在这里插入图片描述

2.实现目标

云备份项目需要我们实现两端程序,即客户端与服务端。其中部署在用户机的程序为客户端程序,负责上传文件等;运行在服务器上的程序为服务端程序,负责备份文件的存储与管理。两端合作实现总体的自动云备份功能。

3.服务端程序负责功能

  • 针对客户端上传的文件进行备份存储;
  • 能够对文件进行热点管理,对非热点文件进行压缩存储,节省磁盘空间;
  • 支持客户端浏览器查看访问文件列表;
  • 支持客户端浏览器下载文件,并且下载支持断点续传。

4.服务端功能模块划分

  • 数据管理模块:负责服务器上备份文件的信息管理;
  • 网络通信模块:搭建网络通信服务,实现与客户端进行通信;
  • 业务处理模块:针对客户端的各个请求进行对应业务处理并响应结果;
  • 热点管理模块:负责文件的热点管理,以及非热点文件的压缩存储。

5.客户端程序负责功能

  • 能够自动检测客户机指定文件夹中的文件,并判断是否需要备份;
  • 将需要备份的文件逐个上传到服务器。

6.客户端功能模块划分

  • 数据管理模块:负责客户端备份的文件信息管理,通过这些数据可以确定一个文件是否需要备份;
  • 文件检测模块:遍历获取指定文件夹中所有文件路径名称;
  • 网络通信模块:搭建网络通信服务,实现将文件数据备份上传到服务器。

开发环境

  • CentOS 7;
  • vscode/vim;
  • g++;
  • Makefile;

环境搭建

1. gcc 升级7.3版本

sudo yum install centos-release-scl-rh centos-release-scl
sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++
source /opt/rh/devtoolset-7/enable
echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc
  • 检查是否升级成功
$ g++ -v

在这里插入图片描述

2.安装 jsoncpp 库

sudo yum install epel-release
sudo yum install jsoncpp-devel
  • 安装完成后

在这里插入图片描述

  • 注意,centos版本不同有可能安装的jsoncpp版本不同,安装的头文件位置也就可能不同了。

3.下载bundle数据压缩库

  • GitHub链接
  • 安装 git
sudo yum install git
git clone https://github.com/r-lyeh-archived/bundle.git

4.下载 httplib 库

  • GitHub链接
git clone https://github.com/yhirose/cpp-httplib.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Solution】商品秒杀之Redis缓存与MQ异步优化以及超卖一人一单等问题的解决

目录 一、Demo开始前准备 1、数据库准备 2、项目准备 3、全局唯一id生成器 二、秒杀业务基本实现 1、秒杀基本业务逻辑 2、秒杀接口设计 3、秒杀业务代码实现 4、超卖问题产生 三、保证线程安全解决超卖少卖问题 1、超卖产生的原因 2、加锁方案:乐观锁 …

Go 函数的健壮性、panic异常处理、defer 机制

Go 函数的健壮性、panic异常处理、defer 机制 文章目录 Go 函数的健壮性、panic异常处理、defer 机制一、函数健壮性的“三不要”原则1.1 原则一:不要相信任何外部输入的参数1.2 原则二:不要忽略任何一个错误1.3 原则三:不要假定异常不会发生…

【Linux】如何判断RS-232串口是否能正常使用

1.RS-232串口短接 使用RS-232协议的串口引脚一般如图下所示 为了让串口能够接收到自己发出的串口数据,需要将输出端和输入端(RXD和TXD)进行短接操作: 短接完成后,才能实现自发自收的功能(走其他协议的串口清…

开发者职场“生存状态”大调研报告分析 - 第四版

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

Swift使用Embassy库进行数据采集:热点新闻自动生成器

概述 爬虫程序是一种可以自动从网页上抓取数据的软件。爬虫程序可以用于各种目的,例如搜索引擎、数据分析、内容聚合等。本文将介绍如何使用Swift语言和Embassy库编写一个简单的爬虫程序,该程序可以从新闻网站上采集热点信息,并生成一个简单…

【MyBatis】MyBatis日志信息配置

目录 什么是MyBatis相关的日志? 标准日志信息配置: 配置logback日志信息: 什么是MyBatis相关的日志? 首先什么叫做与MyBatis相关的日志呢?就是我们在执行sql语句的时候,如果没有MyBatis相关的日志&…

SpringBoot项目访问后端页面404

检查项目的路径和mapper映射路径没问题后,发现本级pom文件没有加入web启动模块的pom文件中 maven做项目控制时,要注意将maven模块加入到web启动模块中

IDEA项目import报错清理缓存

1、清理maven缓存 2、整个项目清理缓存

易点易动上线招标管理模块:提升企业高效招标管理的解决方案

在当今竞争激烈的商业环境下,招标管理对于企业的成功至关重要。为了帮助企业实现高效的招标管理,易点易动固定资产管理系统上线了全新的招标管理模块。该模块涵盖了供应商资质审核、采购询价单、重新报价单、招标结果单、招标作废单等功能,为…

【动态规划】583. 两个字符串的删除操作、72. 编辑距离

提示:努力生活,开心、快乐的一天 文章目录 583. 两个字符串的删除操作💡解题思路🤔遇到的问题💻代码实现🎯题目总结 72. 编辑距离💡解题思路🤔遇到的问题💻代码实现&…

知识分享:如何制作一个电子名片二维码?

参加国际展会、寻找合作商、线下客户拜访、渠道开发、商务对接、行业交流大会……在这些场合中,商务名片都是必不可少的。随着二维码应用的流行,名片上使用二维码已经非常普遍了。你也可以在商务名片上使用一个自己设计的电子名片二维码,扫描…

基于 KubeSphere 部署 KubeBlocks 实现数据库自由

作者:尹珉, KubeSphere Contributor & Ambassador,KubeSphere 社区用户委员会杭州站站长。 KubeSphere 是什么? KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持…

使用HTML制作一个摊煎饼小游戏

铁打的行业流水的人,与其被动等待35岁的到来,不如主动出击探索副业,实现一个HTML摊煎饼小游戏,结合传统方法和现代技术,致力于制作出既美味又有创意的煎饼。 目录 引言简介游戏背景 所需材料和工具HTML基础知识CSS样式…

python作图

最重要的一张图了,有助于了解一下图的各个组成部分。最重要的一句话就是 Figure包含至少一个Axes,每个Axes可以被认为是一个模块(包含坐标轴,标题,图像内容等)。因此,创建单图的时候就是在Figur…

BAT028:批量将文件修改日期后缀更新为最新修改日期

引言:编写批处理程序,实现批量将文件修改日期后缀更新为最新修改日期。 一、新建Windows批处理文件 参考博客: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件,点击【…

文本识别工具 TextSniper for Mac有哪些特点

TextSniper 是一款 macOS 平台上的文本提取工具,它可以将屏幕上的文字内容快速转换为可编辑的文本。无论是从图像、视频、PDF 文件还是其他类型的文档中提取文字,TextSniper 都提供了便捷的功能。 以下是 TextSniper的一些主要特点和功能: …

智慧粮仓粮库解决方案:视频+AI识别技术赋能,守护大国粮仓

一、需求背景 我国作为世界人口大国,农产品需求量庞大,保障粮食等重要农产品安全是经济社会稳定发展的重要基础。粮食安全涉及到生产、收购、加工、储藏、销售等全产业链,既涉及新型基础设施建设,也有对软件技术等专业能力要求。…

我的128创作纪念日

我的创作128纪念日 🎈1.机缘🎈2.收获🎈3.反思与憧憬 🎈1.机缘 2023年6月13日的那天,开始了CSDN的创作之旅,那时的我还是一名大一的学生,机缘巧合下开始了创作,主要也是分享自己在学习…

Apache Doris (四十二): RECOVER数据删除恢复

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

web前端面试-- IEEE754标准JS精度丢失问题0.1+0.2!=0.3、0.2+0.3==0.5 十进制转二进制讲解

本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-) web面试题专栏:点击此处 背景 WEB前端面试官:0.20.3是否等于0.5&#xff…