项目日记 -云备份 -项目认识与环境搭建

博客主页:【夜泉_ly

本文专栏:【项目日记-云备份

欢迎点赞👍收藏⭐关注❤️

目录

背景

本来准备下个月MySQL学的差不多了再开项目的,

结果因为种种原因,

不得不提前做一个项目。

但我MySQL没学多少,怎么办呢?

那就做个用不到MySQL的项目!

这就是今天给大家介绍的,云备份。

有C++基础、Linux系统编程、网络编程基础就能做。

项目认识

这个项目的作用,非常简单,

就是把指定文件夹中的本地文件备份到服务器上,

并且可以做到:

通过浏览器进行文件查看与下载

下载时支持断点续传

而服务器则可以把很久没用的文件压缩,

节省空间。(热文件管理

具体怎么实现呢?

先把大致的功能列出来,
服务端功能:

  1. 支持客户端文件上传
  2. 支持客户端查看已备份文件
  3. 支持客户端下载备份文件
  4. 压缩长期无访问的文件

客户端功能:

  1. 判断指定文件夹中的文件是否需要备份
  2. 逐个上传需要备份的文件

那么,上传文件下载文件等等,

都涉及网络数据传输吧?

那么你得对数据序列化和反序列化吧?

你也得支持HTTP协议吧?

另外,对于热文件的管理,

你也得有文件压缩和管理的程序吧?

这些都要手写吗?当然不,

这些我们都用第三方库。

是否可以自己实现这些功能?

为什么不自己实现?

首先,从技术上讲,当然可以自己实现。

比如我们可以手搓 json 解析器,

或者自主实现 HTTP(这个说不定还真可以)。

但是,对于目前的项目而言,

没有必要。

这些第三方库都是大佬们写的,

而且已经做了大量优化,

我们专注自己项目的核心功能就行,

底层,嗯,可以去看看源码,了解它的内部实现,

手搓就免了。

环境搭建

那么接下来,我们开始搭环境吧。

现在我已经有的:

  • Ubuntu 22.04.4
  • g++ 11.4.0
  • vscode

还差三个第三方库:jsoncpp、httplib、bundle(一个数据压缩库)

安装 jsoncpp

先更新包列表:

复制代码
sudo apt update

然后安装:

复制代码
sudo apt install libjsoncpp-dev

如果出现这个界面:

这个界面显示的是在Ubuntu中安装或更新某个软件包时,

系统提示你某些服务使用了过时的库,

需要重新启动。

这种操作一般是安全的,

重启服务有助于确保更新的库生效。

然后,具体如何操作呢?
上下箭头键 选服务
空格键 确认/取消 选中服务
Tab键 把光标移动到 <Ok>
回车键 确认

dpkg -l | grep libjsoncpp 检查是否安装成功。

复制代码
root@hcss-ecs-0f5a:/# dpkg -l | grep libjsoncpp
ii  libjsoncpp-dev:amd64                   1.9.5-3                                 amd64        library for reading and writing JSON for C++ (devel files)
ii  libjsoncpp25:amd64                     1.9.5-3                                 amd64        library for reading and writing JSON for C++

如果想要 卸载 jsoncpp:

卸载 libjsoncpp-dev 包:

复制代码
sudo apt remove libjsoncpp-dev

完全卸载,包括配置文件:

复制代码
sudo apt purge libjsoncpp-dev

清除不用的依赖包:

复制代码
sudo apt autoremove

同样,用 dpkg -l | grep libjsoncpp 检查,

如果没有输出,

说明 jsoncpp 已经被成功卸载。

下载 httplib

直接 git clone 就行:

复制代码
git clone https://github.com/yhirose/cpp-httplib.git

github。。可能有点慢。

不行的话就直接用浏览器:cpp-httplib

下载 bundle

同上:

复制代码
git clone https://github.com/r-lyeh-archived/bundle.git

bundle


希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!

本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
飞鸿踏雪(蓝屏选手)3 小时前
137 ≤ Chrome 主密钥获取研究
c++·chrome·windows·网络安全·逆向分析
Waay4 小时前
Linux Shell 知识点考评(一):grep 文本搜索(附答案)
linux·运维·服务器
jamon_tan4 小时前
Linux下串口RAW模式设置
linux
碧海银沙音频科技研究院5 小时前
基于VMware虚拟机ubuntu开发博通BK7258方法
linux·运维·ubuntu
云边有个稻草人7 小时前
【Linux系统】进程地址空间
linux·虚拟地址空间·进程地址空间·虚拟地址空间是怎么实现的?·为什么要有虚拟地址空间?·怎么理解虚拟地址空间?
Oflycomm7 小时前
工业以太网四大主流协议(EtherCAT/PROFINET/EtherNet/IP/Modbus)技术参数深度对比
网络·网络协议·tcp/ip·欧飞信·plc模组
yong99908 小时前
C# 实时查看硬件使用率(CPU 内存 硬盘 网络)
开发语言·网络·c#
kobesdu8 小时前
【ROS2实战笔记-18】ROS2 通信的隐秘控制:DDS 配置参数如何决定系统性能
网络·人工智能·笔记·机器人·开源·ros·人形机器人
wangl_929 小时前
Modbus RTU 与 Modbus TCP 深入指南-现代替代协议
网络·网络协议·tcp/ip·tcp·modbus·rtu
汉克老师9 小时前
GESP6级C++考试语法知识(四、图与树(四))
c++·贪心算法·优先队列·哈夫曼编码·哈夫曼树·gesp6级·gesp六级