热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

云之家考勤打卡,云之家官网

简介:  随着网络的不断发展,人们对网络的认知越来越高,使用电脑的人也越来越多,网络上的新鲜事物有很多,人们都可以通过下载到自己电脑的方式来了解,那么时间一长,积攒的文件越来越多,

简介:

  随着网络的不断发展,人们对网络的认知越来越高,使用电脑的人也越来越多,网络上的新鲜事物有很多,人们都可以通过下载到自己电脑的方式来了解,那么时间一长,积攒的文件越来越多,而对于一般人来说基本不可能去更换电脑或者提升电脑存储配置,那有的人又不想删除这些下载下来的东西,所以云上存储的需求就应刃而生。人们可以花很少的钱,甚至不花钱将自己暂时不需要的东西存放在云上,等需要用的时候再从云上将其下载到自己的本地上即可。所以,借此思路我想对其进行实现。

项目功能简介:

客户端:
  1. 用户将自己需要备份的文件放在指定的文件夹中,开启应用,就会将这些文件一 一上传到服务器上;
  2. 用户可以通过网页向服务器发起 http 请求,然后服务器将下载文件列表响应在网页上,用户可以通过点击文件名将文件下载下来。
服务端:
  1. 服务器根据客户端发送的不同的响应做出不同的处理,
    ① 用户如果上传文件,那么服务器就会相应的接收文件;
    ② 如果客户端想要浏览文件列表,服务器就会将文件列表显示在网页上;
    ③ 用户想要下载文件,服务器就会给予相应的响应。
  2. 随着文件上传越来越多,服务器资源越来越少,服务器会按照文件最后一次访问时间与当前时间的间隔进行区分,如果太久时间客户端没有访问或修改该文件,那么服务器就会将该文件进行压缩,以节省服务器资源。等用户下载的时候,再将该文件解压并将解压后的文件返回给用户。

项目工作流程:

模块介绍:

服务端:(使用多线程进行处理请求和压缩部分)
  请求处理部分:
    首先,客户端会向服务器发起三类请求:① 从浏览器上向服务器发起页面展示请求 ② 从浏览器上向服务器发起文件下载请求 ③ 上传文件请求
    对于第一类请求,客户端会向服务器发起GET请求,服务端向浏览器响应文件列表信息供用户查看。
    对于第二类请求,客户端通过点击文件名向服务器发起GET请求,服务器将文件内容响应给用户,用户就会下载相应的文件。
    对于第三类请求,客户端会向服务器发起PUT请求,请求将文件资源上传至服务器,服务器根据http请求报文中的Range字段确定文件大小,并将文件存放至对应目录中。
  压缩模块:
    定义一个热度时间,用当前时间减去文件的最后一次修改时间,用时间间隔与热度时间进行判断,如果超过热度时间就将文件进行压缩存储以节省服务器空间。当用户下载文件时,将文件先解压,并将文件内容响应给用户,并更新文件存储信息。
服务器代码框架:

客户端:
  上传文件功能:
    给每个文件设置一个etag信息:mtime-fsize(最后一次修改时间-文件大小),根据etag信息中的最后一次修改时间进行判断是否需要上传。如果一旦有修改或者有新文件,就更新etag信息并将文件上传,将上传的文件信息记录下来。
    上传文件使用多线程分块上传,由于上传的文件是按块传输,每个块的位置不冲突,所以不用加锁,这样效率更高。
客户端代码框架:

bug修复: 从客户端上传的文件由于Windows下的编码格式是gbk,而Linux下的编码格式是utf-8,所以会导致上传的中文文件名乱码,遍历文件列表中的文件名,使用shell脚本将乱码的文件名修正。多个用户向服务器发起浏览列表请求会造成读写混乱,使用读写锁解决多用户同时访问导致文件列表显示错乱的情况。 项目源码:

GitHub地址:项目源代码


推荐阅读
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
author-avatar
两枚小瓶盖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有