Quali sono alcuni dei modi migliori per creare un GUID in Java?
Quali sono alcuni dei modi migliori per creare un GUID in Java?
Risposte:
Dai un'occhiata alla classe UUID in bundle con Java 5 e versioni successive.
Per esempio:
java.util.UUID.randomUUID();
UUID.randomUUID
metodo restituisca un duplicato, ma questo non è affatto un problema realistico . L'implementazione Oracle / OpenJDK utilizza un generatore di numeri casuali crittograficamente forte. Detto questo, e data la portata astronomica data da così tanti bit in un UUID, puoi generare molti milioni di tali valori nella tua app e dormire ancora bene. L'uso di una delle altre varianti riduce ulteriormente la possibilità di collisioni ancora più vicine allo zero a causa dell'utilizzo di "spazio e tempo", [1] indirizzo MAC o nome e [2] data-ora corrente, come vincoli.
while
fino a quando non ne hai uno che non è all'interno del tuo elenco: p
Dipende dal tipo di UUID che desideri.
La UUID
classe Java standard genera UUID versione 4 (casuali). ( UPDATE - UUID versione 3 (nome) possono anche essere generati.) Può anche gestire altre varianti, sebbene non possa generarle. (In questo caso, "handle" significa costruire UUID
istanze da long
, byte[]
o String
rappresentazioni, e fornire alcuni accessori appropriati.)
L' implementazione di Java UUID Generator (JUG) pretende di supportare "tutti e 3 i tipi" UUID "ufficiali come definiti da RFC-4122 " ... sebbene l'RFC in realtà definisca 4 tipi e menzioni un 5 ° tipo.
Per ulteriori informazioni sui tipi e le varianti UUID, c'è un buon riassunto in Wikipedia , e i dettagli gory sono in RFC 4122 e le altre specifiche.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. per uso di tipo 4 public static UUID randomUUID()
. Il tipo 1 non è disponibile con la classe JDK.
clockSequence()
Giusto per estendere la risposta di Mark Byers con un esempio:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Le altre risposte sono corrette, soprattutto questo uno da Stephen C .
La generazione di un valore UUID in Java è limitata alla versione 4 (casuale) a causa di problemi di sicurezza.
Se desideri altre versioni di UUID, una strada è avere la tua app Java fuori dalla JVM per generare UUID chiamando:
uuidgen
trova in Mac OS X, BSD e Linux.uuid-ossp
estensione è spesso inclusa in Postgres . Tale estensione può generare i valori delle versioni 1, 3 e 4 e inoltre un paio di varianti:
uuid_generate_v1mc()
- genera un UUID versione 1 ma utilizza un indirizzo MAC multicast casuale anziché l'indirizzo MAC reale del computer.uuid_generate_v5(namespace uuid, name text)
- genera un UUID versione 5, che funziona come un UUID versione 3, tranne che SHA-1 viene utilizzato come metodo di hashing.