这是客户端/服务器应用系统。
客户端部分应用程序可以进入离线模式,有时会与服务器同步。(如离线 GMail)
多个客户端可以连接到服务器,因此每个客户端都可以添加、编辑和删除其条目,并像 SVN 一样同步这些更改(可能会发生冲突,但这不是问题。)
添加、编辑和删除条目的算法很简单。服务器可以为每个新条目创建一个唯一的 ID,客户端使用这些 ID 进行更新和删除。
新要求是条目的排序。
有两个客户端应用程序 - x,y。他们存储了条目 - A、B、C 和 D。这些条目数组为 DCBA,因此 A 的 order 属性为 4,B 为 3,C 为 2,D 为 1。
- x : DCBA : A(4), B(3), C(2), D(1)
- y : DCBA : A(4), B(3), C(2), D(1)
客户 y 在 D 和 C 之间创建新条目 E
- x : DCBA : A(4), B(3), C(2), D(1)
- y : DECBA : A(5), B(4), C(3), D(1), E(2)
在两个客户端与服务器同步之后。
- x : DECBA : A(5), B(4), C(3), D(1), E(2)
- y : DECBA : A(5), B(4), C(3), D(1), E(2)
如何同步这些订单信息?
*附加测试*
客户 x 删除 D 和 C,但客户 y 在 D 和 C 之间创建新条目 E。
- x : BA : A(2), B(1)
- y : DECBA : A(5), B(4), C(3), D(1), E(2)
同步后。
- x : CBA : A(5), B(4), C(3), D(1), E(2)
- y : CBA : A(5), B(4), C(3), D(1), E(2)