1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/silis-TheId

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Распределённый генератор уникальных идентификаторов, основанный на алгоритме SnowFlake, позволяет генерировать более быстрые и короткие идентификаторы. Многоязыковая версия генератора позволяет создавать идентификаторы в различных средах: на фронтенде, бэкенде и в базе данных, поддерживая языки JavaScript, C#, Java, SQL и C.

Что такое распределённый идентификатор?

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

Структура распределённого идентификатора

Один распределенный идентификатор занимает 12 байт или 24 шестнадцатеричных символа, что эквивалентно длине char(24) в базе данных. Один байт равен двум символам или восьми битам.

1 идентификатор = 12 байтов = 24 символа = char(24)
1 байт = 2 символа = 8 бит

Пример версии на JavaScript

<html>
    <head>
        <script src="id.min.js"></script>
    </head>
    <body>
        <script>
            var id = Id.generateString();
            document.write(id);
        </script>
    </body>
</html>

Пример версии на C#

После поиска «SiliS.Id» в Nuget установите пакет.

Nuget SiliS.Id

Генерация строкового типа идентификатора:

using App;
using System;

namespace App.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var id = Id.GenerateString();
            Console.WriteLine(id);
        }
    }
}

Создание объекта идентификатора с универсальным типом сущности:

using App;
using System;

namespace App.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var id = new Id<MyEntity>;
            Console.WriteLine(id.ToString());
        }
    }
}

Пример версии на Java

package app.test;
import app.Id;

public class Program
{
    public static void main(String []args)
    {
        String id = Id.generateString();
        System.out.println(id);
    }
}

Пример версии для SQL Server

SELECT dbo.Id_GenerateChar(RAND()) --生成12byte的Id,再转成24byte的Char类型
SELECT dbo.Id11_GenerateChar(RAND()) --生成11byte的Id,再转成22byteChar类型
SELECT dbo.Id10_GenerateChar(RAND()) --生成10byte的Id,再转成20byte的Char类型
SELECT dbo.Id9_GenerateChar(RAND()) --生成9byte的Id,再转成18byte的Char类型
SELECT dbo.Id8_GenerateChar(RAND()) --生成8byte的Id,再转成16byte的Char类型

SELECT dbo.Id_GenerateBinary(RAND()) --生成12byte的Id,再转成12byte的Binary类型
SELECT dbo.Id11_GenerateBinary(RAND()) --生成11byte的Id,влечёт за собой 11byte的Binary类型
SELECT dbo.Id10_GenerateBinary(RAND()) --生成10byte的Id,再转成10byte的Binary类型
SELECT dbo.Id9_GenerateBinary(RAND()) --生成9byte的Id,再转成9byte的Binary类型
SELECT dbo.Id8_GenerateBinary(RAND()) --生成8byte的Id,再转成8byte的Binary类型

SELECT dbo.Id8_GenerateInt(RAND()) --生成8byte的Id,再转成8byte的Int类型

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

Пример версии на языке C

#include "id.c"

int main()
{
   char* id = Id_generateString();
   printf("%s", id);
   free(id); //необходимо освободить память
   
   return 0;
}

Обратите внимание на версию на языке C, после использования необходимо вручную освободить память, выделенную для идентификатора.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

TheId — распределённый уникальный генератор идентификаторов, основанный на алгоритме SnowFlake, который позволяет генерировать идентификаторы быстрее и короче. Многоязыковая версия генератора позволяет создавать идентификаторы на разных платформах: фронтенд, бэкенд, база данных. Поддерживает языки JS/C#/JAVA/SQL/C. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/silis-TheId.git
git@api.gitlife.ru:oschina-mirror/silis-TheId.git
oschina-mirror
silis-TheId
silis-TheId
master