171207之UUID用法
来源:互联网 发布:龙岗网络推广 编辑:程序博客网 时间:2024/05/23 20:52
简介:
UUID是jdk1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID. UUID是由一个十六位的数字组成,表现出来的形式例如:
550E8400-E29B-11D4-A716-446655440000
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。
问题:
UUID不是128位长的吗,怎么生成的都是36个字符的字符串?
UUID.fromString(“84D1319C-FBAF-644C-901A-8F091F25AF04”));
UUID中有固定的四个 ”-“,所以32位长。
128位是 二进制, 每四个二进制转一个16进制数。 128/4=32
所以,就是32个16进制数的字符了。
下面是java代码生成uuid的例子(这个就比时间戳或者是随机数更加专业和靠谱了)
import java.util.UUID; public static String getUUID() { UUID uuid =UUID.randomUUID(); String str = uuid.toString(); // 去掉"-"符号 String temp = str.substring(0, 8) +str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) +str.substring(24); return str+","+temp; }
1:UUID在MySQL中的用法
建表
DROP TABLE IF EXISTS `test2`;CREATE TABLE `test2` ( `Id` varchar(80) NOT NULL default '', `name` varchar(20) default NULL, PRIMARY KEY (`Id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
select uuid();
直接select出来 24a4cb47-bcc3-1031-9f87-af69febdbb6e
insert into test2(id,name) values(uuid(),’22’);
自动生成uuid插入数据库作为主键。
select replace(uuid(),’-‘,”);
替换uuid中的“-”为“”;
在使用Oracle的时候,需要添加一个唯一的主键,一般使用的是36位的唯一的字符串,我们有两种方式
一、使用数据库自动生成的方式,自动添加唯一的ID值
create table t_log( ssid varchar2(36) default sys_guid() primary key, type varchar2(10), detail varchar2(100));
default sys_guid()这个函数时Oracle自带的,在插入数据的时候不用插入该字段就会自动生成。
1、SYS_GUID:获取的是 数据库中唯一的主键
2、SYSDATE:获取的是 插入数据时 的时间
insert into t_log(type,detail)values(‘1’,’测试无主键’);
二、使用JAVA自动生成的UUID,作为数据库字段的主键
public class TestUUID { public static void main(String[] args) { String uuid = UUID.randomUUID().toString(); System.out.println(uuid.length()); System.out.println(uuid.replace("-", "")); int num = str2Num("10000"); System.out.println(num); String date = transferToFormat("huangbia"); System.out.println(date); String nowDate = getCurrentDateStr(SDF_YYYY_MM_DD_HH_MM_SS_SS); System.out.println(nowDate); }/** * 字符串转为数字,截取前面的0 * @param str * @return */ public static int str2Num(String str){ char[] array = str.toCharArray(); System.out.println(array); System.out.println(array.length); for(int i = 0; i < array.length; i++){ System.out.println(array[i]); if(array[i] != '0'){ str = str.substring(i); break; } } return Integer.parseInt(str); } /** * 将字符串转换成2010-12-21格式的 * @param propName * @return */ public static String transferToFormat(String trDate) { StringBuffer busiDate = new StringBuffer(); busiDate.append(trDate.substring(0, 4)); busiDate.append("-"); busiDate.append(trDate.substring(4, 6)); busiDate.append("-"); busiDate.append(trDate.substring(6, 8)); return busiDate.toString(); } /** * SDF_YYYY_MM_DD_HH_MM_SS_SS格式 */ public static final SimpleDateFormat SDF_YYYY_MM_DD_HH_MM_SS_SS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS"); /** * 获取当前日期的字符串形式 * @param sdf 格式化器 * @return */ public static String getCurrentDateStr(SimpleDateFormat sdf){ return sdf.format(new Date()); }}
关于如何使用工具类?
对于定义属性(常用的变量)名称需要使用大写,使用的是static类型,这样就可以作为工具一样的去使用,例如工程的常用字符串、公共方法(跟业务没有什么关系)——例如得到系统时间,得到用户信息等等
参考博客:http://m.blog.csdn.net/hbiao68/article/details/17112983
- 171207之UUID用法
- uuid简单用法
- python模块之uuid
- python模块之uuid
- python模块之uuid
- JAVA之UUID实现
- python之uuid模块
- UUID之科普
- qt 之Uuid
- python模块之uuid
- boost库之uuid
- CC2650 之UUID配置
- Java之UUID生成
- Java之UUID介绍
- BLE之UUID
- java之UUID
- WebService之UUID 二
- python模块之uuid
- 改善C++程序的150个建议
- DOM文档对象模型利用节点访问HTML元素
- Unity接入百度语音识别与语音合成,实现语音交互
- 短信验证码获取JS
- 正则表达式
- 171207之UUID用法
- Jmeter提供的分布式功能来启动多台电脑来分压测试
- node 监听md文件变化并转换成html
- consul的shi yon
- Java汉字转拼音工具类
- 排序算法整理(第十五周实践项目)
- Codeforces894D Ralph And His Tour in Binary Country
- 关注的博客链接地址(持续更新)
- Python变量与命名规范