Documentation
¶
Index ¶
- Constants
- Variables
- func AddETimeParseFormat(fmt ...string)
- func CallerRunTaskWhenPoolFull() asyncPoolOptiondeprecated
- func CpuProfileFunc(file string, fu func()) error
- func DropTaskWhenPoolFull() asyncPoolOptiondeprecated
- func ERand(len int) string
- func EscapeString(s string) string
- func FixedPoolFilterFunc[T any](filterFunc func(t T) (dropped bool)) func(*FixedPool[T])
- func FuzzParseTime(formats []string, value string) (time.Time, error)
- func FuzzParseTimeLoc(formats []string, value string, loc *time.Location) (time.Time, error)
- func GenId() (id string)deprecated
- func GenIdP(prefix string) (id string)deprecated
- func GenNo(prefix string) string
- func GenNoL(prefix string, len int) string
- func GetLocalIPV4() string
- func IsLocalAddress(address string) bool
- func IsVoid(t reflect.Type) bool
- func MaxInt(a int, b int) int
- func MemoryProfileFunc(file string, fu func()) error
- func MinInt(a int, b int) int
- func Must(err error)
- func MustGet[V any](v V, err error) V
- func NewSubmitAsyncFunc[T any](pool AsyncPoolItf) func(task func() (T, error)) Future[T]deprecated
- func PanicSafeErrFunc(op func() error) func() errordeprecated
- func PanicSafeFunc(op func()) func()deprecated
- func PanicSafeRun(op func())deprecated
- func PanicSafeRunErr(op func() error) errordeprecated
- func ParseClassicDateTime(val string, loc *time.Location) (time.Time, error)
- func Pick(set []rune) rune
- func RandAlpha(n int) string
- func RandLowerAlpha(n int) string
- func RandLowerAlphaNumeric(n int) string
- func RandLowerAlphaNumeric16() string
- func RandNum(n int) string
- func RandOp(ops ...func())
- func RandPick[T any](s []T) T
- func RandRune(n int, set []rune) string
- func RandStr(n int) string
- func RandUpperAlpha(n int) string
- func RandUpperAlphaNumeric(n int) string
- func RunCancellable(f func()) (cancel func())deprecated
- func RunCancellableChan[T any](ch <-chan T, f func(t T) (stop bool)) (cancel func())deprecated
- func RunUntil[T any](wait time.Duration, f func() (stop bool, t T, e error)) (T, error)deprecated
- func SetETimeMarshalFormat(fmt string)
- func SetMachineCode(code int) error
- func ShuffleRunes(letters []rune, times int) []rune
- func ShuffleStr(letters string, times int) string
- func SnowflakeId() (id string)
- func StrByteLen(s string) int
- func UnsafeByt2Str(b []byte) string
- func UnsafeStr2Byt(s string) (b []byte)
- func WeightedRandPick[T interface{ ... }](s []T) T
- type AntsAsyncPooldeprecated
- type AsyncPooldeprecated
- type AsyncPoolItfdeprecated
- type AwaitFuturesdeprecated
- type BasicValue
- type BatchTaskdeprecated
- type BatchTaskResultdeprecated
- type ByteBufPool
- type Complex
- type Consumer
- type Converter
- type DirTree
- type ETime
- type EphPool
- type FixedPool
- type Float
- type Futuredeprecated
- type Integer
- type Number
- type Peek
- type Predicate
- type SignalOncedeprecated
- func NewSignalOnce() *SignalOncedeprecated
- type Supplier
- type Time
- func (t Time) Add(d time.Duration) Time
- func (t Time) AddDate(years int, months int, days int) Time
- func (t Time) After(u Time) bool
- func (t Time) Before(u Time) bool
- func (t Time) EndOfDay() Time
- func (t Time) EndOfMonth() Time
- func (t Time) FormatClassic() string
- func (t Time) FormatClassicLocale() string
- func (t Time) FormatDate() string
- func (t Time) FormatRFC3339() string
- func (t Time) FormatRFC3339Nano() string
- func (t Time) FormatStd() string
- func (t Time) FormatStdLocale() string
- func (t Time) FormatStdMilli() string
- func (t Time) GoString() string
- func (t Time) In(z *time.Location) Time
- func (t Time) InZone(diffInHours int) Time
- func (t Time) LastWeekday(w time.Weekday) Time
- func (t Time) MarshalJSON() ([]byte, error)
- func (t Time) NextWeekday(w time.Weekday) Time
- func (t Time) StartOfDay() Time
- func (t Time) StartOfMonth() Time
- func (t Time) String() string
- func (t Time) Sub(u Time) time.Duration
- func (t Time) ToTime() time.Timedeprecated
- func (t *Time) UnmarshalJSON(b []byte) error
- func (t Time) Unwrap() time.Time
- func (t Time) Value() (driver.Value, error)
- type Transform
- type TransformAsync
- type Void
- type WalkFsFile
- type WeightedItem
Constants ¶
const ( DefFileMode = osutil.DefFileMode GbUnit uint64 = osutil.GbUnit MbUnit uint64 = osutil.MbUnit KbUnit uint64 = osutil.KbUnit )
Deprecated: since v0.3.6, see osutil pkg.
const ( LoopbackLocalHost = "localhost" Loopback127 = "127.0.0.1" LocalIpAny = "0.0.0.0" )
const ( ClassicDateTimeLocaleFormat = "2006/01/02 15:04:05 (MST)" ClassicDateTimeFormat = "2006/01/02 15:04:05" StdDateTimeFormat = "2006-01-02 15:04:05" StdDateTimeMilliFormat = "2006-01-02 15:04:05.000" StdDateTimeLocaleFormat = "2006-01-02 15:04:05 (MST)" SQLDateTimeFormat = "2006-01-02 15:04:05.999999" SQLDateTimeFormatWithT = "2006-01-02T15:04:05.999999" SQLDateFormat = "2006-01-02" )
const (
DEFAULT_LEN = 35
)
Variables ¶
var ( FileExists = osutil.FileExists TryFileExists = osutil.TryFileExists ReadFileAll = osutil.ReadFileAll OpenFile = osutil.OpenFile AppendableFile = osutil.OpenAppendFile ReadWriteFile = osutil.OpenRWFile OpenRFile = osutil.OpenRFile OpenRWFile = osutil.OpenRWFile MkdirAll = osutil.MkdirAll MkdirParentAll = osutil.MkdirParentAll SaveTmpFile = osutil.SaveTmpFile FileHasSuffix = osutil.FileHasSuffix FileHasAnySuffix = osutil.FileHasAnySuffix FileAddSuffix = osutil.FileAddSuffix FileReplaceSuffix = osutil.FileReplaceSuffix FileCutSuffix = osutil.FileCutSuffix FileChangeSuffix = osutil.FileChangeSuffix FileCutDotSuffix = osutil.FileCutDotSuffix TempFilePath = osutil.NewTmpFilePath TempFile = osutil.NewTmpFile TempFilePathSuffix = osutil.NewTmpFilePathWith TempFileSuffix = osutil.NewTmpFileWith WalkDir = osutil.WalkDir MkdirTree = osutil.MkdirTree )
Deprecated: since v0.3.6, see osutil pkg.
var ( // Deprecated: since v0.3.7, migrate to util/async pkg instead. ErrGetTimeout = errors.New("future.TimedGet timeout") )
var (
Printlnf = cli.Printlnf
)
var (
ToETime = WrapTime
)
Functions ¶
func AddETimeParseFormat ¶ added in v0.1.21
func AddETimeParseFormat(fmt ...string)
func CallerRunTaskWhenPoolFull
deprecated
added in
v0.2.2
func CallerRunTaskWhenPoolFull() asyncPoolOption
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func CpuProfileFunc ¶ added in v0.1.13
func DropTaskWhenPoolFull
deprecated
added in
v0.2.2
func DropTaskWhenPoolFull() asyncPoolOption
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func EscapeString ¶ added in v0.1.13
Escape String
Acknowledgement: following code is copied from https://github.com/pingcap/tidb/blob/master/pkg/util/sqlescape/utils.go (Copyright 2021 PingCAP, Inc. Apache License)
func FixedPoolFilterFunc ¶ added in v0.1.21
func FuzzParseTimeLoc ¶ added in v0.1.1
func GenId
deprecated
func GenId() (id string)
Generate Snowflake Id.
The id consists of 64 bits long + 6 digits machine_code. The 64 bits long consists of: sign bit (1 bit) + timestamp (49 bits, ~1487.583 years) + sequenceNo (14 bits, 0~16383).
The max value of Long is 9223372036854775807, which is a string with 19 characters, so the generated id will be of at most 25 characters.
This func is thread-safe.
Deprecated: Use [idutil.New] instead.
func GenIdP
deprecated
Generate Snowflake Id with extra prefix.
The id consists of 64 bits long + 6 digits machine_code. The 64 bits long consists of: sign bit (1 bit) + timestamp (49 bits, ~1487.583 years) + sequenceNo (14 bits, 0~16383).
The max value of Long is 9223372036854775807, which is a string with 19 characters, so the generated id will be of at most 25 characters.
This func is thread-safe.
Deprecated: Use [idutil.Id] instead.
func GetLocalIPV4 ¶ added in v0.1.8
func GetLocalIPV4() string
Get local ipv4 address (excluding loopback address)
func IsLocalAddress ¶ added in v0.1.8
Check whether the address is local (localhost/127.0.0.1)
func MemoryProfileFunc ¶ added in v0.1.13
func NewSubmitAsyncFunc
deprecated
func NewSubmitAsyncFunc[T any](pool AsyncPoolItf) func(task func() (T, error)) Future[T]
Create func that calls SubmitAsync(...) with the given pool.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func PanicSafeErrFunc
deprecated
added in
v0.3.2
func PanicSafeFunc
deprecated
added in
v0.1.1
func PanicSafeFunc(op func()) func()
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func PanicSafeRun
deprecated
added in
v0.2.4
func PanicSafeRun(op func())
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func PanicSafeRunErr
deprecated
added in
v0.3.2
func ParseClassicDateTime ¶ added in v0.1.1
Parse classic datetime format using patterns: "2006-01-02 15:04:05", "2006/01/02 15:04:05".
func RandAlpha ¶
Generate random alphabetic string with specified length
the generated string will contains [a-zA-Z]
func RandLowerAlpha ¶
Generate random alphabetic, lowercase string with specified length
the generated string will contains [a-z]
func RandLowerAlphaNumeric ¶
Generate random alphabetic, lowercase string with specified length
the generated string will contains [a-z0-9]
func RandLowerAlphaNumeric16 ¶
func RandLowerAlphaNumeric16() string
Same as RandLowerAlphaNumeric(16) but with less allocation.
func RandNum ¶
Generate random numeric string with specified length
the generated string will contains [0-9]
func RandStr ¶
Generate random string with specified length
the generated string will contains [a-zA-Z0-9]
ERand() is preferred for higher entrophy
func RandUpperAlpha ¶
Generate random alphabetic, uppercase string with specified length
the generated string will contains [A-Z]
func RandUpperAlphaNumeric ¶
Generate random alphabetic, uppercase string with specified length
the generated string will contains [A-Z0-9]
func RunCancellable
deprecated
added in
v0.3.3
func RunCancellable(f func()) (cancel func())
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func RunCancellableChan
deprecated
added in
v0.3.3
func SetETimeMarshalFormat ¶ added in v0.1.19
func SetETimeMarshalFormat(fmt string)
func SetMachineCode ¶
Overwrite the randomly generated machine code, machine code must be between 0 and 999999, at most 6 digits.
func ShuffleRunes ¶
func ShuffleStr ¶
func SnowflakeId ¶ added in v0.2.8
func SnowflakeId() (id string)
Generate Snowflake Id
The id consists of [64 bits long] + [6 digits machine_code] The 64 bits long consists of: [sign bit (1 bit)] + [timestamp (49 bits, ~1487.583 years)] + [sequenceNo (14 bits, 0~16383)]
The max value of Long is 9223372036854775807, which is a string with 19 characters, so the generated id will be of at most 25 characters ¶
This func is thread-safe
func UnsafeByt2Str ¶
Convert []byte to string without alloc.
Both the []byte and the string share the same memory.
Any modification on the original []byte is reflected on the returned string.
byt = []byte("abc")
s = UnsafeByt2Str(byt) // "abc" using the same memory
byt[0] = 'd' // modified in place at 0, also reflected on s ("dbc")
Tricks from https://github.com/valyala/fasthttp and https://go101.org/article/unsafe.html
func UnsafeStr2Byt ¶
Convert string to []byte without alloc.
Both the []byte and the string share the same memory.
The resulting []byte is not modifiable, program will panic if modified.
s := "abc" byt := UnsafeStr2Byt(s) // "abc" but in []byte byt[0] = 'd' // will panic
Tricks from https://github.com/valyala/fasthttp and https://go101.org/article/unsafe.html
func WeightedRandPick ¶ added in v0.1.11
func WeightedRandPick[T interface{ GetWeight() float64 }](s []T) T
Types ¶
type AntsAsyncPool
deprecated
added in
v0.2.10
type AntsAsyncPool struct {
// contains filtered or unexported fields
}
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func (*AntsAsyncPool) Go ¶ added in v0.2.10
func (a *AntsAsyncPool) Go(f func())
func (*AntsAsyncPool) Run ¶ added in v0.3.3
func (p *AntsAsyncPool) Run(f func() error) Future[struct{}]
func (*AntsAsyncPool) Stop ¶ added in v0.2.10
func (a *AntsAsyncPool) Stop()
func (*AntsAsyncPool) StopAndWait ¶ added in v0.2.10
func (a *AntsAsyncPool) StopAndWait()
type AsyncPool
deprecated
type AsyncPool struct {
// contains filtered or unexported fields
}
A long live, bounded pool of goroutines.
Use miso.NewAsyncPool to create a new pool.
AsyncPool internally maintains a task queue with limited size and limited number of workers.
By default, if the task queue is full and all workers are busy, the caller of *AsyncPool.Go is blocked indefinitively until the task can be processed. You can use DropTaskWhenPoolFull or CallerRunTaskWhenPoolFull to change this behaviour.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewAsyncPool
deprecated
Create a bounded pool of goroutines.
The maxTasks determines the capacity of the task queues.
The maxWorkers determines the max number of workers.
By default, if the task queue is full and all workers are busy, the caller of *AsyncPool.Go is blocked indefinitively until the task can be processed. You can use DropTaskWhenPoolFull or CallerRunTaskWhenPoolFull to change this behaviour.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func (*AsyncPool) Go ¶
func (p *AsyncPool) Go(f func())
Submit task to the pool.
If the pool is closed, caller will execute the submitted task directly.
func (*AsyncPool) Stop ¶ added in v0.1.10
func (p *AsyncPool) Stop()
Stop the pool.
Once the pool is stopped, new tasks submitted are executed directly by the caller.
func (*AsyncPool) StopAndWait ¶ added in v0.1.10
func (p *AsyncPool) StopAndWait()
Stop the pool and wait until existing workers drain all the remaining tasks.
Once the pool is stopped, new tasks submitted are executed directly by the caller.
type AsyncPoolItf
deprecated
added in
v0.2.10
type AsyncPoolItf interface {
Go(f func())
Stop()
StopAndWait()
Run(f func() error) Future[struct{}]
}
Async Pool Interface
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewAntsAsyncPool
deprecated
added in
v0.2.10
func NewAntsAsyncPool(maxWorkers int, opts ...asyncPoolOption) AsyncPoolItf
Create a bounded pool of goroutines.
The maxTasks determines the capacity of the task queues.
The maxWorkers determines the max number of workers.
By default, if the task queue is full and all workers are busy, the caller of AsyncPoolItf.Go() is blocked indefinitively until the task can be processed. You can use DropTaskWhenPoolFull or CallerRunTaskWhenPoolFull to change this behaviour.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewCpuAsyncPool
deprecated
added in
v0.1.11
func NewCpuAsyncPool() AsyncPoolItf
Create AsyncPool with number of workers equals to 4 * num_cpu.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewIOAsyncPool
deprecated
added in
v0.1.11
func NewIOAsyncPool() AsyncPoolItf
Create AsyncPool with number of workers equals to 8 * num_cpu and a task queue of size 500.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
type AwaitFutures
deprecated
type AwaitFutures[T any] struct { // contains filtered or unexported fields }
AwaitFutures represent tasks that are submitted to the pool asynchronously whose results are awaited together.
AwaitFutures should only be used once for the same group of tasks.
Use miso.NewAwaitFutures() to create one.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewAwaitFutures
deprecated
func NewAwaitFutures[T any](pool AsyncPoolItf) *AwaitFutures[T]
Create new AwaitFutures for a group of tasks.
*AsyncPool is optional, provide nil if not needed.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func (*AwaitFutures[T]) Await ¶
func (a *AwaitFutures[T]) Await() []Future[T]
Await results of all tasks.
func (*AwaitFutures[T]) AwaitAnyErr ¶ added in v0.1.2
func (a *AwaitFutures[T]) AwaitAnyErr() error
Await results of all tasks and return any error that is found in the task Futures.
func (*AwaitFutures[T]) AwaitResultAnyErr ¶ added in v0.2.0
func (a *AwaitFutures[T]) AwaitResultAnyErr() ([]T, error)
Await results of all tasks and return any error that is found in the task Futures.
func (*AwaitFutures[T]) SubmitAsync ¶
func (a *AwaitFutures[T]) SubmitAsync(task func() (T, error))
Submit task to AwaitFutures.
type BatchTask
deprecated
added in
v0.1.16
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func (*BatchTask[T, V]) Close ¶ added in v0.1.16
func (b *BatchTask[T, V]) Close()
Close underlying pipeline channel without waiting.
func (*BatchTask[T, V]) Generate ¶ added in v0.1.16
func (b *BatchTask[T, V]) Generate(task T)
Generate task.
func (*BatchTask[T, V]) Wait ¶ added in v0.1.16
func (b *BatchTask[T, V]) Wait() []BatchTaskResult[V]
Wait until all generated tasks are completed and close pipeline channel.
type BatchTaskResult
deprecated
added in
v0.1.19
type ByteBufPool ¶ added in v0.1.2
type ByteBufPool struct {
MaxCap int // default max cap is 4096 bytes.
// contains filtered or unexported fields
}
func NewByteBufferPool ¶ added in v0.1.2
func NewByteBufferPool(initCap int) *ByteBufPool
func (*ByteBufPool) Get ¶ added in v0.1.2
func (b *ByteBufPool) Get() *bytes.Buffer
func (*ByteBufPool) Put ¶ added in v0.1.2
func (b *ByteBufPool) Put(buf *bytes.Buffer)
type Complex ¶ added in v0.2.0
type Complex interface {
~complex64 | ~complex128
}
type ETime ¶
type ETime = Time
func MayParseETime ¶ added in v0.1.25
func ParseETime ¶ added in v0.1.24
type EphPool ¶ added in v0.3.3
type EphPool[T any] struct { // contains filtered or unexported fields }
func NewEphPool ¶ added in v0.3.3
type FixedPool ¶ added in v0.1.21
type FixedPool[T any] struct { // contains filtered or unexported fields }
func NewFixedPool ¶ added in v0.1.21
type Future
deprecated
type Future[T any] interface { // Get result without timeout. Get() (T, error) // Get result with timeout, returns ErrGetTimeout if timeout exceeded. TimedGet(timeout int) (T, error) // Then callback to be invoked when the Future is completed. // // Then callback should only be set once for every Future. Then(tf func(T, error)) // Then callback to be invoked when the Future is completed. // // Then callback should only be set once for every Future. ThenErr(tf func(error)) }
Result of a asynchronous task.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewCompletedFuture
deprecated
added in
v0.1.25
func SubmitAsync
deprecated
func SubmitAsync[T any](pool AsyncPoolItf, task func() (T, error)) Future[T]
Create Future, once the future is created, it starts running on a saperate goroutine from the pool.
Deprecated: since v0.3.7, migrate to util/async pkg instead.
type SignalOnce
deprecated
added in
v0.1.13
type SignalOnce struct {
// contains filtered or unexported fields
}
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func NewSignalOnce
deprecated
added in
v0.1.13
func NewSignalOnce() *SignalOnce
Deprecated: since v0.3.7, migrate to util/async pkg instead.
func (*SignalOnce) Closed ¶ added in v0.1.13
func (s *SignalOnce) Closed() bool
func (*SignalOnce) Notify ¶ added in v0.1.13
func (s *SignalOnce) Notify()
func (*SignalOnce) TimedWait ¶ added in v0.1.13
func (s *SignalOnce) TimedWait(timeout time.Duration) (isTimeout bool)
func (*SignalOnce) Wait ¶ added in v0.1.13
func (s *SignalOnce) Wait()
type Supplier ¶ added in v0.1.4
type Supplier[T any] func() T
Supplier of T
Deprecated since v0.3.7.
type Time ¶ added in v0.3.1
Enhanced wrapper of time.Time.
This type implements sql.Scanner and driver.Valuer, it can be safely used in GORM just like time.Time.
It also implements json/encoding Marshaler and Unmarshaler to support json marshalling.
In previous releases, Time was a type alias to time.Time. Since v0.1.2, Time embeds time.Time to access all of it's methods.
To cast from time.Time to Time, use WrapTime method. To cast from Time to time.Time, use Time.Unwrap method.
By default, Time support following unmarshaling formats:
- time.RFC3339
- time.RFC3339Nano
- 2006-01-02 15:04:05.999999
- 2006-01-02
- 2006-01-02T15:04:05.999999
- millseconds since unix epoch
- seconds since unix epoch
By default, Time is marshaled as millseconds since unix epoch. You can change this behaviour though SetETimeMarshalFormat.
func (Time) EndOfMonth ¶ added in v0.3.2
func (Time) FormatClassic ¶ added in v0.3.1
Format as 2006/01/02 15:04:05
func (Time) FormatClassicLocale ¶ added in v0.3.1
Format as 2006/01/02 15:04:05 (MST)
func (Time) FormatRFC3339 ¶ added in v0.3.2
Format as time.RFC3339
func (Time) FormatRFC3339Nano ¶ added in v0.3.2
Format as time.RFC3339Nano
func (Time) FormatStdLocale ¶ added in v0.3.1
Format as 2006-01-02 15:04:05 (MST)
func (Time) FormatStdMilli ¶ added in v0.3.1
Format as 2006-01-02 15:04:05.000
func (Time) MarshalJSON ¶ added in v0.3.1
Implements encoding/json Marshaler
func (Time) StartOfMonth ¶ added in v0.3.2
func (Time) ToTime
deprecated
added in
v0.3.1
Deprecated: change to Time.Unwrap.
func (*Time) UnmarshalJSON ¶ added in v0.3.1
Implements encoding/json Unmarshaler.
type Transform ¶ added in v0.1.4
type Transform[T any] func(t T) T
Transform t to another t
Deprecated since v0.3.7.
type WalkFsFile ¶ added in v0.2.6
type WalkFsFile = osutil.WalkFsFile
type WeightedItem ¶ added in v0.1.11
func (WeightedItem[T]) GetWeight ¶ added in v0.1.11
func (w WeightedItem[T]) GetWeight() float64