博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 生成永不重复的ID的代码
阅读量:7304 次
发布时间:2019-06-30

本文共 2249 字,大约阅读时间需要 7 分钟。

  hot3.png

package com.hh.util;/** *  * 创建数据库ID的通用方法. * @since JDK1.6 */public class CreateID {	private final static String str = "1234567890abcdefghijklmnopqrstuvwxyz";	private final static int pixLen = str.length();	private static volatile int pixOne = 0;	private static volatile int pixTwo = 0;	private static volatile int pixThree = 0;	private static volatile int pixFour = 0;	/**	 * 生成短时间内不会重复的长度为15位的字符串,主要用于ISSP-MOC模块数据库主键生成使用。
* 生成策略为获取自1970年1月1日零时零分零秒至当前时间的毫秒数的16进制字符串值,该字符串值为11位
* 并追加四位"0-z"的自增字符串.
* 如果系统时间设置为大于2304-6-27 7:00:26的时间,将会报错!
* 由于系统返回的毫秒数与操作系统关系很大,所以本方法并不准确。本方法可以保证在系统返回的一个毫秒数内生成36的4次方个(1679616)ID不重复。
* * @return 15位短时间不会重复的字符串。
* @author lixunhui@qq.com * @since JDK1.6 */ final public synchronized static String generate() { StringBuilder sb = new StringBuilder();// 创建一个StringBuilder sb.append(Long.toHexString(System.currentTimeMillis()));// 先添加当前时间的毫秒值的16进制 pixFour++; if (pixFour == pixLen) { pixFour = 0; pixThree++; if (pixThree == pixLen) { pixThree = 0; pixTwo++; if (pixTwo == pixLen) { pixTwo = 0; pixOne++; if (pixOne == pixLen) { pixOne = 0; } } } } return sb.append(str.charAt(pixOne)).append(str.charAt(pixTwo)).append(str.charAt(pixThree)).append(str.charAt(pixFour)).toString(); } /** * 随机创建数据库15位ID * * @return String 15位随机数ID */ /* * public synchronized static String generate() { Long _ruleId1 = * Long.valueOf(Calendar.getInstance().getTimeInMillis()); Integer _ruleId2 * = Integer.valueOf(i++); if (i > 99) { i = 10; } return (new * Long(_ruleId1.toString() + _ruleId2.toString())).toString(); } */ /** * 随机创建数据库9位ID * * @return String 9位随机数ID */ public synchronized static String generate9() { int n = (int) (Math.random() * 900000000) + 100000000; return n + ""; } /** * 创建15位字母加数字ID * bl 为true是为暂停时间 * * @return string 15位随机ID */ public synchronized static String generateStrID(String str) { int count = 0; String time = Long.toString(System.currentTimeMillis()); time = time.substring(time.length() - 9, time.length()); if (count > 99) { count = 0; } else { count++; } if (count < 10) { str += time + "0" + count; } else { str += time + count; } return str; }}

转载于:https://my.oschina.net/huiger/blog/161739

你可能感兴趣的文章
java爬虫笔记
查看>>
JSP导入EXCEL样式
查看>>
2.Hadoop集群安装进阶
查看>>
java研发工作组环境架设
查看>>
代码片收集
查看>>
网站备案与备案注销
查看>>
书单丨打开投资理财之路,从这25本书开始
查看>>
Less 创建css3动画@keyframes函数
查看>>
.NET Framework 4 与 .NET Framework 4 Client Profile的区别与联系
查看>>
Que pensez-vous de air jordan pas cher
查看>>
SQL Server 2008创建定期自动备份任务(转)
查看>>
SimpleDateFormat
查看>>
epoll_wait会被系统中断唤醒
查看>>
Java设计模式-代理模式
查看>>
Android--sharepreference总结
查看>>
在博客园已经一年多时间了,今天开通博客了!
查看>>
给定矩阵行数和矩阵列数,顺时针打印矩阵(从0开始)
查看>>
个人阅读作业week7
查看>>
Java数据类型(2)------自动封装拆箱
查看>>
java基本语法
查看>>