2

我们的 java 应用程序有一个 4 字节的大小限制来保存唯一的 id。

我们被迫实施一种策略来创建大小为 4 字节的唯一 ID。

有谁知道创建它的策略

4

3 回答 3

5

是的,从一个随机的 32 位整数开始并递增它。

当您扩大规模时,其他任何事情都会太苛刻(例如,如果您已经创建了 10 亿个 id 并且需要随机生成一个新的,那么您必须有一个 10 亿个条目表来检查内部是否存在......哎呀!)。

但如果它绝对必须是随机且独特的,您可以采取的两种策略是:

1)HashSet到目前为止使用的每个 id 都很大,并在生成新的随机 ID 时检查集合中是否存在。如果是,请丢弃并重试。

2)将所有随机使用的ID存储在数据库中,并SELECT查看您新生成的随机ID是否存在。如果是这样,请丢弃并重试。

如果唯一 ID 较大,您可以使用 Guid(也称为 uuid),它生成的足够大,并且您永远不会在任何地方看到两个 Guid 具有相同的值,而无需检查。

有关 java 中的 Guid/UUID,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html

于 2013-05-03T04:46:28.560 回答
0

我认为int可以满足您的要求。

于 2013-05-03T04:42:08.147 回答
0

你可以试试这样

private static byte[] synhead = {(byte)0xAA,0x55,0x7E,0x0B};
于 2013-05-03T04:47:01.700 回答