GUID, случайная строка из 30 символов

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

7
задан harmony 15 July 2010 в 21:45
поделиться

2 ответа

Удаление двух шестнадцатеричных символов или эквивалентных 8 бит из GUID сделает его менее уникальным, но 120 бит все равно дают достаточно хорошее уникальное значение. Если вы не хотите генерировать миллионы идентификаторов каждую секунду, то удаление нескольких битов из временной метки и уникализатора должно быть безопасным без риска столкновения. Смотрите, например, Википедию о структуре GUID.

Альтернативным решением может быть кодирование GUID в Base64 или что-то подобное, если вы не ограничены только шестнадцатеричными символами. 128 бит, закодированных в Base64, дают строку длиной 24. Затем вы можете добавить еще 6 случайных символов, чтобы увеличить длину строки до 30 символов, что сделает ее еще более уникальной.

5
ответ дан 5 December 2019 в 15:19
поделиться

Усечение GUID теряет уникальность. Чтобы понять, почему вы должны понимать, как создается GUID. Он состоит из нескольких частей:

  • 60 бит временной метки
  • 48 бит идентификатора компьютера
  • 14 бит уникального идентификатора
  • 6 бит фиксированы

Отбрасывая первые два символа, вы отбрасываете 8 наиболее значимые биты части отметки времени. Эта статья хорошо объясняет это и опасность усечения GUID. В нем также объясняется, как можно использовать тот же метод, который используется в идентификаторах GUID, для создания уникальных идентификаторов, которые не являются уникальными в глобальном масштабе, но будут уникальными в более ограниченных обстоятельствах.

5
ответ дан 5 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

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