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

博客主页:【夜泉_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语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
一个不知名程序员www12 分钟前
算法学习入门---vector(C++)
c++·算法
云飞云共享云桌面18 分钟前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑
明洞日记24 分钟前
【数据结构手册002】动态数组vector - 连续内存的艺术与科学
开发语言·数据结构·c++
福尔摩斯张27 分钟前
《C 语言指针从入门到精通:全面笔记 + 实战习题深度解析》(超详细)
linux·运维·服务器·c语言·开发语言·c++·算法
骆驼102444 分钟前
手机热点和无线路由器在 IPv6 工作模式上的区别
网络·ipv6
TH_11 小时前
腾讯云-(3)-Linux宝塔面板使用
linux·云计算·腾讯云
虚伪的空想家1 小时前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
深藏bIue1 小时前
linux服务器mysql目录下的binlog文件删除
linux·服务器·mysql
Dream it possible!1 小时前
LeetCode 面试经典 150_二叉搜索树_二叉搜索树的最小绝对差(85_530_C++_简单)
c++·leetcode·面试
虾..2 小时前
Linux 进程状态
linux·运维·服务器