PointerFactory

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 5, 2024 License: GPL-3.0 Imports: 5 Imported by: 0

README

Fork GitHub Release

Go Report Card

GitHub repo file or directory count GitHub code size in bytes GitHub repo size

PointerFactory

Фабрика работы с UID в кластере


Пример указателя

Строчный (внешний): bzyrcn1hssighrb

Числовой (внутренний): 129499999999999999999

Тип Сервер Указатель CRC
внешний b zy rcn1hssighr b
внутренний 1294 99999999999999999
Допустимые значения сервера: от 1 до 1294
Допустимые значения указателя: от 1 до 99999999999999999
Алгоритм CRC: file

Генератор
  • Уникальность указателей сохраняется при создании до 9999 указателей в минуту на тип.
  • При превышении возможны коллизии с будущими указателями.
  • Поддерживается асинхронный режим создания. (уникальность при асинхронности сохраняется)
Пример использования
crt := PointerFactory.InitCreator(12) // Задаем сервер
id := crt.New(PointerFactory.TypeAuthor) //При создании указываем тип генерируемого указателя

fmt.Println(id.String(), id.StringINT(), id.Uint()) //Вывод трех возможных 'однострочных' вариантов
>>> a0c18dlxjph 122683370001 122683370001

Результат оптимизаций
  • CRS - 2,49
  • Линейная генерация - 4,84
  • Асинхрон по потокам - 1,37
  • Асинхрон с единым потоком - 1,8


Mirrors

Documentation

Index

Constants

View Source
const GlobalDateUpdate string = "06-06-2024"
View Source
const GlobalName string = "PointerFactory"
View Source
const GlobalVersion string = "0.1.2"
View Source
const IncrementMAX = 10000
View Source
const NumBase = 36
View Source
const YearPoint = 2024

Variables

View Source
var TypeMAP = map[rune]TypeTag{
	'0': TypeNone,
}

Functions

func CRC

func CRC(str string) string

Односимвольная контрольная сумма по входной строке

func Encode added in v0.1.2

func Encode(point *PointerObj) string

Формирование строки из указателя

func EncodeINT added in v0.1.2

func EncodeINT(point *PointerObj) string

Формирование строки из указателя десятичным числом (без CRC)

Types

type ConfImportObj added in v0.1.2

type ConfImportObj struct {
	Name   string `json:"name"`
	Ver    string `json:"ver"`
	Update string `json:"update"`

	NumBase   int `json:"num_base"`
	YearPoint int `json:"year_point"`

	Types *map[rune]TypeTag `json:"types"`
}

Cтруктура для импорта параметров

type CreatorObj added in v0.1.2

type CreatorObj struct {
	// contains filtered or unexported fields
}

CreatorObj Класс создания уникальных инкрементов

func InitCreator added in v0.1.2

func InitCreator(server uint16) *CreatorObj

Инициализация метода создания новых индексов

func InitCreatorDate added in v0.1.2

func InitCreatorDate(server uint16, timeNOW time.Time) *CreatorObj

Инициализация для конкретной даты

func (*CreatorObj) Close added in v0.1.2

func (obj *CreatorObj) Close()

Закрытие всех потоков и очистка буфера

func (*CreatorObj) New added in v0.1.2

func (obj *CreatorObj) New(types TypeTag) *PointerObj

Создание нового уникального указателя

func (*CreatorObj) NewFixed added in v0.1.2

func (obj *CreatorObj) NewFixed(types TypeTag, pointer uint64) *PointerObj

Создание фиксированного указателя

type IncrementObj added in v0.1.2

type IncrementObj struct {
	sync.Mutex
	// contains filtered or unexported fields
}

IncrementObj Хранилише инкрементов

type PointerObj added in v0.1.2

type PointerObj struct {
	// contains filtered or unexported fields
}

Обьект указателя формальный

func Decode added in v0.1.2

func Decode(str string) (*PointerObj, error)

Получение указателя из строки

func (*PointerObj) Compare added in v0.1.2

func (obj *PointerObj) Compare(pointerObj *PointerObj) bool

func (*PointerObj) Pointer added in v0.1.2

func (obj *PointerObj) Pointer() string

func (*PointerObj) PointerN added in v0.1.2

func (obj *PointerObj) PointerN() uint64

func (*PointerObj) Server added in v0.1.2

func (obj *PointerObj) Server() string

func (*PointerObj) ServerN added in v0.1.2

func (obj *PointerObj) ServerN() uint16

func (*PointerObj) String added in v0.1.2

func (obj *PointerObj) String() string

func (*PointerObj) StringINT added in v0.1.2

func (obj *PointerObj) StringINT() string

func (*PointerObj) Type added in v0.1.2

func (obj *PointerObj) Type() string

func (*PointerObj) TypeN added in v0.1.2

func (obj *PointerObj) TypeN() byte

func (*PointerObj) Uint added in v0.1.2

func (obj *PointerObj) Uint() uint64

type TypeTag added in v0.1.2

type TypeTag byte
const TypeNone TypeTag = 0

func ParseType added in v0.1.2

func ParseType(char rune) TypeTag

Парсинг типа по символу

Directories

Path Synopsis
compile
cmd
example
cmd command
fork command
wasm command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL