Java的唯一用户ID

时间:2018-06-16 13:34:01

标签: java

如何使用Java生成5/6位数的字母数字唯一userId,从而减少与10个lac值冲突的可能性?我不想每次都向DB拨打电话,以便检查那里是否已存在该ID。

2 个答案:

答案 0 :(得分:1)

如果您的用户不提供任何其他信息(例如真实姓名,电子邮件地址......),您将不得不尝试使用纯随机字符串作为用户名。生成随机字符串的一个选项是RandomStringGeneratorApache Commons Text

import org.apache.commons.text.RandomStringGenerator;

...

RandomStringGenerator randomStringGenerator = new RandomStringGenerator.Builder()
    .filteredBy(c -> Character.isLetterOrDigit(c) && c <= 122)
    .build();
String username = RandomStringGenerator.generate(6)

此代码将生成类似

的用户名
3gmNQJ
Hz4DXy
c6X99p
FZJ5jQ
twKgZG
7ukgAY
Lq9qgB
...

但是,您的实际逻辑应该准备好处理用户名之间的冲突。一个6字符长的随机字符串不太安全,从长远来看不会产生任何冲突。

更安全的替代方案是UUIDs,但是如果有人在登录过程中必须输入它们,它们会更长并且不是非常用户友好。

答案 1 :(得分:0)

您可以生成整个实体的哈希码。 基于您选择的散列算法(例如SHA1),碰撞非常罕见。