반응형
Java UUID란, Java UUID 중복, Java UUID 자리수, Java UUID 길이 줄이기
Java UUID란?
Java UUID란 Universally Unique Identifier의 약어로, 고유 식별자를 나타내는 값입니다.
- 중복않는 유일한 값을 사용할때 활용합니다.
- 세션 식별자, 쿠키 값, 무작위 데이터베이스 키 등에 활용가능합니다.
Java UUID 활용하기, UUID 사용하기
UUID 생성방식은 아래와 같이 세가지가 있습니다.
// 1) 랜덤으로 생성
UUID uuid = UUID.randomUUID();
// 2) string 기반으로 생성
String test = "test";
UUID uuid = UUID.fromString(test);;
// 3) byte array 기반으로 생성
byte[] bytes = new byte[10];
UUID uuid = UUID.nameUUIDFromBytes(bytes);
아래와 같이 uuid값 확인도 가능합니다.
System.out.println(uuid.toString());
아래는 UUID.randomUUID()를 출력해본 값에 대한 예시 값입니다
cb3178ff-f3c8-4ca8-8671-9f7c41221d75
UUID 중복발생확률, Java UUID 중복 확률
결론적으로는 중복은 가능하나, 확률은 매우 희박합니다.
매 초 10억개의 uuid를 100년에 걸쳐서 생성할 때 단 하나의 uuid가 중복될 확률은 50% 입니다.
Java UUID는 총 36자로 되어 있습니다(4개 하이픈 포함)
a~f까지(대소문자 구별않음)와 숫자로 UUID를 구성할 수 있는데,
총 340,282,366,920,938,463,463,374,607,431,768,211,456 개의 UUID가 생성가능합니다.
딱 봐도 굉장히 확률이 희박한 값입니다.
그럼에도 중복이 염려스러운 경우에는, 저의 경우에 UUID+timestamp 값을 사용하기도 합니다.
Java UUID 길이 줄이기
UUID는 총 36자로, 너무 길어보일 수 있습니다.
그래서 랜덤한 짧은 길이의 문자열을 만들고 싶다면, 아래 함수를 활용할 수 있습니다.
단, 원래의 randomUUID방식에 비해 중복될 확률은 높아집니다.
public static String uniqueString(int digit) {
if(digit < 1) throw new Exception("can't generate");
String random = UUID.randomUUID().toString();
random = random.replaceAll("-", "");
random = random.substring(0, digit);
return random;
}
// 16글자 랜덤한 문자열에 대한 예시값 : ac3ba51e0d504740
System.out.println(uniqueString(16));
#Java,#UUID,#자바,#중복,#길이
728x90
반응형
댓글