Nedvesített Kerület Kalkulátor - Csatornaformák Számítása
Számítsa ki a nedvesített kerületet különböző csatornaformákhoz, beleértve a trapézokat, téglalapokat/négyzeteket és kör alakú csöveket. Alapvető a hidraulikai mérnöki és folyadékmechanikai alkalmazásokhoz.
ULID Generátor
Generált ULID:
ULID Struktúra
Időbélyeg (10 karakter)
Véletlenszerűség (16 karakter)
Dokumentáció
ULID Generátor
Bevezetés
A ULID (Universally Unique Lexicographically Sortable Identifier) egy egyedi azonosító, amely egy időbélyeget kombinál véletlenszerű adatokkal, hogy létrehozzon egy 26 karakterből álló karakterláncot. A ULID-ok úgy lettek tervezve, hogy lexikográfiailag rendezhetőek legyenek, miközben magas fokú egyediséget és véletlenszerűséget biztosítanak.
A ULID szerkezete
A ULID két fő részből áll:
- Időbélyeg (10 karakter): Az első 10 karakter az időt képviseli, amely a Unix Epoch óta eltelt milliszekundumok számát jelenti (1970-01-01).
- Véletlenszerűség (16 karakter): A fennmaradó 16 karaktert kriptográfiailag biztonságos véletlenszám-generátorral állítanak elő.
Az eredményül kapott 26 karakterből álló karakterlánc a Crockford-féle base32 ábécé (0-9 és A-Z, kivéve I, L, O és U) használatával van kódolva.
Képlet
A ULID a következő lépések végrehajtásával jön létre:
- Generálj egy 48 bites időbélyeget (milliszekundumok a Unix Epoch óta).
- Generálj 80 bit kriptográfiailag biztonságos véletlenszámot.
- Kódold a kombinált 128 bitet a Crockford-féle base32 kódolással.
Számítás
A ULID generátor a következő lépéseket hajtja végre:
- Szerezd meg a jelenlegi időbélyeget milliszekundumban.
- Generálj 10 véletlen bájtot (80 bit) kriptográfiailag biztonságos véletlenszám-generátor használatával.
- Kombináld az időbélyeget és a véletlenszerű adatokat egy 128 bites egész számmá.
- Kódold a 128 bites egész számot a Crockford-féle base32 kódolással.
Felhasználási esetek
A ULID-ok hasznosak különböző forgatókönyvekben, beleértve:
- Adatbázis kulcsok: A ULID-ok egyedi azonosítóként használhatók az adatbázis rekordok számára, biztosítva az egyediséget és a rendezhetőséget.
- Elosztott rendszerek: Elosztott környezetekben a ULID-ok koordináció nélkül generálhatók a csomópontok között.
- Naplózás és nyomozás: A ULID-ok felhasználhatók a naplóbejegyzések vagy események megjelölésére, biztosítva egy rendezhető és egyedi azonosítót.
- URL-barát azonosítók: A ULID-ok URL-biztonságosak és használhatók webalkalmazásokban az URL-ek azonosítóiként.
Alternatívák
Bár a ULID-ok sokoldalúak, más egyedi azonosító rendszereket is érdemes figyelembe venni:
- UUID (Universally Unique Identifier): Egy 128 bites azonosító, amely nem tartalmaz időbélyeg komponenset.
- KSUID (K-Sortable Unique IDentifier): Hasonló a ULID-hoz, de más időbélyeg kódolást használ.
- Snowflake ID: A Twitter elosztott egyedi azonosító-generáló rendszere, amely időbélyeget és munkásazonosítót tartalmaz.
Történelem
A ULID-okat 2016-ban vezették be Alizain Feerasta által, mint alternatívát a UUID-okhoz. Azért tervezték őket, hogy kezeljék a UUID-ok néhány korlátozását, különösen a rendezhetőség és olvashatóság terén. A ULID specifikációja azóta stabil maradt, különböző programozási nyelvekben elérhető implementációkkal.
Példák
Íme néhány kód példa ULID-ok generálására különböző programozási nyelvekben:
1// JavaScript implementáció
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## Python implementáció
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 implementáció
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 // Időbélyeg kódolása
16 for (int i = 9; i >= 0; i--) {
17 result.append(ENCODING_CHARS[(int) (timestamp % 32)]);
18 timestamp /= 32;
19 }
20 // Véletlenszerűség kódolása
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
Ezek a példák bemutatják, hogyan lehet ULID-okat generálni JavaScript, Python és Java nyelveken. Ezeket a funkciókat az Ön specifikus igényeihez igazíthatja, vagy integrálhatja őket nagyobb rendszerekbe, amelyek egyedi azonosítókra van szükségük.
Hivatkozások
- "ULID Specification." GitHub, https://github.com/ulid/spec. Hozzáférés: 2024. augusztus 2.
- "Crockford's Base32 Encoding." Base32 Kódolás, http://www.crockford.com/base32.html. Hozzáférés: 2024. augusztus 2.
- "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Hozzáférés: 2024. augusztus 2.
Visszajelzés
Kattints a visszajelzés értesítésre, hogy elkezdhesd a visszajelzést erről az eszközről
Kapcsolódó Eszközök
Fedezd fel a további eszközöket, amelyek hasznosak lehetnek a munkafolyamatodhoz