0、后台数据处理框架

一、注册功能
MD5 即 Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有 MD5 实现。
理论上 MD5 是不可逆的,而且 MD5 本来也不是作加密使用,而是用来校验数据的完整性,只是因为其不可逆且稳定、快速的特点,被广泛用于对明文密码的加密。
二、登陆功能
Token 的中文有人翻译成 “令牌”,意思就是,你拿着这个令牌,才能过一些关卡。
Token 是一个用户自定义的任意字符串。在成功提交了开发者自定义的这个字符串之后,Token 的值会保存到服务器后台。只有服务器和客户端前端知道这个字符串,于是 Token 就成了这两者之间的密钥,它可以让服务器确认请求是来自客户端还是恶意的第三方。
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:
- 客户端使用用户名跟密码请求登录。
- 服务端收到请求,去验证用户名与密码。
- 验证成功后,服务端生成一个 Token,这个 Token 可以存储在内存、磁盘、或者数据库里,再把这个 Token 发送给客户端。
- 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 。
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token。
- 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。
三、用户文件列表
3.1、文件数量
3.2、文件列表
升序(order by pv asc)和 cmd=normal 逻辑一致,只是稍微改了 sql 语句的查询方式。
降序(order by pv desc)和 cmd=normal 逻辑一致,只是稍微改了 sql 语句的查询方式。
四、上传文件之秒传机制
请求对比数据库文件信息的md5。
每个文件都有一个唯一的 MD5 值(比如 2bf8170b42cc7124b04a8886c83a9c6f),就好比每个人的指纹都是唯一的一样,效验 MD5 就是用来确保文件在传输过程中未被修改过。
- 客户端在上传文件之前将文件的 MD5 码上传到服务器
- 服务器端判断是否已存在此 MD5 码,如果存在,说明该文件已存在,则此文件无需再上传,在此文件的计数器加 1,说明此文件多了一个用户共用。
- 如果服务器没有此 MD5 码,说明上传的文件是新文件,则真正上传此文件。
五、上传文件
六、获取共享文件或下载榜
获取共享文件个数,获取共享文件列表,获取共享文件下载排行榜。
6.1、获取共享文件数量
处理逻辑:
6.2、获取共享文件列表
处理逻辑:
6.3 获取下载榜
七、分享/删除文件以及更新下载计数
7.1、分享文件
处理逻辑:
7.2、删除文件
处理逻辑:
- 先判断此文件是否已经分享;
- 判断集合有没有这个文件,如果有,说明别人已经分享此文件(redis 操作) ;
- 如果集合没有此元素,可能因为 redis 中没有记录,再从 mysql 中查询,如果 mysql 也没有,说明真没有(mysql 操作);
- 如果 mysql 有记录,而 redis 没有记录,那么分享文件处理只需要处理 mysql (mysql 操作) ;
- 如果 redis 有记录,mysql 和 redis 都需要处理,删除相关记录。
注意:
- 如果删除文件,则也将其从共享列表删除,其他人如果想要保存共享文件则可以转存到个人文件列表。
- 共享文件和我的文件 指向的是同一个文件。
- 一个人共享了一个文件,删除文件的时候也会删除共享文件;两个人同时删除文件则才会删除共享文件。
- 本质上而言,删除自己的文件时是否该删除共享文件,是业务的问题,确定了业务根据业务做代码实现即可。
7.3、更新文件下载计数
处理逻辑:
八、取消分享/转存/更新下载计数
8.1、取消分享
8.2、转存文件
8.3、更新共享文件下载计数
九、分享图片
9.1、请求图片分享
9.2、请求浏览图片
9.3、我的图片分享