6
votes

Générer uuid de type long

S'il vous plaît donnez-moi un exemple de code pour générer uuid de de type de type java sans utiliser horodatage.

merci


2 commentaires

Un UUID représente une valeur de 128 bits. Cela ne va pas correspondre à un long .


Dupliqué possible de numéro de série unique dans une application Web Java.


3 Réponses :


7
votes

Avez-vous regardé Java.util. UUID ?


0 commentaires

2
votes

Si vous voulez juste une simple longue expérience unique, vous pouvez utiliser atomiclong.incrementiandget (). Cela n'utilise pas d'horodatage mais réinitialise à 0 chaque fois que vous le démarrez et n'est pas unique sur JVMS.

Quelle est l'exigence de ne pas utiliser les horodatages? UUID utilise un horodatage. (Amoungt Autres choses)


2 commentaires

Certains types UUID utilisent des horodatages, certains utilisent d'autres moyens pour obtenir un caractère unique.


@Stephenc Bon point. Je n'ai pas réalisé qu'il y a 4 manières documentées de générer une UUID.



21
votes

Un vrai uuid est de 128 bits. Une longue est de 64 bits.

Ce n'est pas seulement la pédanterie. UUID signifie Universal Identifiant unique.

Le "Unicité universelle" du Schémas UUID établies sont basés sur:

  • encoder une adresse MAC et un horodatage,
  • codage d'un hachage d'un nom DNS et d'un horodatage, ou
  • en utilisant un nombre aléatoire 122 bits ... qui est assez grand que la probabilité d'une collision est très très faible.

    avec 64 bits, il n'y a tout simplement pas assez de bits pour "unicité universelle". Par exemple, le paradoxe d'anniversaire signifie que si nous avions un certain nombre d'ordinateurs générant des nombres aléatoires de 64 bits, la probabilité d'une collision potentiellement détectable serait suffisamment grande pour être préoccupante.

    Maintenant si vous voulez juste un UID (pas un UUID), tout générateur de séquence 64 bits fera le travail, à condition de prendre des mesures pour vous protéger de la séquence. (Si la séquence se répète, les identifiants ne sont pas uniques à temps; c'est-à-dire un temps donné, un identifiant donné peut désigner différentes entités.)


0 commentaires