我试图实现简单的并发编辑模型。向文件添加和删除数据由事件处理。事件的 过程:并发编辑合并
- 询问变化ID(基本上是时间戳)
- 从服务器获取ID
- 发送改变到服务器与ID(变化由索引的,事件类型(ADD,删除),(对于ADD))
- 服务器得到改变
- 事件队列是先到先得(多变化可以有相同的原始字符串)可选字符,所以我申请活动内容
- 新的内容应该是下一个事件库,所以下一个事件索引需要移动(合并)。
问题是如何合并新的内容和基础(多个事件可以有相同的基础)。
服务器具有字符串:"Hello Worl"
2客户端想改变,都得到这样的基地。 C1增加 “” 索引5(从0开始计数) C2加 “d” 来索引10.
因为 “” 然后加入 “d” 将导致"Hello, Wordl"
。 索引应该移动+1(在这种情况下)。
一般情况下我们可以同时有更多的事件,所以合并会更加复杂。差异可能是+10或-5等
什么是一个很好的方法来检测基地索引X之前的内容有多少变化?
我正在使用python。
编辑:
我想过这个问题,我想我知道这将是解决这个问题的好办法。 可以说我们有字符串abcdefg和abdeg。我现在想扩展第二个字符串,以便它匹配第一个字符串:abcdefg --ab#de#g。从这我可以看到变化在哪里。我不在乎替换只能插入和删除。这个东西在大多数情况下都能正常工作,但会出现像aaaaaa和aa这样的问题,但这些字符串在我的系统中是不太可能的。任何人都知道我应该用什么来实现这个目标?
不知道你的解决方案是什么。你能发表你的意思的(伪)代码,并且在你的例子中对所有客户端采取行动 – kabanus
我不能想到会实现这一点的伪代码。这个想法是比较2个字符串(旧的,新的),找到所有的差异。由于索引基于旧字符串,因此我们需要知道索引之前发生的所有从旧到新的更改,以便我们可以相应地修改索引。 –
看到我的答案,也许字符串原始不是要走的路。 – kabanus