2013-12-03 6 views
1

Java. UUID, как это работает

  • Уникален ли файл java.util.UUID в каждом файле?

    Например:

    • У нас есть файл IDFile1.java, порождая здесь случайный идентификатор, используя UUID.randomUUID().toString().
    • И у нас есть файл2 с именем IDFile2.java, который генерирует другой идентификатор.

    Эти два идентификатора файла сталкиваются друг с другом?

  • Есть ли способ, чтобы «повернуть назад» используется идентификатор, сгенерированный из java.util.UUID, это будет означать, этот идентификатор может быть использован снова?
  • +0

    Как следует из названия, UUID универсален. Не зная о самом классе, я бы предположил, что столкновение было бы, по крайней мере, очень редким, если бы оно было теоретическим. – mico

    ответ

    0

    UUID не связаны ни с каким файлом. Неважно, какой файл их генерирует, они более чем вероятно не будут одинаковыми.

    На вопрос 2, как генерируются UUID, на самом деле не разрешается их регенерация каким-либо значимым образом. Они обычно генерируются на основе информации с вашего компьютера, текущего времени и других материалов. Алгоритм Java использует криптографически безопасный генератор случайных чисел и известен как UUID типа 4.

    +0

    Значит, что сгенерированный идентификатор не проверен как «используется» в классе UUID? И существует крайне низкая вероятность того, что он сгенерирует два идентичных идентификатора в последовательности? – user2333695

    1

    Назначение таких функций, как randomUUID, состоит в том, чтобы объединить различные фрагменты информации, которые, вероятно, будут обладать некоторой случайностью, так что два UUID, сгенерированные в разное время или в разных местах, имели бы чрезвычайно малую вероятность соответствия, если все источники потенциальная случайность привела к одинаковым результатам. Не прилагается никаких усилий для отслеживания того, какие UUID были или не были выпущены; вместо этого цель состоит в том, чтобы иметь достаточную случайность, чтобы вероятность непреднамеренного совпадения была мала относительно, например, вероятность того, что компьютер будет разбит до миллиона штук метеорным ударом.

    Обратите внимание, что система может использовать «количество выпущенных UUID» как часть своего расчета UUID, но это будет только одним из многих факторов, которые входят в нее. Цель такого счетчика - не позволять «вернуться» к предыдущему UUID, а скорее обеспечить, чтобы, если, например, два UUID запрашиваются почти одновременно без какого-либо источника случайности, которые становятся доступными между ними, эти два запроса будут давать разные значения.

    Смежные вопросы