我们的java应用程序有4个字节的大小限制来保存唯一ID。
我们被迫实施一个策略来创建大小为4个字节的唯一ID。
是否有人知道创建它的策略
答案 0 :(得分:4)
是的,从一个随机的32位整数开始并递增它。
当你扩展时,任何其他东西都会过于苛刻(例如,如果你有10亿个已经创建的ID并且需要随机生成一个新的,你必须有一个10亿个条目表来检查内部存在...哎哟!)。
但如果绝对必须是随机和独特的,那么你可以采取的两种策略是:
1)到目前为止,每个id都使用了大HashSet
个,并在生成新的随机ID时检查集合中是否存在。如果是,请丢弃并重试。
2)将所有随机使用的ID存储在数据库中,并执行SELECT
以查看新生成的随机ID是否存在。如果是,请丢弃并重试。
如果唯一ID较大,您可以使用Guid(也称为uuid),这些Guid生成得足够大,以至于您永远不会看到两个Guids在任何地方都有相同的值,而不需要检查。
对于java中的Guids / UUID,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html
答案 1 :(得分:0)
我认为int
可以满足您的要求。
答案 2 :(得分:0)
你可以这样尝试
private static byte[] synhead = {(byte)0xAA,0x55,0x7E,0x0B};