Effiziente Methode zur Generierung der UUID String in JAVA (UUID.randomUUID().toString() ohne Bindestriche)
Möchte ich ein effizientes Werkzeug zum generieren von eindeutigen Sequenzen von bytes. Die UUID ist ein guter Kandidat, aber UUID.randomUUID().toString()
generiert Zeug wie 44e128a5-ac7a-4c9a-be4c-224b6bf81b20
was gut ist, wie lange Sie brauchen nicht, es zu übertragen, über HTTP, in welchem Fall die Bindestriche entfernt werden müssen.
Ich bin auf der Suche nach einer effizienten Möglichkeit zum generieren einer zufälligen Zeichenfolgen, die nur aus alphanumerischen Zeichen (ohne Bindestriche oder sonstige Sonderzeichen).
InformationsquelleAutor der Frage Maxim Veksler | 2010-09-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser tut es:
InformationsquelleAutor der Antwort Steve McLeod
Bindestriche müssen nicht entfernt werden aus der HTTP-Anforderung, wie Sie sehen können, in der URL von diesem thread.
Aber wenn Sie möchten, bereiten Sie sich gut-gebildet-URL ohne Abhängigkeit von Daten, die Sie verwenden sollten, URLEncoder.encode( String data, String encoding ) statt ändern der standard-form, die Sie Daten.
Für UUID string-Darstellung Strichen ist normal.
InformationsquelleAutor der Antwort Donz
Ich verwendet JUG (Java UUID Generator) zur Erzeugung der eindeutigen ID.
Es ist eindeutig JVMs. Ziemlich gut zu verwenden. Hier ist der code für Ihre Referenz:
Könnten Sie laden Sie die Bibliothek aus: https://github.com/cowtowncoder/java-uuid-generator
InformationsquelleAutor der Antwort Sheng Chien
Endete schreiben etwas von meinem eigenen, basierend auf UUID.java Umsetzung. Beachten Sie, dass ich nicht die Erzeugung einer UUIDstatt einfach eine zufällige 32 Byte hex-string in der effizienteste Weg, die ich denken konnte.
Umsetzung
Nutzung
Tests
Einige der Eingänge hab ich getestet, um sicherzustellen, dass es funktioniert:
InformationsquelleAutor der Antwort Maxim Veksler
Ich bin erstaunt zu sehen, so viele string ersetzen-Ideen von UUID. Wie wäre es damit:
Dies ist die Schnellste Weise, es zu tun, da die ganze toString() UUID ist schon teurer, nicht zu erwähnen, die dem regulären Ausdruck, welches eingelesen und ausgeführt werden soll oder der Austausch mit einem leeren string.
InformationsquelleAutor der Antwort Stephan
Eine einfache Lösung ist
(Wie die bisherigen Lösungen, nur, dass es vermeidet die String#replaceAll nennen. Regulären Ausdruck Ersatz ist hier nicht erforderlich, so String#replace natürlicher wirkt, obwohl es technisch noch umgesetzt wird, die mit regulären Ausdrücken. Da die Generierung der UUID ist kostspieliger als der Ersatz, es sollte nicht sein, einen signifikanten Unterschied in der Laufzeit.)
Verwendung der UUID-Klasse ist wahrscheinlich schnell genug für die meisten Szenarien, aber ich würde erwarten, dass einige spezielle hand-schriftliche Variante, die braucht nicht die Nachbearbeitung, schneller zu sein. Trotzdem, den Engpass der gesamten Berechnung wird in der Regel die random number generator. Im Falle der UUID-Klasse, verwendet es SecureRandom.
Dem Zufallszahlengenerator zu verwenden, ist auch ein trade-off, das hängt von der Anwendung ab. Wenn es Sicherheit-und Kleinschreibung, SecureRandom ist im Allgemeinen die Empfehlung. Ansonsten ThreadLocalRandom ist eine alternative (schneller als SecureRandom oder die alten Zufälligaber nicht kryptografisch sicheren).
InformationsquelleAutor der Antwort Philipp Claßen
Benutze ich org.apache.Unterhaus.codec.binären.Base64 konvertieren einer UUID in eine url-sichere unique-string ist 22 Zeichen lang und hat das gleiche Einzigartigkeit als UUID.
Ich habe meine code auf Die Speicherung von UUID als base64-String
InformationsquelleAutor der Antwort stikkos
Habe ich nur kopiert UUID toString () - Methode und nur aktualisiert, um entfernen "-" aus. Es wird viel schneller und unkomplizierter als jede andere Lösung
Verwendung:
generateUUIDString(UUID.randomUUID())
Eine weitere Umsetzung mit der spiegelung
InformationsquelleAutor der Antwort Ravi Desai