【发布时间】:2021-08-15 04:47:20
【问题描述】:
我正在生成用作 ID 的字符串,因此为避免重复,我目前必须检查我的数据库是否已经分配了该字符串,如果是,则生成另一个,我想要的是避免计算另一个字符串的返工。
我可以生成和存储所有可能的字符串以更快地分配它们,但我不相信这个想法
你能想出更高效的方法吗?
我编辑:要求要求我使用这种类型的标识符,不是个人的;)
每个 ID 的生命周期为 24 小时
【问题讨论】:
-
Remove a string after it has been chosen. -
一个id有多长? id 是否具有特定格式,例如
XXX###,其中 X 是字母,# 是数字,还是随机字符序列?范围是A-Z还是只是两个字符AZ? -
您可以使用 Map(可能是 HashMap)来存储您使用过的 id。将字符串与日期时间一起存储,以便在它们过期时将其清除。
-
请注意,birthday problem 对于计算需要存储多少状态很有用。即这就是为什么@rzwitserloot 说你需要 128 位,这足以让它不太可能看到任何冲突,直到你开始存储接近 2^64 个标识符