Niisutatud ümbermõõdu kalkulaator erinevate kanalite jaoks
Arvutage niisutatud ümbermõõt erinevate kanalite kujude jaoks, sealhulgas trapetsid, ristkülikud/ruudud ja ümmargused torud. Oluline hüdraulikatehnika ja vedelikumehaanika rakendustes.
ULID generaator
Genereeritud ULID:
ULID struktuur
Ajalõik (10 tähemärki)
Juhuslikkus (16 tähemärki)
Dokumentatsioon
ULID Generaator
Sissejuhatus
ULID (Universaalselt Unikaalne Lexikograafiliselt Sorteeritav Identifikaator) on unikaalne identifikaator, mis ühendab ajatempli juhuslike andmetega, et luua 26-täheline string. ULID-id on loodud olema lexikograafiliselt sorteeritavad, säilitades samal ajal kõrge unikaalsuse ja juhuslikkuse.
ULID Struktuur
ULID koosneb kahest peamisest osast:
- Aeg (10 tähemärki): Esimesed 10 tähemärki esindavad aega millisekundites alates Unix'i ajast (1970-01-01).
- Juhuslikkus (16 tähemärki): Ülejäänud 16 tähemärki genereeritakse krüptograafiliselt turvaliste juhuslike andmete abil.
Tulemusena saadud 26-täheline string kodeeritakse Crockfordi base32 tähestikus (0-9 ja A-Z, välja arvatud I, L, O ja U).
Valem
ULID genereeritakse järgmiste sammude abil:
- Genereeri 48-bitine ajatemple (millisekundid alates Unix'i ajast).
- Genereeri 80 bitti krüptograafiliselt turvalisi juhuslikke andmeid.
- Kodeeri kombineeritud 128 bitti Crockfordi base32 kodeerimise abil.
Arvutus
ULID generaator täidab järgmisi samme:
- Saada praegune ajatemper millisekundites.
- Genereeri 10 juhuslikku bitti (80 bitti) krüptograafiliselt turvalise juhusliku arvu generaatori abil.
- Kombineeri ajatemper ja juhuslikud andmed 128-bitiseks täisarvuks.
- Kodeeri 128-bitine täisarv Crockfordi base32 kodeerimise abil.
Kasutusalad
ULID-id on kasulikud erinevates stsenaariumites, sealhulgas:
- Andmebaasi võtmed: ULID-e saab kasutada unikaalsete identifikaatoritena andmebaasi rekordite jaoks, tagades unikaalsuse ja sorteeritavuse.
- Jaotatud süsteemid: Jaotatud keskkondades saab ULID-e genereerida ilma sõlmede vahel koordineerimata.
- Logimine ja jälgimine: ULID-e saab kasutada logikirjete märgistamiseks või sündmuste jälgimiseks, pakkudes sorteeritavat ja unikaalset identifikaatorit.
- URL-sõbralikud ID-d: ULID-id on URL-turvalised ja neid saab kasutada veebirakendustes identifikaatoritena URL-ides.
Alternatiivid
Kuigi ULID-id on mitmekesised, on ka teisi unikaalsete identifikaatorite süsteeme, mida kaaluda:
- UUID (Universaalselt Unikaalne Identifikaator): 128-bitine identifikaator, mis ei sisalda ajatemplit.
- KSUID (K-sortitav Unikaalne Identifikaator): Sarnane ULID-ile, kuid erineva ajatempli kodeerimisega.
- Snowflake ID: Twitteri jaotatud unikaalse ID genereerimise süsteem, mis sisaldab ajatemplit ja töötaja ID-d.
Ajalugu
ULID-id tutvustas 2016. aastal Alizain Feerasta alternatiivina UUID-dele. Need loodi, et lahendada mõned UUID-de piirangud, eriti sorteeritavuse ja loetavuse osas. ULID spetsifikatsioon on alates selle tutvustamisest püsinud stabiilsena, erinevad rakendused on saadaval erinevates programmeerimiskeeltes.
Näited
Siin on mõned koodinäited ULID-de genereerimiseks erinevates programmeerimiskeeltes:
1// JavaScripti rakendus
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## Pythoni rakendus
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// Java rakendus
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 // Kodeeri ajatemper
16 for (int i = 9; i >= 0; i--) {
17 result.append(ENCODING_CHARS[(int) (timestamp % 32)]);
18 timestamp /= 32;
19 }
20 // Kodeeri juhuslikkus
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
Need näited demonstreerivad, kuidas genereerida ULID-e JavaScriptis, Pythoni ja Java-s. Saate neid funktsioone kohandada vastavalt oma konkreetsetele vajadustele või integreerida need suurematesse süsteemidesse, mis vajavad unikaalseid identifikaatoreid.
Viidatud allikad
- "ULID Spetsifikatsioon." GitHub, https://github.com/ulid/spec. Juurdepääs 2. aug. 2024.
- "Crockfordi Base32 Kodeerimine." Base32 Kodeerimine, http://www.crockford.com/base32.html. Juurdepääs 2. aug. 2024.
- "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Juurdepääs 2. aug. 2024.
Tagasiside
Kliki tagasiside teavitusele, et alustada tagasiside andmist selle tööriista kohta
Seotud tööriistad
Avasta rohkem tööriistu, mis võivad olla kasulikud sinu töövoo jaoks