【发布时间】:2010-10-27 04:30:31
【问题描述】:
我正在制作一个位图编辑器,其中一个文档由多个层组成,每个层代表一个位图。与文档中当前存在的所有其他层相比,每个层都必须具有唯一的 ID。我还需要考虑到我需要与图层 ID 一起保存和加载文档。
我使用命令模式来存储对文档执行的操作,并且使用唯一 ID 来跟踪应在哪个层执行操作。
目前,我只保留一个名为 X 的计数器,当创建一个新层时,它的 ID 设置为 X,然后 X 递增。加载时,我需要确保将 X 设置为适当的数字,以便为新图层提供唯一的 ID,即我可以保存 X 的值并恢复它,或者根据加载的最大图层 ID 设置 X。
鉴于 X 是一个 32 位数字,用户需要在同一文件上创建 4,294,967,296 层才能开始重用 ID,这将导致奇怪的行为。我应该实施一个更好的唯一 ID 系统还是这通常足够好?
我在 Java 中,所以我可以使用 UUID 库,它根据标准算法创建 128 位唯一 ID。不过,这似乎有点过头了。
这类问题有一些通用的方法吗?
【问题讨论】:
-
您是否有令人信服的理由不使用 UUID?
-
我唯一能想到的是 1) UUID 128 位 ID 占用更多空间,并且比普通整数更慢 2) UUID 方法的概率性质让我感到不安(不是很好原因,但你去)。我的意思是,我是否只是尽可能频繁地创建新的 UUID,并期望它们始终是唯一的,即使它们是随机生成的?
标签: java algorithm computer-science uniqueidentifier