Một số cách tốt nhất để tạo GUID trong Java là gì?
Một số cách tốt nhất để tạo GUID trong Java là gì?
Câu trả lời:
Hãy xem lớp UUID được gói cùng với Java 5 trở lên.
Ví dụ:
java.util.UUID.randomUUID();
UUID.randomUUID
phương pháp có thể trả về một bản sao, nhưng điều này hoàn toàn không phải là một mối quan tâm thực tế . Việc triển khai Oracle / OpenJDK sử dụng trình tạo số ngẫu nhiên mạnh về mật mã. Do đó, và được đưa ra phạm vi thiên văn được cung cấp bởi rất nhiều bit trong UUID, bạn có thể tạo ra hàng triệu giá trị như vậy trong ứng dụng của mình và vẫn ngủ ngon. Sử dụng một trong các biến thể khác làm giảm thêm khả năng va chạm gần bằng 0 do sử dụng "không gian và thời gian", [1] địa chỉ hoặc tên MAC và [2] thời gian ngày hiện tại, làm hạn chế.
while
cho đến khi bạn có một cái không có trong danh sách của bạn: p
Nó phụ thuộc vào loại UUID bạn muốn.
Lớp Java tiêu chuẩn UUID
tạo UUID phiên bản 4 (ngẫu nhiên). ( CẬP NHẬT - UUID phiên bản 3 (tên) cũng có thể được tạo.) Nó cũng có thể xử lý các biến thể khác, mặc dù nó không thể tạo ra chúng. (Trong trường hợp này, "xử lý" có nghĩa là xây dựng UUID
trường từ long
, byte[]
hoặc String
cơ quan đại diện, và cung cấp truy cập thông thích hợp.)
Các mục đích triển khai của Trình tạo UUID Java (JUG) để hỗ trợ các loại UUID "tất cả 3" chính thức theo định nghĩa của RFC-4122 "... mặc dù RFC thực sự định nghĩa 4 loại và đề cập đến loại thứ 5.
Để biết thêm thông tin về các loại và biến thể của UUID, có một bản tóm tắt tốt trong Wikipedia và các chi tiết chính trong RFC 4122 và các thông số kỹ thuật khác.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. cho loại 4 sử dụng public static UUID randomUUID()
. Loại 1 không có sẵn với lớp JDK.
clockSequence()
Chỉ để mở rộng câu trả lời của Mark Byers bằng một ví dụ:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Các câu trả lời khác là chính xác, đặc biệt là một này bởi Stephen C .
Việc tạo giá trị UUID trong Java bị giới hạn ở Phiên bản 4 (ngẫu nhiên) vì các vấn đề bảo mật.
Nếu bạn muốn các phiên bản khác của UUID, một con đường là để ứng dụng Java của bạn vươn ra ngoài JVM để tạo UUID bằng cách gọi:
uuidgen
được tìm thấy trong Mac OS X, BSD và Linux.uuid-ossp
phần mở rộng thường được đóng gói với Postgres . Tiện ích mở rộng đó có thể tạo các giá trị Phiên bản 1, 3 và 4 và thêm một vài biến thể:
uuid_generate_v1mc()
- tạo UUID phiên bản 1 nhưng sử dụng địa chỉ MAC phát đa hướng ngẫu nhiên thay vì địa chỉ MAC thực của máy tính.uuid_generate_v5(namespace uuid, name text)
- tạo UUID phiên bản 5, hoạt động giống như UUID phiên bản 3 ngoại trừ SHA-1 được sử dụng làm phương pháp băm.