今天看文献看到一个有趣的算法—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

Rolling Hash about the Rsync的更多相关文章

  1. rolling hash

    也是需要查看,然后修改,rolling hash, recursive hash, polynomial hash, double hash.如果一次不够,那就2次.需要在准备一个线段树,基本的线段树 ...

  2. Rolling Hash(Rabin-Karp算法)匹配字符串

    您可以在我的个人博客中访问此篇文章: http://acbingo.cn/2015/08/09/Rolling%20Hash(Rabin-Karp%E7%AE%97%E6%B3%95)%E5%8C%B ...

  3. Hash function

    Hash function From Wikipedia, the free encyclopedia   A hash function that maps names to integers fr ...

  4. Hash算法入门指南(聊点不一样的算法人生)

    前言 很多人到现在为止都总是问我算法该怎么学啊,数据结构好难啊怎么的,学习难度被莫名的夸大了,其实不然.对于一个学计算机相关专业的人都知道,数据结构是大学的一门必修课,数据结构与算法是基础,却常常容易 ...

  5. 几种常用hash算法及原理

    计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据.用“人 类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很 ...

  6. 经典Hash函数的实现

    Hash函数是指把一个大范围映射到一个小范围.把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存. 除此以外,Hash函数往往应用于查找上.所以,在考虑使用Hash函数之前,需要明白它 ...

  7. 应用Hash函数

    本文系转载,转自:http://www.blogjava.net/jinfei0627/articles/219543.html 应用Hash函数(java描述) 作者:冲处宇宙 时间:2007.1. ...

  8. 几种经典的hash算法

    计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据.用“人 类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很 ...

  9. 常见的哈希Hash算法 & MD5 & 对称非对称加密 & 海明码

    参考 Link 另外,这篇文章也提到了利用Hash碰撞而产生DOS攻击的案例: http://www.cnblogs.com/charlesblc/p/5990475.html DJB的算法实现核心是 ...

随机推荐

  1. texmaker报错:could not start command 解决

    我当时文件命名加了邮箱,引入特殊字符@,然后就报错了

  2. linux下redis4.0.2集群部署(利用原生命令)

    一.部署架构如下 每台服务器准备2个节点,一主一从,主节点为另外两台其中一台的主,从节点为另外两台其中一台的从. 二.准备6个节点配置文件 在172.28.18.75上操作 cd /etc/redis ...

  3. js监控鼠标滚动事件

    //滚动动画 windowAddMouseWheel(); function windowAddMouseWheel() { var scrollFunc = function (e) { e = e ...

  4. nignx知识点总结

    https://segmentfault.com/a/1190000013781162

  5. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

    Error starting ApplicationContext. To display the conditions report re-run your application with 'de ...

  6. python 数据库操作类

    #安装PyMySQL:pip3 install PyMySQL   #!/usr/bin/python3   #coding=utf-8   #数据库操作类     from  datetime  i ...

  7. input 随笔

    1,input 点击出现蓝色外边框 解决:outline:none

  8. b2b b2c o2o电子商务微服务云平台

    大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 根据微服务化设计思想,结合spring cloud一 ...

  9. leveldb 学习记录(六)SSTable:Block操作

    block结构示意图 sstable中Block 头文件如下: class Block { public: // Initialize the block with the specified con ...

  10. java多线程系列14 设计模式 Master-Worker

    Master-Worker模式是常用的并行设计模式,可以将大任务划分为小任务,是一种分而治之的设计理念. 系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负 ...