🛠️

Whiz Tools

Build • Create • Innovate

Калькулятор для расчета омываемого периметра каналов

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

Генератор ULID

Сгенерированный ULID:

Структура ULID


Временная метка (10 символов)

Случайность (16 символов)
📚

Документация

Генератор ULID

Введение

ULID (Универсальный Уникальный Лексикографически Сортируемый Идентификатор) — это уникальный идентификатор, который сочетает в себе временную метку с случайными данными для создания строки из 26 символов. ULID разработаны для того, чтобы быть лексикографически сортируемыми, сохраняя при этом высокий уровень уникальности и случайности.

Структура ULID

ULID состоит из двух основных частей:

  1. Временная метка (10 символов): Первые 10 символов представляют время в миллисекундах с начала эпохи Unix (1970-01-01).
  2. Случайные данные (16 символов): Оставшиеся 16 символов генерируются с использованием криптографически безопасных случайных данных.

Результирующая строка из 26 символов кодируется с использованием алфавита base32 Крокфорда (0-9 и A-Z, исключая I, L, O и U).

Формула

ULID генерируется с использованием следующих шагов:

  1. Сгенерировать 48-битную временную метку (миллисекунды с начала эпохи Unix).
  2. Сгенерировать 80 бит криптографически безопасных случайных данных.
  3. Закодировать объединенные 128 бит с использованием кодирования base32 Крокфорда.

Расчет

Генератор ULID выполняет следующие шаги:

  1. Получить текущую временную метку в миллисекундах.
  2. Сгенерировать 10 случайных байтов (80 бит) с использованием криптографически безопасного генератора случайных чисел.
  3. Объединить временную метку и случайные данные в 128-битное целое число.
  4. Закодировать 128-битное целое число с использованием кодирования base32 Крокфорда.

Сценарии использования

ULID полезны в различных сценариях, включая:

  1. Ключи базы данных: ULID можно использовать в качестве уникальных идентификаторов для записей в базе данных, обеспечивая уникальность и сортируемость.
  2. Распределенные системы: В распределенных средах ULID можно генерировать без координации между узлами.
  3. Логирование и отслеживание: ULID можно использовать для пометки записей журнала или отслеживания событий, предоставляя сортируемый и уникальный идентификатор.
  4. Идентификаторы, безопасные для URL: ULID безопасны для URL и могут использоваться в веб-приложениях в качестве идентификаторов в URL.

Альтернативы

Хотя ULID универсальны, есть и другие системы уникальных идентификаторов, которые стоит рассмотреть:

  1. UUID (Универсальный Уникальный Идентификатор): 128-битный идентификатор, который не включает компонент временной метки.
  2. KSUID (K-Сортируемый Уникальный Идентификатор): Похож на ULID, но с другим кодированием временной метки.
  3. Snowflake ID: Система генерации уникальных идентификаторов Twitter, которая включает временную метку и идентификатор рабочего узла.

История

ULID были представлены в 2016 году Ализаином Феерастой как альтернатива UUID. Они были разработаны для устранения некоторых ограничений UUID, особенно в отношении сортируемости и читаемости. Спецификация ULID оставалась стабильной с момента своего появления, и различные реализации доступны на разных языках программирования.

Примеры

Вот несколько примеров кода для генерации ULID на разных языках программирования:

1// Реализация на JavaScript
2function generateULID() {
3  const timestamp = Date.now().toString(36).padStart(10, '0');
4  const randomness = crypto.getRandomValues(new Uint8Array(16))
5    .reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
6  return (timestamp + randomness).toUpperCase();
7}
8
9console.log(generateULID());
10

Эти примеры демонстрируют, как генерировать ULID на JavaScript, Python и Java. Вы можете адаптировать эти функции под свои конкретные нужды или интегрировать их в более крупные системы, требующие уникальных идентификаторов.

Ссылки

  1. "Спецификация ULID." GitHub, https://github.com/ulid/spec. Доступ 2 авг. 2024.
  2. "Кодирование base32 Крокфорда." Кодирование base32, http://www.crockford.com/base32.html. Доступ 2 авг. 2024.
  3. "UUID против ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Доступ 2 авг. 2024.
🔗

Связанные инструменты

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