Java'da GUID oluşturmanın en iyi yollarından bazıları nelerdir?
Java'da GUID oluşturmanın en iyi yollarından bazıları nelerdir?
Yanıtlar:
Java 5 ve sonraki sürümleriyle birlikte gelen UUID sınıfına bir göz atın .
Örneğin:
java.util.UUID.randomUUID();
UUID.randomUUID
yöntemin bir kopyasını döndürmesi teorik olarak mümkün , ancak bu hiç de gerçekçi bir endişe değil . Oracle / OpenJDK uygulaması kriptografik olarak güçlü bir rasgele sayı üreteci kullanır. Bu göz önüne alındığında ve bir UUID'de çok sayıda bit tarafından verilen astronomik aralık göz önüne alındığında, uygulamanızda milyonlarca bu değer üretebilir ve yine de iyi uyuyabilirsiniz. Diğer varyantlardan birinin kullanılması, "boşluk ve zaman", [1] MAC adresi veya adı ve [2] geçerli tarih saatini kısıtlama olarak kullandığından, sıfıra daha yakın çarpışma olasılığını daha da azaltır.
while
: p
Ne tür bir UUID istediğinize bağlıdır .
Standart Java UUID
sınıfı Sürüm 4 (rastgele) UUID'ler oluşturur. ( GÜNCELLEME - Sürüm 3 (ad) UUID'ler de oluşturulabilir.) Diğer varyantları da işleyebilir, ancak üretemez. (Bu durumda, "sap" terimi yapı UUID
ile ilgili örnekler long
, byte[]
ya da String
gösterimleri ve bazı uygun erişimcileri sağlar.)
Java UUID Jeneratör (JUG) "tarafından tanımlanan UUID tüm 3 'resmi' türlerini uygulama iddia destekleyecek -4122 RFC RFC aslında 4 türlerini tanımlayan ve 5. bir tür bahseder olsa ...".
UUID türleri ve varyantları hakkında daha fazla bilgi için Wikipedia'da iyi bir özet var ve kanlı ayrıntılar RFC 4122 ve diğer spesifikasyonlarda.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. tip 4 kullanım için public static UUID randomUUID()
. Tip 1, JDK sınıfıyla kullanılamaz.
clockSequence()
Mark Byers'ın cevabını bir örnekle genişletmek için:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Diğer Cevapları, özellikle doğrudur bu bir tarafından Stephen C .
Java içinde bir UUID değeri oluşturmak Sürüm 4 (rastgele) ile sınırlıdır , güvenlik endişeleri nedeniyle .
Eğer UUID diğer sürümlerini istiyorsanız, bir cadde dışında Java uygulaması erişime sahip olmaktır JVM üzerinde arayarak UUIDs oluşturmak için:
uuidgen
Mac OS X, BSD ve Linux'ta bulunur.uuid-ossp
uzantı genellikle Postgres ile birlikte gelir . Bu uzantı Sürüm 1, 3 ve 4 değerlerini ve ayrıca birkaç varyasyonu oluşturabilir:
uuid_generate_v1mc()
- sürüm 1 UUID oluşturur ancak bilgisayarın gerçek MAC adresi yerine rastgele çok noktaya yayın MAC adresi kullanır.uuid_generate_v5(namespace uuid, name text)
- SHA-1'in karma yöntemi olarak kullanılması dışında, sürüm 3 UUID gibi çalışan bir sürüm 5 UUID oluşturur.