🛠️

Whiz Tools

Build • Create • Innovate

Benetzter Umfang Rechner für verschiedene Kanalformen

Berechnen Sie den benetzten Umfang für verschiedene Kanalformen, einschließlich Trapeze, Rechtecke/Quadrate und kreisförmige Rohre. Wesentlich für Anwendungen in der Wasserbau- und Strömungsmechanik.

ULID-Generator

Generierte ULID:

ULID-Struktur


Zeitstempel (10 Zeichen)

Zufälligkeit (16 Zeichen)
📚

Dokumentation

ULID-Generator

Einführung

Ein ULID (Universally Unique Lexicographically Sortable Identifier) ist ein eindeutiger Bezeichner, der einen Zeitstempel mit zufälligen Daten kombiniert, um eine 26-Zeichen lange Zeichenkette zu erstellen. ULIDs sind so konzipiert, dass sie lexikografisch sortierbar sind und gleichzeitig ein hohes Maß an Eindeutigkeit und Zufälligkeit aufweisen.

Struktur eines ULID

Ein ULID besteht aus zwei Hauptteilen:

  1. Zeitstempel (10 Zeichen): Die ersten 10 Zeichen stellen die Zeit in Millisekunden seit der Unix-Epoche (1970-01-01) dar.
  2. Zufälligkeit (16 Zeichen): Die verbleibenden 16 Zeichen werden mit kryptografisch sicheren Zufallsdaten generiert.

Die resultierende 26-Zeichen lange Zeichenkette wird mit dem Crockford's Base32-Alphabet kodiert (0-9 und A-Z, ausgenommen I, L, O und U).

Formel

Der ULID wird mit den folgenden Schritten generiert:

  1. Generieren Sie einen 48-Bit-Zeitstempel (Millisekunden seit der Unix-Epoche).
  2. Generieren Sie 80 Bit kryptografisch sichere Zufallsdaten.
  3. Kodieren Sie die kombinierten 128 Bit mit der Crockford's Base32-Kodierung.

Berechnung

Der ULID-Generator führt die folgenden Schritte aus:

  1. Holen Sie sich den aktuellen Zeitstempel in Millisekunden.
  2. Generieren Sie 10 zufällige Bytes (80 Bit) mit einem kryptografisch sicheren Zufallszahlengenerator.
  3. Kombinieren Sie den Zeitstempel und die Zufallsdaten zu einer 128-Bit-Ganzzahl.
  4. Kodieren Sie die 128-Bit-Ganzzahl mit der Crockford's Base32-Kodierung.

Anwendungsfälle

ULIDs sind in verschiedenen Szenarien nützlich, einschließlich:

  1. Datenbankschlüssel: ULIDs können als eindeutige Bezeichner für Datenbankeinträge verwendet werden, um Eindeutigkeit und Sortierbarkeit zu gewährleisten.
  2. Verteilte Systeme: In verteilten Umgebungen können ULIDs ohne Koordination zwischen Knoten generiert werden.
  3. Protokollierung und Verfolgung: ULIDs können verwendet werden, um Protokolleinträge oder Ereignisse zu kennzeichnen und einen sortierbaren und eindeutigen Bezeichner bereitzustellen.
  4. URL-freundliche IDs: ULIDs sind URL-sicher und können in Webanwendungen als Bezeichner in URLs verwendet werden.

Alternativen

Obwohl ULIDs vielseitig sind, gibt es andere Systeme für eindeutige Bezeichner, die zu berücksichtigen sind:

  1. UUID (Universally Unique Identifier): Ein 128-Bit-Bezeichner, der keinen Zeitstempel enthält.
  2. KSUID (K-Sortable Unique IDentifier): Ähnlich wie ULID, aber mit einer anderen Zeitstempelkodierung.
  3. Snowflake-ID: Das verteilte eindeutige ID-Generierungssystem von Twitter, das einen Zeitstempel und eine Worker-ID enthält.

Geschichte

ULIDs wurden 2016 von Alizain Feerasta als Alternative zu UUIDs eingeführt. Sie wurden entwickelt, um einige Einschränkungen von UUIDs zu adressieren, insbesondere in Bezug auf Sortierbarkeit und Lesbarkeit. Die ULID-Spezifikation ist seit ihrer Einführung stabil geblieben, mit verschiedenen Implementierungen in verschiedenen Programmiersprachen.

Beispiele

Hier sind einige Codebeispiele zur Generierung von ULIDs in verschiedenen Programmiersprachen:

1// JavaScript-Implementierung
2function generateULID() {
3  const timestamp = Date.now().toString(36).padStart(10, '0');
4  const randomness = crypto.getRandomValues(new Uint8Array(16))
5    .reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
6  return (timestamp + randomness).toUpperCase();
7}
8
9console.log(generateULID());
10

Diese Beispiele zeigen, wie man ULIDs in JavaScript, Python und Java generiert. Sie können diese Funktionen an Ihre spezifischen Bedürfnisse anpassen oder in größere Systeme integrieren, die eindeutige Bezeichner benötigen.

Referenzen

  1. "ULID-Spezifikation." GitHub, https://github.com/ulid/spec. Abgerufen am 2. Aug. 2024.
  2. "Crockford's Base32-Kodierung." Base32-Kodierung, http://www.crockford.com/base32.html. Abgerufen am 2. Aug. 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Abgerufen am 2. Aug. 2024.