【发布时间】:2015-10-21 19:16:53
【问题描述】:
我有很多计算机并且需要具有唯一 ID 的情况。
他们会通过 API 请求发送他们的 uniqueId。对象看起来像
class ID {
long timestamp;
int id;
}
此对象可能的最小尺寸是24 bytes (8 byte long, 4 byte int, 8 byte object reference and 4 byte padding)。我需要将数百万个这些对象保存在内存中,这就是关注内存的原因。我需要timestamp 来订购。
我最初认为每个节点在启动时都会有UUID(作为唯一的字符串。由于UUID 采用128 bits,因此它不适合Int 范围
我有什么选择?
【问题讨论】:
-
您是否考虑过让每个客户端通过
UUID.randomUUID()为每个请求生成一个 16 字节的 GUID?并且可能将这 16 个字节作为 2 个长字节保存在现有对象中? -
为什么不只用timestamp作为id,什么时候实例化一个新对象,可能不太可能有重复的timestamp