Christoph: Zufallswert 6-stellig

Beitrag lesen

Moin.

da würde ich dann eher dafür sorgen, dass -auch wenn das Programm in mehreren Instanzen läuft- die Vergabe der Nummer ein *einer* zentralen Stelle erfolgt [...]
[...] Ich war davon ausgegangen, dass man dadurch damit rechnen müsste, dass mehrere Programme gleichzeitig auf dei Nummernquelle zugreifen.

Schreib den Wert des globalen Zählers in eine Datei. Dank Locking-Mechanismen des Dateisystems ist es möglich, den Wert über Instanzen hinweg konsistent zu halten.

Müssen diese 6stelligen Kennungen unbedingt rein numerisch sein?
Ich habe herausgefunden, dass wir tatsächlich alphanumerische Werte benutzen können.

Wie wär's denn mit simpler Hex-Darstellung? Bei 6 Ziffern stehen dann 3 Byte, d.h. 2^24 ≈ 16.8 Mio Werte zur Verfügung. Das würde die Umrechnung erleichtern, da die Ausgabe hexadezimaler Werte in den Standardbibliotheken der meisten Programmiersprachen zu finden ist. Ansonsten ist der Algorithmus für die Kodierung der Zahl mit beliebigem Alphabet aber nicht wirklich kompliziert.

Christoph

PS: Statt dem UNIX timestamp könnte auch die vergangene Rechenzeit (clock ticks) als während der Laufzeit einer Instanz eindeutiger Wert verwendet werden, um Kollisionen zu vermeiden.