开源软件名称:jobbole/awesome-go-cn
开源软件地址:https://github.com/jobbole/awesome-go-cn
开源编程语言:
开源软件介绍:【导读】:awesome-go 就是 avelino 发起维护的 Go 资源列表,内容包括:音频和音乐库、命令行工具、服务端应用、流处理、持续集成、数据库、机器学习、NLP、物联网、中间件、文本处理、安全、机器人技术等。
这个列表堪称最全面的 Go 资源汇总,在 GitHub 已有近 6 万 Star 。
中文版由开源前哨 和Go开发大全 微信公号团队维护更新,在 GitHub 已有近3100 Star ,欢迎在 Github 上关注。这个中文版的资源库会定期同步更新到这里。
本项目的参与者
注:名单不分排名,不定期补充更新
资源列表
音频和音乐库
认证和OAuth授权
- authboss : 针对
web 应用的模块化认证系统,尽量去除模版代码和硬编码来以灵活可配置的方式来嵌入到web应用程序中,从而避免重复编码和重复配置。
- branca :
Branca Tokens 的Golang 实现。
- casbin : 支持
ACL 、RBAC 、ABAC 等访问控制模型的授权与认证库。
- cookiestxt : 支持
cookies.txt 文件格式的解析器。
- go-email-normalizer : 用于支持电子邮件地址的规范表示的
Golang 库,。
- go-guardian : Go-Guardian支持以简洁又清晰的方式来进行
API 认证和web 认证,认证模型支持LDAP 、Basic 、Bearer token 和基于证书的认证
- go-jose : 相当完整地实现了JOSE工作组的
JSON Web Token 、JSON Web Signatures 和JSON Web Encryption 规范。
- go-oauth2-server : 不需要其他依赖的、符合规范的、用
Golang 编写的OAuth2 服务器。
- gologin : 适用于OAuth1和OAuth2多身份登录认证的实现方案
- gorbac : Golang中一个轻量级的基于角色的访问控制
(RBAC) 实现。
- goth : 以简单、干净、常用的方式来使用
OAuth 和OAuth2 。支持多种身份认证。
- httpauth :
HTTP 认证中间件
- jeff : 简单、灵活、安全、习惯性的
Web 会话管理,支持可插拔的后端。
- jwt : 干净且易于使用的JSON网络令牌
JWT 的实现。
- jwt : 轻量级
JSON 网络令牌(JWT )库。
- jwt : 针对go语言的 安全、简单、快速的JSON Web Tokens 。
- jwt-auth : 用于
Golang http 服务器的JWT 中间件,有许多配置选项。
- jwt-go : -
JSON Web Tokens (JWT)的Golang实现。
- loginsrv : JWT登录微服务,具有可插拔的后端,如
OAuth2 (Github) 、htpasswd 、OSIAM 。
- oauth2 : 继承自
goauth2 。实现了JWT,Google APIs,GCE,GAE的通用OAuth 2.0 授权包。
- osin :
Go 语言 OAuth2 服务器库
- otpgo : 基于时间的一次性密码
TOTP 和基于HMAC 的一次性密码HOTP 库。
- paseto : 平台无关的安全令牌
(PASETO) 的Golang 实现。
- permissions2 : 用于跟踪用户、登录状态和权限的库,依赖安全
cookies 和bcrypt 。
- rbac : 用于Go应用程序的极简
RBAC 库。
- scope : 在
Go 中轻松管理OAuth2 作用域。
- scs :
HTTP 服务器的会话管理器。
- securecookie : 高效的安全
cookie 编码/解码库。
- session :
Go 语言会话管理(支持Google App Engine - GAE )
- sessiongate-go : 使用
SessionGate Redis 模块进行 Go 会话管理。
- sessions : 为
Go 语言HTTP 服务器开发的非常简单的、高性能的、高可定制的会话服务
- sessionup : 简单而有效的
HTTP 会话管理和标识库。
- sjwt : - 简单的
jwt 生成器和解析器。
机器人相关
构建和使用机器人的库
命令行工具
标准 CLI
用于创建一个标准命令行应用程序的库
- 1build : 管理项目专用命令的命令行工具。
- argparse : 受
Python 的argparse 模块启发的命令行参数解析器。
- argv : 用于分隔使用
bash 的语法的命令行字符串并将其作为参数的Go 语言库,
- cli : 功能强大,使用简单的命令行软件库,基于
Golang 结构体tag 实现
- cli : 一个功能丰富、易于使用的命令行工具包
- climax : 可以显示“人脸”的命令替代库。
- clîr : 一个简单而清晰的
CLI 库,不需要其他依赖。
- cmd : 扩展了标准
flag 包,具有支持子命令的特性
- cmdr : 一个
POSIX/GNU 风格,类似于getopt 的命令行UI的Go库。
- cobra : 一个现代化的命令行。
- commandeer : 开发友好的
CLI 应用程序:基于结构字段和标签设置标志参数、默认值和用法。
- complete : 使用
Go 语言编写的 bash 命令补全工具以及Go 命令补全工具
- Dnote : 支持多设备同步的命令行笔记工具。
- env : 基于
tag 的结构体环境配置。
- flag : 简单而强大的
Go 命令行选项解析库,支持子命令。
- flaggy : 功能强大的
flag 包,具有出色的子命令支持。
- flagvar :
Go 标准标志包的标志参数类型集合。
- go-arg :
Go 中基于结构体的参数解析。
- go-commander : 用于简化
CLI 工作流程的 Go 库。
- go-flags :
GO 命令行选项解析器。
- go-getoptions :
Go 选项解析器,灵感来自 Perl 中灵活性的 GetOpt::Long 。
- gocmd : 用于构建命令行应用程序的
Go 库。
- hiboot cli : 具有自动配置和依赖注入功能的 cli 应用程序框架。
- job : 将你的短期命令转化为长期作业。
- kingpin : 支持子命令的命令行和标志位解析器。
- liner : 命令行文本解析器
- mitchellh/cli : 用于实现命令行交互的
Go 语言库
- mow.cli : 用于构建命令行程序的工具库,支持更加精准的标记及选项解析和验证
- ops :
Unikernel 编辑器和生成器
- pflag : Go flag软件包的替代品, 实现了
POSIX/GNU 风格的flags .
- sand : 用于创建解释器等工具的简单API库。
- sflags : 基于结构体的
flag 生成器,支持flag, urfave/cli, pflag, cobra, kingpin 等其他库
- strumt : 用于创建提示链的库。
- ts : 时间戳转换和比较工具。
- ukautz/clif : 一个小型命令行程序开发框架
- urfave/cli : 简单、快速、有趣的、用于构建 Go 语言命令行程序的软件包。
- wlog : 简单的日志接口,具有跨平台和并发支持等特性
- wmenu : 为命令行程序提供简单的菜单结构选项来提供给用户来进行选择
高级控制台UI
用于构建控制台应用程序和控制台用户界面的库.
配置管理
配置解析库
- aconfig : 简单、有用的配置加载器。
- cleanenv : 简约的配置读取器(从文件、
ENV 以及任何你想要的地方读取)。
- config : 一个轻量级但功能强大的
Go 项目配置包。
- config : 云端本地应用配置。只需两行就可以将ENV绑定到结构上
- config : 具有环境变量和标志解析功能的
JSON 或YAML 配置包装器。
- configuration : 用于从环境变量、文件、标志和 "默认 "标签初始化配置结构的库。
- configure : 可以通过多种途径进行配置,包括
JSON 标记位以及环境变量
- configuro : 来自
ENV 和Files 的意见性配置加载和验证框架,专注于12-Factor 兼容应用程序。
- confita : 从多个后端级联加载配置到一个结构中。
- conflate : 从任意URL合并多个
JSON/YAML/TOML 文件的库/工具,对JSON 模式进行验证,并应用模式中定义的默认值。
- env : 解析环境变量为
Go 语言结构体
- envcfg : 解析环境变量为
Go 语言结构体
- envconf : 通过环境变量来配置
- envconfig : 通过环境变量读取配置
- envh : 管理环境变量的助手
- fig : 用于从文件和环境变量中读取配置的小型库(带有验证和默认值)。
- gcfg : 读取类似
INI 类型的配置文件为 Go 语言结构体,支持自定义类型。
- genv : 通过
dotenv 支持轻松读取环境变量。
- go-aws-ssm : 从
AWS System Manager - Parameter Store 获取参数的 Go 包。
- go-ini : Go 包,可对 INI 文件进行整理和解整理。
- go-ssm-config : 用于从
AWS SSM (参数存储)加载配置参数的 Go 工具。
- go-up : 一个简单的配置库,具有递归占位符解析功能,没有各种怪招。
- goConfig : 解析一个结构作为输入,并将命令行、环境变量和配置文件中的参数填充到该结构的字段中。
- godotenv : 把
Ruby 的 dotenv 库移植到 Go (从 .env 中加载环境变量)。
- gofigure : 让
Go 语言应用程序配置变得简单
- gone/jconf : 模块化 JSON 配置工具。允许你将配置参数结构体和使用它的代码放在一起,而不需要让主配置文件了解所有子模块的细节来进行序列
- gookit/config : 应用程序配置管理(
load,get,set ),支持JSON、YAML、TOML、INI、HCL
- harvester :
Harvester, 一个易于使用的静态和动态配置包,支持 envars 和 Consul 集成。
- hjson : 便于程序员使用和阅读的配置文件格式。具有更加轻松的语法,更少的错误和更多的注释
- hocon : 用于使用
HOCON (一种人类友好的JSON超集)格式的配置库,支持环境变量、引用其他值、注释和多文件等功能。
- ingo : 将配置标记持久化到一个类似
ini 的文件中
- ini : 用于读写INI 文件的库
- joshbetz/config : 消息配置库,可以解析环境变量、
JSON 文件并根据SIGHUP 自动重新载入
- kelseyhightower/envconfig : 用于管理环境变量配置数据的
Go 库。
- koanf : 轻量级、可扩展的库,用于读取Go应用程序中的配置。内置支持
JSON、TOML、YAML、env 、命令行。
- konfig : 为分布式处理时代的
Go 提供可组合、可观察和可执行的配置处理。
- mini : 用于解析类
ini 文件的库
- nasermirzaei89/env : 用于读取环境变量的简单实用包
- onion : 基于分层结构的Go配置库,支持
JSON、TOML、YAML、properties、etcd、env 以及使用PGP 加密。
- store :
Go 的轻量级配置管理器,支持JSON、TOML、YAML、properties 等。
- swap : 基于构建环境,递归地实例化/配置结构解析库。
- typenv : 简约、零依赖、类型化的环境变量库。
- viper :
Go 语言配置工具
- xdg : 遵守
XDG 标准 的配置工具XDG 标准
持续集成
持续集成的辅助工具
- CDS : 企业级
CI/CD 和DevOps 自动化开源平台。
- drone :
Drone 是一个基于 Docker 的持续集成平台,使用 Go 语言编写
- duci : 简单的
ci 服务器,不需要特定领域的语言。
- gomason : 从一个干净的工作空间测试、构建、签署和发布你的
go 二进制文件
- goveralls :
Coveralls.io 是一个持续代码覆盖率检测系统,这个库提供了 Go 语言的支持
- overalls : 针对多
package 的 Go 语言项目,为 Goveralls 这样的工具生成覆盖率报告
- roveralls : 回归覆盖测试工具
CSS预处理
预处理css文件的库
- gcss : 纯
Go 语言编写的 CSS 预处理器
- go-libsass : 100%兼容
Sass 的库 libsass 的 Go 语言封装
数据结构
go语言实现的数据结构与算法
- algorithms : 算法和数据结构学习资料
- binpacker : 二进制数据封包拆包工具,帮你构建自定义的二进制数据流
- bit :
Go 语言集合数据结构。提供了额外的位操作功能
- bitset : 实现了
bitset 的 Go 语言包.
- bloom :
Go 语言实现的布隆过滤器(bloom filter )
- bloom :
Go 语言实现的布隆过滤器
- boomfilters : 概率统计数据结构,用于处理大量连续的数据。
- cmap : 一个用于
go 的线程安全的并发地图,支持使用interface{} 作为键
- concurrent-writer :
bufio.Writer 的高并发drop-in 替代品
- conjungo : 一个小巧、强大、灵活的合并库。
- count-min-log :
Go 语言实现的 Count-Min-Log sketch 算法(类似 Count-Min sketch 算法,但是使用的内存更少)
- crunch :
Go 包,实现缓冲区,方便处理各种数据类型。
- cuckoofilter :
Cuckoo 过滤器:一个用go语言实现的计数布隆过滤器的替代品
- deque : 高度优化的双端队列。
- deque : 快速的环形缓冲区
deque (双端队列)。
- dict :
Go 的类似Python 的字典 (dict)
- encoding : 整型压缩库
- go-adaptive-radix-tree :
Go 语言实现的自适应基数树
- go-datastructures:一组有用的、高性能的、线程安全的数据结构
- go-edlib : 与 Unicode 兼容的 Go 字符串比较和编辑距离算法库(
Levenshtein、LCS、Hamming、Damerau levenshtein、Jaro-Winkler 等)。
- go-ef :
Elias-Fano 编码的Go 实现。
- go-geoindex : 基于内存存储的地理索引
- go-mcache : 快速的内存
key:value 存储/缓存库。
- go-rquad : 区域四叉树,支持有效点位置和领域发现
- gocache : 完整的
Go 缓存库,支持多个存储(内存、memcache、redis...... )。
- goconcurrentqueue : 并发
FIFO 队列。
- gods :
Go 语言数据结构、容器、集合、列表、栈、键值对、 BidiMaps 、树、HashSet 等
- gofal :
Go 的微分算法库。
- golang-set : 线程安全和非线程安全的高性能集合
- goset :
Go 集合实现。
- goskiplist :
Go 语言实现的跳跃表
- gostl : 数据结构和算法库,旨在提供类似于
C++ STL 的功能。
- gota : 为go语言实现了数据帧,序列以及数据噪音的方法
- goterator : 迭代器的实现,提供映射和减少功能。
- hide :具有hash 函数功能,以防止向客户端发送敏感ID`。
- hilbert : 用于映射空间填充曲线(例如希尔伯特曲线和皮亚诺曲线)和数值的库。
- hyperloglog :
HyperLogLog 的go语言实现
- iter :
C++ STL 迭代器和算法的Go实现。
- levenshtein : 编辑距离(
levenshtein distance )和相似性度量计算库
- levenshtein : 在Go中计算
levenshtein 距离的实现。
- mafsa : Go 语言实现的
MA-FSA ,包含最小完美哈希实现
- merkletree : 实现了梅克尔树,提供了一种高效、安全的数据结构内容验证方法
- mspm : 用于信息检索的多字符串模式匹配算法。
- nan : 在一个库中实现了零分配的
Nullable 结构,并提供了方便的转换函数。
- null : 可为
null 的Go 类型,它们可以被`marshalled/unmarshalled到JSON。
- parsefields : - 用于解析
JSON 类日志的工具,用于收集特殊字段和特定事件。
- pipeline : 一个带有扇形输入和扇形输出的管道的实现。
- ptrie : 前缀树的实现
- remember-go : 用于缓存慢速数据库查询的通用接口(由
redis、memcached、ristretto 或内存支持)。
- ring : 高性能、线程安全的
bloom 过滤器的 Go 实现。
- roaring : 实现了压缩
bitsets 算法的Go语言库
- set : 在
Go 中使用 LinkedHashMap 实现简单的集合数据结构。
- skiplist : 非常快的
Go Skipipllist 实现。
- skiplist : 在
Go 中实现的 Skiplist 。
- slices :
slice 操作函数
- timedmap : 具有过期键值对的
map 。
- treap : 使用树堆的持久化快速有序
map
- trie :
Go 语言实现的Trie 树
- ttlcache : 基于过期时间的内存字符串缓存接口。
- typ : 空类型安全的基础类型转换器和从复杂结构中取值的开发库。
- willf/bloom : 实现了布隆过滤器的库
数据库
go语言实现的数据库
- badger :
Go 中的快速键值存储库。
- bbolt :
Go 的嵌入式键值数据库。
- bcache : 最终一致的分布式内存缓存
Go 库。
- BigCache : 为GB量级数据设计的高效键/值缓存
- Bitcask :
Bitcask 是一个用纯 Go 编写的可嵌入的、持久的、快速的键值(KV)数据库,由于采用了 bitcask 盘上布局(LSM+WAL),它具有可预测的读/写性能、低延迟和高吞吐量。
- buntdb : 快速,可嵌入的,内存键值数据库,可定义索引及
spatial
- cache : 内存中的
key:value 存储,有过期时间,0依赖,<100 LoC,100%覆盖。
- cache2go : 基于内存存储的键值缓存,支持自动基于超时的自动失效
- clusteredBigCache :
BigCache 支持集群和单个项目过期。
- cockroach : 可扩展的、一致的事务型数据库
- Coffer : 简单的
ACID 键值数据库,支持事务。
- couchcache :
RESTful 缓存微服务,基于Couchbase 数据库
- CovenantSQL :
CovenantSQL 是一个区块链上的SQL数据库。
- Databunker : 为符合
GDPR 和CCPA 而构建的个人身份信息PII 存储服务。
- dgraph : 可扩展的、分布式的、低延时、高吞吐的图数据库
- diskv : 具有
disk-backed 功能的持久化键值存储
- eliasdb : 无依赖、事物型图数据库,支持
REST API 、短语搜索以及类 SQL 的查询语言
- fastcache : 针对大量条目的快速线程安全内存缓存。将
GC 开销降到最低。
- GCache : 支持缓存过期、
LFU、 LRU 和 ARC 的缓存库
- go-cache : 基于内存存储的缓存,适用于分布式部署的应用
- goleveldb :
Go 中LevelDB键/值数据库的实现
- groupcache :
Groupcache 是一个缓存及缓存填充库,在很多情况下用于替代 memcached .
- immudb :
immudb 是一个轻量级、高速的不可变数据库,适用于用Go 编写的系统和应用程序。
- influxdb : 用于度量、事件和实时分析的可扩展数据存储。
- Kivik :
Kivik 为CouchDB、PouchDB 和类似的数据库提供了一个通用的Go 和GopherJS 客户端库。
- ledisdb :
Ledisdb 是一个高性能 NoSQL 数据库,类似 Redis
- levigo :
LeviGo 是 LevelDB 的 Go 语言封装
- moss :
Moss 是一个简单的 LSM 键值存储引擎,100% Go 语言实现
- nutsdb :
Nutsdb 是一个用纯Go 编写的简单、快速、可嵌入、持久化的键/值存储。它支持完全可序列化的事务和许多数据结构,如列表、集合、排序集合。
- piladb : 轻量级
RESTful 数据库引擎,基于堆栈结构
- pogreb : 嵌入式键值存储,适用于重读工作负载。
- prometheus : 监控系统及时间序列数据库
- pudge : 使用
Go 的标准库编写的快速、简单的键值存储。
- rosedb : 一个基于 LSM+WAL 的内嵌 k-v数据库,支持多种数据结构,如字符串、列表、哈希表、集合、有序集合
- rqlite : 基于
SQLite 的轻量级的、分布式的关系型数据库
- Scribble : 小巧的
JSON 文件存储
- slowpoke : 具有持久性的键值存储。
- tempdb : 临时数据的键值对存储
- tidb :
TiDB 是一个分布式的 SQL 数据库。受到了 Google F1 的启发
- tiedot : 基于
Go 语言的 NoSQ L 数据库
- unitdb : 用于物联网、实时消息应用的快速时序数据库。
- Vasto : 一个分布式高性能键值存储。在磁盘上。最终一致。HA。能够在不中断服务的情况下增长或收缩。
- VictoriaMetrics : 快速、资源高效、可扩展的开源时间序列数据库。可作为
Prometheus 的长期远程存储。支持PromQL 。
数据库迁移工具
- avro : 发现
SQL 模式并将其转换为AVRO 模式。查询SQL 记录到AVRO 字节。
- darwin : 数据库模式增量库
- go-fixtures : 类似
DjanGo fixtures ,用于 Golang 的內建dababase/sql 库
- go-pg-migrations : 帮助使用
go-pg/pg 编写迁移的 Go 包。
- gondolier : 使用
struct 装饰器的数据库迁移库。
- goose : 数据库迁移工具。你可以通过编写增量
SQL 或 Go 语言脚本来管理你的数据库
- gormigrate : 数据库模式迁移帮助工具,用于
Gorm ORM.
- migrate : 数据库迁移。命令行及
Go 语言库
- migrator : 简单的
Go 数据库迁移库。
- pravasan : 简单的迁移工具,目前支持
MySQL 但是近期打算支持 Postgres, SQLite, MonGoDB 等等
- schema : 在你的Go二进制文件中嵌入数据库/sql兼容数据库的模式迁移库。
- skeema :
MySQL 的纯SQL模式管理系统,支持sharding 和外部在线模式变更工具
- soda : 数据库迁移、创建、 ORM等等,用于
MySQL, PostgreSQL, 以及 SQLite .
- sql-migrate : 数据库迁移工具,允许利用
Go-bindata 将数据库迁移嵌入应用程序
数据库工具
|
请发表评论