🛠️

Whiz Tools

Build • Create • Innovate

Kalkulator Obwodu Zwilżonego dla Różnych Kształtów

Oblicz obwód zwilżony dla różnych kształtów kanałów, w tym trapezów, prostokątów/kwadratów i rur okrągłych. Niezbędne w inżynierii hydraulicznej i mechanice płynów.

Generator ULID

Wygenerowany ULID:

Struktura ULID


Znacznik czasu (10 znaków)

Losowość (16 znaków)
📚

Dokumentacja

Generator ULID

Wprowadzenie

ULID (Uniwersalny Unikalny Identyfikator Sortowalny Leksykograficznie) to unikalny identyfikator, który łączy znacznik czasu z danymi losowymi, aby stworzyć ciąg znaków o długości 26 znaków. ULID-y zostały zaprojektowane w celu zapewnienia sortowalności leksykograficznej, zachowując jednocześnie wysoki stopień unikalności i losowości.

Struktura ULID

ULID składa się z dwóch głównych części:

  1. Znacznik czasu (10 znaków): Pierwsze 10 znaków reprezentuje czas w milisekundach od epoki Unix (1970-01-01).
  2. Losowość (16 znaków): Pozostałe 16 znaków jest generowanych przy użyciu kryptograficznie bezpiecznych danych losowych.

Ostateczny 26-znakowy ciąg jest kodowany przy użyciu alfabetu base32 Crockforda (0-9 i A-Z, z wyłączeniem I, L, O i U).

Wzór

ULID jest generowany przy użyciu następujących kroków:

  1. Wygeneruj znacznik czasu 48-bitowego (milisekundy od epoki Unix).
  2. Wygeneruj 80 bitów kryptograficznie bezpiecznych danych losowych.
  3. Zakoduj połączone 128 bitów przy użyciu kodowania base32 Crockforda.

Obliczenia

Generator ULID wykonuje następujące kroki:

  1. Pobierz bieżący znacznik czasu w milisekundach.
  2. Wygeneruj 10 losowych bajtów (80 bitów) przy użyciu kryptograficznie bezpiecznego generatora liczb losowych.
  3. Połącz znacznik czasu i dane losowe w 128-bitową liczbę całkowitą.
  4. Zakoduj 128-bitową liczbę całkowitą przy użyciu kodowania base32 Crockforda.

Przypadki użycia

ULID-y są przydatne w różnych scenariuszach, w tym:

  1. Klucze bazy danych: ULID-y mogą być używane jako unikalne identyfikatory dla rekordów w bazie danych, zapewniając unikalność i sortowalność.
  2. Systemy rozproszone: W rozproszonych środowiskach ULID-y mogą być generowane bez koordynacji między węzłami.
  3. Logowanie i śledzenie: ULID-y mogą być używane do oznaczania wpisów dziennika lub śledzenia zdarzeń, zapewniając sortowalny i unikalny identyfikator.
  4. Identyfikatory przyjazne dla URL: ULID-y są bezpieczne dla URL i mogą być używane w aplikacjach internetowych jako identyfikatory w URL-ach.

Alternatywy

Chociaż ULID-y są wszechstronne, istnieją inne systemy unikalnych identyfikatorów, które warto rozważyć:

  1. UUID (Uniwersalny Unikalny Identyfikator): 128-bitowy identyfikator, który nie zawiera komponentu znaczników czasu.
  2. KSUID (K-sortowalny Unikalny Identyfikator): Podobny do ULID, ale z innym kodowaniem znaczników czasu.
  3. Snowflake ID: System generacji unikalnych identyfikatorów Twittera, który zawiera znacznik czasu i identyfikator węzła.

Historia

ULID-y zostały wprowadzone w 2016 roku przez Alizaina Feerastę jako alternatywa dla UUID. Zostały zaprojektowane w celu rozwiązania niektórych ograniczeń UUID, szczególnie pod względem sortowalności i czytelności. Specyfikacja ULID pozostaje stabilna od momentu wprowadzenia, a różne implementacje są dostępne w różnych językach programowania.

Przykłady

Oto kilka przykładów kodu do generowania ULID w różnych językach programowania:

1// Implementacja w 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

Te przykłady pokazują, jak generować ULID-y w JavaScript, Pythonie i Javie. Możesz dostosować te funkcje do swoich specyficznych potrzeb lub zintegrować je w większych systemach wymagających unikalnych identyfikatorów.

Źródła

  1. "Specyfikacja ULID." GitHub, https://github.com/ulid/spec. Dostęp 2 sierpnia 2024.
  2. "Kodowanie base32 Crockforda." Kodowanie Base32, http://www.crockford.com/base32.html. Dostęp 2 sierpnia 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Dostęp 2 sierpnia 2024.