Documentation
¶
Index ¶
- Constants
- func AsError[T any](err error) bool
- func BigIntToIP(i *big.Int) net.IP
- func CalculateCIDR(startIP, endIP string) (string, error)
- func CopyToClipboardUseOsc52(str string) error
- func DeepCopy(value any) any
- func DeleteSelf()
- func Duration2String(t time.Duration, secondPrecision ...string) string
- func EffectsPrint(str string, n int, opts ...EffectsPrintOptions)
- func FindMissingNumbers(numbers []int) []int
- func GetGitBranchHash(url, branch string) (string, error)
- func Getenv(key string, defaultValue string) string
- func GroupNumbers(numbers []int, groupSize int) [][]int
- func IpToBigInt(ip net.IP) *big.Int
- func IsError[T any](err error) bool
- func IsProcessExist(pid string) bool
- func MarkAsError[T any](err error) error
- func NewWorkerPool[T any](f job[T], poolSize ...int) *workerPool[T]
- func RandomPort(start, end uint16) uint16
- func ReadLastNLines(data io.ReadSeeker, n int, whence int, setChunkSize ...int64) ([]string, error)
- func SafeRun(fn func(), catchHandler func(err any))
- func Sha256(data []byte) []byte
- func TimeToPrt(t time.Time) *time.Time
- func Try(fn func()) *trydeprecated
- func UniqueArray[T any, N any](data []N, f func(N) T) []T
- func UnwrapError[T any](err error) error
- type Broadcaster
- func (b *Broadcaster[T]) Broadcast(msg T) int
- func (b *Broadcaster[T]) BroadcastAsync(msg T)
- func (b *Broadcaster[T]) BroadcastSync(msg T, timeout ...time.Duration) int
- func (b *Broadcaster[T]) Close()
- func (b *Broadcaster[T]) Len() int
- func (b *Broadcaster[T]) Subscribe() <-chan T
- func (b *Broadcaster[T]) SubscribeHandle(f func(T) error) (err error)
- func (b *Broadcaster[T]) Unsubscribe(ch <-chan T)
- func (b *Broadcaster[T]) UnsubscribesAll()
- type EffectsPrintOptions
- type Error
- type FileInfo
- type Num
- type Snowflake
Constants ¶
const MaxPort uint16 = 1<<16 - 1
Variables ¶
This section is empty.
Functions ¶
func CalculateCIDR ¶ added in v0.1.7
CIDR 计算
func CopyToClipboardUseOsc52 ¶ added in v0.1.7
func DeleteSelf ¶
func DeleteSelf()
func Duration2String ¶ added in v0.1.7
func EffectsPrint ¶ added in v0.1.16
func EffectsPrint(str string, n int, opts ...EffectsPrintOptions)
EffectsPrint 打印字符串,加滚动特效
func FindMissingNumbers ¶ added in v0.1.7
FindMissingNumbers 寻找连续数字中的空缺数字
func GetGitBranchHash ¶
func GroupNumbers ¶ added in v0.1.7
GroupNumbers 将连续数字进行分组 numbers 输入数字 groupSize 每组最多容纳数字个数,当groupSize <= 0时不做限制
func IsProcessExist ¶
func MarkAsError ¶ added in v0.1.15
func NewWorkerPool ¶ added in v0.1.10
func ReadLastNLines ¶ added in v0.1.16
func SafeRun ¶ added in v0.1.17
func SafeRun(fn func(), catchHandler func(err any))
SafeRun executes fn safely, catching any panics. If a panic occurs, catchHandler is called with the panic value. If catchHandler is nil, the panic is logged by default.
func Try
deprecated
added in
v0.1.6
func Try(fn func()) *try
Deprecated: Try uses a non-idiomatic chainable pattern that incurs unnecessary heap allocations and obscures control flow.
Please use SafeRun instead, which implements the standard Go defer-recover pattern.
Example replacement:
util.SafeRun(func() {
// Do logic
}, func(err any) {
// Handle panic
})
func UniqueArray ¶ added in v0.1.7
UniqueArray 输出唯一数组
Types ¶
type Broadcaster ¶ added in v0.1.9
type Broadcaster[T any] struct { // contains filtered or unexported fields }
func NewBroadcaster ¶ added in v0.1.9
func NewBroadcaster[T any](chanBufSize ...int) *Broadcaster[T]
NewBroadcaster 创建一个新的 Broadcaster chanBufSize 设置 channel 的缓冲大小,默认为 1
func (*Broadcaster[T]) Broadcast ¶ added in v0.1.9
func (b *Broadcaster[T]) Broadcast(msg T) int
Broadcast 非阻塞式将 msg 同步分发给所有活跃的订阅者 *如果某个订阅者没及时读取,就丢弃这条消息以免阻塞调用者,因此不能保证消息100%送达所有订阅者* 适用于 允许丢包 的实时通知场景 不适用 于任务分发或强一致性消息队列
func (*Broadcaster[T]) BroadcastAsync ¶ added in v0.1.9
func (b *Broadcaster[T]) BroadcastAsync(msg T)
BroadcastAsync 异步分发
func (*Broadcaster[T]) BroadcastSync ¶ added in v0.1.18
func (b *Broadcaster[T]) BroadcastSync(msg T, timeout ...time.Duration) int
BroadcastWaitAll 阻塞式将 msg 同步分发给所有订阅者 默认50ms兜底,防止卡死整个广播调度 *当timeout为0时不会丢弃消息,但如果某个订阅者一直不读,会卡死调用者和整个广播调度* 适用于 任务分发或强一致性消息队列 BroadcastSync 阻塞式将 msg 分发给所有订阅者 (同步发送) 默认带有 50ms 超时兜底,防止单个慢速订阅者卡死整个广播系统。
timeout: 可选。 - 不传: 默认 50ms 超时。 - 传 0: 无限等待 (慎用! 可能导致死锁)。 - 传 >0: 指定超时时间。
适用场景: 必须送达的关键通知 (如: 拍卖成交、倒计时结束、任务分发或强一致性消息队列) 区别:
- Broadcast: 非阻塞,缓冲区满则丢弃 (Fire-and-Forget)。
- BroadcastSync: 阻塞等待,直到发送成功或超时 (Reliable-ish)。
func (*Broadcaster[T]) Close ¶ added in v0.1.9
func (b *Broadcaster[T]) Close()
func (*Broadcaster[T]) Len ¶ added in v0.1.9
func (b *Broadcaster[T]) Len() int
func (*Broadcaster[T]) Subscribe ¶ added in v0.1.9
func (b *Broadcaster[T]) Subscribe() <-chan T
Subscribe 返回一个新的接收 channel,订阅后可以从该 channel 读取广播消息
func (*Broadcaster[T]) SubscribeHandle ¶ added in v0.1.9
func (b *Broadcaster[T]) SubscribeHandle(f func(T) error) (err error)
SubscribeHandle 类似于 Subscribe,但是不返回 channel,而是通过函数进行处理
func (*Broadcaster[T]) Unsubscribe ¶ added in v0.1.9
func (b *Broadcaster[T]) Unsubscribe(ch <-chan T)
Unsubscribe 取消订阅,关闭对应 channel
func (*Broadcaster[T]) UnsubscribesAll ¶ added in v0.1.9
func (b *Broadcaster[T]) UnsubscribesAll()
UnsubscribesAll 取消所有订阅,关闭所有 channel
type EffectsPrintOptions ¶ added in v0.1.16
type Error ¶ added in v0.1.15
type Error[T any] struct { // contains filtered or unexported fields }
type FileInfo ¶
type FileInfo struct {
Name string `json:"name"`
Path string `json:"path"`
Sha string `json:"sha"`
Size int `json:"size"`
Url string `json:"url"`
HtmlUrl string `json:"html_url"`
GitUrl string `json:"git_url"`
DownloadUrl string `json:"download_url"`
Type string `json:"type"`
Content string `json:"content"`
Encoding string `json:"encoding"`
Links struct {
Self string `json:"self"`
Git string `json:"git"`
Html string `json:"html"`
} `json:"_links"`
}
func GetGitHubFileInfo ¶
type Snowflake ¶ added in v0.1.7
type Snowflake struct {
// contains filtered or unexported fields
}