Java获取唯⼀值的⽅法
1. 通过nanoTime()⽅法获得
/**
* 第⼀种⽅式:通过nanoTime()⽅法获得
* 通过System类的nanoTime()⽅法产⽣,理论上存在重复的可能,实际不会重复(⾄少短期内的CPU运⾏速度同时⽣成还不会达到重复)
*/
public String uniqueCodeOne()
{
long n=System.nanoTime();
// Random random=new Random();
// String n=System.nanoTime()+""+Int();
// System.out.println(n);
return String.valueOf(n);
}
2.通过UUID类
/**
* 第⼆种⽅式:通过UUID类(表⽰通⽤唯⼀标识符的类)获得唯⼀值,UUID表⽰⼀个128位的值
*
*/
public String uniqueCodeTwo()
{
String s=UUID.randomUUID().toString();
/
/ System.out.println(s);
return s;
}
nextint()方法关于UUID的简单介绍
UUID含义是通⽤唯⼀识别码 (Universally Unique Identifier),这 是⼀个软件建构的标准,也是被开源软件基⾦会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的⼀部份。UUID 的⽬的,是让分布式系统中的所有元素,都能有唯⼀的辨识资讯,⽽不需要透过中央控制端来做辨识资讯的指定。如此⼀来,每个⼈都可以建⽴不与其它⼈冲突的 UUID。在这样的情况下,就不需考虑数据库建⽴时的名称重复问题。⽬前最⼴泛应⽤的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),⽽其他重要的应⽤,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。
UUID.randomUUID().toString()是javaJDK提供的⼀个⾃动⽣成主键的⽅法。UUID(Universally Unique Identifier)全局唯⼀标识符,是指在⼀台机器上⽣成的数字,它保证对在同⼀时空中的所有机器都是唯⼀的,是由⼀个⼗六位的数字组成,表现出来的形式。由以下⼏部分的组合:当前⽇期和时间(UUID
的第⼀个部分与时间有关,如果你在⽣成⼀个UUID之后,过⼏秒⼜⽣成⼀个UUID,则第⼀个部分不同,其余相同),时钟序列,全局唯⼀的IEEE机器识别号(如果有⽹卡,从⽹卡获得,没有⽹卡以其他⽅式获得),UUID的唯⼀缺陷在于⽣成的结果串会⽐较长。
import java.util.UUID;
/**
*
* @author humf
*/
public class UploadUtils {
/**
* 传⼊⽂件的名称,返回的唯⼀的名称
* 例如:gril.jpg 返回sdjsljfsjdl.jpg
* @param filename
* @return
*/
public static String getUUIDName(String filename){
// 先查
int index = filename.lastIndexOf(".");
// 截取
String lastname = filename.substring(index, filename.length());
// 唯⼀字符串 fsd-sfsdf-sfsd-sdfsd
String uuid = UUID.randomUUID().toString().replace("-", "");
return uuid+lastname;
}
public static void main(String[] args) {
String filename = "girl.jpg";
String uuid = getUUIDName(filename);
System.out.println(uuid);
}
}
3. 采⽤数据指纹
/**
* 第三种⽅式:采⽤数据指纹
* @throws NoSuchAlgorithmException
*
*/
public String uniqueCodeThree() throws NoSuchAlgorithmException {
String s=UUID.randomUUID().toString();
//先进⾏MD5加密
MessageDigest Instance("md5");
//对数据进⾏加密
byte[] bs=md.Bytes());
//采⽤数据指纹进⼀步加密,拿到的数据成为数据指纹
BASE64Encoder base=new BASE64Encoder();
String de(bs);
/
/System.out.println(digitFingerprint);
return digitFingerprint;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论