Что такое точно GUID? Почему и где я должен использовать его?

Предупреждение: Деление на ноль

Предупреждающее сообщение «Подразделение на ноль» является одним из наиболее часто задаваемых вопросов среди новых разработчиков PHP. Эта ошибка не вызовет исключения, поэтому некоторые разработчики иногда будут подавлять предупреждение, добавляя оператор подавления ошибок @ перед выражением. Например:

$value = @(2 / 0);

Но, как и при любом предупреждении, наилучшим подходом было бы отслеживать причину предупреждения и разрешать его. Причина предупреждения будет происходить из любого экземпляра, где вы пытаетесь разделить на 0, переменную, равную 0, или переменную, которая не была назначена (поскольку NULL == 0), потому что результат будет «неопределенным».

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

if ( $var1 == 0 ) { // check if var1 equals zero
    $var1 = 1; // var1 equaled zero so change var1 to equal one instead
    $var3 = ($var2 / $var1); // divide var1/var2 ie. 1/1
} else {
    $var3 = ($var2 / $var1); // if var1 does not equal zero, divide
}

Вопросы, относящиеся:

63
задан Georg Fritzsche 4 August 2010 в 00:04
поделиться

15 ответов

GUID технически обозначает глобально уникальный идентификатор. То, каково это, на самом деле, является структурой на 128 битов, которая является маловероятна , чтобы когда-либо повторить или создать коллизию. Если Вы делаете математику, домен значений находится в undecillions.

гуиды Использования, когда у Вас есть несколько независимых систем или клиентов, генерирующих идентификатор, который должен быть уникальным.

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

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

92
ответ дан Brian Rudolph 24 November 2019 в 16:08
поделиться

статья Wikipedia о GUID является довольно четкой на том, что они используются для - возможно, перефразирование Вашего вопроса помогло бы - для чего Вы нуждаетесь в GUID?

1
ответ дан Rob 24 November 2019 в 16:08
поделиться

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

2
ответ дан yalestar 24 November 2019 в 16:08
поделиться

GUID обозначает "Глобально уникальный идентификатор", и Вы используете его, когда Вы хотите иметь, erm, Глобально уникальный идентификатор.

В каналах RSS, например, у Вас должен быть GUID для каждого объекта в канале. Тем путем программное обеспечение программы чтения новостных лент может отслеживать то, считали ли Вы тот объект или нет. Без GUID было бы невозможно сказать.

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

Вы будете также видеть термин UUID, который обозначает "Универсально Уникальный идентификатор". Нет по существу никакого различия между двумя. UUID является более соответствующим термином. GUID является термином, использованным Microsoft.

2
ответ дан August 24 November 2019 в 16:08
поделиться

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

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

2
ответ дан Edouard A. 24 November 2019 в 16:08
поделиться

Я работал над системой центра вызова ACD несколько лет назад, где мы хотели собрать информацию о вызове от процессоров множественного вызова в единую базу данных. Я устанавливаю столбец в SQL MS для генерации GUID для ключа базы данных вместо того, чтобы использовать последовательный идентификатор, генерируемый системой (столбец идентификационных данных). Тогда, эта необходимая установка значения по умолчанию к NewID (или генерация его в коде, но NewID () функция была более безопасной). Конечно, наличие большого значения для ключа может повысить несколько бровей, но я бросил бы пространство, чем рискнул бы коллизией.

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

3
ответ дан Tom Schaefer 24 November 2019 в 16:08
поделиться

GUID = Глобальный уникальный идентификатор.

Использование это, когда Вы хотите однозначно определить что-то в глобальном контексте.

Этот генератор может быть удобным.

2
ответ дан Greg Hurlman 24 November 2019 в 16:08
поделиться

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

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

я предоставлю Вам право выяснять, где использовать их, но другие ответы уже имеют некоторые примеры. Позвольте своему воображению разрастись.:)

4
ответ дан Vilx- 24 November 2019 в 16:08
поделиться

128-разрядный Глобально Уникальный идентификатор. Можно генерировать GUID с этого времени до заката, и Вы никогда не генерируете тот же GUID дважды, и, ни будет кто-либо еще. Они используются много с COM.

Что касается примера чего-то Вы использовали бы их для, мы используем их в одном из наших продуктов. Наши пользователи могут генерировать категории и карты на различных устройствах. Мы хотим удостовериться, что мы не путаем категорию, сделанную на одном устройстве с категорией, созданной на различной, таким образом, важно, чтобы идентификаторы были уникальны, неважно, кто генерирует их, где они генерируют их, и когда они генерируют их. Таким образом, мы используем GUID (на самом деле, мы используем нашу собственную схему с помощью 64-разрядных чисел, но они подобны GUID).

3
ответ дан mhenry1384 24 November 2019 в 16:08
поделиться

GUID или UUID (глобально по сравнению с Универсально) Уникальный идентификатор являются, ну, в общем, уникальным идентификатором:) При необходимости в чем-то действительно уникальная сгенерированная машина существуют библиотеки для получения Вас один.

См. GUID на Википедию для деталей.

относительно то, когда Вам не нужен GUID, именно, когда счетчик Вы управляете (так или иначе, как ПОСЛЕДОВАТЕЛЬНЫЙ тип SQL или последовательность) увеличено. Индексация "текстового" значения (GUID в текстовой форме) или двоичное значение на 128 битов (который GUID) является намного более дорогой, чем целое число.

9
ответ дан Keltia 24 November 2019 в 16:08
поделиться

Кто-то сказал, что они - концептуально 128-разрядные случайные значения, и это существенно верно, но сделавший немного чтения на UUID (GUID обычно относится к реализации Microsoft UUID), я вижу, что существует несколько различных версий UUID, и большинство из них не на самом деле случайно. Таким образом, возможно генерировать UUID для машины (или что-то еще) и быть в состоянии надежно повторить, что процесс для получения того же UUID в будущем, который важен для некоторых приложений.

5
ответ дан skiphoppy 24 November 2019 в 16:08
поделиться

Как дополнение ко всем другим ответам, вот генератор GUID онлайн :

http://www.guidgenerator.com/

, Что такое GUID?

GUID (или UUID) является акронимом для 'Глобально уникального идентификатора' (или 'Универсально Уникальный идентификатор'). Это - 128-разрядное целое число, используемое для идентификации ресурсов. Термин GUID обычно используется разработчиками, работающими с технологиями Microsoft, в то время как UUID еще используется везде.

, Насколько уникальный GUID?

128 битов являются достаточно большими, и алгоритм поколения достаточно уникален, что, если бы 1 0000 000 000 GUID в секунду были сгенерированы в течение 1 года, вероятность дубликата составила бы только 50%. Или если бы каждый человек на Земле генерировал 600 000 000 GUID то только была бы 50%-я вероятность дубликата.

, Как GUID используются?

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

14
ответ дан splattne 24 November 2019 в 16:08
поделиться

GUID является "Глобально Уникальным идентификатором". Также названный UUID (Универсально Уникальный идентификатор).

Это - в основном число на 128 битов, которое сгенерировано способом (см. RFC 4112 http://www.ietf.org/rfc/rfc4122.txt ), который делает почти невозможным для дубликатов быть сгенерированным. Таким образом, я могу генерировать GUID без некоторой сторонней организации, имеющей необходимость дать их мне, чтобы гарантировать, что они уникальны.

Одно широкое использование GUID как идентификаторы для объектов COM в Windows (классы, typelibs, интерфейсы, и т.д.). Используя GUID, разработчики могли создать свои COM-компоненты, не собираясь в Microsoft получать уникальный идентификатор. Даже при том, что идентификация, объекты COM являются основным использованием GUID, они используются для многих вещей та потребность уникальные идентификаторы. Некоторые разработчики генерируют GUID для записей базы данных, чтобы предоставить им идентификатор, который может использоваться, даже когда они должны быть уникальными через многие различные базы данных.

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

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

, поскольку GUID могут быть громоздкими (с человекочитаемой точки зрения они - строка шестнадцатеричных чисел, обычно группируемых как так: aaaaaaaa-bbbb-cccc-dddd-ffffffffffff), некоторые пространства имен, которым нужны уникальные имена через различную организацию, используют другую схему (часто на основе имен Интернет-домена).

Так, пространство имен для пакетов Java условно запускается с доменного имени orgnaization (инвертированного) сопровождаемый именами, которые определяются в некоторой организации specfic путь. Например, пакет Java можно было бы назвать:

com.example.jpackage

Это означает, что контакт с коллизиями имени становится ответственностью каждой организации.

пространства имен XML также сделаны уникальными похожим способом - условно, кто-то создающий пространство имен XML, как предполагается, делает его 'под' зарегистрированным доменным именем под их управлением. Например:

xmlns="http://www.w3.org/1999/xhtml"

Иначе то, что уникальными идентификаторами управляли, для MAC-адресов Ethernet. Компания, которая делает платы Ethernet, должна получить блок адресов, присвоенных им IEEE (я думаю, что это - IEEE). В этом случае схема работала вполне прилично, и даже если производитель завинтит и выпустит карты с дублирующимися MAC-адресами, вещи будут все еще работать хорошо, пока те карты не находятся на той же подсети, с тех пор вне подсети, только IP-адрес используется для маршрутизации пакетов. Хотя существует некоторое другое использование MAC-адресов, которые могли бы быть затронуты - один из алгоритмов для генерации GUID использует MAC-адрес в качестве одного параметра. Этот метод поколения GUID как широко больше не используется, потому что это считают угрозой конфиденциальности.

Одним примером схемы придумать уникальные идентификаторы, которые не работали очень хорошо, была Microsoft, обеспеченная идентификатор для драйверов 'VxD' в Windows 9x. Разработчики третьего лица, драйверы VxD, как предполагалось, попросили, чтобы Microsoft ряд идентификаторов использовала для любых драйверов третье лицо, записали. Таким образом, Microsoft могла гарантировать, что не было дублирующихся идентификаторов. К сожалению, многие писатели драйвера никогда не беспокоились, и просто использовали любой идентификатор, был в примере VxD, который они использовали в качестве начальной точки. Я не уверен, сколько неприятностей это доставило - я не думаю, что идентификационная уникальность VxD была абсолютно необходима, но это, вероятно, влияло на некоторую функциональность в некоторых API.

11
ответ дан Michael Burr 24 November 2019 в 16:08
поделиться

GUID является "Глобально уникальный идентификатор". Вы используете его где угодно, что Вам нужен идентификатор, который гарантировал, что отличался, чем любой.

Обычно, Вам только нужно значение, чтобы быть "локально уникальными" - идентификационные данные Первичного ключа в таблице базы данных, например, должны только отличаться от других строк в той таблице, но могут совпасть с идентификатором в других таблицах. (никакая потребность в GUID здесь)

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

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

Они также иногда известны как UUID (универсально уникальный идентификатор).

22
ответ дан James Curran 24 November 2019 в 16:08
поделиться

Может быть твердая вещь понять из-за всей математики, которая продолжается позади генерации их. Думайте о нем как об уникальном идентификаторе. Можно заставить Visual Studio генерировать один для Вас или.NET, если Вы, оказывается, используете C# или одно из многих других приложений или веб-сайтов. Их считают уникальными, потому что существует такой глупый маленький шанс, Вы будете видеть того же дважды, что это не достойно рассмотрения.

3
ответ дан Dan Revell 24 November 2019 в 16:08
поделиться
Другие вопросы по тегам:

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