PointerFactory

package module
v1.0.4 Latest Latest
Warning

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

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

README

Fork GitHub Release Tests

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 (
	GlobalName       string = "PointerFactory"
	GlobalDateUpdate string = "06-12-2024"
	GlobalHash       string = "b64913809bdf77ac1d2f6af6044a7e5c1dbc0d3a"

	GlobalVersion      string = "v1.0.4"
	GlobalVersionMajor string = "v1"
	GlobalVersionMinor uint16 = 0
	GlobalVersionPatch uint16 = 4

	NumBase   = 36
	YearPoint = 2024
)
View Source
const IncrementMAX = 10000

Variables

This section is empty.

Functions

This section is empty.

Types

type CreatorObj added in v0.1.2

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

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 (*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

type WrapperObj added in v0.2.5

type WrapperObj struct {
	TypeMAP map[rune]TypeTag `json:"types"`

	GlobalVersion    string `json:"ver"`
	GlobalDateUpdate string `json:"update"`
	GlobalName       string `json:"name"`

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

	IncrementMAX uint64 `json:"increment_max"`
	// contains filtered or unexported fields
}

func CreateWrapper added in v0.2.5

func CreateWrapper() WrapperObj

func (*WrapperObj) CRC added in v0.2.5

func (w *WrapperObj) CRC(str string) string

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

func (*WrapperObj) Decode added in v0.2.5

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

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

func (*WrapperObj) Encode added in v0.2.5

func (w *WrapperObj) Encode(point *PointerObj) string

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

func (*WrapperObj) EncodeINT added in v0.2.5

func (w *WrapperObj) EncodeINT(point *PointerObj) string

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

func (*WrapperObj) InitCreator added in v0.2.5

func (w *WrapperObj) InitCreator(server uint16) *CreatorObj

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

func (*WrapperObj) InitCreatorDate added in v0.2.5

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

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

func (*WrapperObj) ParseType added in v0.2.5

func (w *WrapperObj) ParseType(char rune) TypeTag

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

func (*WrapperObj) StartBenchmarks added in v0.3.3

func (w *WrapperObj) StartBenchmarks(b *testing.B)

func (*WrapperObj) StartTests added in v0.3.3

func (w *WrapperObj) StartTests(t *testing.T)

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