Quais são algumas das melhores maneiras de criar um GUID em Java?
Quais são algumas das melhores maneiras de criar um GUID em Java?
Respostas:
Dê uma olhada na classe UUID incluída no Java 5 e posterior.
Por exemplo:
java.util.UUID.randomUUID();
UUID.randomUUID
método retorne uma duplicata, mas isso não é uma preocupação realista . A implementação Oracle / OpenJDK usa um gerador de números aleatórios criptograficamente forte. Dado isso, e considerando o alcance astronômico fornecido por tantos bits em um UUID, você pode gerar muitos milhões desses valores em seu aplicativo e ainda dormir bem. O uso de uma das outras variantes reduz ainda mais a possibilidade de colisões ainda mais próximas de zero devido ao uso de "espaço e tempo", [1] endereço ou nome MAC e [2] data e hora atuais, como restrições.
while
até encontrar um que não esteja na sua lista: p
Depende do tipo de UUID que você deseja.
A UUID
classe Java padrão gera UUIDs da versão 4 (aleatórios). ( UPDATE - UUIDs da versão 3 (nome) também podem ser gerados.) Ele também pode manipular outras variantes, embora não possa gerá-las. (Neste caso, os meios de pega "" construção de UUID
casos de long
, byte[]
ou String
representações, e fornecer alguns assessores apropriadas).
A implementação do Java UUID Generator (JUG) pretende suportar "todos os 3 tipos 'oficiais' de UUID, conforme definido pelo RFC-4122 " ... embora o RFC realmente defina 4 tipos e mencione um quinto tipo.
Para obter mais informações sobre tipos e variantes de UUID, há um bom resumo na Wikipedia , e os detalhes sangrentos estão no RFC 4122 e nas outras especificações.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. para uso tipo 4 public static UUID randomUUID()
. O tipo 1 não está disponível na classe JDK.
clockSequence()
Apenas para estender a resposta de Mark Byers com um exemplo:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
As outras respostas estão corretas, especialmente este por Stephen C .
A geração de um valor UUID em Java é limitada à Versão 4 (aleatória) devido a questões de segurança.
Se você deseja outras versões de UUIDs, uma alternativa é fazer com que seu aplicativo Java alcance fora da JVM para gerar UUIDs chamando:
uuidgen
encontrado no Mac OS X, BSD e Linux.uuid-ossp
extensão geralmente acompanha o Postgres . Essa extensão pode gerar os valores das versões 1, 3 e 4 e, além disso, algumas variações:
uuid_generate_v1mc()
- gera um UUID da versão 1, mas usa um endereço MAC multicast aleatório em vez do endereço MAC real do computador.uuid_generate_v5(namespace uuid, name text)
- gera um UUID versão 5, que funciona como um UUID versão 3, exceto que o SHA-1 é usado como um método de hash.