Можно ли разработать собственный алгоритм для создания уникальных идентификаторов GUID? - PullRequest
2 голосов
/ 04 мая 2010

GUID генерируется комбинацией цифр и символов с дефисом.

например) {7B156C47-05BC-4eb9-900E-89966AD1430D}

В Visual Studio у нас есть 'Создать GUID 'инструмент для его создания.Я надеюсь, что то же самое можно создать программным способом через оконные API.

Как сделать GUID уникальными?Почему они не используют специальные символы, такие как #, ^ и т.д ...

Также возможно ли разработать собственный алгоритм для создания уникальных идентификаторов GUID?

Ответы [ 5 ]

3 голосов
/ 04 мая 2010

UUID определены, например, в http://www.faqs.org/rfcs/rfc4122.html. Одна проблема с использованием вашего собственного алгоритма для генерации чего-то вроде UUID состоит в том, что вы можете столкнуться с UUID других людей. Поэтому вам обязательно следует использовать чью-либо реализацию, если это вообще возможно, и, если нет, написать свою собственную реализацию одного из стандартных алгоритмов.

3 голосов
/ 04 мая 2010

Да, это возможно, однако вы не должны пытаться изобретать велосипед без уважительной причины. GUID сделаны уникальными за счет включения элементов, которые (по статистике) вряд ли будут одинаковыми в двух разных случаях, таких как:

  • Текущая отметка времени
  • Обновление системы
  • MAC-адрес системы
  • Случайное число
  • ...

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

1 голос
/ 04 мая 2010

Вы должны создать новый GUID, вызвав API, предназначенный для него. В родных окнах земля это CoCreateGUID; в земле .NET это System.Guid.NewGuid();

1 голос
/ 04 мая 2010

Просто чтобы ответить на этот вопрос: Почему они не используют специальные символы, такие как #, ^ и т.д ..

Это должно быть 128-битное целое число. Таким образом, общее представление - это простые шестнадцатеричные числа.

Вы также можете создать 128 символов 1 и 0 и т. Д.

Что касается остальной части вопроса, wiki имеет хорошие ответы.

0 голосов
/ 04 мая 2010

Да, хотя проще использовать чужие, например Увеличение UUID

...