Elettracompany.com

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java util uuid

Java.util.UUID класс в Java

Класс, представляющий неизменный универсальный уникальный идентификатор (UUID). UUID представляет 128-битное значение. Существуют разные варианты этих глобальных идентификаторов. Методы этого класса предназначены для манипулирования вариантом Лича-Зальца, хотя конструкторы допускают создание любого варианта UUID (описано ниже).
Существует четыре различных основных типа UUID: на основе времени, безопасности DCE, на основе имени и случайно сгенерированных UUID. Эти типы имеют значения версии 1, 2, 3 и 4 соответственно.

  • Используется для создания идентификатора сеанса в веб-приложении. Он также используется для создания идентификатора транзакции.
  • Расширяет класс Object .
  • Он реализует Сериализуемые и Сопоставимые интерфейсы.

Конструктор:

Создает новый UUID, используя указанные данные.
mostSigBits — самые значимые биты UUID
lessSigBits — младшие значащие биты UUID
Методы:

    int clockSequence (): значение тактовой последовательности, связанное с этим UUID.
    14-битное значение тактовой последовательности создается из поля тактовой последовательности этого UUID. Поле тактовой последовательности используется, чтобы гарантировать временную уникальность в основанном на времени UUID.
    Значение clockSequence имеет смысл только для основанного на времени UUID, который имеет тип версии 1. Если этот UUID не является основанным на времени UUID, тогда этот метод выдает исключение UnsupportedOperationException.

// Java-код, иллюстрирующий метод clockSequence ()

public static void main(String arg[]) throws

UUID gfg = UUID.fromString( «c81d4e2e-bcf2-11e6-869b-7df92533d2db» );

// проверка последовательности часов

int compareTo (UUID val): сравнивает этот UUID с указанным UUID.
Первый из двух UUID больше второго, если наиболее значимое поле, в котором отличаются UUID, больше для первого UUID.

// Java-код, иллюстрирующий метод compareTo ()

public static void main(String arg[])

// генерируем случайный UUID

UUID gfg1 = UUID.randomUUID();

UUID gfg2 = UUID.randomUUID();

int compare = gfg1.compareTo(gfg2);

System.out.println( «gfg1 is greater than gfg2» );

else if (compare== 0 )

System.out.println( «both are equal» );

System.out.println( «gfg1 is smaller than gfg2» );

boolean equals (Object obj): сравнивает этот объект с указанным объектом. Результат имеет значение true, если и только если аргумент не равен NULL, является объектом UUID, имеет тот же вариант и содержит то же значение, бит за битом, что и этот UUID.

// Java-код, иллюстрирующий метод equals ()

public static void main(String arg[])

// генерируем случайный UUID

UUID gfg1 = UUID.randomUUID();

UUID gfg2 = UUID.randomUUID();

System.out.println( «both are equal» );

System.out.println( «both are not same» );

static UUID fromString (String name): создает UUID из стандартного представления строки, как описано в методе toString ().

// Java-код, иллюстрирующий метод fromString ()

public static void main(String arg[])

// генерируем случайный UUID

UUID gfg = UUID.fromString( «e52232e1-0ded-4587-999f-4dd135a4a94f» );

System.out.println( «UUID is: » + gfg);

long getLeastSignificantBits (): Этот метод возвращает наименее значимые 64 бита 128-битного значения этого UUID.

// Java-код, иллюстрирующий метод getLeastSignificantBits ()

public static void main(String arg[])

UUID gfg = UUID.randomUUID();

// проверка младшего значащего бита

System.out.println( «Least significant bit » +

long getMostSignificantBits (): Этот метод возвращает наиболее значимые 64 бита 128-битного значения этого UUID.

// Java-код, иллюстрирующий бит getMostSignificantBits ()

public static void main(String arg[])

UUID gfg = UUID.randomUUID();

// проверка наиболее значимого бита

System.out.println( «Most significant bit » +

int hashCode (): этот метод возвращает хеш-код для этого UUID.

// Java-код, иллюстрирующий метод hashCode

public static void main(String arg[])

UUID gfg = UUID.randomUUID();

// проверка хеш-кода для этого UUID

System.out.println( «Hash code » +

static UUID nameUUIDFromBytes (byte [] name): Статическая фабрика для получения UUID типа 3 (на основе имени) на основе указанного байтового массива.

// Java-код, иллюстрирующий методы nameUUIDFromBytes ()

public static void main(String arg[]) throws

// создание байтового массива

// создаем UUID из массива

UUID gfg = UUID.nameUUIDFromBytes(b);

long node (): значение узла, связанное с этим UUID.
Значение 48-битного узла строится из поля узла этого UUID. Это поле предназначено для хранения адреса IEEE 802 компьютера, который сгенерировал этот UUID, чтобы гарантировать пространственную уникальность.
Значение узла имеет смысл только в основанном на времени UUID, который имеет тип версии 1. Если этот UUID не является основанным на времени UUID, тогда этот метод выдает исключение UnsupportedOperationException.

// Java-код, иллюстрирующий метод node ()

public static void main(String arg[])

UUID gfg = UUID.fromString( «c81d4e2e-bcf2-11e6-869b-7df92533d2db» );

// проверка значения узла для этого UUID

System.out.println( «Node value: «

static UUID randomUUID (): Статическая фабрика для извлечения UUID типа 4 (псевдослучайно сгенерированный). UUID генерируется с использованием криптографически сильного генератора псевдослучайных чисел.

// Java-код, иллюстрирующий метод randomUUID ()

public static void main(String arg[]) throws

UUID gfg = UUID.randomUUID();

// проверка этого UUID

long timestamp (): значение метки времени, связанное с этим UUID.
60-битное значение временной метки создается из полей time_low, time_mid и time_hi этого UUID. Полученная временная метка измеряется в единицах по 100 наносекунд с полуночи 15 октября 1582 года по Гринвичу.
Значение временной метки имеет смысл только в UUID на основе времени, который имеет тип версии 1. Если этот UUID не является UUID на основе времени, тогда этот метод генерирует исключение UnsupportedOperationException.

// Java-код, иллюстрирующий метод timeStamp ()

public static void main(String arg[]) throws

UUID gfg = UUID.fromString( «c81d4e2e-bcf2-11e6-869b-7df92533d2db» );

// проверка временного интервала для этого UUID

System.out.println( «time stamp: «

String toString (): этот метод возвращает объект String, представляющий этот UUID.

// Java-код, иллюстрирующий метод toString

public static void main(String arg[]) throws

UUID gfg = UUID.fromString( «c81d4e2e-bcf2-11e6-869b-7df92533d2db» );

// проверка формата строки для этого UUID

System.out.println( «String equivalent: «

int вариант (): номер варианта, связанный с этим UUID. Номер варианта описывает расположение UUID.

// Java-код, иллюстрирующий метод option ()

public static void main(String arg[]) throws

UUID gfg = UUID.fromString( «c81d4e2e-bcf2-11e6-869b-7df92533d2db» );

// проверка номера варианта для этого UUID

System.out.println( «variant number is: «

  • int version (): номер версии, связанный с этим UUID. Номер версии описывает, как был создан этот UUID. Номер версии имеет следующее значение:
    • 1 основанный на времени UUID
    • 2 DCE безопасности UUID
    • 3 Имя на основе UUID
    • 4 случайно сгенерированный UUID
    Читать еще:  Javascript int parse

    // Java-код, иллюстрирующий метод version ()

    public static void main(String arg[]) throws

    UUID gfg = UUID.fromString( «c81d4e2e-bcf2-11e6-869b-7df92533d2db» );

    // проверка номера версии для этого UUID

    System.out.println( «version number is: «

    Эта статья предоставлена Abhishek Verma . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

    Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

    Эффективный метод генерации строки UUID в JAVA (UUID.randomUUID().toString () без тире)

    Я хотел бы, чтобы эффективная утилита генерировала уникальные последовательности байтов. UUID-хороший кандидат, но UUID.randomUUID().toString() создает такие вещи, как 44e128a5-ac7a-4c9a-be4c-224b6bf81b20 что хорошо, если вам не нужно передавать его по HTTP, и в этом случае тире должны быть удалены.

    Я ищу эффективный способ генерации случайных строк, только из алфавитно-цифровых символов (без дефисов или других специальных символов).

    8 ответов

    тире не нужно удалять из HTTP-запроса, как вы можете видеть в URL-адресе этого потока. Но если вы хотите подготовить хорошо сформированный URL без зависимости от данных, вы должны использовать URLEncoder.кодируйте (строковые данные, строковое кодирование) вместо изменения стандартной формы ваших данных. Для UUID строковое представление тире является нормальным.

    я использовал JUG (Java UUID Generator) для создания уникального идентификатора. Он уникален для JVMs. Довольно хорошо использовать. Вот код для вашей справки:

    закончил тем, что написал что-то свое, основанное на UUID.реализация Java. Обратите внимание, что я не генерируя UUID, вместо этого просто случайная 32-байтовая шестнадцатеричная строка самым эффективным способом, который я мог придумать.

    реализация

    использование

    тесты

    некоторые из входов, которые я тестировал, чтобы убедиться, что он работает:

    Я поражен тем, что так много строк заменяют идеи UUID. Как насчет этого:

    это быстрый способ сделать это, так как вся toString() UUID уже дороже, не говоря уже о регулярном выражении, которое должно быть проанализировано и выполнено или заменено пустой строкой.

    (как существующие решения, только то, что он избегает строка#replaceAll звонок. Замена регулярного выражения здесь не требуется, поэтому строка#replace чувствует себя более естественным, хотя технически он все еще реализуется с регулярными выражениями. Учитывая, что генерация UUID является более дорогостоящей, чем замена, не должно быть существенной разницы во времени выполнения.)

    использование класса UUID вероятно, достаточно быстро для большинства сценариев, хотя я ожидал бы, что какой-то специализированный рукописный вариант, который не нуждается в постобработке, будет быстрее. Во всяком случае, узким местом общего вычисления обычно будет генератор случайных чисел. В случае класса UUID он использует SecureRandom отобрать.

    какой генератор случайных чисел использовать также является компромиссом, который зависит от приложения. Если это охрана-чувствительный, SecureRandom отобрать это, в общем, рекомендация. В противном случае, ThreadLocalRandom является альтернативой (быстрее, чем SecureRandom или старый случайные, но не криптографически безопасный).

    Я использую org.апаш.палата общин.кодек.двоичный.Base64 для преобразования UUID в URL-безопасную уникальную строку длиной 22 символа с той же уникальностью, что и UUID.

    Я только что скопировал метод uuid toString () и просто обновил его, чтобы удалить «-» из него. Это будет намного быстрее и прямолинейнее, чем любое другое решение

    другая реализация с использованием отражения

    Java UUID Generator Example

    Posted by: Yatin in Core Java January 8th, 2018 0 Views

    Hello readers, in this tutorial, we are generating the UUID using the Java and Java UUID Generator API.

    1. Introduction

    UUID / GUID ( Universally / Globally Unique Identifier ) is frequently used in programming. Some of its usages are for creating random file names, session id in the web application, transaction id and for record’s primary keys in the database (i.e. replacing the sequence or auto-generated number).

    UUID (i.e. Universally Unique Identifier) class is a part of the java.util package and represents an immutable universally unique identifier with a 128 bit number string value. It is represented in 32 Hexadecimal characters and is mixed with 4 dashes (i.e. — ) characters. UUID also was known as GUID which stands for Globally Unique Identifier.

    Fig. 1: UUID Syntax

    Following are the important methods available on the UUID class.

    • String toString() : This method will return a string object representing the UUID
    • int variant() : This method will return the variant number associated with the UUID
    • int version() : This method will return the version number associated with the UUID

    Now, open up the Eclipse Ide and let’s see a few examples of how to generate the UUID object in Java!

    2. Java UUID Generator Example

    2.1 Tools Used

    We are using Eclipse Kepler SR2, JDK 8 and Maven. Having said that, we have tested the code against JDK 1.7 and it works well.

    2.2 Project Structure

    Firstly, let’s review the final project structure, in case you are confused about where you should create the corresponding files or folder later!

    Fig.2 : Application Project Structure

    2.3 Project Creation

    This section will demonstrate on how to create a Java-based Maven project with Eclipse. In Eclipse IDE, go to File -> New -> Maven Project .

    Fig. 3: Create Maven Project

    In the New Maven Project window, it will ask you to select project location. By default, ‘Use default workspace location’ will be selected. Select the ‘Create a simple project (skip archetype selection)’ checkbox and just click on next button to proceed.

    Fig. 4: Project Details

    It will ask you to ‘Enter the group and the artifact id for the project’. We will input the details as shown in the below image. The version number will be by default: 0.0.1-SNAPSHOT .

    Читать еще:  Locale english java

    Fig. 5: Archetype Parameters

    Click on Finish and the creation of a maven project is completed. If you observe, it has downloaded the maven dependencies and a pom.xml file will be created. It will have the following code:

    Developers can start adding the dependencies that they want to such as UUID Generator etc. Let’s start building the application!

    3. Application Building

    Below are the steps involved in developing this application.

    3.1 Maven Dependencies

    Here, we specify the dependencies for the UUID Generator. The rest dependencies will be automatically resolved by the Maven framework and the updated file will have the following code:

    3.2 Java Class Creation

    Let’s create the required Java files. Right-click on the src/main/java folder, New -> Package .

    Fig. 6: Java Package Creation

    A new pop window will open where we will enter the package name as: com.jcg.java .

    Fig. 7: Java Package Name (com.jcg.java)

    Once the package is created in the application, we will need to create the 2 different implementation classes in order to generate the UUID object. Right-click on the newly created package: New -> Class .

    Fig. 8: Java Class Creation

    A new pop window will open and enter the file name as: UuidExample . The utility class will be created inside the package: com.jcg.java .

    Fig. 9: Java Class (UuidExample.java)

    Repeat the step (i.e. Fig. 7) and enter the filename as: JugUUIDExample . The main class will be created inside the package: com.jcg.java .

    Fig. 10: Java Class (JugUUIDExample.java)

    3.2.1 Implementation of Java UUID Class

    To generate the UUID object in Java, developers can use the java.util.UUID class which was introduced in JDK 1.5. Let’s see the simple code snippet that follows this implementation.

    3.2.2 Implementation of Java UUID Generator Class

    Developers can use the Java UUID Generator (JUG) utility to generate the UUID object. Let’s see the simple code snippet that follows this implementation.

    Do note, developers will have to use the java-uuid-generator maven dependency for generating the UUID object using the Java UUID Generator class.

    4. Run the Application

    To run the application, Right-click on the UuidExample class -> Run As -> Java Application . Developers can debug the example and see what happens after every step!

    Fig. 11: Run Application

    5. Project Demo

    The application shows the following logs as output for the UuidExample.java . This class will randomly generate a Version 4 UUID object.

    The JugUUIDExample.java will generate a Version 1 and Version 4 UUID object and shows the following logs as output.

    That’s all for this post. Happy Learning!!

    6. Conclusion

    That’s all for Java UUID class and developers can use it to create the unique identifiers for their application. I hope this article served you whatever you were looking for.

    7. Download the Eclipse Project

    This was an example of Java UUID Generator for the beginners.

    Java UUID Generator Example

    By Lokesh Gupta | Filed Under: Java Basics

    Learn what is UUID and it’s versions and variants. Learn to generate UUID in Java using UUID.randomUUID() API. Also learn to generate version 5 UUID in Java.

    1. What is UUID?

    UUID (Universally Unique IDentifier), also known as GUID (Globally Unique IDentifier) is 128 bits long identifier that is unique across both space and time, with respect to the space of all other UUIDs. It requires no central registration process. As a result, generation on demand can be completely automated, and used for a variety of purposes.

    To understand how unique is a UUID, you should know that UUID generation algorithms support very high allocation rates of up to 10 million per second per machine if necessary, so that they could even be used as transaction IDs.

    We can apply sorting, ordering and we can store them in databases. It makes it useful in programming in general.

    Since UUIDs are unique and persistent, they make excellent Uniform Resource Names (URNs) with lowest mining cost in comparison to other alternatives.

    The nil UUID is special form of UUID that is specified to have all 128 bits set to zero.

    2. UUID Types

    A typical UID is displayed in 5 groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters (32 alphanumeric characters and 4 hyphens).

    Here ‘M’ indicate the UUID version and ‘N’ indicate the UUID variant.

    • The variant field contains a value which identifies the layout of the UUID.
    • The version field holds a value that describes the type of this UUID. There are five different basic types of UUIDs.
      1. Time-Based UUID (Version 1) – generated from a time and a node id
      2. DCE (Distributed Computing Environment) security (Version 2) – generated from an identifier (usually a group or user id), time, and a node id
      3. Name-based (Version 3) – generated by MD5 (128 bits) hashing of a namespace identifier and name
      4. Randomly generated UUIDs (Version 4) – generated using a random or pseudo-random number
      5. Name-based using SHA-1 hashing (Version 5) Recommended – generated by SHA-1 (160 bits) hashing of a namespace identifier and name. Java does not provide its implementation. We shall create our own.

    3. Java UUID Example

    3.1. UUID.randomUUID() – Version 4

    Default API randomUUID() is a static factory to retrieve a type 4 (pseudo randomly generated) UUID. It is good enough for most of the usecases.

    3.2. Generate Version 5 UUID

    Java does not provide inbuilt API to generate version 5 UUID, so we have to create our own implementation. Below is one such implementation. (Ref).

    Читать еще:  Java пространство имен

    Drop me your questions related to generating UUID in Java.

    Почему java.util.UUID сопоставимо?

    UUID в java реализует сопоставимые. Что кажется мне немного странным, так как почти во всех случаях UUIDs генерируются случайным образом (или десериализуются откуда-то, но все же они, вероятно, изначально были сгенерированы случайным образом).

    Кажется, нет никакого смысла сравнивать их, если вы не создадите их вручную с последовательно увеличенным LSB/MSB,, что может иметь смысл, если вы просто хотите очень большое число ID (два длинных вместо одного простого длинного), но это единственное объяснение, которое я могу придумать.

    5 Ответов

    EDIT: как отметил Turing85 в комментариях (и позже в полноценном ответе), класс Java java.util.UUID реализует RFC 4122 . Этот RFC четко определяет порядок, поэтому для этого класса имеет смысл реализовать такой порядок-т. е. путем реализации Comparable .

    Несмотря на это, даже если сортировка не служит никакой логике «business», у нее есть много других преимуществ.

    Во-первых, это позволяет вам быть последовательным. Система, которая ведет себя детерминированно, где X всегда предшествует Y, легче поддерживать, отлаживать и, возможно, использовать.

    Во-вторых, сортировка чрезвычайно полезна во избежание тупиков. Если вы всегда обновляете сущности (и берете блокировки, необходимые для этого) в том же порядке, вы устраняете множество ловушек, где X ждет блокировки Y, которая сама ждет блокировки X.

    И наконец-почему бы не сделать UUID сопоставимым? Добавленный байтовый код для реализации compareTo увеличивает размер класса на незначительный размер. Если вы не используете его как Comparable , вы вряд ли пострадаете от него, и реализация Comparable дает пользователю класса дополнительную гибкость для использования его как такового.

    Глядя на Javadoc UUID , мы видим, что он ссылается на IETF RFC 4122: универсально уникальный идентификатор (UUID) пространства имен URN . Внутри упомянутого RFC мы находим раздел, посвященный лексическому эквиваленту:

    Это означает: чтобы полностью реализовать упомянутый RFC, нужно реализовать определенный порядок. Способ реализации этого в Java — либо implements Comparable , либо путем предоставления Comparator . Поскольку порядок, определенный в RFC, является «natural order» из UUID s, логично только позволить UUID implements Comparable .

    Что касается того, как этот порядок может быть использован или если он даже должен быть использован, не подлежит обсуждению. Мои аргументы основываются исключительно на применении стандарта. Будет ли и как использовать этот заказ зависит от пользователя. Ответы мурейника и Алексея Романова дают некоторые причины, по которым можно было бы хотеть иметь порядок, определенный без явного использования его.

    Если кто-то поднимает мой ответ, он должен также поднять ответ Алексея . Мой ответ был написан позже, но следует той же линии аргументации. Кроме того, Алексей приводит пример того, как этот порядок может быть полезен.

    Это требуется, например, чтобы поместить их в TreeMap / TreeSet . Более релевантными цитатами из RFC являются

    UUIDs имеют фиксированный размер (128 бит), который достаточно мал по сравнению с другими альтернативами. Это хорошо поддается сортировке, упорядочивание и хеширование всех видов, хранение в базах данных, простое распределение и простота программирования в целом.

    UUIDs, как определено в этом документе, также можно заказать лексикографически. Для пары UUIDs, первый из них следует во-вторых, если наиболее значимым полем, в котором UUIDs отличаются, является больше для первого UUID. Второе предшествует первому, если наиболее значимое поле, в котором разница UUIDs больше для второй UUID.

    Некоторые версии UUID имеют значение, закодированное в их значениях:

    Существует четыре основных типа UUIDs: основанный на времени, DCE безопасность, основанная на имени и случайно генерируемая UUIDs.

    Из-за этого может иметь смысл сравнивать UUID, так как вы можете извлечь смысл из их значений. Вы могли бы свободно сказать «This UUID was made earlier or later», чем другой.

    Рассмотрим версии, определенные в Википедии :

    • Версия 1 (Дата-Время и MAC адрес)
    • Версия 2 (Дата-Время и адрес MAC, версия безопасности DCE)
    • Версии 3 и 5 (на основе имен пространств имен)
    • Версия 4 (случайная)

    Вы даже можете увидеть это в JavaDoc :

    Компоновка варианта 2 (Лич-Зальц) UUID выглядит следующим образом: наиболее значительный long состоит из следующих полей без знака:

    Это имеет смысл, если вы используете его т. е. в качестве идентификатора.

    Или если необходимо сохранить объекты в древовидных структурах данных.

    Похожие вопросы:

    Я хочу сделать приложение javaEE, когда пользователи могут зарегистрироваться и подтвердить свой email при получении email со ссылкой после вставки своих данных в регистрационную форму (имя.

    Документация для java.time.temporal.Temporal содержит следующее примечание: Требования К Осуществлению: [. ] Все реализации должны быть сопоставимы. Почему темпоральность просто не распространяется.

    Я использую Spring boot с контроллером Rest. У меня есть @PostMapping с Requestbody имеющий объект, который имеет идентификатор типа UUID. Когда я пытаюсь проверить свой запрос post от Postman, я.

    В jaxb, как вы преобразуете строку в xsd в java.util.UUID? Есть ли встроенный конвертер типов данных или мне нужно создать свой собственный пользовательский конвертер?

    Я пытаюсь сохранить java.util.UUID в Cassandra столбец типа timeuuid . Например, это сопоставление по умолчанию spring-data-cassandra.

    Поскольку Comparable экспортирует только одну функцию и поскольку эта функция принимает только один параметр, который имеет тип this (класс, реализующий Comparable), почему Comparable.

    В cassandra одним из моих типов столбцов является timeuuid, чей тип java эквивалентен в соответствии с документацией java.util.UUID У меня есть время ввода как java.sql.Timestamp и для того, чтобы.

    Я создал два экземпляра java.util.UUID , как показано ниже. Один создается из UUID.randomUUID() , а другой такой же, но с некоторыми дополнительными цифрами, предваряющими начало. Когда они.

    Я хочу создать расширение, которое будет расширять массивы массивов T, где T сопоставимо ; немного похоже на это: extension Array where Element == Array < >К сожалению, это не.

  • Ссылка на основную публикацию
    Adblock
    detector