//包名别忘了
import org.apache.commons.lang.StringUtils;
import java.math.BigInteger;
import java.util.Random;
/**
-
util - zh生成工具
*/
public final class AcounntUtil {private static final long EPOCH = 1479533469598L; //开始时间,固定一个小于当前时间的毫秒数
private static final int max12bit = 4095;
private static final long max41bit= 1099511627775L;
private static String machineId = "" ; // 机器ID/**
*- 根据时间戳创建
- @return
*/
public static String create(){long time = System.currentTimeMillis() - EPOCH + max41bit; // 二进制的 毫秒级时间戳 String base = Long.toBinaryString(time); // 序列数 String randomStr = StringUtils.leftPad(Integer.toBinaryString(new Random().nextInt(max12bit)),12,'0'); if(StringUtils.isNotEmpty(machineId)){ machineId = StringUtils.leftPad(machineId, 10, '0'); } //拼接 String appendStr = base + machineId + randomStr; // 转化为十进制 返回 BigInteger bi = new BigInteger(appendStr, 2); return Long.valueOf(bi.toString())+"";}
//生成随机用户名,数字和字母组成,
public static String getStringRandom(int length) {
String val = "";
Random random = new Random();
//参数length,表示生成几位随机数
for(int i = 0; i < length; i++) {
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
//输出字母还是数字
if( "char".equalsIgnoreCase(charOrNum) ) {
//输出是大写字母还是小写字母
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
val += (char)(random.nextInt(26) + temp);
} else if( "num".equalsIgnoreCase(charOrNum) ) {
val += String.valueOf(random.nextInt(10));
}
}
return val;
}
}
