我试图实现简单的并发编辑模型。向文件添加和删除数据由事件处理。 活动过程:
问题是如何将新内容与基础合并(多个事件可以具有相同的基础)。
服务器有字符串:"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这样的问题,但是这些字符串在我的系统中不太可能。任何人都知道我应该用什么来达到这个目的?
答案 0 :(得分:0)
我能想到的唯一方法是跟踪链表。服务器可以通过在新节点周围重新附加列表来在节点之后插入字符,并且删除类似。您不是发送索引,而是将节点ID /地址发送到服务器
如果有人删除了您想要插入的节点后该怎么办?为了不破坏模型,删除的节点需要保持连接到列表(幻像),因此服务器在插入这样一个删除的节点之后可以在节点之前插入(或者之前如果两个被删除等等)。< / p>
这将要求服务器上的一些垃圾清理偶尔删除幻像节点,使任何具有先前时间戳的客户端请求无效。
空间方面这不是更多 - 每个char需要两个指针,也许有点开销。如果你想要一些代码建议评论。