文件快速上传和下载原理

本文介绍了一种用于文件增量更新的算法,该算法通过计算文件块的弱校验和与强校验和来实现数据的高效比对。在远程服务器端,文件被分割成多个数据块并计算其校验和;在本地端,则通过比较这些校验和来确定哪些数据块需要更新。此方法虽然可以显著减少数据传输量,但增加了CPU负担。
摘要由CSDN通过智能技术生成

<1>Remote端(服务器端)数据的处理
没必要去实现这个算法。直接调用库就可以了。
chunk一块一块的数据块
1. 将Remote端(服务器端)的数据按照Chunck进行切分
2. 计算每一个chunk的弱校验和(Adler-32算法)与强校验和(MD5算法)
3. 保存进Map中,key为弱校验ID,value为chunk链表
 Map>

<2>Local 端处理(本地端)
1. 读取一个Chunck  判断数据是否够一个chunck大小
2. 根据读取到的Chunk 去Remote的Map中判断是否匹配. 如果匹配上看之前是否有differ Data ,如果有Differ Data则将diff Data加入patch中.
最终会得到一个以匹配上的chunk index + differ Data的链表


如果不匹配,就右移动一个字节,左边剩下的那个字节叫differ date,是服务器里没有的字节,是需要上传的字节。

differ date(**)
**01**02**03****0x  服务器收到的数据
然后匹配填充形成新数据
新数据 = differ date(客户端穿上来的)+ 服务器里已有的匹配数据

这种算法的优缺点:节省了上传的文件大小,但是牺牲了CPU(CPU需要不停地计算,占用了CPU)

网页是不能读取本地文件(处于安全考虑);所以有时需要装插件。

 

转载于:https://www.cnblogs.com/kelan/p/5284490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值