Как C# генерирует GUID?

Кажется, нет никаких Ограничительных имен По умолчанию в Information_Schema представления.

использование SELECT * FROM sysobjects WHERE xtype = 'D' AND name = @name для нахождения ограничения по умолчанию по имени

33
задан George Stocker 11 December 2009 в 14:30
поделиться

6 ответов

Исходный вопрос:

Как Guid генерирует свой идентификатор ?? Как будет выход если я использую следующий код Guid g = Guid.NewGuid ();

Будет ли вывод представлять собой комбинацию чисел и букв или там будут одни числа ???

A .Net System.Guid - это всего лишь 128-битное целое число (16 байт). Цифры и буквы тут ни при чем. Вы можете использовать метод ToString () для просмотра различных "удобочитаемых" версий Guid, которые включают числа 0-9 и буквы AF (представляющие шестнадцатеричные значения), но все зависит от вас, как вы хотите его выводить.

9
ответ дан 27 November 2019 в 18:04
поделиться

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

(Is есть ли способ получить текущую доступную память, или самый большой фрагмент, или что-то подобное?)

это только 1 конкретный алгоритм, используемый для генерации GUID (хотя я считаю, что это тот, который используется платформой .Net) , а не алгоритм, используемый платформой .Net

45
ответ дан 27 November 2019 в 18:04
поделиться

Guid - это уникальное число, которое имеет миллиарды перестановок и состоит из смеси шестнадцатеричных чисел и чисел в группах. И он создается на основе различных факторов, таких как время, версия Windows, системные ресурсы, такие как жесткие диски, материнские платы, устройства и так далее. Guid гарантированно уникален. (Спасибо, ck!) Я не встречал случая, когда вы выполняете

Guid g = new Guid.NewGuid();
Guid g = Guid.NewGuid(); /* Thanks Dave! */

, где g будет иметь одно и то же значение в последовательных запусках.

Чаще используется для мьютексов, например, создать единственный экземпляр приложения и с помощью мьютекса с guid гарантирует время жизни экземпляра приложения.

Даже в некоторых случаях

-1
ответ дан 27 November 2019 в 18:04
поделиться

Алгоритм описан здесь как Глобальный уникальный идентификатор

13
ответ дан 27 November 2019 в 18:04
поделиться

Существуют также другие формы GUID, кроме "случайные 16 байтов", как указано в RFC. Некоторые продукты Microsoft (например, SQL Server) могут дополнительно генерировать эти «последовательные GUID», которые основаны на комбинации «MAC-адрес первой сетевой карты в системе + постоянно увеличивающийся счетчик на основе системного времени».

Эти » последовательные идентификаторы GUID "имеют прекрасное свойство всегда добавлять новые записи в" конец " таблицы базы данных при использовании в качестве первичного ключа базы данных с кластеризованным индексом. Это помогает предотвратить фрагментацию индекса базы данных и разбиение страниц.

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

Использование последовательных GUID по-прежнему позволяет вам генерировать GUID независимо в нескольких системах и быть уверенным, что не будет никаких конфликтов (свойство, которое вы не получите, используя последовательные целые числа в качестве первичных ключей без выделение «диапазонов» или различных начальных чисел и приращений каждой системе, что является административным кошмаром в больших распределенных приложениях).

2
ответ дан 27 November 2019 в 18:04
поделиться

Подробная информация о Википедии и MSDN .

Короче говоря, GUID - это случайное 128-битное целое число, но мы форматируем их с использованием шестнадцатеричного цифры так, чтобы они были легко читаемы (это формат 8-4-4-4-12, который вы видите). О том, как он был создан, см. Связанную статью в Википедии.

0
ответ дан 27 November 2019 в 18:04
поделиться
Другие вопросы по тегам:

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