hggTool

package module
v2.2.1 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2026 License: Apache-2.0 Imports: 0 Imported by: 0

README

pkg_tool

这是一个功能丰富的工具包项目,包含了多种工具模块,适用于不同的开发需求。

功能特性

  • Web 中间件:提供 Gin 框架的中间件支持,包括 JWT 认证、限流、日志记录等。
  • Rpc 中间件:多种限流算法【滑动窗口、计数器、令牌桶等】、负载均衡算法、熔断拦截器、可观测性平台。
  • 榜单模型计算:提供多种基于高性能榜单服务模型计算封装。
  • 定时任务的调度机制:二次封装定时任务调度机制,可控制主机节点负载进行任务调度以及候选等实现。
  • 数据库迁移工具:支持数据库的双写池、迁移调度器、数据校验等功能。
  • 限流与锁:实现滑动窗口限流和 Redis 分布式锁。
  • 消息队列:消息队列顶级接口封装,支持 Kafka 的生产者和消费者实现。
  • 配置管理:提供基于 Viper 的配置管理接口。
  • 类型转换:提供多种类型转换工具函数。
  • 日志与监控:支持多种日志框架和 Prometheus 监控。

安装

确保你已经安装了 Go 环境且版本1.26+,然后使用以下命令获取项目:

go get github.com/hgg-6/pkgTool/v2@latest

使用示例

缓存计数服务
redisClient := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})

localCache := cacheLocalx.NewCacheLocalRistrettoStr[string, string](ristretto.NewCache[string, string]())

countService := cacheCountServicex.NewCount[string, string](redisClient, localCache)
数据库迁移
srcDB, _ := gorm.Open(mysql.Open("user:pass@tcp(localhost:3306)/src_db"), &gorm.Config{})
dstDB, _ := gorm.Open(mysql.Open("user:pass@tcp(localhost:3306)/dst_db"), &gorm.Config{})

doubleWritePool := dbMovex.NewDoubleWritePool(srcDB, dstDB, logger, config...)
消息队列生产者
config := sarama.NewConfig()
config.Producer.Return.Successes = true

producer, _ := sarama.NewSyncProducer([]string{"localhost:9092"}, config)
messageProducer := saramaProducerx.NewSaramaProducerStr[sarama.SyncProducer](producer, config)
消息队列消费者
consumerGroup, _ := sarama.NewConsumerGroup([]string{"localhost:9092"}, "group_id", sarama.NewConfig())
consumer := saramaConsumerx.NewConsumerIn(consumerGroup, handler)
配置管理
viperConfig := viper.New()
viperConfig.SetDefault("mysql.dsn", "user:pass@tcp(localhost:3306)/dbname")

configService := viperx.NewViperConfigStr()
configService.InitViperLocal("config.yaml", DefaultConfig{})
类型转换
intValue, ok := toanyx.ToAny[int](someValue)
stringValue, ok := toanyx.ToAny[string](someValue)
限流
redisClient := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})

limiter := redis_slide_window.NewRedisSlideWindowKLimiter(redisClient, time.Minute, 100)
分布式锁
redisClients := []*redis.Client{
redis.NewClient(&redis.Options{Addr: "localhost:6379"}),
}

lock := redsyncx.NewLockRedsync(redisClients, logger, redsyncx.Config{})
日志记录
zapLogger, _ := zap.NewProduction()
logger := zaplogx.NewZapLogger(zapLogger)
Web 中间件
r := gin.Default()

jwtMiddleware := jwtx.NewJwtxMiddlewareGinx(redisClient, &jwtx.JwtxMiddlewareGinxConfig{})
r.Use(jwtMiddleware.VerifyToken)

贡献

欢迎贡献代码和提出问题。请先阅读 贡献指南

许可证

该项目使用 MIT 许可证。详情请查看 LICENSE 文件。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComparatorRealNumber

func ComparatorRealNumber[T RealNumber](src T, dst T) int

ComparatorRealNumber 用于比较两个对象的大小

  • src < dst, 返回-1

  • src = dst, 返回0

  • src > dst, 返回1

    不要返回任何其它值!

Types

type Comparator

type Comparator[T any] func(src T, dst T) int

Comparator 用于比较两个对象的大小

  • src < dst, 返回-1

  • src = dst, 返回0

  • src > dst, 返回1

    不要返回任何其它值!

type RealNumber

type RealNumber interface {
	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 |
		~int | ~int8 | ~int16 | ~int32 | ~int64 |
		~float32 | ~float64
}

RealNumber 实数 绝大多数情况下,你都应该用这个来表达数字的含义

Directories

Path Synopsis
DBx
mysqlX/gormx/dbLogx/mocks
Package dbLogxmocks is a generated GoMock package.
Package dbLogxmocks is a generated GoMock package.
redisX/cacheCountServiceX
Package cacheCountServicex 基于redis缓存计数服务【一套基于redis和本地缓存的计数服务,并且维护了一个榜单的数据,优先命中本地缓存】
Package cacheCountServicex 基于redis缓存计数服务【一套基于redis和本地缓存的计数服务,并且维护了一个榜单的数据,优先命中本地缓存】
channelx
messageQueuex
Package messageQueuex 消息队列抽象接口
Package messageQueuex 消息队列抽象接口
mqX
mqX/mocks/BatchConsumerHandler
Package BatchConsumerHandlermocks is a generated GoMock package.
Package BatchConsumerHandlermocks is a generated GoMock package.
mqX/mocks/Consumer
Package Consumermocks is a generated GoMock package.
Package Consumermocks is a generated GoMock package.
mqX/mocks/ConsumerHandler
Package ConsumerHandlermocks is a generated GoMock package.
Package ConsumerHandlermocks is a generated GoMock package.
mqX/mocks/ConsumerHandlerType
Package ConsumerHandlerTypemocks is a generated GoMock package.
Package ConsumerHandlerTypemocks is a generated GoMock package.
mqX/mocks/Producermocks
Package Producermocks is a generated GoMock package.
Package Producermocks is a generated GoMock package.
hashx
mocks
Package limitermocks is a generated GoMock package.
Package limitermocks is a generated GoMock package.
mocks
Package logxmocks is a generated GoMock package.
Package logxmocks is a generated GoMock package.
observationX
registry
rpc
serviceLogicX
Package sliceX 提供切片操作的工具函数,包括过滤、映射、去重、集合运算等。
Package sliceX 提供切片操作的工具函数,包括过滤、映射、去重、集合运算等。
Package syncX 提供并发安全的数据结构,是对标准库 sync 的扩展。
Package syncX 提供并发安全的数据结构,是对标准库 sync 的扩展。
atomicx
Package atomicx 提供原子操作的类型安全封装。
Package atomicx 提供原子操作的类型安全封装。
systemLoad
webx
ginx/middleware/jwtX2
Package jwtX2 提供基于 JWT 的认证中间件,支持多设备管理和会话控制。
Package jwtX2 提供基于 JWT 的认证中间件,支持多设备管理和会话控制。
ginx/middleware/jwtX2/mocks
Package jwtxmocks is a generated GoMock package.
Package jwtxmocks is a generated GoMock package.
ginx/middleware/jwtx/mocks
Package jwtxmocks is a generated GoMock package.
Package jwtxmocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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