Algorithm 同步条目顺序的算法
这是客户机/服务器应用程序系统 客户端应用程序可以脱机模式,有时还可以与服务器同步。(如GMail离线) 多个客户端可以连接到服务器,因此每个客户端都可以添加、编辑和删除其条目,并像SVN一样同步这些更改(可能会发生冲突,但这不是问题) 添加、编辑和删除条目的算法很简单。服务器可以为每个新条目创建一个唯一的ID,客户端使用这些ID进行更新和删除 新的要求是条目的顺序 有两个客户端应用程序-x,y。它们存储条目A、B、C和D。这些条目以D-C-B-A的形式排列,所以A的顺序属性是4,B是3,C是2,D是1Algorithm 同步条目顺序的算法,algorithm,sync,Algorithm,Sync,这是客户机/服务器应用程序系统 客户端应用程序可以脱机模式,有时还可以与服务器同步。(如GMail离线) 多个客户端可以连接到服务器,因此每个客户端都可以添加、编辑和删除其条目,并像SVN一样同步这些更改(可能会发生冲突,但这不是问题) 添加、编辑和删除条目的算法很简单。服务器可以为每个新条目创建一个唯一的ID,客户端使用这些ID进行更新和删除 新的要求是条目的顺序 有两个客户端应用程序-x,y。它们存储条目A、B、C和D。这些条目以D-C-B-A的形式排列,所以A的顺序属性是4,B是3,C是2
- x:D-C-B-A:A(4),B(3),C(2),D(1)
- y:D-C-B-A:A(4),B(3),C(2),D(1)
- x:D-C-B-A:A(4),B(3),C(2),D(1)
- y:D-E-C-B-A:A(5),B(4),C(3),D(1),E(2)
- x:D-E-C-B-A:A(5),B(4),C(3),D(1),E(2)
- y:D-E-C-B-A:A(5),B(4),C(3),D(1),E(2)
*附加测试* Cient x删除D和C,但客户端y在D和C之间创建新条目E
- x:B-A:A(2),B(1)
- y:D-E-C-B-A:A(5),B(4),C(3),D(1),E(2)
- x:C-B-A:A(5),B(4),C(3),D(1),E(2)
- y:C-B-A:A(5),B(4),C(3),D(1),E(2)
您可能想看看如何处理同步中涉及的这个问题(以及其他几个问题)。您可能想看看如何处理同步中涉及的这个问题(以及其他几个问题)。唯一困难的部分是删除条目时,对吗?将已删除的条目保留在服务器上,但将其标记为已删除,怎么样。一旦所有客户端都与服务器同步,使他们不再知道该条目,您也可以将其从服务器中永久删除。唯一困难的部分是条目被删除时,对吗?将已删除的条目保留在服务器上,但将其标记为已删除,怎么样。一旦所有客户端都与服务器同步,使他们不再知道该条目,您也可以将其从服务器中永久删除。我认为您应该遵守SVN协议。如果不同步(更新)以查看是否发生了某些更改,则不应允许提交 如果不这样做,您将在存储数据的一致性(一致性)方面遇到大问题。例如,您存储了D-C-B-A,客户端x和y是同步的
- 客户端x删除C和A->D-B
- 客户机z同步,他获得D-B并在D和B之间添加F->D-F-B
- 同时客户端y在C和B之间添加E->D-C-E-B-A
现在,如果所有客户端都将同步,那么您就无法知道F将按数据顺序放在哪里:D-F-E-B或D-E-F-B。我认为您应该遵守SVN协议。如果不同步(更新)以查看是否发生了某些更改,则不应允许提交 如果不这样做,您将在存储数据的一致性(一致性)方面遇到大问题。例如,您存储了D-C-B-A,客户端x和y是同步的
- 客户端x删除C和A->D-B
- 客户机z同步,他获得D-B并在D和B之间添加F->D-F-B
- 同时客户端y在C和B之间添加E->D-C-E-B-A