generate generar java guid

generar - uuid java timestamp



Crear un GUID en Java (6)

¿Cuáles son algunas de las mejores formas de crear un GUID en Java?


Puede utilizar este código para generar GUID.

import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; public class StrictMicroSecondTimeBasedGuid { private final static Logger logger = Logger .getLogger(StrictMicroSecondTimeBasedGuid.class); private static final long MICRO_IN_MILL = 1000; private static final long NANO_IN_MICRO = 1000; private static long baseNanoTime; private static long baseTimeInMicro; private static long lastGuid; static { /* * Nanosecond time''s reference is not known, therfore following logic is * needed to calculate time in micro without knowing refrence point of * nano time* */ baseNanoTime = System.nanoTime(); baseTimeInMicro = System.currentTimeMillis() * MICRO_IN_MILL; lastGuid = baseTimeInMicro; } public static synchronized Long newGuid() { long newGuid; while ((newGuid = calNewTimeInMicro()) <= lastGuid) { /** we have to check for this log, we don''t want to see log. */ logger.debug("wait of 10-microsecond is introduced to get new guid"); try { TimeUnit.MICROSECONDS.sleep(10); } catch (InterruptedException e) { logger.error("Error", e); } } lastGuid = newGuid; return newGuid; } private static long calNewTimeInMicro() { return baseTimeInMicro + ((System.nanoTime() - baseNanoTime) / NANO_IN_MICRO); } }


Depende de qué tipo de UUID quieras.

  • La clase UUID Java estándar genera UUID versión 4 (aleatorios). ( ACTUALIZACIÓN : también se pueden generar UUIDs de la versión 3 (nombre)). También puede manejar otras variantes, aunque no puede generarlas. (En este caso, "manejar" significa construir instancias UUID partir de representaciones long , de byte[] o de String , y proporcionar algunos accesores apropiados).

  • La implementación del generador de UUID de Java (JUG) pretende admitir "todos los 3 tipos ''oficiales'' de UUID definidos por RFC-4122 " ... aunque el RFC en realidad define 4 tipos y menciona un quinto tipo.

Para obtener más información sobre los tipos y variantes de UUID, hay un buen resumen en Wikipedia , y los detalles sangrientos están en RFC 4122 y las otras especificaciones.


Eche un vistazo a la clase UUID incluida con Java 5 y versiones posteriores.

Por ejemplo:


Las otras respuestas son correctas, especialmente esta de Stephen C.

Llegar fuera de Java

La generación de un valor UUID dentro de Java se limita a la versión 4 (aleatoria) debido a problemas de seguridad.

Si desea otras versiones de UUID, una vía es que su aplicación Java llegue fuera de la JVM para generar UUID llamando a:

  • Utilidad de línea de comandos
    Incluido con casi todos los sistemas operativos.
    Por ejemplo, uuidgen encontrado en Mac OS X, BSD y Linux.
  • Servidor de base de datos
    Utilice JDBC para recuperar un UUID generado en el servidor de base de datos.
    Por ejemplo, la extensión uuid-ossp menudo se incluye con Postgres . Esa extensión puede generar los valores de las versiones 1, 3 y 4 y, además, un par de variaciones:
    • uuid_generate_v1mc() : genera un UUID de la versión 1 pero utiliza una dirección MAC de multidifusión aleatoria en lugar de la dirección MAC real de la computadora.
    • uuid_generate_v5(namespace uuid, name text) : genera un UUID de la versión 5, que funciona como un UUID de la versión 3, excepto que SHA-1 se usa como un método de hashing.
  • Servicio web
    Por ejemplo, UUID Generator crea las versiones 1 y 3, así como valores nulos y GUID .

Solo para extender la respuesta de Mark Byers con un ejemplo:

import java.util.UUID; public class RandomStringUUID { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); String randomUUIDString = uuid.toString(); System.out.println("UUID=" + randomUUIDString ); } }


java.util.UUID.randomUUID();