🛠️

Whiz Tools

Build • Create • Innovate

Sudrėkintos Perimetro Skaičiuoklė Skaičiavimams

Apskaičiuokite sudrėkintą perimetrą įvairioms kanalo formoms, įskaitant trapecijas, stačiakampius/kvadratus ir apvalius vamzdžius. Svarbu hidraulinės inžinerijos ir skysčių mechanikos taikymams.

ULID generatorius

Sugeneruotas ULID:

ULID struktūra


Laiko žyma (10 simbolių)

Atsitiktinumas (16 simbolių)
📚

Dokumentacija

ULID Generator

Įvadas

ULID (Universally Unique Lexicographically Sortable Identifier) yra unikalus identifikatorius, kuris sujungia laiko žymę su atsitiktiniais duomenimis, kad sukurtų 26 simbolių eilutę. ULID yra sukurti taip, kad būtų lexikografiškai rūšiuojami, tuo pačiu išlaikant aukštą unikalumo ir atsitiktinumo laipsnį.

ULID struktūra

ULID susideda iš dviejų pagrindinių dalių:

  1. Laiko žyma (10 simbolių): Pirmieji 10 simbolių atspindi laiką milisekundėmis nuo Unix epochos (1970-01-01).
  2. Atsitiktinumas (16 simbolių): Likę 16 simbolių yra sugeneruoti naudojant kriptografiškai saugius atsitiktinius duomenis.

Gautas 26 simbolių eilutė yra koduojama naudojant Crockford'o base32 abėcėlę (0-9 ir A-Z, neįskaitant I, L, O ir U).

Formulė

ULID generuojamas naudojant šiuos žingsnius:

  1. Sugeneruoti 48 bitų laiko žymę (milisekundės nuo Unix epochos).
  2. Sugeneruoti 80 bitų kriptografiškai saugius atsitiktinius duomenis.
  3. Koduoti sujungtus 128 bitus naudojant Crockford'o base32 kodavimą.

Apskaičiavimas

ULID generatorius atlieka šiuos žingsnius:

  1. Gauti dabartinę laiko žymę milisekundėmis.
  2. Sugeneruoti 10 atsitiktinių baitų (80 bitų) naudojant kriptografiškai saugų atsitiktinių skaičių generatorių.
  3. Sujungti laiko žymę ir atsitiktinius duomenis į 128 bitų sveikąjį skaičių.
  4. Koduoti 128 bitų sveikąjį skaičių naudojant Crockford'o base32 kodavimą.

Naudojimo atvejai

ULID yra naudingi įvairiose situacijose, įskaitant:

  1. Duomenų bazės raktai: ULID gali būti naudojami kaip unikalūs identifikatoriai duomenų bazės įrašams, užtikrinant unikalumą ir rūšiuojamumą.
  2. Išsklaidyti sistemai: Išsklaidytose aplinkose ULID gali būti generuojami be koordinacijos tarp mazgų.
  3. Žurnalavimas ir sekimas: ULID gali būti naudojami žurnalo įrašams arba sekimo įvykiams žymėti, suteikiant rūšiuojamą ir unikalų identifikatorių.
  4. URL draugiški ID: ULID yra saugūs URL ir gali būti naudojami žiniatinklio programose kaip identifikatoriai URL.

Alternatyvos

Nors ULID yra universalūs, yra ir kitų unikalių identifikatorių sistemų, kurias verta apsvarstyti:

  1. UUID (Universally Unique Identifier): 128 bitų identifikatorius, kuris neturi laiko žymės komponento.
  2. KSUID (K-Sortable Unique IDentifier): Panašus į ULID, bet su skirtingu laiko žymės kodavimu.
  3. Snowflake ID: Twitter'o išsklaidyto unikalių ID generavimo sistema, kuri apima laiko žymę ir darbuotojo ID.

Istorija

ULID buvo pristatyti 2016 metais Alizain Feerasta kaip alternatyva UUID. Jie buvo sukurti siekiant išspręsti kai kurias UUID ribas, ypač kalbant apie rūšiuojamumą ir skaitomumą. ULID specifikacija nuo jos pristatymo išliko stabili, o įvairios įgyvendinimo versijos yra prieinamos skirtingose programavimo kalbose.

Pavyzdžiai

Štai keletas kodo pavyzdžių, kaip generuoti ULID skirtingose programavimo kalbose:

1// JavaScript įgyvendinimas
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

Šie pavyzdžiai demonstruoja, kaip generuoti ULID JavaScript, Python ir Java kalbose. Galite pritaikyti šias funkcijas savo specifiniams poreikiams arba integruoti jas į didesnes sistemas, kurioms reikalingi unikalūs identifikatoriai.

Nuorodos

  1. "ULID specifikacija." GitHub, https://github.com/ulid/spec. Pasiekta 2024 m. rugpjūčio 2 d.
  2. "Crockford'o base32 kodavimas." Base32 kodavimas, http://www.crockford.com/base32.html. Pasiekta 2024 m. rugpjūčio 2 d.
  3. "UUID prieš ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Pasiekta 2024 m. rugpjūčio 2 d.