Kalkulačka pre výpočet zmáčaného obvodu kanálov
Vypočítajte zmáčaný obvod pre rôzne tvary kanálov vrátane lichobežníkov, obdĺžnikov/štvorcov a kruhových potrubí. Nevyhnutné pre aplikácie v hydraulickom inžinierstve a mechanike tekutín.
Generátor ULID
Vygenerovaný ULID:
Štruktúra ULID
Časová pečiatka (10 znakov)
Náhodnosť (16 znakov)
Dokumentácia
ULID Generátor
Úvod
ULID (Universally Unique Lexicographically Sortable Identifier) je jedinečný identifikátor, ktorý kombinuje časovú pečať s náhodnými údajmi na vytvorenie 26-znakového reťazca. ULID-y sú navrhnuté tak, aby boli lexikograficky usporiadané a zároveň si zachovali vysoký stupeň jedinečnosti a náhodnosti.
Štruktúra ULID
ULID sa skladá z dvoch hlavných častí:
- Časová pečať (10 znakov): Prvých 10 znakov predstavuje čas v milisekundách od Unix Epoch (1970-01-01).
- Náhodnosť (16 znakov): Zvyšných 16 znakov je generovaných pomocou kryptograficky bezpečných náhodných údajov.
Výsledný 26-znakový reťazec je kódovaný pomocou Crockfordovej base32 abecedy (0-9 a A-Z, s výnimkou I, L, O a U).
Formula
ULID sa generuje pomocou nasledujúcich krokov:
- Vygenerujte 48-bitovú časovú pečať (milisekundy od Unix Epoch).
- Vygenerujte 80 bitov kryptograficky bezpečných náhodných údajov.
- Kódujte kombinovaných 128 bitov pomocou Crockfordovej base32 kódovania.
Výpočet
Generátor ULID vykonáva nasledujúce kroky:
- Získajte aktuálny čas v milisekundách.
- Vygenerujte 10 náhodných bajtov (80 bitov) pomocou kryptograficky bezpečného generátora náhodných čísel.
- Kombinujte časovú pečať a náhodné údaje do 128-bitového celého čísla.
- Kódujte 128-bitové celé číslo pomocou Crockfordovej base32 kódovania.
Prípady použitia
ULID-y sú užitočné v rôznych scenároch, vrátane:
- Kľúče databázy: ULID-y môžu byť použité ako jedinečné identifikátory pre záznamy v databáze, čím sa zabezpečí jedinečnosť a usporiadateľnosť.
- Distribuované systémy: V distribuovaných prostrediach môžu byť ULID-y generované bez koordinácie medzi uzlami.
- Zaznamenávanie a sledovanie: ULID-y môžu byť použité na označovanie záznamov alebo sledovanie udalostí, pričom poskytujú usporiadateľný a jedinečný identifikátor.
- ID priateľské k URL: ULID-y sú bezpečné pre URL a môžu byť použité vo webových aplikáciách ako identifikátory v URL.
Alternatívy
Aj keď sú ULID-y všestranné, existujú aj iné systémy jedinečných identifikátorov, ktoré treba zvážiť:
- UUID (Universally Unique Identifier): 128-bitový identifikátor, ktorý neobsahuje komponentu časovej pečate.
- KSUID (K-Sortable Unique IDentifier): Podobné ULID, ale s iným kódovaním časovej pečate.
- Snowflake ID: Systém generovania jedinečných ID od Twitteru, ktorý obsahuje časovú pečať a ID pracovníka.
História
ULID-y boli predstavené v roku 2016 Alizainom Feerastom ako alternatíva k UUID. Boli navrhnuté tak, aby riešili niektoré obmedzenia UUID, najmä pokiaľ ide o usporiadateľnosť a čitateľnosť. Špecifikácia ULID zostala stabilná od svojho zavedenia, pričom rôzne implementácie sú k dispozícii v rôznych programovacích jazykoch.
Príklady
Tu sú niektoré kódové príklady na generovanie ULID v rôznych programovacích jazykoch:
1// Implementácia v JavaScripte
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
1## Implementácia v Pythone
2import time
3import secrets
4import base64
5
6def generate_ulid():
7 timestamp = int(time.time() * 1000).to_bytes(6, byteorder="big")
8 randomness = secrets.token_bytes(10)
9 return base64.b32encode(timestamp + randomness).decode("ascii").lower()
10
11print(generate_ulid())
12
1// Implementácia v Jave
2import java.security.SecureRandom;
3import java.time.Instant;
4
5public class ULIDGenerator {
6 private static final SecureRandom random = new SecureRandom();
7 private static final char[] ENCODING_CHARS = "0123456789ABCDEFGHJKMNPQRSTVWXYZ".toCharArray();
8
9 public static String generateULID() {
10 long timestamp = Instant.now().toEpochMilli();
11 byte[] randomness = new byte[10];
12 random.nextBytes(randomness);
13
14 StringBuilder result = new StringBuilder();
15 // Kódujte časovú pečať
16 for (int i = 9; i >= 0; i--) {
17 result.append(ENCODING_CHARS[(int) (timestamp % 32)]);
18 timestamp /= 32;
19 }
20 // Kódujte náhodnosť
21 for (byte b : randomness) {
22 result.append(ENCODING_CHARS[b & 31]);
23 }
24 return result.toString();
25 }
26
27 public static void main(String[] args) {
28 System.out.println(generateULID());
29 }
30}
31
Tieto príklady demonštrujú, ako generovať ULID-y v JavaScripte, Pythone a Jave. Môžete tieto funkcie prispôsobiť svojim konkrétnym potrebám alebo ich integrovať do väčších systémov, ktoré vyžadujú jedinečné identifikátory.
Odkazy
- "ULID Špecifikácia." GitHub, https://github.com/ulid/spec. Prístup 2. augusta 2024.
- "Crockfordova base32 kódovanie." Base32 Kódovanie, http://www.crockford.com/base32.html. Prístup 2. augusta 2024.
- "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Prístup 2. augusta 2024.
Spätná väzba
Kliknite na toast so spätnou väzbou, aby ste začali dávať spätnú väzbu o tomto nástroji
Súvisiace nástroje
Objavte ďalšie nástroje, ktoré by mohli byť užitočné pre váš pracovný tok