generieren UUID lange geben
Bitte geben Sie mir ein Beispiel-code zu generieren UUID
von long
Typ in java, ohne Verwendung von timestamp.
Dank
Eine UUID repräsentiert eine 128-bit-Wert. Das wird nicht passen in ein
mögliche Duplikate von Eindeutige Seriennummer in eine java-web-Anwendung.
long
.mögliche Duplikate von Eindeutige Seriennummer in eine java-web-Anwendung.
InformationsquelleAutor Mohamed Saligh | 2010-12-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem echten UUID ist 128 bits. Ein long ist 64 bit.
Dies ist nicht einfach nur pedantisch. UUID steht für Universal Eindeutigen Bezeichner.
Den "universellen Einzigartigkeit" des gegründet UUID Systeme basieren auf:
Mit 64 bit, es gibt einfach nicht genug bits für "universal Einzigartigkeit". Zum Beispiel den Geburtstag paradox bedeutet, dass, wenn wir hatten eine Reihe von Computern generiert zufällige 64-bit-zahlen, die Wahrscheinlichkeit, dass ein potentiell nachweisbar Kollision wäre groß genug, um ein Anliegen sein.
Nun, wenn Sie wollen einfach nur eine UID (nicht eine UUID), dann wird jedes der 64-bit-Sequenz-generator wird die Arbeit machen, vorausgesetzt, dass Sie die Schritte ergreifen, die zum Schutz gegen die Sequenz wiederholen. (Falls die Sequenz sich wiederholt, dann werden die IDs sind nicht eindeutig in der Zeit, d.h. im Laufe der Zeit einer bestimmten ID anzeigen können verschiedene Entitäten.)
InformationsquelleAutor Stephen C
Haben Sie sich java.util.UUID?
InformationsquelleAutor Raghuram
Wenn Sie wollen einfach nur eine einfache, einzigartigen langen, die Sie verwenden können, AtomicLong.incrementAndGet(). Funktioniert dies nicht, verwenden Sie eine timestamp-aber nicht auf 0 zurückgesetzt jedes mal, wenn Sie starten Sie es und nicht eindeutig über JVMs.
Was ist die Anforderung nicht die Verwendung von timestamps? UUID verwendet einen Zeitstempel. (amoungst andere Dinge)
Guter Punkt. Ich wusste nicht, dass gibt es 4 dokumentierte Möglichkeiten zur Generierung einer UUID.
InformationsquelleAutor Peter Lawrey