Действительно ли возможно, что GUID сгенерированы со всем одинаковым символы в.NET? ( например: {11111111-1111-1111-1111-111111111111})

Ниже приведено небольшое сравнение скорости (только для Mac Os) ...:)

Для chrome 'plus' и 'mul' являются самыми быстрыми, Math.floor - самый медленный (> 700 000,00 оп / сек). Для Firefox 'plus' самый медленный (!) 'Mul' самый быстрый (> 900 000 000 оп / сек). В Safari «parseInt» - это посты, «число» является самым медленным (но resulats очень похожи,> 13 000 000 и 31 000 000). Таким образом, Safari для строки cast для int более чем в 10 раз медленнее, чем другие браузеры. Итак, победителем является «mul»:)

Вы можете запустить его в своем браузере по этой ссылке https://jsperf.com/casttonumber

27
задан John Saunders 28 January 2010 в 07:42
поделиться

9 ответов

Вкратце: Для GUID, созданного в соответствии с опубликованными стандартами и спецификациями, это просто не может произойти. GUID имеет структуру, и некоторые поля действительно имеют значение. Более того, .NET генерирует GUID версии 4, чего совершенно не может быть. Они определены таким образом, что такого GUID не будет. Подробнее см. Ниже; -)


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

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

Давайте немного разберем версии :

  1. MAC-адрес и временная метка. Оба, вероятно, трудно уговорить на все цифры 1.
  2. MAC-адрес и временная метка, а также идентификаторы пользователей. То же, что и для v1.
  3. Хеш MD5. Может даже работать.
  4. ГПСЧ.Не может работать, поскольку первая цифра четвертой части - всегда либо 8 , 9 , A или B . Это противоречит 4 для номера версии.
  5. Хеш SHA-1. Может даже работать.

Пока что мы исключили версию 4 как невозможную, другие как крайне маловероятные. Давайте посмотрим на поле вариантов.

Поле варианта определяет некоторые битовые шаблоны для обратной совместимости ( x - это безразлично ), а именно:

0 x x Reserved. NCS backward compatibility.
1 0 x The only pattern that currently can appear
1 1 0 Reserved, Microsoft Corporation backward compatibility
1 1 1 Reserved for future definition.

Поскольку этот шаблон является в самом начале четвертой части это означает, что старший бит всегда устанавливается для самой первой шестнадцатеричной цифры четвертой части. Это означает, что эта цифра никогда не может быть 1 , 2 , 3 или 5 . Конечно, не считая уже сгенерированных GUID. Но те, у которых MSB установлен на 0 , оказываются либо v1, либо v2. И часть с отметкой времени в них означает, что они должны быть сгенерированы через несколько тысячелетий в будущем, чтобы это сработало.

70
ответ дан 28 November 2019 в 04:04
поделиться

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

3
ответ дан MSalters 20 November 2019 в 04:16
поделиться

Это так же вероятно, как и любой другой Guid.
Если вы вставите его в базу данных (даже с каким-то особым значением), вы также можете убедиться, что он уникален с соответствующими ограничениями.

-2
ответ дан Paolo Tedesco 20 November 2019 в 04:16
поделиться

Здесь ровно 5,316911 983139 663,491,615228 241,121,615,228 241,121 400 000 возможных комбинаций, поэтому, даже если он не был разработан, чтобы всегда быть уникальными, в любом случае, шансы будут довольно отдалены.

Источник: http://msdn.microsoft.com/en-us/library/aa446557.aspx

14
ответ дан 28 November 2019 в 04:04
поделиться

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

Страница Wikipedia на GUID имеет приличное количество информации, касающихся используемых алгоритмов, так что может дать вам окончательный ответ. Или работающий отражатель по методу GUID.NEWGUID () в системе .NEWGUID () в рамках .NET Framework, хотя и на основе рассмотрения ссылочного источника для метода это вызывает COCREATEGUID в OLE32 .

5
ответ дан 28 November 2019 в 04:04
поделиться

Извините, проблема меня! Вышло из синхронизации, но это было потому, что у меня есть HTML текст неправильно. В первом клике я хочу выцветать DIV, и текст, чтобы сказать «Показать текст».

будет проверять более тщательно в следующий раз, прежде чем спросить!

Мой код сейчас:

$(function() {
  $("#show-background").toggle(function (){
    $("#content-area").animate({opacity: '0'}, 'slow')
    $("#show-background").text("Show Text")
      .stop();
  }, function(){
    $("#content-area").animate({opacity: '1'}, 'slow')
    $("#show-background").text("Show Background")
      .stop();
  });
});

Спасибо снова за помощью!

-121--868996-

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

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

8
ответ дан 28 November 2019 в 04:04
поделиться

На ваш вопрос уже был дан ответ, но я думал, что буду прагматичен.

1) Вы дадите себе только 8 "жестко закодированных" вариантов, используя эту конвенцию.

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

Это не прямой ответ, я знаю, но это, вероятно, разумное предложение, учитывая ваши намерения.

4
ответ дан 28 November 2019 в 04:04
поделиться

Я не использую аннотации, это то, что я имею в моем * .hbm.xml:

<id name="id" type="java.lang.Integer">
    <column name="ID_PRODUCT" />
    <generator class="sequence-identity" >
        <param name="sequence">PRODUCT_ID_SEQ</param>
    </generator>
</id>

Вы можете легко сопоставить это с аннотациями. Генератор идентификатор последовательности использует автоприращение с последовательностями.

-121--1474326-

Будет ли это сделано?

var selected = [];
$('div#checkboxes input[type=checkbox]').each(function() {
   if ($(this).is(":checked")) {
       selected.push($(this).attr('name'));
   }
});
-121--605839-

Зачем использовать специально разработанный GUID? Помимо распознаваемого аспекта, почему бы просто не использовать правильно сгенерированный GUID? (Вы знаете, что это будет уникально, вот в чем точка)

4
ответ дан 28 November 2019 в 04:04
поделиться

Для моей последней компании мы использовали GUID в качестве первичных ключей для таблиц для всех наших баз данных. Во всем мы создали более 1 000 000 000 объектов и никогда не было никаких проблем.

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

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