EasySync协同技术指南(译)

EasySync协同技术指南(译)

1 文档

  • 一个文档(document)是一个字符(char)列表或一个字符串(string)

  • 一个文档也可以被表示为一个变更集(changeset)列表

2 变更集

  • 一个变更集表示对文档的一个更改

  • 一个变更集可以被应用于一个文档以产生一个新的文档

  • 当一个文档被表示为一个变更集列表时,我们认为第一个变更集应用于空文档 []。

3 变更集表示

(l→l′)[c1, c2, c3, ...]

l代表文档更改前的长度,

l′代表文档更改后的长度,

[c1, c2, c3,...]是描述更改后文档的一个字符数组(长为l′)。

满足0 ≤ i ≤ l′ 的任意ci 是一个数字整型(int)或一个字符

  • 数字表示在原始文档中保留的字符

  • 字符表示插入

4 变更集约束

  • 变更集是遵循一定规范的,因而具有可比较性。在计算机内存中,  我们总是对相同的变更集有着同样的表示。如果两个变更集的内存表示有区别,它们一定是不同的变更集。

  • 变更集是简洁的。因此,如果在计算机内存中有两种方式表示一个变更集,我们总是使用占用最少字节的那一种。

稍后我们会讨论对变更集表示的优化(采用“strips”和其他类似的技术)。任何变更集表示都必须满足这两个约束条件。

5 符号表示

  • 我们用代数乘法符号来表示变更集的应用

  • 当变更集被定义为对文档的操作时,文档本身被表示为一个变更集列表,初始化于一个空文档

举例 A = (0→5)[“hello”]  B = (5→11)[0−4,“world”]

我们可以把文档 “hello  world”  写作A·B或者AB.  注意初始文档可以被表示为变更集  (0→N)[“<文档内容>”]。

当A和B是变更集时,我们也可以把 (AB) 称为A和B的组合,变更集在组合后是封闭的。

6  变更集组合

对于任意两个变更集,类似

A = (n1→n2)[···]

B = (n2→n3)[···]

很明显存在第三个变更集C = (n1→n3)[···] 应用于文档X能与先应用A后应用B得到同样的结果。在这种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰瑞_

知识源于创作热情,感谢你的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值