Генерация уникального ссылочного номера стратегии

Ну, вот ответ, он собирает все один раз, а затем продолжает «смотреть»

function realtime() {
    gulp.watch(paths.styles.files, gulp.parallel('refreshCss'));
    gulp.watch(paths.html.files, gulp.parallel('htmlToBuild'));
    gulp.watch(paths.indexHtml.files, gulp.parallel('indexHtmlToBuild'));
    gulp.watch(paths.systemJs.files, gulp.parallel('systemJsToBuild'));
    gulp.watch(paths.img.files, gulp.parallel('imgToBuild'));
    gulp.watch(paths.i18n.files, gulp.parallel('i18nToBuild'));
};
// NEW - FULL COMPILE AND "LISTENING" TO CHANGES
gulp.task('default', gulp.series('refreshCss','htmlToBuild','indexHtmlToBuild','systemJsToBuild','imgToBuild','i18nToBuild'), realtime());
6
задан Unsliced 10 December 2008 в 17:19
поделиться

7 ответов

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

2
ответ дан 17 December 2019 в 07:09
поделиться

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

Используйте GUID, но закодируйте его, base64 похож на 7QDBkvCA1+B9K/U0vrQx1A, который составляет 22 байта, который еще длиннее затем собственный Гуид..., но короче затем типичное строковое представление.

См., что текст Кодирует здесь: http://en.wikipedia.org/wiki/Globally_Unique_Identifier

Другая опция состояла бы в том, чтобы хешировать Гуид, но Вы освободите часть уникальности поэтому, каков Ваш уровень терпимости здесь для групповых объектов?

==========

Принятие Вас имеет единственную вставку процесса в таблицу, Вы могли сотрудник Хило algorithim и быть уверенными, что Вы не должны поражать DB каждый раз. Вы просто сохранили бы в памяти последнее высокое значение..., когда процесс startsup, Вы пойдете, поразит дб для обнаружения, где Вы кончили: каков алгоритм Hi/Lo?

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

1
ответ дан 17 December 2019 в 07:09
поделиться

Если это число будет, когда-либо ссылаются людьми, я поощряю Вас следовать этим инструкциям в своем решении:

Каков лучший формат для клиентского числа, номера заказа?

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

например, если все клиенты будут в известной сети, можно закончить каждое число в IP-адресе каждого клиента D блок.

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

2
ответ дан 17 December 2019 в 07:09
поделиться

Один путь может состоять в том, чтобы генерировать числа на основе меньшего подмножества чисел. Например, Вы могли использовать двоичную последовательность для генерации на основе геделевской нумерации. Например, отображаясь 000 к 111 на 5z, 3 года, 2x уступают 0, 2, 3, 6, 5, 10, 15, 30.

Конечно, это чрезмерно упрощенно. Но путем итерации "соленых" чисел для генерации ссылочных номеров Вы не должны были бы отслеживать ссылочные номера вообще. Если, или курс, Вы были довольно уверены, что не должны были включать в коллизии.

0
ответ дан 17 December 2019 в 07:09
поделиться

Если возможно в Вашем приложении/среде, Вы рассматривали для добавления времени как части к псевдослучайному сгенерированному числу?

т.е. микровремя () + рэнд (10000,99999)

0
ответ дан 17 December 2019 в 07:09
поделиться

Я делал это в производственной системе с успехом:

  • Займите текущее время (UTC с точностью микросекунды)
  • Ваш идентификатор процесса, распараллельте идентификатор
  • Ваше имя компьютера
  • Соленое значение (в основном просто строка, уникальная для Вашей программы)
  • Случайное значение (предпочтительно crypto-класс PRNG)

Поместите это в память, или как строка или как XOR значения вместе или что-то подобное. Затем:

  • Хешируйте его с, например, SHA-1
  • Сделайте модификацию N на получающемся числе для уменьшения вывода к байтам N
  • Преобразуйте в шестнадцатеричный или что-то печатаемое при необходимости в нем.

Просто знайте, что уменьшение UID к байтам N увеличит возможности коллизий UID.

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

0
ответ дан 17 December 2019 в 07:09
поделиться

Усеките GUID к размеру, который Вы хотите.

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

-1
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

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