🛠️

Whiz Tools

Build • Create • Innovate

Våt perimeter-kalkylator för hydraulisk ingenjörskonst

Beräkna den våta perimetern för olika kanaltyper inklusive trapezoider, rektanglar/kvadrater och cirkulära rör. Viktigt för hydraulisk ingenjörskonst och strömningsmekanik.

ULID-generator

Genererad ULID:

ULID-struktur


Tidsstämpel (10 tecken)

Slumptal (16 tecken)
📚

Dokumentation

ULID Generator

Introduktion

En ULID (Universally Unique Lexicographically Sortable Identifier) är en unik identifierare som kombinerar en tidsstämpel med slumpmässiga data för att skapa en 26-teckens sträng. ULIDs är utformade för att vara lexikografiskt sorterbara samtidigt som de bibehåller en hög grad av unikhet och slumpmässighet.

Struktur av en ULID

En ULID består av två huvuddelar:

  1. Tidsstämpel (10 tecken): De första 10 tecknen representerar tiden i millisekunder sedan Unix Epoch (1970-01-01).
  2. Slumptal (16 tecken): De återstående 16 tecknen genereras med hjälp av kryptografiskt säkra slumpdata.

Den resulterande 26-teckens strängen kodas med hjälp av Crockfords base32-alphabet (0-9 och A-Z, exklusive I, L, O och U).

Formel

ULID:en genereras med följande steg:

  1. Generera en 48-bitars tidsstämpel (millisekunder sedan Unix Epoch).
  2. Generera 80 bitar kryptografiskt säkra slumpdata.
  3. Koda de kombinerade 128 bitarna med Crockfords base32-kodning.

Beräkning

ULID-generatorn utför följande steg:

  1. Hämta den aktuella tidsstämpeln i millisekunder.
  2. Generera 10 slumpmässiga byte (80 bitar) med hjälp av en kryptografiskt säker slumpgenerator.
  3. Kombinera tidsstämpeln och slumpdata till ett 128-bitars heltal.
  4. Koda det 128-bitars heltalet med hjälp av Crockfords base32-kodning.

Användningsområden

ULIDs är användbara i olika scenarier, inklusive:

  1. Databasnycklar: ULIDs kan användas som unika identifierare för databasposter, vilket säkerställer unikhet och sorterbarhet.
  2. Distribuerade system: I distribuerade miljöer kan ULIDs genereras utan samordning mellan noder.
  3. Loggning och spårning: ULIDs kan användas för att märka loggposter eller spåra händelser, vilket ger en sortbar och unik identifierare.
  4. URL-vänliga ID:n: ULIDs är URL-säkra och kan användas i webbapplikationer som identifierare i URL:er.

Alternativ

Även om ULIDs är mångsidiga finns det andra system för unika identifierare att överväga:

  1. UUID (Universally Unique Identifier): En 128-bitars identifierare som inte inkluderar en tidsstämpel.
  2. KSUID (K-Sortable Unique IDentifier): Liknande ULID men med en annan tidsstämpelkodning.
  3. Snowflake ID: Twitters distribuerade unika ID-genereringssystem, som inkluderar en tidsstämpel och arbets-ID.

Historia

ULIDs introducerades 2016 av Alizain Feerasta som ett alternativ till UUID:er. De utformades för att åtgärda vissa begränsningar hos UUID:er, särskilt när det gäller sorterbarhet och läsbarhet. ULID-specifikationen har förblivit stabil sedan dess introduktion, med olika implementationer tillgängliga i olika programmeringsspråk.

Exempel

Här är några kodexempel för att generera ULIDs i olika programmeringsspråk:

1// JavaScript-implementation
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

Dessa exempel visar hur man genererar ULIDs i JavaScript, Python och Java. Du kan anpassa dessa funktioner efter dina specifika behov eller integrera dem i större system som kräver unika identifierare.

Referenser

  1. "ULID Specification." GitHub, https://github.com/ulid/spec. Åtkomst 2 aug. 2024.
  2. "Crockford's Base32 Encoding." Base32 Encoding, http://www.crockford.com/base32.html. Åtkomst 2 aug. 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Åtkomst 2 aug. 2024.