Wie erzeuge ich einen eindeutigen Bezeichner fester Länge in Java?

8

Ich versuche, einen eindeutigen Bezeichner einer festen Länge zu erzeugen, wie die IDs, die von Megaupload für die hochgeladenen Dateien generiert werden.

Zum Beispiel:

  • ALGYTAB5
  • BCLD23A6

In diesem Beispiel sind von A-Z und 0-9 und mit einer festen Länge von 8 die gesamten verschiedenen Kombinationen 2.821.109.907.456.

Was ist, wenn eine der generierten ID bereits vergeben ist? Diese IDs werden in einer Datenbank gespeichert und sollten nicht mehr als einmal verwendet werden.

Wie kann ich das in Java erreichen?

Danke.

    
Alfredo Osorio 05.07.2011, 14:39
quelle

4 Antworten

4

Hmm ... Sie könnten eine kleinere GUID auf die folgende Art und Weise imitieren. Lassen Sie die ersten 4 Bytes Ihrer Zeichenkette die kodierte aktuelle Zeit sein - Sekunden, die nach Unix verstrichen sind. Und die letzten 4 nur eine zufällige Kombination. In diesem Fall würden zwei IDs nur zusammenfallen, weil sie in derselben Sekunde erstellt wurden. Und die Chancen dafür wären wegen der anderen 4 zufälligen Charaktere sehr gering.

Pseudocode:

%Vor%     
Armen Tsirunyan 05.07.2011, 14:43
quelle
1

Ich habe versucht @ Armen Lösung, aber ich möchte eine andere Lösung geben

%Vor%

Hoffe diese Hilfe!

    
Lunf 28.02.2014 03:03
quelle
0

Anhand der Datenbank prüfen wir, ob sie bereits existieren. Wenn die Anzahl der IDs im Vergleich zur möglichen Anzahl niedrig ist, sollten Sie relativ sicher sein.

Sie können sich auch die Klasse UUID ansehen (obwohl es 16-Byte-UUIDs sind).

    
Thomas 05.07.2011 14:45
quelle
0

Klingt wie ein Job für eine Hash-Funktion . Sie sind nicht 100% ig garantiert, dass eine Hash-Funktion einen eindeutigen Bezeichner zurückgibt, aber sie funktioniert meistens. Hash-Kollisionen müssen separat behandelt werden, aber es gibt viele Standardtechniken, in die Sie sich vertiefen können.

Wie Sie mit Kollisionen umgehen, hängt davon ab, wofür Sie diese eindeutige ID verwenden. Wenn es sich um eine einfache unidirektionale Kennung handelt, bei der Sie Ihrem Programm die ID geben und die Daten zurückgibt, können Sie einfach die nächste verfügbare ID im Falle einer Kollision verwenden.

    
tskuzzy 05.07.2011 14:47
quelle

Tags und Links