logo

Java Generování UUID

UUID je široce používané 128bitové jedinečné identifikační číslo v počítačovém systému. Skládá se z hexadecimálních číslic oddělených čtyřmi pomlčkami. V této části budeme diskutovat co je UUID a jak náhodně vygenerovat UUID (verze 4) v Javě .

UUID

UUID znamená Univerzálně jedinečný identifikátor . UUID jsou standardizována Open Software Foundation (OSF). Je součástí distributivního výpočetního prostředí (DCE). UUID je jedinečné číslo dlouhé 36 znaků (128 bitů). Je také známý jako a Globálně jedinečný identifikátor (GUID).

Java Generování UUID

Použití UUID závisí na situaci, případech použití, složitosti a podmínkách. Některá z použití UUID jsou:

  • Používá se ke generování jedinečných URN (Uniform Resource Names).
  • Lze jej také použít ke generování ID transakcí.
  • Široce používané v kryptografických aplikacích.
  • Ve webové aplikaci jej lze použít ke generování ID relací.

Typy UUID

Existují čtyři typy UUID:

  • UUID založené na čase (verze 1)
  • UUID zabezpečení DCE (verze 2)
  • UUID podle názvu (verze 3 a 5)
  • Náhodně generované UUID (verze 4)

Varianty UUID

Existuje mnoho variant UUID ale Sůl louhovat varianta je široce používána. Dispozice varianty 2 tzn. Sůl louhovat je následující:

MSB se skládá z následujících nepodepsaných polí:

0xFFFFFFFF00000000 time_low

java hashmap

0x00000000FFFF0000 time_mid

Verze 0x00000000000F000

0x0000000000000FFF time_hi

LSB se skládá z následujících nepodepsaných polí:

Varianta 0xC000000000000000

0x3FFF000000000000 clock_seq

0x0000FFFFFFFFFFFF uzel

Pole variant obsahuje hodnotu, která identifikuje rozložení UUID. Výše diskutované rozložení platí pouze pro variantu 2.

Třída Java UUID

Pro generování UUID , programovací jazyk Java poskytuje třídu UUID. Třída patří do java.util balík. Rozšiřuje třídu Object a implementuje serializovatelný a srovnatelný rozhraní. Třída generuje neměnný UUID, který představuje 128bitovou hodnotu.

Metody třídy Java UUID

Metody Popis
clockSequence() Vrací hodnotu sekvence hodin přidruženou k tomuto zadanému UUID.
porovnat s() Metoda porovná UUID se specifickým UUID.
rovná se() Metoda porovná tento objekt se zadaným objektem.
fromString() Generuje UUID z reprezentace řetězce.
getLeastSignificantBits() Vrací nejméně významných 64 bitů ze 128bitové hodnoty tohoto UUID.
getMostSignificantBits() Vrací nejvýznamnějších 64 bitů ze 128bitové hodnoty tohoto UUID.
hashCode() Vrátí hash kód pro toto UUID.
názevUUIDFromBytes() Načte UUID verze 3 (na základě názvu) na základě zadaného pole bajtů.
uzel() Vrátí hodnotu uzlu, která je přidružena k zadanému UUID.
randomUUID() Vrací náhodně generované UUID.
časové razítko() Vrátí hodnotu časového razítka přidruženou k tomuto zadanému UUID.
toString() Vrátí objekt String představující toto UUID.
varianta() Používá se k získání varianty spojené se zadaným UUID.
verze() Můžeme získat číslo verze spojené se zadaným UUID.

Generování UUID

Následující příklad generuje náhodné UUID.

UUIDEpříklad.java

 import java.util.UUID; public class UUIDExample { public static void main(String args[]) { //generates random UUID UUID uuid=UUID.randomUUID(); System.out.println(uuid); } } 

Výstup:

 2b733549-d2cc-40f0-b7f3-9bfa9f3c1b89 

Převést z řetězce na UUID

StringToUUIDEexample.java

dělat, zatímco Java
 import java.util.UUID; public class StringtoUUIDExample { public static void main(String args[]) { //randomly generates a UUID UUID uuid = UUID.randomUUID(); System.out.println('Randomly Generated UUID: '+uuid); //converts the randomly generated UUID into String String uuidAsString = uuid.toString(); System.out.println('UUID as String: '+uuidAsString); //generates a UUID from the String UUID sameUuid = UUID.fromString(uuidAsString); System.out.println('UUID from String: '+sameUuid); //compares UUID generated from the string with the randomly generated UUID System.out.println(sameUuid.equals(uuid)); } } 

Výstup:

 Randomly Generated UUID: fe8a03d7-6495-4231-9843-8ee2f5282620 UUID as String: fe8a03d7-6495-4231-9843-8ee2f5282620 UUID from String: fe8a03d7-6495-4231-9843-8ee2f5282620 true