Github开源项目之:GO
导航
- Github开源项目之:C
- Github开源项目之:C#
- Github开源项目之:C++
- Github开源项目之:CSS
- Github开源项目之:GO
- Github开源项目之:Java
- Github开源项目之:JavaScript
- Github开源项目之:Kotlin
- Github开源项目之:Objective-C
- Github开源项目之:Python
- Github开源项目之:Ruby
- Github开源项目之:Rust
- Github开源项目之:Swift
- Github开源项目之:PHP
- Github开源项目之:人工智能
- Github开源项目之:开源书籍
- Github开源项目之:其他相关
内容来源于网络
前言
分享Github开源项目,在玩的过程中学习,2023年每天的目标就是研究几个项目,寻找点乐趣。
开源项目
001.pholcus
Pholcus 是 Go 写的重量级爬虫,纯 Go 语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有 Web、GUI、命令行三种操作界面,功能齐全、强大。使用手册。
002.gh-ost
GitHub 开源的在线修改表结构工具。目的是解决一个经常碰到的问题:不断变化的产品需求会不断要求更改 MySQL 表结构。gh-ost 通过一种影响小、可控制、可审计、操作简单而且安全的方式来改变线上表结构。
003.gogs
用 Go 写的一款极易搭建的自助 Git 服务,支持所有平台。就像 GitLab 一样的服务,但是 GitLab 是基于 ruby 语言的。另外:完善的中文文档、支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。中文介绍
004.wukong
悟空引擎是一个高度可定制的全文搜索引擎,为什么要有悟空引擎,入门教程,这个项目的搜索引擎原理如下:
示例:
1 | package main |
005.beego
一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架,齐全的文档(中文),丰富的使用案例。官网地址
006.kcptun
也许是世界上最快的 UDP 传输工具,支持 macOS/Linux/Windows/FreeBSD/ARM/Raspberry Pi/OpenWrt。
007.vim-go
Go 的 vim 配置
008.kingshard
kingshard 是一个由 Go 开发高性能 MySQL Proxy 项目,kingshard 在满足基本的读写分离的功能上,致力于简化 MySQL 分库分表操作;能够让 DBA 通过 kingshard 轻松平滑地实现 MySQL 数据库扩容。
kingshard工作整体流程可参考下面这幅图:
009.baetyl
百度云开源的边缘计算平台,可将云计算能力拓展至用户现场,提供临时离线、低延时的计算服务,包括设备接入、消息路由、消息远程同步、函数计算、视频接入预处理、AI推断等功能
010.negroni
Negroni 是一个很地道的 Web 中间件,它不是一个框架,是为了方便使用 net/http 而设计的一个库而已。中文介绍
server.go
代码示例:
1 | package main |
011.sshtron
sshtron 是通过 SSH 运行的多人贪吃蛇游戏,命令行输入:ssh sshtron.zachlatta.com
,无需安装等待几秒即可进行游戏(因为服务器在国外,国内很卡)
012.wuzz
wuzz 是用于调试 HTTP 请求的交互式命令行工具,可以用来检查和修改请求。常用操作如下:
Keybinding | Description |
---|---|
F1 | Display help |
Ctrl+R | Send request |
Ret | Send request (only from URL view) |
Ctrl+S | Save response |
Ctrl+E | Save request |
Ctrl+F | Load request |
Ctrl+C | Quit |
Ctrl+K,Shift+Tab | Previous view |
Ctlr+J,Tab | Next view |
Ctlr+T | Toggle context specific search |
Alt+H | Toggle history |
Down | Move down one view line |
Up | Move up one view line |
Page down | Move down one view page |
Page up | Move up one view page |
F2 | Jump to URL |
F3 | Jump to query parameters |
F4 | Jump to HTTP method |
F5 | Jump to request body |
F6 | Jump to headers |
F7 | Jump to search |
F8 | Jump to response headers |
F9 | Jump to response body |
F11 | Redirects Restriction Mode |
013.dht
DHT 实现了 BitTorrent DHT 协议,它包含两种模式,标准模式和爬虫模式。标准模式遵循 DHT 协议,你可以把它当做一个标准的 DHT 组件。爬虫模式是为了嗅探到更多 torrent 文件信息,它在某些方面不遵循 DHT 协议。 基于爬虫模式,你可以打造你自己的 BTDigg,演示地址
示例代码:
1 | import ( |
014.gobyexample
Go 示例代码,在线浏览
015.fsql
用 SQL 的语法搜索文件,酷吧
016.go.uuid
Go 的 UUID 包
示例代码:
1 | package main |
017.poseidon
Poseidon 系统是奇虎 360 开源的一个日志搜索平台,可以在数百万亿条、数百 PB 大小的日志数据中快速分析和检索特定字符串。
018.aliyungo
非官方的 Aliyun Go语言 SDK 支持API:ECS, OSS, DNS, SLB, RDS, RAM, MNS, STS, SLS, MQ, Push, OpenSearch, DM, Container Service
019.conference
Go 语言实际项目应用的技术分享
020.dynamo.cli
AWS DynamoDB 是一项快速灵活的 NoSQL 数据库服务。如果大家使用这个用服务,但又记不住蹩脚的 AWS 客户端的查询命令。可以使用这个工具,通过 SQL 命令查询、操作 Amazon DynamoDB 数据库
021.mqant
一款基于 Go 语言的简洁、高性能的分布式游戏服务框架。快速上手文档,作者阐述了自己为什么选用 Go 作为开发语言和一些设计思路
022.rainbond
好雨开源的生产级无服务器 PaaS。用于为云原生应用的整个交付流程提供生产级支持,包括基础设施管理、容器化改造、微服务架构转型、DevOps 工作流落地、混合云多云管理等
023.excelize
操作 XLSX 文件,支持 Microsoft Excel™ 2007 以更高版本
024.knowledge
Go社区的知识图谱,Knowledge Graph
025.lux
Go 编写的快速、简单、干净的视频下载程序。支持哔哩哔哩、YouTube 视频网站
1 | $ lux -i ep198381 av21877586 |
026.echo
Go 语言最受欢迎的 Web 框架之一,具有:高性能、便于扩展、轻量的特点。
示例代码:
1 | package main |
027.tidb
开源分布式 NewSQL 数据库,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。具备如下核心特性:
- SQL支持 (TiDB 是 MySQL 兼容的)
- 水平线性弹性扩展
- 分布式事务
- 跨数据中心数据强一致性保证
- 故障自恢复的高可用
028.casbin
访问控制开源库,支持 ACL/RBAC/ABAC 等访问控制模型,支持 MySQL/NoSQL 等存储方式
029.jwt-go
Golang 实现 JSON Web Tokens (JWT)
030.monkey
用 Go 语言写的解析器,包含诸多语言特性。入门实践项目,适合新手熟悉 Go 语言和语言解析器入门
031.ctop
实现了类 top 命令展示效果的 docker 容器监控工具
032.mattermost-server
采用 Go 语言开发的团队通讯服务项目,可用于自行搭建服务。为团队带来跨 PC 和移动设备的消息收发、文件分享,搜索等功能的通讯服务平台
033.go-cloud
还在为兼容不同的云平台 SDK 而烦恼吗?go-cloud 通过封装不同云平台的接口,向用户提供统一的 API。例如:阿里云和腾讯云的存储桶 API 不一样,但是通过 go-cloud 的封装,可以使用统一的 API 调用
034.go-fundamental-programming
无闻出品的《Go 编程基础》教程
035.go-mysql
监听 MySQL binlog 的库,可以用来把主库 MySQL 的变化同步到 Redis、elasticsearch 等。同时提供了一个类似阿里 canal 的工具库,监听并解析 binlog 变化。让管理数据和了解数据状态变得更加轻松
示例代码:
1 | import ( |
The output looks:
1 | === RotateEvent === |
036.night
Go 夜读,该项目每周四晚上更新 Go 源码阅读以及线下技术讨论。难得的中文 Golang 源码解析,包含文档和YouTube 视频,干货满满
037.xinge-api-Golang
腾讯信鸽 push v3 版的 Golang SDK。支持函数式配置项、标签推送、全平台推送、批量推送等
038.gitea
一个极易安装、运行快速、安装简单、使用体验良好的自建 Git 服务。采用 Go 作为后端语言,支持 Linux、 macOS、Windows 等,在线Demo。
039.thunder
Facebook GraphQL 协议的 Go 语言版本。相比之前的其它 GraphQL 库,通过反射结构体的 tag 可以自动生成 schema 给前端,更加便于开发。
示例代码:
1 | // Friend is a small struct representing a person. |
040.wechat-go
微信网页版 API 的 Go 实现。支持模拟微信网页版的登录、联系人、消息收发、机器人回复等功能。
示例代码:
1 | package main |
041.wxpay
Go 的微信支付 SDK。微信系的 SDK,填补 Go 在微信支付开发界的空白。支持刷卡支付、统一下单、查询订单、撤销订单、关闭订单等。
示例代码:
1 | // 创建支付账户 |
042.filebrowser
自带文件浏览器的网盘服务。支持功能:文件浏览、文件生成分享链接、批量上传、文件夹创建等服务、用户系统。
043.frp
一个可用于内网穿透的高性能的反向代理应用,支持 tcp、udp、http、https 协议。有时想要让其他人(外网)通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能。例如:微信公众号开发、slack bot 开发等,中文文档
044.nes
Golang 写的 NES 模拟器。现在可能已经没人玩 NES 游戏了,不过可以了解下怎么写模拟器、如何用 Go 模拟 CPU 和 GPU
045.dgraph
开源、免费的分布式图数据库。如果你在构建用户关系系统,图数据库绝对是比关系型数据库更好的选择。通过 SPARQL 查询一个用户相关的其他用户会比 SQL 快百倍。自带图形界面、RDF 导入工具等必备工具。
046.git-bug
嵌入在 Git 中的分布式 bug 追踪、管理系统。用来管理 git 项目的 bug,这些信息会被存在 .git
文件夹里,所以其他人克隆也能看到 bug,不需要而外的存储系统。
047.lazygit
终端里的 Git 客户端。该客户端启动比各路 GUI 客户端快N倍,功能基本一致。安装 go get github.com/jesseduffield/lazygit
,然后 lazygit
启动。Ready?Go!
048.rclone
Golang 版的 rsync,与 rsync 不同的是 rclone 可以将文件同步到各种云服务的存储桶或 CDN 服务上
049.archiver
命令行压缩和解压缩工具。
050.athens
Go Modules 下载代理服务,解决国内 Go 装包的痛。
051.dive
用来探索 docker 镜像每一层文件系统,以及发现缩小镜像体积方法的命令行工具。启动命令:dive 镜像名
052.go-sniffer
该工具通过抓包截取项目中的数据库、redis 请求解析成相应的语句。便于调试,不要修改代码,直接嗅探项目中的数据请求。
使用说明如下:
1 | ======================================================================= |
053.soar
SQL 自动优化和改写的工具。可以自动优化 MySQL 语法族,并且给出为什么要这样优化的理由。
功能特点:
- 跨平台支持
- 目前只支持 MySQL 语法族协议的 SQL 优化
- 支持基于启发式算法的语句优化
- 支持复杂查询的多列索引优化(UPDATE、INSERT、DELETE、SELECT)
- 等等
体系架构:
054.websocketd
把命令行的输出 stdout 和 stderr 重定向为一个 websocket 服务的工具。
运行步骤如下:
1 | 1. 安装命令:`brew install websocketd` |
count.sh
文件内容如下
1 | #!/bin/bash |
count.html
文件内容如下
1 | <!DOCTYPE html> |
055.ptt-daily-beauty
每晚 11 点会自动发送 PTT 论坛(台湾最大论坛) Beauty 板块前 3 名的小姐姐图片。点击订阅
056.q.Q
Golang debug 库,自动打印变量类型并且格式化输出
057.tldr
Golang tldr 客户端。对比之前推荐过的 Python 版本客户端,Golang 版本速度更快、交互友好、且支持选择搜索结果的展示样式。每当你想要用 tar 解压缩,但是记不住具体参数的时候,tldr 可以拯救世界
058.yeetgif
一个命令行工具,用来组合、生成表情的 gif 动图。支持多种模式:旋转、抖动、鬼畜等,可以组合出很魔性的表情
059.color
Golang 的命令行色彩使用库。拥有丰富的色彩渲染输出、通用的 API 方法、兼容 Windows 系统
060.gitbatch
批量管理 Git 仓库的命令行工具
061.Modlishka
钓鱼网站生成工具。该工具会根据给定的模版生成一个钓鱼网站,然后在该网站输入的用户名密码等敏感信息会被记录
062.sqler
根据 SQL 和配置文件生成接口的工具。与传统的 SQL 生成 RESETful API 的工具不同,这个工具允许你自定义一些 API 的前、后处理,Auth 之类的行为。
Configuration Overview:
1 | // create a macro/endpoint called "_boot", |
063.txqr
通过动态二维码传输数据,如:传输文件等
064.go-perfbook
《关于 Go 性能优化的思考》概述了编写高性能 Go 代码的最佳实践。中文
065.gopool
Golang 分布式的连接池,协程池。
内含 Redis Client 连接池实现,特点如下:
- 提供下游的高可用访问,投票机制摘除下游不健康节点
- 最小健康比、最大冷却时长可配置
- 每个下游节点对应一个 channel,保证负载均衡
- 提供连接池状态监控接口包括总连接数、每个 IP 的连接数
示例代码:
1 | var addrs []string = []string{"127.0.0.1:8000", "127.0.0.1:8001", "127.0.0.1:8002", "127.0.0.1:8003"} |
066.lgo
实现像 python 一样的交互式编程,同时整合了 Jupyter Notebook。
效果如下:
067.1m-go-websockets
该项目演示了如何用 Go 编写一个可以提供超过一百万个 websockets 连接、运行内存小于 1GB 的服务器。
setup.sh
is a wrapper to running multiple instances using Docker. See content of the script for more details of how to use it.
destroy.sh
is a wrapper to stop all running clients.
A single client instance can be executed by running go run client.go -conn=<# connections to establish>
068.cds
企业级开源持续集成系统。支持横向扩展、自带 UI、常用的持续集成构建等功能
069.docui
终端 Docker 管理工具,自带一个终端界面。使用该工具可以方便的通过界面管理 docker 不用再记那些命令。
070.go-echarts
Golang 代码生成对应的 echarts 可视化图表。
实例代码:
1 | package main |
071.appify
该项目能够方便的把 Golang 项目包装成 MacOS 可以直接运行的软件。可以用来把自己写的小工具包装成一个其他人可以直接下载并双击使用的软件。提供自定义 logo、名字,分分钟发布自己的 Golang 软件。
使用步骤如下:
1 | go get github.com/machinebox/appify //Install |
072.usql
通用SQL命令行客户端。支持以下所有数据库和协议
安装方法:
根据你的系统下载最新的 binary
解压缩出
usql
或者usql.exe
把binary放到你的
$PATH
(Linux/macOS) 或%PATH%
(Windows)路径下然后就可以用
usql
链接到你喜欢的SQL数据库啦~
073.akutan
eBay 开源的分布式图数据库,少数依然支持 SparQL 的图数据库
074.SlimToolkit
自动缩减 docker 镜像的体积的工具。大幅度缩减 docker 镜像的体积,方便分发,使用命令 docker-slim build --http-probe your-name/your-app
。
比如 Node.js 镜像缩减后的对比:
1 | from golang:latest - 700MB => 1.56MB (minified by 448.76X) |
075.kratos
哔哩哔哩开源的一套 Go 微服务框架,包含大量微服务相关框架及工具。解决了 gin 在微服务场景下的一些适配和微服务本身的一系列生态
项目结构:
076.overlord
基于 Go 语言编写的 memcache 和 redis&cluster 的代理及集群管理平台。致力于提供自动化高可用的缓存服务解决方案。自带图形界面的缓存集群管理程序,安装步骤
077.auxpi
基于 API 的简单图床应用。整合了主流图床的 API,并且做了一个 GUI 用来管理,安装简单
078.drone
一个基于 Docker 的持续集成平台,使用 Go 语言编写
079.etcd
一个高可用的分布式键值数据库,k8s 全家桶标配的注册与发现服务。它采用 raft 一致性算法,基于 Go 语言实现。可以通过该项目了解、学习 raft 的实际应用场景
1 | # 使用 etcd 的客户端存取键值对 |
080.learn-go-with-tests
通过单元测试学习 Go 语言。下载仓库源码后,进入对应目录。每一个小文件夹就是一个对应的 Go 项目,在里面go test
即可运行单元测试。由于是测试驱动开发,所以需要在你改动代码之后跑通单元测试才算学会通过。每一个对应的文件夹都有相应 Markdown 文字教程,比较浅显易懂。而且还有中文版
081.pprof
Go 语言的性能分析工具,可以用来调试 Go 程序的内存泄露、goroutine 泄露之类的问题。
082.gocui
命令行 UI 库。提供了类似 HTML canvas 的 API 用来在终端中绘制 UI,使得内容可以分块展示,甚至可以在某些终端中支持点击事件。如果你想做一个 redis-cli 或者其它炫酷、支持点击事件的命令行 UI 程序。但是又不想陷入手绘 UI 的困境,该库可以帮你解决这些烦恼
示例代码:
1 | package main |
083.lazydocker
带命令行 UI 的 docker 管理工具。可以通过点点点来管理 docker,却又不需要装 rancher 这样的企业级容器管理平台
084.mux
一个基于 Golang 语言的 HTTP 路由库。由于支持各种正则匹配路由,使得对应处理函数复用率大大提高。相比于 Gin、beego 等框架,这个项目基本上跟标准库的 http.ServeMux
和 mux.Router
保持一致,比标准库更强大的是它支持的正则匹配路由、自定义保留字段、嵌套路由等功能。
示例代码:
1 | func main() { |
085.nps
一款功能强大、轻量级的内网穿透代理服务器。支持 TCP 和 UDP 流量转发、支持内网 HTTP 代理、内网 socks5 代理、snappy 压缩、站点保护、加密传输、多路复用等功能。拥有 web 图形化管理,集成多用户模式。可以自搭建内网穿透代理服务,用来替代付费的内网穿透服务。又不像其他类似项目依赖命令行,它有图形页面。
86.vitess
用于横向扩展 MySQL 数据库的集群系统。基于 Go 语言的并发特性,它能够轻松处理数千个连接。还可以根据配置好的规则,自动优化影响数据库性能的查询,运维方面支持自动处理主故障转移和备份等功能
087.scope
k8s 系列的容器间关系依赖可视化组件,通过图的方式解释微服务之间复杂的相互依赖关系。同类目前只有 scope 对于微服务之间的依赖的 debug 是非常有意义的。由于是用图的方式表示,意味着可以用图算法找最短路径、聚类、把耦合紧密的服务合并。通过计算图密度,还能揭示微服务之间的联系紧密。
安装如下:
1 | # 安装 |
088.bigcache
基于 Go 语言的高性能大缓存库。在 Ubuntu 18.04 LTS(5.2.12-050212-generic),机器配置 i7-6700K CPU @ 4.00GHz with 32GB of RAM 上性能测试结果:
1 | go version |
089.go-admin
GoAdmin是一个基于 golang 面向生产的数据可视化管理平台搭建框架,可以让你使用简短的代码在极短时间内搭建起一个管理后台。
特性如下:
- 内置完善的rbac权限系统
- 支持多个web框架接入
- 本地化支持
- 整个系统可以编译成一个二进制文件
- 提供多个插件(开发中)
- 多个好看的ui主题(更多主题开发中)
090.pacgo
基于 Go 实现的终端吃豆人游戏
091.RedisShake
阿里开源的用于 redis 数据同步的工具。
原理图如下:
092.zerolog
一个速度快、专门用于输出 JSON 格式日志的库。还在为解析不规则的日志而烦恼吗?有了 zerolog 你可以跳起来了!当然它还有低效但可在控制台输出漂亮日志的模式,快去试试吧。
示例代码:
1 | package main |
093.go-github
谷歌出品的 GitHub API Go 语言版本。如果你需要做一个 GiHhub 相关的产品后端,这个可以省去很多功夫,而且还可以学习谷歌工程师写的 Go 项目、设计接口的思路。
示例代码:
1 | import "github.com/google/go-github/v49/github" // with go modules enabled (GO111MODULE=on or outside GOPATH) |
094.gridstudio
一个后端采用 Go 语言的电子表格 Web 应用程序,支持 Python 编程语言处理数据,结果运行即可见。它旨在提供一个集成的工作流程,用于加载、清理、操作和可视化数据。可在线使用,对于用 Python 等处理数据的数据工程师而言,就是一款神器。之前就很好奇石墨文档怎么做的,这下可以学习下了,电子表单是一个比较复杂的问题,该项目有很多可以学习的地方。
安装:
1 | 1. Clone the repository with this command: |
095.simple-computer
一个用 Go 语言模拟简单计算机 CPU 的项目。只有 Go 语言的函数,没有硬件的模块,从与非门直到一台能做加减运算和显示的迷你虚拟计算机。这些是计算机最底层、基础的东西,虽然是使用 Go 语言模拟,而不是用硬件打造而。但是计算机的基本结构,运行的基本原理都显示的非常清楚。对于新手,既能了解 CPU 原理,也会发现编程语言除了能写软件之外的其他有趣用处。
安装命令:
1 | make # 构建项目 |
096.gf
一款高性能、功能丰富的 Go Web 框架。
特点:
- 模块化、松耦合设计
- 模块丰富,开箱即用
- 简便及可维护性为宗旨
- 详尽的开发文档及示例
- 完善的本地中文化支持
- 等等
097.gods
简单易用的 Go 语言各种数据结构和算法,并封装成了一个库,开箱即食。
098.goproxy
Go 模块安装代理工具。还在因为安装 Go 项目依赖失败而抓耳挠腮吗?快试试这个项目吧
099.gowp
Go 高性能异步并发线程池。接口调用简单、支持错误返回、无论排队多少任务,都不会阻止提交任务。可用于控制并发访问、并发执行。
示例代码:
1 | package main |
100.pg_flame
Postgres 数据库性能分析工具,把 EXPLAIN ANALYZE
结果通过火焰图展示
101.kubesphere
一款在主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台。提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度。
102.starcharts
生成 GitHub 星图的项目
103.ultimate-go
该项目是作者在学习 Go 过程中,对 Go 源码以及涉及到的相关的计算机基础知识的心得与总结。适合 Go 学习者阅读与学习。快来和作者一起深入了解 Go 源码,了解背后的计算机理论和 Go 的设计思想
104.CovenantSQL
具有区块链特性的去中心化 SQL 关系型数据库。可以提供 DBaaS 服务,去中心化存储保证用户隐私。中文文档
105.diving
基于 dive 分析 docker 镜像,界面化展示了镜像每层的变动(增加、修改、删除等)、用户层数据大小等信息。便捷获取镜像信息和每层镜像内容的文件树,可以方便地浏览镜像信息。对于需要优化镜像体积时非常方便
106.gameboy.live
Gameboy 模拟器,还可以通过 socket 远程玩
1 | # 下载 |
107.golang-developer-roadmap
成为 Go 开发者的学习路线图,中文版
108.nic
一个易用的 HTTP Request 包。它封装了 Go 的 HTTP 标准库,提供了简洁优雅的 API。可以更轻松的发送HTTP 请求,解决了 Go 标准库自定义 HTTP 请求,操作 headers、cookies 时繁琐的步骤。类似于 Python 的 Requests 和 urllib 的区别。
示例代码:
1 | resp, err := nic.Get("http://example.com", nil) |
109.redis-tui
炫酷的 redis 命令行图形界面工具
110.scheduler
Go 语言实现的作业调度工具包。适用于需要任务调度的场景,能够让初学者学到 time、reflect 等标准库的用法,中文文档
111.geziyor
Go 的分布式爬虫框架。
示例代码:
1 | func main() { |
112.goalert
一个基于 Go 语言实现的报警和处理报警系统。它以发请求或者手动添加方式进行告警,支持短信、电话、发邮件等通知方式。集成了一个看板,基本上算是开箱即用。
113.olivia
一个类似 Siri 的开源语音助手,目前只支持英文。开源的语音助手并不多,而且涉及的问题很复杂,现在有了它就可以基于这个项目做一些有趣的小应用
114.script
一个封装好的 OS 三方库,解决了 Go 使用 OS 标准库错误处理的麻烦。
115.unioffice
一个让 Go 可以创建、操作 Office Word、Excel、Powerpoint 三件套的库。
示例代码:
1 | dox := document.New() |
116.evans
基于 Go 语言实现的支持交互模式的 gRPC 客户端,让调试、测试 gRPC API 更加容易
117.gochat
纯 Go 实现的轻量级即时通讯系统。技术上各层之间通过 rpc 通讯,使用 redis 作为消息存储与投递的载体,相对 kafka 操作起来更加方便快捷。各层之间基于 etcd 服务发现,在扩容部署时将会方便很多。架构、目录结构清晰,文档详细。而且还提供了 docker 一件构建,安装运行十分方便,推荐作为学习项目
118.guide
Uber 内部的 Go 风格规范。中文翻译版
119.mkcert
无需配置,执行一条命令让本地的开发环境实现 HTTPS 的工具。
1 | $ mkcert -install |
120.ginrpc
简化 go-gin 框架注册路由方式,自动生成 Swagger/Markdown 文档。
示例代码:
1 |
|
121.go-internals
关于 Go 程序设计语言内部实现原理的讲解。中文翻译
122.LeetCode-Go
《LeetCode Cookbook》是帮助开发者在 LeetCode 上做题,提供解题思路和代码的项目。目前已经收录了 500+ 道题的题解和代码,代码都是 runtime beats 100%,代码全部都是用 Go 语言实现。在线阅读
123.livego
基于 Go 实现的直播服务项目
124.fate
起中文名工具,去吧!算名先生
125.grmon
Goroutine 的命令行监控工具
126.seaweedfs
一款基于 Go 开发的部署方便、使用简单且强大的分布式文件系统
127.ali
能够实时展示分析的压力测试工具。现在压测工具有很多,这款的亮点在于可以在终端实时展示压测过程的曲线。
128.ferry
基于 Gin + Vue + Element UI 前后端分离的工单系统。该系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等功能, 帮助减少跨部门之间的沟通,提升工作效率与工作质量,减少不必要的工作量与人为出错率
129.go-diagrams
用 Go 语言画架构图的工具。想画架构图不知道用什么工具?会 Go 的小伙伴可以试试这个库,通过编写 Go 代码来绘制架构图,接口使用方便,但文档太简单了。
示例代码:
1 | d, err := diagram.New(diagram.Filename("app"), diagram.Label("App"), diagram.Direction("LR")) |
130.gorched
Go 语言写的终端游戏 Scorched Earth。它让我想起了“百战天虫”这款游戏,有同龄人吗?一起来回味下
131.gojsonq
一款支持解析、查询 JSON/YAML/XML/CSV 数据的 Go 三方开源库。
示例代码:
1 | package main |
132.gormt
一款 MySQL 数据库转 Go struct 的工具。支持:
- 命令行、界面方式生成
- YML 文件灵活配置
- 自动生成快捷操作函数
- 支持索引、外键等
133.statping
一个 Go 编写的服务状态展示页项目。通过该项目可以快速搭建起一个展示服务可用状态、服务质量的页面
134.algo
Golang 程序员面试中的问题和解答集合。该项目目前完成了大部分的数据结构和算法部分,准备相关面试的小伙伴可以阅读学习起来了
135.gotty
能够把终端执行的命令展示到网页上的工具。
安装和运行命令如下:
1 | go get github.com/yudai/gotty //安装 |
136.logrus
可能是 Go 目前最受欢迎的第三方日志库。日志首先要能让人看懂,其次是程序易于处理日志包含的内容,logrus 也许能让你轻松快速实现上述两点
137.websocket
Go 的 websocket 三方库。看看它和标准库的对比,你就知道为什么它会出现在本期月刊中了
138.7days-golang
用 Go 在 7 天时间内实现 Web 框架、分布式缓存等应用的实战教程
139.cli
GitHub 官方基于 Go 语言开发的命令行 GitHub 工具。用它可以在终端中执行 GitHub 的常用的管理 Issue、切分支、Clone 等操作
140.go-admin
基于 Gin+Vue+Element UI 的前后端分离权限管理系统。文档齐全、还有视频教程适合新手学习,特点:
- 遵循 RESTful API 设计规范
- 基于 Gin Web API 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、追踪 ID 等)
- 支持 Swagger 文档
- 等等
141.go-micro
一款 Go 插件化的基础框架。我只知道它是个 Go 微服务框架,基于它可以快速构建微服务。
1 | import "go-micro.dev/v4" |
142.now
Go 语言的时间工具库。项目简单、代码易懂,示例代码丰富:
1 | import "github.com/jinzhu/now" |
143.pgweb
基于 Go 实现的跨平台 PostgreSQL 数据库管理工具。通过本地起服务+浏览器的方式解决了跨平台的问题,启动命令:
144.crawlab
基于 Go 的分布式爬虫管理平台。支持 Python、Node.js、Go、Java、PHP 等多种编程语言以及多种爬虫框架
145.fasthttp
高性能 Go HTTP 三方库。性能是标准库 net/http
数倍,关于它是怎么做到的可以通过源码学习一下。进阶的路就在面前,往前走不走看你自己喽
146.awesome-golang-algorithm
Go 语言刷 LeetCode。在线阅读
147.gops
展示当前系统运行了哪些 Go 程序的工具,同时支持深入分析的参数
1 | package main |
148.wtf
瞥一眼你的“私人管家”,终端个人信息面板。安装简单,还可通过配置文件设置你想看到的信息。设置可能需要花一些时间,但最终效果还是很可以的
149.grpcui
gRPC 的 Web 页面调试工具。该项目提供交互式的调试界面,让你开发 gRPC 的时候如虎添翼
150.uptoc
一个基于 Go 的静态博客部署到云存储的工具。静态博客不论是部署在 GitHubPages 还是 Netlify 等平台都存在国内访问速度慢的问题,解决这个问题最好的办法就是部署在国内的云存储,如腾讯云 COS、阿里云 OSS、七牛云等。借助该工具可以快速上传到上述云存储平台,加快你的静态博客访问速度
1 | # 安装 |
151.xlsx
读写 xlsx 文件的 Go 库。
示例代码:
1 | //example type |
152.Yearning
Go 写的高颜值、开源 SQL 审核平台
153.caddy
用 Go 编写的轻量级 Web 服务器。它相较于 Apache、Nginx 这些知名 Web 服务器,独特点在于提供了编译好的可执行文件,实现了真正的开箱即用。无需任何配置即可拥有免费的 HTTPS、自动把 Markdown 文件转化成 HTML 等人性化的功能。如果是搭建中小型的 Web 服务,它完全够用而且省时省心
154.croc
可以让任意两台计算机,安全方便地传输文件和文件夹的工具。轻松实现端到端加密的跨平台文件传输,还支持多文件传输、传输中断和恢复等功能
155.FerretDB
真正开源的 MongoDB 替代品。它底层采用 PostgreSQL 作为存储引擎,用 Go 语言实现了 MongoDB 协议,所以几乎兼容所有的 MongoDB 库,迁移起来毫无负担。如果你用不到 MongoDB 的高级功能,还受限于它的开源协议,那么这个项目可作为 MongoDB 的开源替代方案。它才刚刚起步,建议观望一段时间或做足测试再用于生产环境
156.air
有代码变动就会自动重启服务的 Go 工具。在开发 Go Web 项目时,每次修改后都需要手动编译、重启服务,这个工具会在文件和目录发生变动后,自动编译并重启服务,大大提高了开发效率
157.juicefs
高性能 POSIX 共享文件系统。像使用本地存储一样高效使用海量云端存储,可同时被多台主机同时挂载读写
158.k9s
监控和管理 K8s 集群的命令行工具。它安装简单功能齐全,命令行交互的操作方式可以轻松地解决日常问题
159.kind
使用 Docker 容器作为节点,在本地快速运行起 Kubernetes 集群的工具。通过该工具可以快速创建媲美 k8s 原生的本地环境,而且占用资源相对较少启动速度快。多用于本地开发和测试 k8s 原生组件,不能用于线上环境
160.sniffer
用于查看进程和连接的流量情况的命令行工具。界面简洁美观,支持进程、Socket 等不同视角查看流量数据
使用方法:
1 | ❯ sniffer -h |
161.containers-the-hard-way
用 Go 实现迷你 Docker,包含 Docker 核心功能的开源项目。该项目仅用 Linux 系统接口实现了类似容器的功能,这些能够帮助你更好地了解容器的工作方式。如果你想更深入地理解容器,就参考本项目写一个迷你 Docker 吧
162.delve
一款 Go 语言的调试工具。如果你还在像我一样用 fmt.Println
调试 go 的代码,就试试这个工具吧。万星的开源项目可不是开玩笑的,它上手简单并且支持多种方式调用,助你快速找到 Bug
163.rqlite
用 Go 实现的基于 SQLite 轻量级、分布式关系数据库。如果你对分布式数据库的原理及实现感兴趣的话,这个项目真的是你入门这方面的不二之选,这个项目用 SQLite 作为存储引擎,让你可以把更多的精力放在理解分布式的知识上,尝试阅读下这个项目的文档,相信你会对它感兴趣的。设计图如下:
164.vegeta
基于 Go 语言的 HTTP 压测工具。
示例代码:
1 | echo 'GET http://localhost:8080' | \ |
165.go-pry
Go 语言的交互式 REPL 命令行工具
1 | // Install go-pry |
166.gotests
自动生成 Go 语言测试代码的工具。该项目基于表驱动测试法(TableDrivenTests)自动生成测试代码,表驱动测试法是创建一张数据表格,每一行为输入和预期输出值,然后用这张表格的数据测试代码
167.gotop
用 Go 写的系统监控命令行工具。重点是带实时折线图,看起来比较炫酷
168.minio
采用 Go 编写的开源对象存储服务。支持存储图片、视频、日志等文件,还拥有方便操作的 Web 管理后台。虽然轻量却有着不错的性能,同时采用 RS code 编码算法实现即使丢失一半的硬盘,依旧可以找回数据。适用于大数据、机器学习等场景
- 高性能:单个文件最大支持 5T,读写速率最高可以达到 55Gb/s 和 35Gb/s
- 可扩展:不同集群可以组合,支持跨越多个数据中心
- 云原生:支持容器化、基于 K8S 的编排、多租户
- 对接多种后端存储:支持 S3、DAS、 NAS、Google 等云存储
169.octosql
用 SQL 的方式查询多个数据源的命令行工具。支持用 SQL 查询 CSV、JSON 文件和多种数据库中的数据,甚至可以在它们之间自由 JOIN
1 | octosql "SELECT * FROM ./myfile.json" |
170.fyne
一款 Go 语言跨平台 UI 库。想用 Go 写图形界面应用的小伙伴,快速上手:
示例代码:
1 | // 安装 |
1 | package main |
171.golearn
Go 写的机器学习框架。
172.bild
纯 Go 实现的多种图像处理算法库。
示例代码:
1 | package main |
173.gin-vue-admin
一个基于 Gin+Vue 实现的后台管理系统。看项目名字就知道它为什么而生!该项目的作者还做了配套的免费教学视频,找 Go 实战项目的同学可以学起来了
174.macdriver
封装 Apple/Mac 接口的 Go 库。用它仅在 80 行代码内就能写出个 macOS 菜单栏「番茄时钟」应用,查看源码
175.pyroscope
基于 Go 的开源实时性能分析平台。仅需在源码中添加几行代码,pyroscope 就能帮你找出代码的性能问题、CPU 使用过高的原因,还有丰富的图表和调用树展示。支持 Go、Python、Ruby 编程语言,中文说明
176.algorithm-pattern
LeetCode 刷题集合项目。
177.chanify
Chanify 是一个简单的消息推送工具。每一个人都可以利用提供的 API 来发送消息推送到自己的 iOS 设备上。
功能:
- 支持自定义频道分类消息
- 支持部署自己的节点服务器
- 依照去中心化设计的系统架构
- 随机账号生成保护隐私
- 支持文本/图片/音频/文件等多种消息格式
1 | # 文本消息 |
178.ebiten
Go 语言的 2D 游戏引擎库。通过它可以轻松地用 Go 语言制作出支持多平台的 2D 游戏,项目中还包含很多示例代码,帮助你快速上手
179.imaging
Go 语言的图像处理库。支持:调整大小、旋转、剪切、亮度调整等功能,示例代码:
1 | // Resize srcImage to size = 128x128px using the Lanczos filter. |
180.jql
用 Go 写的 JSON 数据查询工具。该工具安装方便,语法简单容易上手,实用示例代码很多比如:
1 | cat test.json | jql '(elem "countries" (elem (keys) (elem "name")))' |
181.act
该项目可以让你在本地调试 GitHub Actions 脚本。GitHub Actions 是 GitHub 提供的仓库自动工作流程功能,用户可以利用 GitHub 提供的免费计算机资源轻松实现 CI/CD,还可以用来做很多有意思的事情。但是在编写 actions 脚本时,想调试脚本或得到运行结果,只能 push 到远程仓库等待运行结束,没有办法在本地调试和查看结果。有了 act 这个项目,就可以在本地轻松调试 actions 啦
182.dns
简单易用高性能的 Go DNS 库。
183.pretty
漂亮的 Go Printf 开源三方库。
示例代码:
1 | package main |
Output:
1 | []main.myType{ |
184.fzf
能够搜“一切”的模糊搜索命令行工具。它能够搜文件、历史命令、进程、git 提交记录等信息,支持预览内容、整合到 Vim/Neovim 编辑器,而且搜索速度极快
185.glab
用 Go 写的 GitLab 命令行工具。通过它除了能够在命令行管理项目、issues、合并提交之外,还能够查看 CI 的运行状态
1 | api: Make authenticated REST/GRAPHQL |
186.godis
用 Go 语言写的 Redis 服务器。它实现了 Redis 通信协议并兼容 redis-cli 客户端,包含 5 种常用的数据结构和命令比如:TTL、发布订阅、地理位置以及 AOF 持久化等,Go 的初学者可以通过该项目能够学习到关于 TCP、通信协议实现、常用的数据结构等知识,Web 开发学烦了?换一个口味,写个 Redis 作为实战项目吧
187.learngo
适合新手学习 Go 语法的开源项目。学习一门编程语言最好的方法就是动手写,该仓库拥有 1000 多个 Go 语法的问题,让你可以跟着练并附有答案
188.tunny
可设置固定数量协程的 goroutine pool 库。通过这个项目可实现 goroutine 重复使用,从而避免过度创建 goroutine 而造成的内存占用过多等问题
1 | package main |
189.dtm
Go 语言实现的分布式事务管理器。优雅的解决了微服务架构下幂等、空补偿、悬挂等分布式事务难题,提供了简单易用、高性能、易水平扩展的分布式事务解决方案,除 Go 外还有 Python、PHP、Node.js 等语言的客户端
示例代码:
1 | // 具体业务微服务地址 |
190.erda
企业级一站式 PaaS 平台。基于 Kubernetes 以应用为中心的 DevOps 且支持微服务治理的多云架构,可以让复杂业务的开发、运维、监控和问题诊断变得更简单、更高效。能减轻使用不同的工具混搭技术底座和云平台的运维难度,同时还有漂亮、简单易用的界面设计
191.goim
轻量级、高性能、支持集群的 IM 和实时推送服务。纯 Golang 实现支持广播消息、房间推送、安全验证和多协议支持等功能,还有基于 Kafka 的异步消息推送
192.hugo
Go 语言的静态网站生成器。静态网站生成器就是在本地把内容文件生成静态网页(HTML+CSS),然后把生成好的页面上传到服务器的工具。这种工具能够帮你轻松且快速地上线网站,而用户仅需选择喜欢的主题,便可以专注于内容创作。Hugo 作为最流行的静态网站生成器之一,拥有丰富的插件和主题,就算没有编程基础也能帮你快速制作出满意的博客或者网站
193.TopList
各大网站热门头条的聚合网站。在线预览
194.bubbletea
一个强大的 TUI(文本用户界面)框架。Bubble Tea 非常适合构建复杂交互的终端应用程序,同时还能让命令行程序变得多彩和炫酷
195.Cloudreve
支持多种存储服务的云文件桌面管理工具。开箱即用,功能丰富
- 拖拽上传、目录上传、流式上传处理
- 客户端直传和限速下载
- 视频、图像、音频、文本、Office 文档在线预览
196.cointop
用于追踪加密货币行情的命令行工具。界面仿照 htop 支持类似 Vim 的快捷键,程序员摸鱼神器。在线体验
197.duf
一款查看磁盘空间情况的命令行工具,足以代替 df 命令。它上手简单使用方便,界面简洁且友好同时支持 Linux、macOS 和 Windows 操作系统
198.rosedb
一个完全用 Go 写的 Key-Value 数据库。rosedb 适合在找 Go 实战项目的小伙伴们,因为项目代码简洁、注释清晰,配上作者录制的讲解视频。你可以从中学到 Go 相关的知识
- 实用的高级特性,比如:goroutine、chan、mutex
- 数据结构及算法相关知识,比如:链表、哈希表、跳表等
- 操作系统的一些知识,特别是文件系统和内存映射
199.go-daily-lib
每天学习一个 Go 语言库。内容包含标准库和三方库,每个库对应一篇介绍和上手的文章
200.go-fly
基于 Go 语言实现的在线客服系统,采用 Gin+MySQL+JWT+WebSocket 等技术栈实现
201.Open-IM-Server
基于 Go 实现的轻量级即时通讯(IM)项目。具有高性能、易扩展、安装简单、私有化部署等特性,同时包含多种客户端 SDK。从服务器到客户端一体的开源即时通讯(IM)解决方案
202.video-srt-windows
自动识别视频语音生成字幕文件的工具。采用 Go+walk 开发所以仅支持 Windows 系统,原理是请求在线语音转文字的服务,超出免费额度需付费。另外还加入了导出字幕文件和翻译功能
203.viper
用来搞定 Go 应用中配置的库。支持多种配置文件类型、监控并重新加载配置文件、远程读取配置系统等
1 | viper.SetConfigName("config") // name of config file (without extension) |
204.gocron
基于 Go 语言实现的轻量级定时任务管理平台。功能:
- Web 管理界面
- 定时任务可精确到秒
- 任务失败可重试,超时强制停止
- 账户权限控制
- 等等
205.learning_tools
作者学习 Go 过程中实践的 Go 代码集合。包含了 Go 语言实用三方库、微服务、数据库、算法等代码片段,虽然内容丰富但缺少分类和梳理。就算这样还是要推荐给寻找 Go 进阶之路的小伙伴,因为内容真的很好
206.lindb
可水平拓展、高性能的分布式时序数据库,支持海量数据存储以及快速并行查询和计算。已在饿了么内部使用,存储了全量的监控数据。每天增量写入 TB 量级,共计 PB 级的数据
207.sealos
一条命令即可快速部署 Kubernetes(k8s) 集群的工具
208.sharingan
基于 Go 的流量 录制/回放 工具。实现在不影响线上服务的前提下,线下采用线上的真实请求和参数进行测试。特别适合线上重要服务重构后的回归测试,真实流量的测试有助于提早发现问题,避免重大事故
209.gopay
Go 的集合支付库。支持微信、支付宝、PayPal、QQ 支付
210.remark42
简单轻量级的评论引擎。任何需要评论的页面,都可以通过 remark42 快速实现评论功能。功能丰富包括登陆、多层嵌套回复、删除评论、投票、禁止用户评论、图片上传等功能
211.rpcx
国内大佬开源的 Go 语言 RPC 框架。框架入门轻松能够快速上手,性能优于 grpc-go 而且众多国内大厂都在用
212.go-zero
一个可靠的 Go 语言 Web 和 RPC 框架。就算是 Go 新手基于该框架,也可以快速写出高性能可扩展的微服务。
213.lazykube
支持鼠标操作和管理 K8s 的命令行工具。对比 k9s 命令行工具,可以不用去记那么多快捷键,直接用鼠标操作。解决公司不使用 rancher 和 dashboard 管理 K8s,只能通过堡垒机访问的场景。使用该工具只需要终端和鼠标,当然用到搜索功能时还是需要键盘的
214.syncthing
一个采用 Go 语言编写的免费、跨平台的文件同步工具。它不需要安装,只需要下载对应系统的压缩包解压后就可以直接运行和使用。拥有命令行、Web 和桌面程序多种操作模式,同时支持内网和互联网的文件同步,可以用来搭建私有网盘。又一个代替付费网盘的选择,如果考虑到昂贵的宽费用。可以把 syncthing 做为局域网下手机、电视和电脑共享文件的开源解决方案
215.go-best-practice
编写可维护 Go 代码的建议。《Go 语言最佳实践》一文的中文翻译版。
216.natpass
多功能主机管理平台。Go 写的主机管理 Web 平台,支持 shell 和远程桌面管理 Linux、Windows 和 macOS 系统的主机。
217.navidrome
Go 写的开源音乐服务器。该项目可以用来搭建自己的音乐网站,功能丰富支持中文界面、专辑封面、多用户、各种音频格式、播放列表等功能,而且硬件要求低即使是在树莓派上也能流畅地运行。
218.paopao-ce
一个 Go 写的轻量级社区。采用 Gin+Vue 实现的微社区,界面清爽拥有话题、发布短内容、评论等功能。
219.screego
多用户的屏幕分享服务。它可以快速启动一个在线共享屏幕的服务,让用户无需安装任何软件,仅使用浏览器就能分享自己的屏幕画面。项目基于网页实时通信(WebRTC) 实现,由 STUN/TURN 协议完成内网穿透和浏览器端对端的连接,既实用又有源码可以学习。
220.revive
快速且易扩展的 Go 代码检查工具。它比 golint 更快、更灵活,深受广大 Go 开发者的喜爱
221.gorse
由 Go 语言实现的推荐系统引擎。无需具备推荐系统相关知识,就能轻而易举地搭建推荐系统。开发者只需将用户信息、物料信息和互动数据(例如点赞、收藏等)导入系统,Gorse 就会自动训练模型为每个用户生成推荐
222.lal
纯 Go 开发的流媒体服务器。完备的直播服务器,支持多种常见编码格式和 RTMP、RTSP、HLS 等协议
223.monitoror
平铺的监控工具。安装简单配置方便的“监控墙”,所有监控指标以平铺的方式展示,美观且一目了然。支持 Linux、macOS 和 Windows 主流操作系统
224.yomo
低延时流式边缘计算框架。它基于 QUIC(快速 UDP 互联网连接)协议实现,有效地提高了数据传输率和稳定性,实现在复杂网络环境下数据依然可以超低时延传输和处理。原生支持多地域分布式的部署模式,使得终端用户可就近访问节点,保证数据传输的低延时。适用于开发实时交互的应用,比如在线协作 SaaS、元宇宙、AR/VR、云游戏、物联网 IoT 等
225.bk-cmdb
腾讯开源的配置平台。面向资产及应用的企业级配置管理平台,拥有主机管理、组织架构管理、通用权限管理、操作审计等功能。该项目的代码审核很严格,此举不仅保证了项目的代码质量,还提高了代码的可读性,推荐阅读源码。
226.CasaOS
简单易用的家庭云系统。只需一键即可安装在 NAS、树莓派等各种家庭智能设备上,让你可以随时随地管理个人数据和设备。
227.colly
可能是最知名的 Go 爬虫框架。它拥有友好的 API 和丰富代码示例,短时间内即可上手。性能方面单核能达到 1K 请求/秒,还可以轻松管理请求方式、间隔和最大并发数,功能强大且优雅。
1 | func main() { |
228.ddns-go
简单易用的 DDNS 工具。众所周知域名解析中域名对应的是固定 IP,但是本地机器的 IP 一般是动态的,所以无法完成域名解析实现公网访问。动态 DNS(DDNS) 技术就是用来解决动态 IP 的域名解析问题,该项目能够自动获取你本机的公网 IP,并自动更新到域名服务商,从而实现公网访问本地机器。
229.nightingale
开源的云原生监控系统。支持 Docker 等多种部署方式,集数据采集、监控告警、可视化为一体的企业级监控平台。借助高性能时序库,可以满足数亿时间线的采集、存储和告警分析的场景。该项目已在上千家企业部署落地,经历了各种生产环境的检验。
230.gota
Go 语言的数据处理库。该库提供了类似 Python 语言 Pandas 库的功能,以及 Series 和 DataFrames 的数据结构,支持用列的方式高效地处理数据
231.gse
Go 的高性能多语言分词库。它是结巴分词的 Go 语言实现,支持中文和接入 ES 等功能
1 | package main |
232.hh-lol-prophet
英雄联盟对局先知工具。免费合法不封号,原理是基于 LOL 客户端接口获取用户数据,实现开局前对玩家信息分析和打分
233.illustrated-tls12
图解 TLS 连接。用在线交互的方式讲解 TLS 的全过程,从建立 TLS 1.2 客户端发送 ping 再到接收 pong,详细到每一个字节。在线尝试
234.ants
高性能 goroutine 池。实现了大规模下的 goroutine 调度和复用,从而节省资源提高执行效果。还有如任务提交、动态调整 pool 大小、查询运行状态等实用接口
235.fx
命令行 JSON 浏览工具。看似简单却十分实用的 JSON 命令行查询工具,支持流式和交互式两种查询方式
236.httprunner
开源的 API 测试工具。支持丰富的网络协议,涵盖接口测试、性能测试等测试类型的测试工具
- 多种网络协议:支持 HTTP(S)/HTTP2/WebSocket/RPC 等
- 多格式可选:测试用例支持 YAML/JSON/go test/pytest 格式
- 双执行引擎:同时支持 Golang/Python 两个执行引擎
- 一键部署:一条命令在 macOS/Linux/Windows 完成安装部署
- 网络性能采集:在场景化接口测试的基础上,可额外采集网络链路性能指标
237.zinc
轻量级全文搜索引擎。Go 语言下的轻量级搜索引擎,支持中文搜索自带 Web 管理界面
238.env
用于解析环境变量的 Go 语言库。一般情况下项目启动时需要的配置参数,都是通过环境变量传递的。该项目就是 Go 语言用来解析环境变量的库,它简单、体积小、零依赖。
1 | package main |
239.k8s-tutorials
免费的 Kubernetes 教程。K8s 作为云原生时代的必备技能之一,多少得会一些。该教程侧重于实战引导,用 Go 写的项目作为演示对象,从最基础的容器定义开始,逐一讲述 pod、deployment、service、ingress 等资源,直到用 helm 打包部署一套完整服务。
240.kubeshark
强大的 Kubernetes API 流量查看工具。如果把 k8s 比作操作系统,那它就是 k8s 上的 tcpdump,使用起来就像 Chrome 开发者工具一样简单直接,能够让 k8s 上微服务之间的网络通信一览无遗。
241.rod
Go 语言的网页自动化和爬虫库。该项目是 Go 语言封装的 DevTools 协议库,实现用 Go 语言操作浏览器,自动化之前需要手动完成的操作,比如:爬取客户端渲染的页面、端到端测试、自动填写表单、模拟点击等操作。项目包含丰富的示例代码,改改就能上手使用。
242.trivy
一款全面的容器安全扫描工具。目前最流行的开源容器镜像漏洞扫描工具,拥有速度快、精准度高、依赖检测、机密检查、对 CI 友好等特点。它不仅安装简单而且容易上手,仅需一条命令,即可发现镜像存在的安全漏洞。
243.gitleaks
一款静态应用程序安全测试(SAST)工具。它可以检测项目中是否包含密码、API Key、token 等信息,还能够轻松整合到 Git Hook 和 GitHub Action,实现提交代码时自动检测,通过告警和阻止 push 等方式,有效地防止敏感信息泄漏。
244.mercure
一种用于实时通信的开放式协议。该项目是基于 HTTP 和 SSE 的一种协议,然后用 Go 语言实现的实时推送服务。相较于 WebSocket 协议它使用起来更加简单,客户端发起订阅就和请求普通的 HTTP 接口一样,而且在 HTTP/2 下还可以双向通信。
245.ptg
用 Go 写的 GUI gRPC 客户端。作者在调试 gPRC 接口时,发现没有类似 postman 趁手的 gPRC 客户端,所以就自己动手写了一个然后开源了。
246.wechat-backup
本地备份微信聊天记录的工具。它能够将手机上的微信聊天记录,解密后保存在电脑上,支持查看、搜索、恢复微信聊天记录。
247.wild-workouts-go-ddd-example
Go DDD 示例项目。该项目通过一个预约系统的示例,展示了如何在 Go 项目中实现领域驱动设计(DDD)和读写分离架构(CQRS)。
248.cobra
当下最流行的 Go CLI 框架。功能强大且极易上手的 Go 语言 CLI 库,可用于快速构建命令行程序,被 K8s、Hugo、GitHub CLI 等众多知名 Go 项目所采用,支持自动提示、自动构建项目、嵌套子命令等功能。
249.fq
一条命令查看二进制文件。用于查看和处理二进制文件的命令行工具,安装简单使用方便,支持 mp4、flac、mp3、jpeg 等多种格式的文件。
250.HackBrowserData
一款浏览器数据导出工具。能够导出本地浏览器的密码、历史记录、Cookie、书签、下载记录、localStorage 等数据的命令行工具,支持多平台下的多种主流浏览器。
251.statsviz
实时展示 Go 程序运行时指标的 Web 应用。该项目通过图表可视化的方式,实时展示 Go 程序运行时的堆、对象、Goroutines、MSpan/MCache 等信息。
1 | mux := http.NewServeMux() |
252.Miniflux 2
极简的 feed 订阅工具。该项目的“简”是由内而外,内部代码部分不使用 Web 框架和 ORM 仅采用 Go+PostgreSQL+JS 实现,界面朴实无华、功能精简实用,支持快速自建、源管理、自动获取内容、快捷键、用户系统等,这一切不多不少刚刚好。
253.answer
一款开源的问答社区。采用 Go 语言编写的问答社区,支持积分、提问、回答、标签等功能,部署简单。
254.btree
Go 语言实现的 B-树 数据结构。由谷歌开源的 B-树 Go 语言实现,代码整洁、注释丰富,推荐阅读源码。B-树 这种数据结构,能够让查找数据、顺序访问、插入及删除操作,都在对数时间内完成,多用于数据库和文件系统。
255.nap
一款命令行的代码片段管理工具。该项目可以通过命令行界面,快速创建和管理代码片段。支持快捷键、搜索、代码高亮、自定义颜色等功能,操作简单方便。
256.oh-my-posh
适用于多种 shell 的终端提示个性化工具。该项目内置多款主题开箱即用,支持 Windows、Linux、macOS 三个系统上的 PowerShell、Bash、Zsh 等多种 shell,自动补全你输入的每个命令。
257.raft
Raft 算法的 Go 语言实现。Raft 是一种分布式一致性算法(共识算法),常用于分布式集群内的任意节点,在某种状态转换上保持一致。
258.cadvisor
一款由 Google 开源的容器监控工具。它可以实时统计容器运行时占用的资源,包括 CPU 利用率、内存使用量、网络传输等信息。提供了 Web 可视化页面,能方便用户分析和监控容器运行状态,支持包括 Docker 在内的几乎所有类型的容器。
259.dsq
可直接用 SQL 查询数据文件的命令行工具。通过该项目无需将数据导入数据库,就能用 SQL 查询文件内的数据,可执行模糊查询、计数、排序等命令,支持 JSON、CSV、Excel、Parquet、YAML 等类型的文件。还可以搭配其它命令行工具(jq),实现更丰富的功能。
260.json-to-go
立刻将 JSON 转化为 Go 类型定义的工具。这是一个用 JavaScript 写的在线小工具,可以直接将输入的 JSON 转成对应的 Go 类型定义。
261.pocketbase
仅一个文件的开源后端。将 SQLite 数据库、接口服务、登录认证、管理后台等服务器端的功能,做成一个开箱即用的可执行文件。让原本不懂后端开发的用户,也可以通过用户界面快速构建起接口服务。
262.supervisord
用 Go 重新实现的 supervisord 。开源项目 supervisord 作为 Python 项目中常用的进程管理工具,深受广大开发爱好者的喜欢。但如果在非 Python 环境的情况下,用起来就不是那么顺手啦,所以作者用 Go 重写了 supervisord,编译后可以方便地运行在任何环境下。
263.filestash
在线文件管理工具。在浏览器上管理 FTP、SFTP、Git、S3、MySQL、Dropbox 等服务中的文件和数据,支持编辑文件、图片管理、视频转码、Office 文档、全文搜索等功能
264.go-chart
Go 原生图表库。支持折线图、柱状图、饼图等
示例代码:
1 | import ( |
265.nali
离线查询 IP 地理信息和 CDN 服务提供商的命令行工具
命令:
1 | $ nali --help |
持续更新中…