toolkit

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2024 License: MIT Imports: 15 Imported by: 1

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompareVersion

func CompareVersion(version1, version2 string) int

CompareVersion 返回一个整数,用于表示两个版本号的比较结果:

  • 如果 version1 大于 version2,它将返回 1
  • 如果 version1 小于 version2,它将返回 -1
  • 如果 version1 和 version2 相等,它将返回 0
Example
package main

import (
	"fmt"
	"github.com/kercylan98/minotaur/toolkit"
)

func main() {
	result := toolkit.CompareVersion("1.2.3", "1.2.2")
	fmt.Println(result)
}
Output:

1

func ConditionalRetryByExponentialBackoff

func ConditionalRetryByExponentialBackoff(f func() error, cond func() bool, maxRetries int, baseDelay, maxDelay time.Duration, multiplier, randomization float64, ignoreErrors ...error) error

ConditionalRetryByExponentialBackoff 该函数与 RetryByExponentialBackoff 类似,但是可以被中断

  • cond 为中断条件,当 cond 返回 false 时,将会中断重试

该函数通常用于在重试过程中,需要中断重试的场景,例如:

  • 用户请求开始游戏,由于网络等情况,进入重试状态。此时用户再次发送开始游戏请求,此时需要中断之前的重试,避免重复进入游戏

func DisableHttpPProf

func DisableHttpPProf(addr string)

DisableHttpPProf 设置禁用 HTTP PProf

  • 当 HTTP PProf 未启用时不会产生任何效果
  • 该函数支持运行时调用且支持重复调用,重复调用不会重复禁用

func EnableHttpPProf

func EnableHttpPProf(addr, prefix string, errorHandler ...func(err error))

EnableHttpPProf 设置启用 HTTP PProf

  • 该函数支持运行时调用且支持重复调用,重复调用不会重复开启

func Hostname

func Hostname() string

Hostname 获取主机名

func If

func If[V any](express bool, t, f V) V

If 三元运算,如果 express 为真则返回 t,否则返回 f

  • 该函数需要注意所有参数必须已经分配内存,否则极易发生 panic

func LaunchTime

func LaunchTime() time.Time

LaunchTime 获取程序启动时间

func MarshalIndentJSON

func MarshalIndentJSON(v interface{}, prefix, indent string) []byte

MarshalIndentJSON 将对象转换为 json

func MarshalIndentJSONE

func MarshalIndentJSONE(v interface{}, prefix, indent string) ([]byte, error)

MarshalIndentJSONE 将对象转换为 json

func MarshalJSON

func MarshalJSON(v interface{}) []byte

MarshalJSON 将对象转换为 json

func MarshalJSONE

func MarshalJSONE(v interface{}) ([]byte, error)

MarshalJSONE 将对象转换为 json

func MarshalToTargetWithJSON

func MarshalToTargetWithJSON(src, dest interface{})

MarshalToTargetWithJSON 将对象转换为目标对象

func NotNil

func NotNil(a, b any) any

NotNil 返回一个非 nil 的值,如果 a 和 b 都为 nil,则抛出异常

func OldVersion

func OldVersion(version1, version2 string) bool

OldVersion 检查 version2 对于 version1 来说是不是旧版本

Example
package main

import (
	"fmt"
	"github.com/kercylan98/minotaur/toolkit"
)

func main() {
	result := toolkit.OldVersion("1.2.3", "1.2.2")
	fmt.Println(result)
}
Output:

true

func PID

func PID() int

PID 获取进程 PID

func Retry

func Retry(count int, interval time.Duration, f func() error) error

Retry 根据提供的 count 次数尝试执行 f 函数,如果 f 函数返回错误,则在 interval 后重试,直到成功或者达到 count 次数

func RetryAsync

func RetryAsync(count int, interval time.Duration, f func() error, callback func(err error))

RetryAsync 与 Retry 类似,但是是异步执行

  • 传入的 callback 函数会在执行完毕后被调用,如果执行成功,则 err 为 nil,否则为错误信息
  • 如果 callback 为 nil,则不会在执行完毕后被调用

func RetryByExponentialBackoff

func RetryByExponentialBackoff(f func() error, maxRetries int, baseDelay, maxDelay time.Duration, multiplier, randomization float64, ignoreErrors ...error) error

RetryByExponentialBackoff 根据指数退避算法尝试执行 f 函数

  • maxRetries:最大重试次数
  • baseDelay:基础延迟
  • maxDelay:最大延迟
  • multiplier:延迟时间的乘数,通常为 2
  • randomization:延迟时间的随机化因子,通常为 0.5
  • ignoreErrors:忽略的错误,当 f 返回的错误在 ignoreErrors 中时,将不会进行重试

func RetryByRule

func RetryByRule(f func() error, rule func(count int) time.Duration) error

RetryByRule 根据提供的规则尝试执行 f 函数,如果 f 函数返回错误,则根据 rule 的返回值进行重试

  • rule 将包含一个入参,表示第几次重试,返回值表示下一次重试的时间间隔,当返回值为 0 时,表示不再重试
  • rule 的 count 将在 f 首次失败后变为 1,因此 rule 的入参将从 1 开始

func RetryForever

func RetryForever(interval time.Duration, f func() error)

RetryForever 根据提供的 interval 时间间隔尝试执行 f 函数,如果 f 函数返回错误,则在 interval 后重试,直到成功

func UnmarshalJSON

func UnmarshalJSON(data []byte, v interface{})

UnmarshalJSON 将 json 转换为对象

func UnmarshalJSONE

func UnmarshalJSONE(data []byte, v interface{}) error

UnmarshalJSONE 将 json 转换为对象

Types

type Counter

type Counter[T constraints.Number] struct {
	// contains filtered or unexported fields
}

Counter 树计数器

func (*Counter[T]) Add

func (c *Counter[T]) Add(delta T)

Add 增加计数

func (*Counter[T]) Sub

func (c *Counter[T]) Sub() *Counter[T]

Sub 生成子计数器,子计数器的增减操作会影响父计数器

func (*Counter[T]) Val

func (c *Counter[T]) Val() T

Val 获取计数

type DynamicBitSet

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

DynamicBitSet 动态位集

func NewDynamicBitSet

func NewDynamicBitSet() *DynamicBitSet

func (*DynamicBitSet) Bits

func (db *DynamicBitSet) Bits() []uint32

Bits 返回位集

func (*DynamicBitSet) Clear

func (db *DynamicBitSet) Clear(pos uint32)

Clear 清除给定位置的位

func (*DynamicBitSet) Copy

func (db *DynamicBitSet) Copy() *DynamicBitSet

Copy 复制 DynamicBitSet

func (*DynamicBitSet) Equal

func (db *DynamicBitSet) Equal(other *DynamicBitSet) bool

Equal 比较两个 DynamicBitSet 是否相等

func (*DynamicBitSet) In

func (db *DynamicBitSet) In(mask *DynamicBitSet) bool

In 检查 DynamicBitSet 是否包含另一个 DynamicBitSet

func (*DynamicBitSet) IsSet

func (db *DynamicBitSet) IsSet(pos uint32) bool

IsSet 检查给定位置的位是否被设置

func (*DynamicBitSet) Key

func (db *DynamicBitSet) Key() DynamicBitSetKey

Key 返回 DynamicBitSet 表示的键

func (*DynamicBitSet) NotIn

func (db *DynamicBitSet) NotIn(mask *DynamicBitSet) bool

func (*DynamicBitSet) Set

func (db *DynamicBitSet) Set(pos uint32)

Set 设置给定位置的位为 1

func (*DynamicBitSet) String

func (db *DynamicBitSet) String() string

type DynamicBitSetKey

type DynamicBitSetKey = string

type DynamicWaitGroup

type DynamicWaitGroup struct {
	ChangeHook func(before, delta, curr int64)
	// contains filtered or unexported fields
}

DynamicWaitGroup 是一个动态的 WaitGroup,允许在等待的过程中动态地添加或减少等待的计数

func NewDynamicWaitGroup

func NewDynamicWaitGroup() *DynamicWaitGroup

NewDynamicWaitGroup 创建一个新的 DynamicWaitGroup

func (*DynamicWaitGroup) Add

func (d *DynamicWaitGroup) Add(delta int64) int64

Add 增加等待的计数,返回当前的计数

func (*DynamicWaitGroup) Done

func (d *DynamicWaitGroup) Done() int64

Done 减少等待的计数

func (*DynamicWaitGroup) DoneAll

func (d *DynamicWaitGroup) DoneAll()

DoneAll 减少等待的计数到0

func (*DynamicWaitGroup) Wait

func (d *DynamicWaitGroup) Wait(handler ...func())

Wait 等待所有的计数完成

  • 当传入 handler 时将会在计数完成后执行 handler,执行时会阻止计数器的变化

type ErrorHandler

type ErrorHandler interface {
	// Handle 处理错误,根据不同的使用场景,err 可能会为空值
	Handle(err error)
}

ErrorHandler 是一个通用的错误处理器

type ErrorPolicyDecisionHandler

type ErrorPolicyDecisionHandler[T any] interface {
	// Handle 处理错误,根据不同的使用场景,err 可能会为空值
	Handle(err error) T
}

ErrorPolicyDecisionHandler 是一个包含决策的错误处理器

type FunctionalErrorHandler

type FunctionalErrorHandler func(err error)

FunctionalErrorHandler 是一个函数式的错误处理器

func (FunctionalErrorHandler) Handle

func (f FunctionalErrorHandler) Handle(err error)

Handle 处理错误,根据不同的使用场景,err 可能会为空值

type FunctionalErrorPolicyDecisionHandler

type FunctionalErrorPolicyDecisionHandler[T any] func(err error) T

FunctionalErrorPolicyDecisionHandler 是一个函数式的包含决策的错误处理器

func (FunctionalErrorPolicyDecisionHandler[T]) Handle

func (f FunctionalErrorPolicyDecisionHandler[T]) Handle(err error) T

Handle 处理错误,根据不同的使用场景,err 可能会为空值

type FunctionalHandler

type FunctionalHandler func()

func (FunctionalHandler) Handle

func (f FunctionalHandler) Handle()

type Handler

type Handler interface {
	Handle()
}

type InertiaSingleton

type InertiaSingleton[T any] struct {
	// contains filtered or unexported fields
}

func NewInertiaSingleton

func NewInertiaSingleton[T any](constructor func() T) *InertiaSingleton[T]

func (*InertiaSingleton[T]) Get

func (s *InertiaSingleton[T]) Get() T

Directories

Path Synopsis
Package collection 定义了各种对于集合操作有用的各种函数
Package collection 定义了各种对于集合操作有用的各种函数
navigate

Jump to

Keyboard shortcuts

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