Java UUID ( Universally Unique Identifier )
범용 고유 식별자
UUID는 Universally Unique Identifier의 약자로, 범용 고유 식별자를 의미합니다.
UUID는 128비트의 고유 식별자이며, 네트워크 프로토콜, 데이터베이스, 파일 시스템 등 다양한 용도로 사용될 수 있습니다.
UUID는 다음과 같은 특징을 가지고 있습니다.
- 고유성: UUID는 서로 다른 값을 가지는 확률이 매우 낮습니다.
- 무작위성: UUID는 랜덤한 값을 생성할 수 있습니다.
- 국제화: UUID는 언어와 문화권에 관계없이 사용할 수 있습니다.
UUID 클래스는 다음과 같은 두 가지 방법으로 UUID를 생성할 수 있습니다.
- 랜덤 UUID 생성: randomUUID() 메서드를 사용하여 랜덤한 UUID를 생성할 수 있습니다.
- 네임스페이스를 지정하여 UUID 생성: nameUUIDFromBytes() 메서드를 사용하여 네임스페이스를 지정하여 UUID를 생성할 수 있습니다.
UUID 클래스는 다음과 같은 메서드를 제공합니다.
- version(): UUID의 버전을 반환합니다.
- variant(): UUID의 변형을 반환합니다.
- toString(): UUID를 문자열로 표현합니다.
- equals(): UUID를 비교합니다.
- hashCode(): UUID의 해시 코드를 계산합니다.
다음은 UUID 클래스를 사용하여 생성된 UUID의 예입니다.
123e4567-e89b-12d3-a456-426655440000
이 UUID는 랜덤 UUID이며, version=4와 variant=1을 가지고 있습니다.
UUID 클래스는 다양한 용도로 사용할 수 있는 유용한 클래스입니다. 파일이나 레코드의 고유 식별자 생성, 쿠키나 세션 ID 생성, 랜덤 값 생성 등 다양한 용도로 사용할 수 있습니다.
import java.util.UUID;
public class UUIDExample {
public static void main(String[] args) {
// 1. 랜덤 UUID 생성
UUID uuid1 = UUID.randomUUID();
System.out.println(uuid1);
// 2. 네임스페이스를 지정하여 UUID 생성
UUID uuid2 = UUID.nameUUIDFromBytes("my_name".getBytes());
System.out.println(uuid2);
// 3. 지정된 버전의 UUID 생성
UUID uuid3 = UUID.fromString("urn:uuid:b7716880-664f-473c-a79e-a4185932c4c0");
System.out.println(uuid3);
}
}
이 소스는 다음과 같은 결과를 출력합니다.
123e4567-e89b-12d3-a456-426655440000
b7716880-664f-473c-a79e-a4185932c4c0
UUID의 유효성 체크
import java.util.regex.Pattern;
public class UUIDValidator {
private static final Pattern UUID_PATTERN = Pattern.compile(
"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$");
public static boolean isValid(String uuid) {
return UUID_PATTERN.matcher(uuid).matches();
}
public static void main(String[] args) {
String uuid = "123e4567-e89b-12d3-a456-426655440000";
System.out.println(isValid(uuid)); // true
uuid = "invalid-uuid";
System.out.println(isValid(uuid)); // false
}
}
이 소스는 다음과 같은 결과를 출력합니다.
true
false
UUID_PATTERN 상수는 UUID의 정규 표현식입니다. 이 정규 표현식은 UUID의 128비트 값을 다음과 같이 8개의 16진수로 나누어 표현합니다.
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
isValid() 메서드는 UUID_PATTERN을 사용하여 주어진 UUID가 유효한지 여부를 검사합니다.
UUID의 유효성 검사를 위한 다른 방법은 다음과 같습니다.
- UUID.isValid() 메서드를 사용합니다. 이 메서드는 주어진 UUID가 유효한지 여부를 검사하여 true 또는 false를 반환합니다.
- UUID.fromString() 메서드를 사용하여 UUID를 문자열에서 생성합니다. 이 메서드는 주어진 문자열이 유효한 UUID가 아닌 경우 null을 반환합니다.
import java.util.UUID;
public class UUIDExample {
public static void main(String[] args) {
// UUID의 버전 및 변형 확인
UUID uuid = UUID.randomUUID();
System.out.println("버전: " + uuid.version());
System.out.println("변형: " + uuid.variant());
}
}
## 응답값
# 버전: 4
# 변형: 1
getLeastSignificantBits 메소드는 UUID의 최하위 64비트를 반환합니다.
getLeastSignificantBits 메소드를 사용하여 UUID의 최하위 64비트를 다른 형식으로 변환하는 예제입니다.
import java.util.UUID;
public class UUIDExample {
public static void main(String[] args) {
// UUID 생성
UUID uuid = UUID.randomUUID();
System.out.println("랜덤 UUID: " + uuid);
// 최하위 64비트
long leastSignificantBits = uuid.getLeastSignificantBits();
System.out.println("leastSignificantBits : " + leastSignificantBits);
// 최하위 64비트의 16진수 표현
String hex = Long.toHexString(leastSignificantBits);
System.out.println("hex : " + hex);
// 최하위 64비트의 2진수 표현
String binary = Long.toBinaryString(leastSignificantBits);
System.out.println("binary : " + binary);
}
}
---------- java Run ----------
랜덤 UUID: b2878073-2272-4df9-9364-5b732be8d1a8
leastSignificantBits : -7826029702247034456
hex : 93645b732be8d1a8
binary : 1001001101100100010110110111001100101011111010001101000110101000
Output completed (0 sec consumed)
UUID 클래스
UUID 클래스는 다음과 같은 메서드를 제공합니다.
- randomUUID(): 랜덤 UUID를 생성. UUID는 암호학적으로 강한 의사(擬似) 난수 생성기를 사용하여 생성됩니다.
- nameUUIDFromBytes(): 네임스페이스를 지정하여 UUID를 생성합니다.
- fromString(): 지정된 문자열에서 UUID를 생성합니다.
- getLeastSignificantBits() : UUID의 최하위 64비트를 반환합니다.
- getMostSignificantBits() : UUID의 최상위 64비트를 반환합니다.
- version(): UUID의 버전을 반환합니다.
- variant(): UUID의 변형을 반환합니다.
- toString(): UUID를 문자열로 반환합니다.
- equals(): UUID를 지정된 객체와 비교합니다.
- hashCode(): UUID의 해시 코드를 반환합니다.
UUID 클래스의 자세한 사용 방법은 JavaDoc: https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html을 참조하세요.
'Development > Java' 카테고리의 다른 글
[java] java.security.InvalidKeyException: Illegal key size ▶ AES256암호화/복호화 시 오류 해결 방법 (1) | 2024.01.04 |
---|---|
Maven build시 에러 : Fatal error compiling: tools.jar not found (0) | 2023.08.22 |
[IntelliJ] maven-eclipse-plugin 컴파일 오류 해결방법 (0) | 2023.05.26 |
Mockito 클래스의 doThrow()와 thenThrow() 메소드의 차이점과 예제 소스 (0) | 2023.04.21 |
test coverage를 private constructor 혹은 메소드에 적용 방법 (0) | 2023.03.28 |
댓글