Apa beberapa cara terbaik untuk membuat GUID di Jawa?
Apa beberapa cara terbaik untuk membuat GUID di Jawa?
Jawaban:
Lihatlah kelas UUID yang dibundel dengan Java 5 dan yang lebih baru.
Sebagai contoh:
java.util.UUID.randomUUID();
UUID.randomUUID
metode mengembalikan duplikat, tetapi ini sama sekali bukan masalah yang realistis . Implementasi Oracle / OpenJDK menggunakan generator angka acak yang kuat secara kriptografis. Mengingat itu, dan mengingat rentang astronomi yang diberikan oleh begitu banyak bit dalam UUID, Anda dapat menghasilkan jutaan nilai seperti itu di aplikasi Anda dan masih tidur nyenyak. Menggunakan salah satu varian lain semakin mengurangi kemungkinan tabrakan bahkan lebih dekat ke nol karena menggunakan "ruang dan waktu", [1] alamat atau nama MAC, dan [2] tanggal-waktu saat ini, sebagai kendala.
while
sampai Anda mendapat yang tidak ada di dalam daftar Anda: p
Tergantung UUID macam apa yang Anda inginkan.
Kelas Java standar UUID
menghasilkan Versi 4 (acak) UUID. ( PEMBARUAN - Versi 3 (nama) UUID juga dapat dibuat.) Ia juga dapat menangani varian lain, meskipun tidak dapat membuatnya. (Dalam hal ini, "handle" berarti membuat UUID
instance dari long
, byte[]
atau String
representasi, dan menyediakan beberapa accessor yang sesuai.)
The Java UUID Generator (JUG) dimaksudkan implementasi untuk mendukung "semua 3 jenis 'resmi' dari UUID seperti yang didefinisikan oleh RFC-4122 " ... meskipun RFC benar-benar mendefinisikan 4 jenis dan menyebutkan jenis-5.
Untuk informasi lebih lanjut tentang jenis dan varian UUID, ada ringkasan yang bagus di Wikipedia , dan detail berdarahnya ada di RFC 4122 dan spesifikasi lainnya.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. untuk penggunaan tipe 4 public static UUID randomUUID()
. Tipe 1 tidak tersedia dengan kelas JDK.
clockSequence()
Hanya untuk memperluas jawaban Mark Byers dengan sebuah contoh:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Jawaban lain benar, terutama yang satu ini oleh Stephen C .
Menghasilkan nilai UUID dalam Java terbatas pada Versi 4 (acak) karena masalah keamanan.
Jika Anda ingin versi lain dari UUID, satu jalan adalah membuat aplikasi Java Anda menjangkau di luar JVM untuk menghasilkan UUID dengan memanggil:
uuidgen
ditemukan di Mac OS X, BSD, dan Linux.uuid-ossp
ekstensi sering dibundel dengan Postgres . Ekstensi itu dapat menghasilkan nilai Versi 1, 3, dan 4 dan juga variasi pasangan:
uuid_generate_v1mc()
- Menghasilkan UUID versi 1 tetapi menggunakan alamat MAC multicast acak dan bukan alamat MAC sebenarnya dari komputer.uuid_generate_v5(namespace uuid, name text)
- Menghasilkan UUID versi 5, yang bekerja seperti UUID versi 3 kecuali bahwa SHA-1 digunakan sebagai metode hashing.