//包名別忘了
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;
}
}