Rolling Hash about the Rsync

简介: 今天看文献看到一个有趣的算法—Rolling Hash,这个算法可以更新在不同的machine上的两个“similar”的文件,也叫做rsync algorithm,rsync顾名思义:remote sync,远程镜像同步备份,现在在类Unix的系统已经有该种工具,在此我们只说它涉及的核心算法—Rolling Hash。

      今天看文献看到一个有趣的算法—Rolling Hash,这个算法可以更新在不同的machine上的两个“similar”的文件,也叫做rsync algorithm,rsync顾名思义:remote sync,远程镜像同步备份,现在在类Unix的系统已经有该种工具,在此我们只说它涉及的核心算法—Rolling Hash。今天只做简单的介绍和记录,由于时间的关系和知识结构的不完整,留作以后进一步探讨。

      我们想象一个场景:machine A上有一个文件X,machine B上一个类似的文件Y,说类似而不是相同,是这两个文件只有稍许不同(diffs),两个machine之间有一个low-bandwidth high-latency bi-directional 通信链路,现在要实时更新这两个文件,使之相同,就像云端备份一样,本机的数据改变,也要相应地快速地在云端同步,同时不能消耗太多的能量和通信的开销(traffic overload),我们能想到的办法就是copy,但由于是low-bandwidth,所以会想到compress,在copy,但这样效率是非常低的。而这个算法就是解决这样的一个问题的。它只更新文件改变的部分(diffs),通过将文件划分成等大小的bytes,再通过校验和的方式压缩(有weak和strong两种方式)发送,接受一方再通过循环hash的方式找到不匹配的部分,从而完成整个更新。整个过程有一定复杂性,在此做一点记录,以后有时间在做进一步验证。下面附上部分参考资料:

yanghua的博客:http://blog.csdn.net/yanghua_kobe/article/details/8914970

java源码:https://github.com/yanghua/AlgorithmFactory/blob/master/rollingHash/RollingHash.java

The rsync algorithm:https://cs.anu.edu.au/techreports/1996/TR-CS-96-05.pdf

rsync可用ftp镜像:ftp://samba.anu.edu.au/pub/rsync

目录
相关文章
|
JavaScript
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
这篇文章介绍了在Vue项目中如何实现执行删除等危险操作时的二次确认机制,使用Element UI的`el-popconfirm`组件来弹出确认框,确保用户在二次确认后才会执行删除操作。
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
|
11月前
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
745 7
|
网络协议 程序员 网络架构
数据封装与解封装过程
数据封装与解封装过程
542 0
ONLYOFFICE 桌面编辑器 8.1重磅来袭:全新功能提升您的办公效率
ONLYOFFICE 桌面编辑器 8.1重磅来袭:全新功能提升您的办公效率
|
算法 Python
群智能算法:【WOA】鲸鱼优化算法详细解读
本文详细解读了鲸鱼优化算法(WOA),这是一种受鲸鱼捕食行为启发的新兴群体智能优化算法,具有强大的全局搜索能力和快速收敛速度。文章分为五个部分,分别介绍了引言、算法原理、主要步骤、特点及Python代码实现。通过模拟鲸鱼的捕食行为,该算法能够在复杂的优化问题中找到全局最优解。
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
821 0
|
存储 安全 网络安全
云计算与网络安全:构建安全的数字基石##
本文探讨了云计算和网络安全之间的关系,重点介绍了云服务、网络安全和信息安全等关键技术领域。通过分析这些技术的基本原理和应用案例,揭示了它们在现代信息技术中的重要性。同时,提出了一些实用的建议,以帮助企业和个人更好地应对日益严峻的网络安全挑战。 ##
Java 系列之 Java endsWith() 方法的使用
文章介绍了Java中`String`类的`endsWith()`方法,该方法用于检查字符串是否以指定的后缀结束,并提供了一个实例演示了其使用方法和返回值。
|
关系型数据库 MySQL 大数据
MySQL索引失效的原因及应对策略
引言 在大数据时代,数据库管理成为了每个开发者必备的技能之一。MySQL作为全球最受欢迎的开源关系数据库管理系统,深受开发者们的喜爱。为了提高查询效率,我们常常会在MySQL中使用索引,但有时候你会发现,索引并没有发挥出预期的作用,原来,它已经“失效”了。本文将带你探索MySQL中索引失效的原因以及如何避免,让我们一同跨入数据库的奇妙世界。
1469 0
|
机器学习/深度学习 人工智能 自然语言处理
Brain.js 的力量:构建多样化的人工智能应用程序
Brain.js 的力量:构建多样化的人工智能应用程序
390 0