🛠️

Whiz Tools

Build • Create • Innovate

Kikokotoo cha Mzunguko wa Maji kwa Mifereji na Mabomba

Hesabu mzunguko wa maji kwa maumbo mbalimbali ya mifereji ikiwa ni pamoja na trapezoidi, mstatili/mraba, na mabomba ya mviringo. Muhimu kwa matumizi ya uhandisi wa majimaji na mitambo ya maji.

Kizazi cha ULID

ULID iliyozalishwa:

Muundo wa ULID


Wakati (herufi 10)

Nasibu (herufi 16)
📚

Hati

Kizazi cha ULID

Utangulizi

ULID (Universally Unique Lexicographically Sortable Identifier) ni kitambulisho cha kipekee kinachounganisha muda na data ya nasibu ili kuunda mfuatano wa herufi 26. ULIDs zimeundwa kuwa na uwezo wa kuandikwa kwa lexicographically wakati wa kudumisha kiwango cha juu cha kipekee na nasibu.

Muundo wa ULID

ULID ina sehemu mbili kuu:

  1. Muda (herufi 10): Herufi 10 za kwanza zinawakilisha wakati katika milisekunde tangu Epoch ya Unix (1970-01-01).
  2. Nasibu (herufi 16): Herufi 16 zilizobaki zinaundwa kwa kutumia data ya nasibu ya usalama wa kifyatu.

Mfuatano wa herufi 26 uliofikiwa unatumia alfabeti ya Crockford's base32 (0-9 na A-Z, ikiondoa I, L, O, na U).

Formula

ULID inazalishwa kwa kutumia hatua zifuatazo:

  1. Zalisha muda wa bits 48 (milisekunde tangu Epoch ya Unix).
  2. Zalisha bits 80 za data ya nasibu ya usalama wa kifyatu.
  3. Pata mchanganyiko wa bits 128 kwa kutumia usimbuaji wa Crockford's base32.

Hesabu

Mzalishaji wa ULID unatekeleza hatua zifuatazo:

  1. Pata muda wa sasa katika milisekunde.
  2. Zalisha bytes 10 za nasibu (bits 80) kwa kutumia jenereta ya nambari ya nasibu ya usalama wa kifyatu.
  3. Changanya muda na data ya nasibu kuwa integer ya bits 128.
  4. Fanya usimbuaji wa integer ya bits 128 kwa kutumia usimbuaji wa Crockford's base32.

Matumizi

ULIDs ni muhimu katika hali mbalimbali, ikiwa ni pamoja na:

  1. Funguo za hifadhidata: ULIDs zinaweza kutumika kama vitambulisho vya kipekee kwa rekodi za hifadhidata, kuhakikisha kipekee na uwezo wa kuandikwa.
  2. Mifumo iliyosambazwa: Katika mazingira yaliyosambazwa, ULIDs zinaweza kuzalishwa bila uratibu kati ya nodi.
  3. Kurekodi na kufuatilia: ULIDs zinaweza kutumika kuweka alama za entries za log au kufuatilia matukio, kutoa kitambulisho kinachoweza kuandikwa na kipekee.
  4. Vitambulisho vya kirafiki kwa URL: ULIDs ni salama kwa URL na zinaweza kutumika katika programu za wavuti kama vitambulisho katika URLs.

Mbadala

Ingawa ULIDs ni za matumizi mengi, kuna mifumo mingine ya vitambulisho vya kipekee ya kuzingatia:

  1. UUID (Universally Unique Identifier): Kitambulisho cha bits 128 ambacho hakijumuishi kipengele cha muda.
  2. KSUID (K-Sortable Unique IDentifier): Kifananishi na ULID lakini na usimbuaji tofauti wa muda.
  3. Snowflake ID: Mfumo wa uzalishaji wa vitambulisho vya kipekee wa Twitter, ambao unajumuisha muda na kitambulisho cha mfanyakazi.

Historia

ULIDs zilianzishwa mwaka 2016 na Alizain Feerasta kama mbadala wa UUIDs. Ziliundwa ili kushughulikia baadhi ya vikwazo vya UUIDs, hasa katika suala la uwezo wa kuandikwa na usomaji. Spec ya ULID imebaki thabiti tangu kuanzishwa kwake, na utekelezaji mbalimbali zinapatikana katika lugha tofauti za programu.

Mifano

Hapa kuna mifano ya msimbo wa kuzalisha ULIDs katika lugha tofauti za programu:

1// Utekelezaji wa JavaScript
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

Mifano hii inaonyesha jinsi ya kuzalisha ULIDs katika JavaScript, Python, na Java. Unaweza kubadilisha kazi hizi kulingana na mahitaji yako maalum au kuziunganisha katika mifumo kubwa inayo hitaji vitambulisho vya kipekee.

Marejeleo

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