前言
之前收到一个需求,甲方说,他们想给用户生成一个唯一的邀请码,然后用户量在xxx之类的,例如我这里就随便说个5kw个吧。这个嘛,听起来都觉得挺简单的,毕竟每个用户基本上都有自己的唯一用户id,用那个来生成就好。
首先,用户体验方面,肯定是大写字母跟数字(如果再体验好一点的,就把数字的 0/1 以及字母O去掉),反正我是偷懒了,用36个字符(A-Z0-9),也就是“Q7VBNYR1HSCUEODIX3K95F48L0P6GAMTWJZ2",至于为啥是乱的,自己去想想吧,反正我是觉得不连贯就好
初阶版本(被喷版,直接用ID来生成)
简单,有用户id嘛,如果用户id是从小的数字开始,那么就直接就除法取整跟取模来做,不够位数就直接补0就好。美滋滋。
private String runMethod1(long id) {
String base = "Q7VBNYR1HSCUEODIX3K95F48L0P6GAMTWJZ2";
char[] cs = new char[6];
for (int i = 0; i < 6; i++) {
cs[i] = base.charAt((int) (id % 36));
id = id / 36;
}
return new String(cs);
}
@Test
public void method1() {
for (int i = 0; i < 10; i++) {
System.out.println(String.format("id=%d\t code=%s", i, runMethod1(i)));
}
}
测试效果:
好了&