UIDGenerator生成唯一序号
来源:互联网 发布:曼哈顿模考软件 编辑:程序博客网 时间:2024/05/16 10:59
UIDGenerator类
public class UIDGenerator {
private static final int[] DEFAULT_CONFOUNDER = {3, 6, 7, 1, 8, 9, 5, 2};
/**
* 获取UUID
* @return
*/
public static String getUUID(){
return UUID.randomUUID().toString().replaceAll("-", "");
}
/**
* 把一个输入整数置换为另一个数
* @param num
* @return
*/
private static long confuse(long num, int[] confounder) {
String tempStr = num+"";
int length = confounder.length;
int numLength = tempStr.length();
//检查输入数值是否过大
if(length<numLength){
throw new RuntimeException("confounder length must greater then number length, "+length +" : "+ numLength);
}
String output = "";
char[] input = tempStr.toCharArray();
int confounderIndex = Integer.parseInt(input[input.length-1]+"")%8;
int paddingLength = length-numLength;
for(int i=0; i<paddingLength; i++){
confounderIndex = (confounderIndex+1)%8;
output = output+(confounder[confounderIndex]%10);
}
for(int i=0; i<numLength; i++){
confounderIndex = (confounderIndex+1)%8;
output = output+((Integer.parseInt(input[i]+"")+confounder[confounderIndex])%10);
}
try{
return Long.parseLong(output);
}catch(Exception e){
throw new RuntimeException("confuse number overflow : "+output);
}
}
public static String generateSysUID(String sysFlag){
if(sysFlag==null || sysFlag.length()!=2){
throw new RuntimeException("sysFlag must be 2 length");
}
return sysFlag + getUUID();
}
/**
* 生成业务流水号
* @param sequence 序列号
* @param bizFlag 业务标识
* @return
*/
public static String generateBizUID(long sequence, String bizFlag){
return generateBizUID(sequence, bizFlag, new Date());
}
/**
* 生成业务流水号
* @param sequence 序列号
* @param bizFlag 业务标识
* @param date 业务发生时间
* @return
*/
public static String generateBizUID(long sequence, String bizFlag, Date date){
if(bizFlag==null || bizFlag.length()!=2){
throw new RuntimeException("bizFlag must be 2 length");
}
String dateStr = FormatUtils.formatDate(date, "yyMMdd", null);
return bizFlag+"A"+dateStr+confuse(sequence,DEFAULT_CONFOUNDER);
}
}
- UIDGenerator生成唯一序号
- 为类的每一个对象生成一个唯一的序号
- UidGenerator:百度出品的基于 Snowflake 算法的唯一 ID 生成器(Java)
- UidGenerator:百度出品的基于 Snowflake 算法的唯一 ID 生成器
- 一个生成唯一序号的服务,虽然技术不先进,但是很好用
- 分布式数据库唯一序号解决方案
- DataGrid生成序号列
- sql语句序号生成
- gridview自动生成序号
- SQL2000自动生成序号
- GridView生成序号
- MS SQL_序号生成
- GridView生成序号
- sql 序号生成方法
- select 语句生成序号
- ReportViewer自动生成序号
- ListView自动生成序号
- kettle 生成分页序号
- KEIL提示“No target connected”的解决方法
- 字母的新定义
- 母函数详解和史上最通用最高效的母函数模板
- struts+hibernate项目移动到jboss服务器运行出错解决办法(异常:Failed to create a new SAX parser)
- 精准广告投放
- UIDGenerator生成唯一序号
- /usr/bin/ld: cannot find -lxxx解决办法
- Windows程序中实现程序开机自启动
- 李航:机器学习新动向:从人机交互中学习
- Oracle表数据的C++存取接口
- IDCardUtils身份证工具类
- VC编译OCCI的解决方案
- POJ数学题目(转载)
- VC++中使用OCCI