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:
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.
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%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.
Tags und Links java uniqueidentifier