编程语言

Go

共 448 个项目
← 项目库
App-Store-Connect-CLI
Go第 124 期

App-Store-Connect-CLI

命令行发布 App Store 应用。这是一款用 Go 编写的 App Store Connect 命令行工具,可在终端、IDE 或 CI/CD 流水线中自动完成应用发布,支持构建上传、TestFlight、提交审核、签名等操作,覆盖 iOS、macOS、tvOS 和 visionOS 全平台。

kage
Go第 124 期

kage

把整个网站打包离线阅读。该项目是用 Go 编写的网站离线保存工具,可将任意网站保存为可离线浏览的本地文件夹。保存后的网页看起来和线上一样,但不会发起任何网络请求,还支持打包成单个 .zim 文件或可直接运行的可执行文件。

make-look-scanned
Go第 124 期

make-look-scanned

让 PDF 看起来像扫描件。该项目可将 PDF 文件处理成类似扫描件的效果,支持命令行和浏览器本地运行,相同文件默认会得到完全一致的结果。

zabbix
Go第 124 期

zabbix

开源的企业级分布式监控平台。该项目是企业级开源分布式监控系统,可实时监控网络设备、服务器、数据库、虚拟机、容器、云服务和应用的运行状态。它支持自动发现、Agent/Agent-less 采集和故障检测等功能,并可通过 Slack、Jira、Teams、邮件或短信发送告警。Zabbix 在中国也有非常活跃的社区。

暂无截图
Go第 123 期

chinese-poetry-api

开箱即用的中国古诗词 API 服务。该项目是用 Go 语言编写的中国古诗词 API 服务,收录了唐诗、宋词、元曲等近 40 万首作品。它提供 REST API 和 GraphQL 接口,支持全文搜索、IP 限流、按朝代/作者/诗型随机取诗和 Docker 一键部署。

fight-the-landlord
Go第 123 期

fight-the-landlord

终端里的斗地主游戏。这是一款用 Go 编写的斗地主游戏,主打随机发牌、无控牌算法。支持联网对战、房间匹配、断线重连、记牌器、音乐开关等功能,还集成了快手开源的 DouZero 斗地主 AI,可作为机器人补位或对战。

gopass
Go第 123 期

gopass

专为团队设计的命令行密码管理器。这是一款用于存储管理和同步密码、密钥与证书的命令行工具,可作为 UNIX 密码工具 pass 的替代品。默认用 GPG 加密和 Git 管理凭据,可通过 Git 仓库在多设备、多人团队之间同步。

tinyauth
Go第 123 期

tinyauth

开源的零代码身份认证中间件。这是一个 Go 语言开发的极简认证中间件,可通过 Docker 快速部署。它能为任何 Web 应用或服务一键添加登录界面或 OAuth 登录(Google、GitHub 等),无需修改现有代码,可无缝集成到 Traefik、Caddy、Nginx 等主流反向代理,极大地简化了登录实现流程。

cliamp
Go第 122 期

cliamp

Winamp 风格的终端音乐播放器。这是一款受 Winamp 启发的复古风格终端音乐播放器,支持播放本地文件、网络流媒体、播客和各大主流平台的内容。它内置频谱可视化器、参数均衡器和播放列表管理,还可一键浏览多个在线电台。

dolt
Go第 122 期

dolt

像 Git 一样管理数据的 SQL 数据库。这是一款兼容 MySQL 协议的 SQL 数据库,将 Git 的版本控制能力引入数据表管理,支持 branch、merge、push、pull、clone 等操作,可通过任意 MySQL 客户端直接连接使用。

termshot
Go第 122 期

termshot

一条命令生成终端截图。这是一款用 Go 语言开发的命令行工具,能够将终端的文本内容转换为带有语法高亮和窗口边框的截图。使用时只需在命令前加上 termshot 即可,支持自定义字体、显示执行命令、即时预览、去除窗口装饰和阴影等功能。

witr
Go第 122 期

witr

一条命令揭秘进程身世。这是一个用 Go 编写的命令行诊断工具,用于快速定位和分析正在运行的进程。它通过端口、服务名或 PID 映射进程信息,生成通俗易懂的进程因果链,直观展示进程的来源、启动方式和持续运行的原因,帮助运维与开发者排查和定位异常进程。

glow
Go第 121 期

glow

直接在命令行浏览 Markdown 的工具。该项目是基于 Go 开发的命令行 Markdown 阅读器,提供 TUI 和 CLI 两种使用方式,可以自动扫描当前目录读取本地文件和远程 URL,支持自定义主题、语法高亮、分页等功能。

来自 @DeShuiYu 的分享
k0s
Go第 121 期

k0s

轻量级、零依赖的 K8s 发行版。该项目是将集群所需的全部组件打包为单个可执行文件的 K8s 发行版,除内核外无宿主机依赖,最低 1 核 1GB 即可运行,支持云端、边缘计算和 IoT 等场景。

来自 @刘睿华 的分享
OpenTickly
Go第 121 期

OpenTickly

开源的时间追踪与管理工具。这是一款采用 Go+React 开发的自托管时间追踪工具,支持导入 Toggl 的数据,并可与 toggl-cli 配合使用,让 AI 帮助你记录、管理和复盘时间开销。

来自 @CorrectRoadH 的分享
quien
Go第 121 期

quien

更好用的域名分析工具。这是一款基于 Go 开发的交互式终端域名分析工具,集成了 WHOIS/RDAP 查询、DNS 解析、邮件、SSL/TLS、SEO 分析和技术栈识别等功能。

cc-connect
Go第 120 期

cc-connect

把本地 AI 编程助手接入聊天应用。该项目能够将本地运行的 AI Agent 接到你常用的即时通讯平台,比如飞书、钉钉、Slack、Telegram、Discord 等主流平台。同时支持 Claude Code、Cursor、Gemini CLI 等 7 种 AI 编程助手,实现通过聊天软件远程控制本地 AI Agent,执行各种开发相关任务。

来自 @xiaoxiaowp98 的分享
ffmpeg-over-ip
Go第 120 期

ffmpeg-over-ip

远程使用 GPU 加速 FFmpeg 转码。该项目能够像本地调用 FFmpeg 命令一样进行视频转码,但实际是在远程 GPU 服务器上完成的编解码,整个过程无需复杂配置和跨设备文件共享系统。

pinchtab
Go第 120 期

pinchtab

连接 AI 与 Chrome 浏览器的桥梁。这是一款基于 Go 语言开发的 HTTP 服务器,能够让 AI 代理通过 API 接口或命令行的方式控制 Chrome 浏览器,支持 MCP、DOM 交互、屏幕截图和文本提取等功能,并可有效降低 Token 消耗。

skillshare
Go第 120 期

skillshare

一键同步多平台 AI 技能的工具。这是一款跨工具、跨平台的 skill 同步工具,可通过一条简单的命令将技能、提示词和配置文件同步到多个 AI 工具中,支持 Claude Code、OpenClaw、Codex、OpenCode 等工具。

来自 @Willie 的分享
lazyssh
Go第 119 期

lazyssh

终端交互式 SSH 管理工具。这是一款 Go 写的终端交互式 SSH 管理工具,基于 OpenSSH 执行连接安全可靠。它提供直观易用的终端界面,支持模糊搜索、排序、Ping 检查和一键连接等功能。

来自 @孤胆枪手 的分享
sql-tap
Go第 119 期

sql-tap

实时监控 SQL 流量的工具。这是一款基于 Go 开发的实时 SQL 流量监控工具,无需修改代码即可使用。它作为代理部署在应用与数据库之间,通过解析数据库 wire 协议捕获所有查询,提供 TUI 和 Web 两种使用方式,支持 PostgreSQL、MySQL 和 TiDB 数据库。

Surge
Go第 119 期

Surge

终端里的高速下载工具。这是一款采用 Go 语言开发的终端下载工具,可将下载文件自动切分为多个数据块并行下载,支持从多个镜像源下载、自动故障转移、顺序下载模式等功能。

来自 @Meet Mehta 的分享
暂无截图
Go第 119 期

task

告别 Makefile 复杂语法的构建工具。这是一款基于 Go 语言开发的现代化构建工具,可作为 GNU Make 的替代品。它采用更简单的 YAML 语法,支持跨平台、依赖管理、并行执行和条件触发等功能,适用于项目构建、开发环境管理和 CI/CD 集成。

来自 @DeShuiYu 的分享
暂无截图
Go第 118 期

marmot

让 SQLite 秒变分布式数据库。这是一款基于 Go 语言开发的轻量级分布式 SQLite 系统,通过无主架构将 SQLite 转化为高可用的分布式数据库。它采用 Gossip 协议进行集群管理和数据同步,支持最终一致性和多点写入,并通过 CDC 实现行级复制,兼容 MySQL 协议,现有的 MySQL 客户端和应用可无缝迁移至 SQLite 集群。

new-api
Go第 118 期

new-api

新一代 AI 模型聚合管理与分发系统。该项目是基于 One API 二次开发的 AI 模型接口管理与分发平台。它将 OpenAl、Claude、Gemini、DeepSeek 等多种主流大模型与 AI 服务封装为统一接口,并兼容 OpenAI、Claude、Gemini 等常见接口格式。同时提供数据看板、智能路由分发、令牌分组、模型访问限制和在线充值等功能,适合用于企业或个人搭建 LLM 统一调用平台。

来自 @Calcium-Ion 的分享
nginxpulse
Go第 118 期

nginxpulse

轻量级 Nginx 日志可视化平台。该项目是用 Go、Vue3 和 PostgreSQL 构建的轻量级 Nginx 日志分析和可视化平台,支持 PV/UV 统计、IP 归属地分析、客户端设备解析等功能,适合个人站长和小型团队使用。

snitch
Go第 118 期

snitch

更友好的网络连接查看器。该项目是用 Go 语言开发的网络连接监控命令行工具,可作为 ss 和 netstat 的替代品。它开箱即用、界面简洁直观,支持实时刷新、过滤、排序、导出和搜索 TCP/UDP 连接等功能。

暂无截图
Go第 118 期

tusd

大文件断点续传的服务端实现。该项目是 tus 协议(基于 HTTP 的文件断点续传协议)官方开源的 Go 语言实现,专为解决大文件上传易中断、需从头重传的问题而设计,支持本地磁盘、AWS S3、Google Cloud Storage 等多种存储,可作为独立服务或 Go 库使用。

来自 @刘睿华 的分享
gitmal
Go第 117 期

gitmal

Git 仓库一键转静态网站。这是一款 Go 语言开发的工具,可轻松将 Git 仓库转换为静态网站。它通过解析仓库的文件结构、提交历史和代码内容,提供类似 GitHub 的浏览体验,适用于展示个人开源项目代码。

goose
Go第 117 期

goose

开箱即用的数据库迁移工具。这是一个 Go 语言开发的数据库迁移工具,提供 CLI 和第三方库两种使用方式,可通过 SQL 文件实现常规迁移,也可编写 Go 代码处理复杂的迁移逻辑,兼容 Postgres、MySQL、ClickHouse 等数据库。

kaiju
Go第 117 期

kaiju

Go 语言的高性能游戏引擎。该项目是采用 Go 语言和 Vulkan 图形 API 构建的 2D/3D 游戏引擎,让开发者可以直接用 Go 开发游戏。它内置可视化编辑器、Soloud 音频库和 Bullet3 物理引擎,在降低游戏开发门槛的同时,实现了极高的渲染性能和低内存占用。

unregistry
Go第 117 期

unregistry

像 rsync 一样同步 Docker 镜像。该项目可通过简单的 docker pussh 命令,将本地 Docker 镜像直接推送到远程服务器,无需依赖外部容器镜像仓库。仅传输缺失的镜像层,比 docker save/load 更快。

filebrowser
Go第 116 期

filebrowser

完全开源可自托管的私有云盘。该项目是基于 Go+Vue.js 构建的在线文件管理工具,功能比原版 FileBrowser 更丰富,支持多文件源(本地或云)、目录级访问控制、设置共享过期时间、文件搜索和缩略图等功能。

kite
Go第 116 期

kite

开源的轻量级 K8s 管理面板。这是一款轻量级、现代化的 Kubernetes 可视化管理平台,适用于管理和监控 K8s 集群。它拥有直观易用的界面,支持查看 Pod 日志、执行容器命令、编辑 YAML 配置、管理用户权限等功能。

来自 @Zzde 的分享
term.everything
Go第 116 期

term.everything

终端里运行任意 GUI 应用。该项目突破了传统终端只能运行命令行程序的限制,让用户能够在终端(Terminal)中运行任意 GUI 应用程序,将图形界面的操作体验带入终端环境。它通过自研的 Wayland 合成器,将原本输出到显示器的 GUI 窗口实时渲染为终端可显示的字符或图片,实现了在终端内运行图形应用的能力,兼容 iTerm2、Alacritty、Kitty 等主流终端模拟器。

tuios
Go第 116 期

tuios

终端内实现桌面级窗口管理。这是一个 Go 编写的终端多窗口管理工具,支持浮动窗口、鼠标拖拽、自动平铺、多工作区切换等功能。窗口可以自由重叠和移动,像桌面操作系统一样,适合觉得 tmux 快捷键难记的开发者。

来自 @天涯孤雁 的分享
Ech0
Go第 115 期

Ech0

清爽的轻量级内容分享平台。这是一款开源、自托管的轻量级内容发布平台,专注于思想流动和快速分享。它拥有简洁直观的操作界面,支持发布和分享想法、文字、图片和链接。同时,支持类似 ActivityPub 的联邦协议,实现不同实例(站点)之间的互联互通,让内容不再局限于单一孤立的网站。

来自 @L1nSn0w 的分享
eget
Go第 115 期

eget

一键获取 GitHub Release 安装包。这是一个用 Go 编写的命令行工具,可自动从 GitHub 检索、下载并安装开源项目已发布的二进制文件(Releases),无需手动查找和下载安装包。

HAMi
Go第 115 期

HAMi

面向 K8s 的异构 AI 计算虚拟化中间件。这是一款专为异构计算环境打造的 GPU 共享与调度管理平台,致力于最大化提升 GPU 利用率。它提供灵活、可靠、按需和弹性的多元异构 GPU 虚拟化、调度与管理能力,支持包括 NVIDIA、Ascend 等主流厂商的多种硬件及虚拟化技术,适用于深度学习、数据处理、科学计算等高性能计算场景。

来自 @ysq 的分享
暂无截图
Go第 114 期

fuck-u-code

自动检测代码屎山等级的工具。这是一款用于评估代码“屎山等级”的工具,支持 Python、Java、Go 等多种编程语言。它能够自动扫描指定目录,深入分析项目代码的混乱程度,并用犀利又搞笑的方式告诉你结果。

来自 @wei-guang 的分享
git-who
Go第 114 期

git-who

Git 目录级别的贡献分析工具。这是一个用 Go 和 Ruby 语言开发的命令行工具,用于在 Git 仓库中按目录快速统计并可视化每位贡献者的提交次数、代码修改行数和活跃时间。

gonzo
Go第 114 期

gonzo

终端用户界面日志分析工具。这是一个用 Go 语言开发的终端(TUI)日志分析工具,灵感来自 k9s。它支持在终端界面下实时分析、过滤和可视化日志,结合 AI 提升日志洞察能力,适用于日常开发、运维和故障排查等场景。

来自 @DeShuiYu 的分享
ntfy
Go第 114 期

ntfy

开箱即用的跨设备推送通知服务。该项目是基于 HTTP 协议的开源推送通知服务,支持通过 PUT/POST 请求跨设备推送消息。它采用 Go 语言开发,用户无需注册即可通过命令行工具或简单的 API 轻松发送通知,支持自定义通知内容和自托管部署,并提供配套的 Android 和 iOS 客户端。

ezbookkeeping
Go第 113 期

ezbookkeeping

轻松自托管你的个人财务数据。这是一款免费、轻量、可自托管的个人记账应用,采用 Go+Vue 构建。它界面简洁易用、功能丰富,支持二级账户(个人/家庭)、收支分类、交易图片附件、定期收支自动记账等功能。借助 PWA 技术,可一键添加到手机主屏幕,体验媲美原生 App。

来自 @mayswind 的分享
glance
Go第 113 期

glance

整合你关心的信息源仪表盘工具。这是一个可自托管的仪表盘,单个文件、无需安装、开箱即用。它能够将你关注或订阅的所有信息,统一整合并以美观的界面展示,支持 RSS 订阅、帖子、新闻、天气、书签、日历、股票、视频更新、网站监控等多种信息源,并且针对移动端做了优化。

k3sup
Go第 113 期

k3sup

一键快速部署 K8s 集群。这是一款通过 SSH 快速部署 K3s(轻量级 Kubernetes)集群的工具。它集成了 SSH 自动化部署和 K3s,支持一条命令完成集群的搭建与管理,适用于云服务器、树莓派、虚拟机等多种环境。

traefik
Go第 113 期

traefik

云原生时代的反向代理利器。这是一款面向云原生环境的现代化 HTTP 反向代理与负载均衡器,可轻松部署微服务。它能够自动检测后端服务变更,动态更新路由规则,实现高效且可扩展的流量管理,支持 Docker、Kubernetes、Swarm、ECS、Consul、Etcd 等主流技术栈。

来自 @Uyloal 的分享
evcc
Go第 112 期

evcc

个人电车充电智能管理平台。这是一个开源的 EV(电动汽车)充电器控制平台,为电车车主提供灵活且易于安装的充电解决方案。它提供了可视化且适配移动端的 Web 平台,用户可以通过该平台远程启动、停止和监控车辆的充电状态,支持多种充电设备和车辆型号。智能充电功能还可以根据电价、太阳储能和日程安排,智能安排充电时间,从而节约电费。

gpt-load
Go第 112 期

gpt-load

企业级的多渠道大模型 API 管理平台。这是一款用 Go 语言开发的企业级大模型接口管理平台,支持 OpenAI、Gemini、Claude 等多种服务。它开箱即用、内置 Web 管理界面、保留原生 API 格式,支持密钥自动轮询、故障切换和水平扩展,专为高并发生产环境而设计。

来自 @tbphp 的分享
mcp-toolbox
Go第 112 期

mcp-toolbox

Google 开源的数据库 MCP 工具。该项目是 Google 开源的 MCP 服务器,专为 LLM 应用与各类数据库之间提供统一、安全、可扩展的数据访问层。它集成了连接池、身份验证、监控等功能,让 AI agent 快速拥有查询数据库的能力,支持 PostgreSQL、MySQL 等多种数据库。

zenta
Go第 112 期

zenta

快速恢复专注的命令行工具。这是一个 Go 语言开发的命令行工具,旨在帮助开发者在心烦意乱或注意力不集中时,通过简单的呼吸练习,快速找回专注和内心的平静。

f2
Go第 111 期

f2

跨平台的批量重命名工具。这是一款命令行批量重命名工具,完全用 Go 语言编写,支持正则表达式、自动解决冲突、撤销等功能。

logdy-core
Go第 111 期

logdy-core

自带 Web 界面的实时日志查看工具。这是一款轻量级的实时日志查看工具,无需安装、开箱即用。它内置 Web 界面,可通过浏览器像 tail -f 一样实时查看与过滤日志,支持多种输入模式和自定义解析器。来自 [@刘睿华](https://hellogithub.com/user/TJ65FfbQU09PLHM) 的分享```# Use with any shell command$ tail -f file.log | logdy WebUI started, visit http://localhost:8080# Read log files$ logdy follow app-out.log --full-read WebUI started, visit http://localhost:8080```

OpenList
Go第 111 期

OpenList

支持多种存储的文件列表程序。这是一个基于 Gin 和 SolidJS 的文件列表程序,支持本地存储、阿里云盘、OneDrive、Google Drive 等多种存储方式。它完全开源(fork 自 AList),由社区共同维护。

tldx
Go第 111 期

tldx

一键查找可用域名的工具。这是一款快速查询可用域名的命令行工具。它能够根据关键词、前缀、后缀和多种顶级域名,智能生成域名组合,并快速检测其可用性。

monibuca
Go第 110 期

monibuca

一站式 Go 语言流媒体服务器开发框架。这是一款完全用 Go 语言编写的高性能、低延迟、模块化且易扩展的流媒体服务器框架。它采用模块化设计,可按需加载模块,支持录制与回放、分布式部署、Prometheus 监控,以及截图、转码、SEI 数据处理等媒体处理功能。

来自 @星辰大海BGzEn 的分享
server
Go第 110 期

server

Go 语言实现的通知推送平台。这是一个简单、自托管、实时的消息推送服务,支持通过 REST API 发送消息,WebSocket 实时接收消息,并自带直观易用的 Web 界面,适用于消息推送、监控告警、个人通知等场景。

来自 @千石 的分享
sttr
Go第 110 期

sttr

用 Go 实现的字符串命令行工具。这是一款用于对字符串进行各种转换操作的命令行工具,支持多种编码、解码、哈希和格式化功能,适用于在终端环境下快速处理文本数据。来自 [@Abhimanyu Sharm](https://hellogithub.com/user/Z9fW3G0vSeNRC6D) 的分享```// With input prompt sttr// Direct input sttr md5 "Hello World"// File input sttr md5 file.text sttr base64-encode image.jpg// Reading from different processor like cat, curl, printf etc..echo "Hello World" | sttr md5 cat file.txt | sttr md5// Writing output to a file sttr yaml-json file.yaml > file-output.json```

tview
Go第 110 期

tview

Go 语言终端用户界面库。该项目是基于 Go 语言开发的终端用户界面(TUI)库,帮助开发者快速构建交互式终端应用。它提供了丰富的组件和灵活的布局系统,包括选择框、按钮、表格、树、表单、彩色文本、多行文本区域等。来自 [@永_恒](https://hellogithub.com/user/a6lR1ODoCVgbuJk) 的分享```go package main import ("github.com/rivo/tview")func main() {box := tview.NewBox().SetBorder(true).SetTitle("Hello, world!")if err := tview.NewApplication().SetRoot(box, true).Run(); err != nil {panic(err)}}```

anubis
Go第 109 期

anubis

保护你的网站免受 AI 爬虫攻击。这是一个用于保护网站免受 AI 爬虫和恶意抓取的工具。它通过 SHA256 工作量证明(Proof-of-Work, PoW)挑战来验证每个连接的合法性,从而阻止恶意爬虫和大规模抓取行为。

bitplay
Go第 109 期

bitplay

在线播放视频资源的 Web 应用。该项目是用 Go 语言开发的在线视频流媒体应用,让用户能够直接在线播放视频资源。它支持通过磁力链接或 .torrent 文件流式传输高清视频,以及实时字幕转换和 Docker 部署。

landrun
Go第 109 期

landrun

安全执行 Linux 命令的工具。这是一个轻量级、安全的 Linux 沙箱工具,基于 Linux 内核自带的 Landlock 模块实现。它为用户提供无需 root 权限和容器,即可运行任何命令的安全方式,并支持对文件读写和网络访问权限的灵活控制。

暂无截图
Go第 109 期

litestream

零侵入 SQLite 数据库灾备工具。该项目是专为 SQLite 数据库设计的实时增量同步和备份工具。它作为后台进程运行,通过监控数据库变更,自动将数据同步至本地文件或云端存储。只需简单部署,即可为你的 SQLite 项目带来企业级的数据安全保障。

gqlgen
Go第 108 期

gqlgen

Go 语言的 GraphQL 服务器生成库。该项目是用于快速构建 GraphQL 服务的 Go 语言库,可解析 GraphQL 模式文件(.graphql)并生成对应的 Go 代码。它强调类型安全,并支持自定义模型、类型映射、中间件和解析器等功能。

hcache
Go第 108 期

hcache

快速找到占用大量缓存的罪魁祸首。这是一个快速查找系统中占用空间最大的缓存文件和进程的命令行工具,简单易用方便快捷,支持 JSON、表格和直方图的输出格式。

暂无截图
Go第 107 期

codeforces-go

Go 语言的算法竞赛模版。该项目是由灵茶山艾府创建的一个算法竞赛模板。它以 Go 语言为基础,提供了全面且系统的算法模板集合,涵盖从基础数据结构到高级算法的多个领域。

暂无截图
Go第 107 期

goja

Go 语言实现的 JavaScript 引擎。该项目是用纯 Go 语言实现的高性能 JavaScript 引擎,让开发者能够在 Go 环境下轻松执行 JavaScript 代码。它支持运行 Babel 和 TypeScript 编译器等 ES5 编写的东西,并兼容大部分 ES6 功能。```go vm := goja.New()v, err := vm.RunString("2 + 2")if err != nil {panic(err)}if num := v.Export().(int64); num != 4 {panic(num)}```

ipatool
Go第 107 期

ipatool

轻松下载 IPA 文件的工具。这是一款能够帮助用户在 iOS App Store 中搜索并下载 .ipa 文件的命令行工具,支持 Windows、Linux 和 macOS 平台。

pspy
Go第 107 期

pspy

无需 Root 权限实时监控 Linux 进程的工具。这是一款无需 root 权限即可实时监控 Linux 系统中所有用户运行的命令、计划任务等进程活动。它通过遍历 /proc 收集进程信息和监听文件系统事件,能够实时捕捉新启动的进程和短命进程,适用于 CTF 竞赛、渗透测试和安全审计等场景。

wego
Go第 107 期

wego

快速查看天气预报的命令行工具。这是一款用 Go 语言开发的命令行查看天气的工具,可以帮助用户快速获取未来几天的天气信息,包括温度、风速、风向、降水量等。

bunster
Go第 106 期

bunster

一键“编译” shell 脚本的工具。该项目是一个 Shell-to-Go 转译器(Transpiler),原理是先把 shell 脚本转换为 Go 代码,然后利用 Go 工具链将其编译为二进制可执行文件,弥补了传统 shell 脚本在性能、可移植性和安全性方面的不足。

daytona
Go第 106 期

daytona

简化开发环境搭建的工具。该项目可以通过一条命令,快速创建一个配置好的开发环境,支持与主流 IDE 无缝集成,以及本地机器、远程服务器、云平台等多种基础设施。

来自 @IZRINO 的分享
暂无截图
Go第 106 期

gopher-lua

将 Lua 脚本嵌入 Go 程序。这是一个 Go 语言实现的 Lua 虚拟机和编译器,完全兼容 Lua5.1 语法。开发者可以通过简单的代码,将 Lua 脚本嵌入到 Go 应用中,适用于游戏开发、自动化工具和插件系统等需要脚本化支持的场景。来自 [@两双筷子sqldc](https://hellogithub.com/user/5dGtvaZ6H3L4QMY) 的分享```go L := lua.NewState()defer L.Close()if err := L.DoString(`print("hello")`); err != nil {panic(err)}```

SamWaf
Go第 106 期

SamWaf

开源的轻量级 Web 应用防火墙。这是一款完全开源的轻量级 Web 应用防火墙,支持私有化部署,提供 Bot 检测、URL 白名单、CC 防护、自定义防护规则等功能,适用于小型企业、工作室和个人网站。

来自 @猎隼丶止戈reNo7 的分享
暂无截图
Go第 105 期

gofakeit

快速生成假数据的 Go 库。该项目是用于生成各种假数据的 Go 语言库,支持随机生成名字、地址、电话和日期等格式的数据。它默认不支持生成中文假数据,但可以通过自定义方式扩展或调整生成逻辑实现。来自 [@DeShuiYu](https://hellogithub.com/user/ZWJkOqsvYbPgD8p) 的分享```go gofakeit.Name() // Markus Moen gofakeit.Email() // alaynawuckert@kozey.biz gofakeit.Phone() // (570)245-7485 gofakeit.BS() // front-end gofakeit.BeerName() // Duvel gofakeit.Color() // MediumOrchid gofakeit.Company() // Moen, Pagac and Wuckert gofakeit.CreditCardNumber() // 4287271570245748 gofakeit.HackerPhrase() // Connecting the array won't do anything, we need to generate the haptic COM driver!gofakeit.JobTitle() // Director gofakeit.CurrencyShort() // USD```

hertz
Go第 105 期

hertz

字节跳动开源的 Go 微服务 HTTP 框架。该项目是由 CloudWeGo 团队开发的高性能、易扩展的 Go 语言 Web 框架,可用于构建 RESTful API、微服务以及需要高吞吐量的 Web 应用。在字节跳动内部,Hertz 已被广泛应用,表现稳定可靠。

来自 @DeShuiYu 的分享
lima
Go第 105 期

lima

在 macOS 上轻松运行 Linux 虚拟机。这是一款在 macOS 上创建和管理 Linux 虚拟机的工具,它通过 QEMU 和 macOS 原生虚拟化技术,提供一个开箱即用、轻量级的 Linux 虚拟机环境,支持运行各种 Linux 应用和工具,以及 Docker、Podman、K8s 等容器。```# 安装brew install lima# 启动limactl start# 运行 Linux 命令lima sudo apt-get install -y neofetch lima neofetch# 运行容器lima nerdctl run --rm hello-world kubectl apply -f ...```

primitive
Go第 105 期

primitive

用几何图形生成图像。该项目是用 Go 语言开发的命令行工具,它通过图像处理算法,可将任意图像转换为仅由单一几何图形组成的图像。

zap
Go第 105 期

zap

快速、结构化的 Go 日志库。该项目是 Uber 开发的一款高性能日志库,专为那些需要快速、结构化日志记录的场景而设计。与其他 Go 语言的日志库相比,zap 的性能更为优越,尤其是在需要频繁记录日志的高并发环境中。来自 [@两双筷子sqldc](https://hellogithub.com/user/5dGtvaZ6H3L4QMY) 的分享```go logger, _ := zap.NewProduction()defer logger.Sync() // flushes buffer, if any sugar := logger.Sugar()sugar.Infow("failed to fetch URL",// Structured context as loosely typed key-value pairs."url", url,"attempt", 3,"backoff", time.Second,)sugar.Infof("Failed to fetch URL: %s", url)```

dpanel
Go第 104 期

dpanel

轻量级的 Docker 可视化管理面板。这是一款专为国内用户设计的 Docker 可视化管理面板,采用全中文界面。它安装简单且资源占用低,运行在容器内部对宿主机无侵入,支持容器管理、镜像管理、文件管理以及 Compose 管理等功能。

来自 @donknap 的分享
go-blueprint
Go第 104 期

go-blueprint

快速生成 Go Web 项目结构的工具。这是一个用于快速搭建 Go 语言 Web 项目的命令行工具,集成了 Chi、Gin、Fiber、Echo 等多种流行的 Go 框架。它支持选择 MySQL、Postgres、Redis 等主流数据库,还提供了 WebSocket 和 Docker 等高级设置。用户只需选择技术栈,即可生成一套完整的 Go Web 项目架子。

lute
Go第 104 期

lute

对中文更友好的 Markdown 引擎。这是一个用 Go 语言编写的 Markdown 引擎,实现了最新的 GFM/CM 规范。它是将 Markdown 文本转换成一个抽象语法树(AST),无需正则表达式解析速度更快,支持 GFM/CM 规范、内置代码高亮、术语修正、格式化(中英文间自动插入空格)和 Emoji 解析等功能。来自 [@两双筷子sqldc](https://hellogithub.com/user/5dGtvaZ6H3L4QMY) 的分享```go func main() {luteEngine := lute.New() // 默认已经启用 GFM 支持以及中文语境优化html:= luteEngine.MarkdownStr("demo", "**Lute** - A structured markdown engine.")fmt.Println(html)// Lute - A structured Markdown engine.}```

OliveTin
Go第 104 期

OliveTin

极简的 Shell 命令 Web 管理平台。该项目提供了一个简单直观的 Web 界面,让用户能够快速执行预先设定好的 Shell 命令。它开箱即用、配置简单、占用资源少,可以将复杂的命令简化成网页上的一个按钮。

wanderer
Go第 104 期

wanderer

开源的探险轨迹记录与分享平台。该项目是用于记录和管理用户的户外探险轨迹的 Web 平台,帮助你保存珍贵的行程数据。它采用 Go+Svelte 开发,提供上传、保存、查看(多种视图)和分享冒险轨迹的功能,并支持自托管。

beszel
Go第 103 期

beszel

轻量级高颜值的 Docker 监控平台。这是一个轻量级的服务器监控平台,包括 Docker 统计、历史数据和警报功能。它拥有友好的 Web 界面,配置简单、开箱即用,支持自动备份、多用户、OAuth 认证和 API 访问等功能。

envd
Go第 103 期

envd

高效的 AI 开发环境搭建工具。这是一个为 AI/ML 项目提供可复现开发环境的命令行工具。只需简单的配置语言和命令,即可快速创建基于容器的开发环境,支持远程构建、依赖缓存和导入远程仓库等功能。

gophish
Go第 103 期

gophish

开源的网络钓鱼平台。该项目提供了一个开箱即用的网络钓鱼平台,可用于模拟钓鱼攻击。它拥有友好的 Web 管理后台,支持邮件模板、批量发送邮件、网站克隆和数据可视化,适用于企业安全培训和渗透测试等场景。

opentofu
Go第 103 期

opentofu

实现基础设施即代码的开源方案。该项目是一个开源的基础设施即代码工具,专注于自动化地创建、管理和部署本地和云服务基础设施。作为 Terraform 的一个分支,它由社区驱动,支持使用高级配置语法描述基础设施、生成执行计划和构建资源依赖图,从而减少人为操作失误,实现复杂变更的自动化。

来自 @刘睿华 的分享
photoview
Go第 103 期

photoview

极简的照片管理平台。这是一款用于自建云相册的 Web 应用,它拥有直观的用户界面和丰富的功能,支持自动整理照片、生成缩略图、共享相册、EXIF 解析和多用户管理。还提供了 iOS 应用,方便用户在手机上访问。

来自 @刘睿华 的分享
暂无截图
Go第 102 期

clickhouse-sql-parser

纯 Go 实现的 ClickHouse SQL 解析器。这是一款用 Go 实现的 ClickHouse SQL 解析器,兼容大多数 DML/DDL/Query 语句。它的代码简洁易懂,可作为 Go 开发者学习 SQL 解析器的入门项目。```go package main import (clickhouse "github.com/AfterShip/clickhouse-sql-parser/parser")query := "SELECT * FROM clickhouse"parser := clickhouse.NewParser(query)// Parse query into AST statements, err := parser.ParseStmts()if err != nil {return nil, err}```

go2rtc
Go第 102 期

go2rtc

支持各种流媒体协议的处理工具。这是一个用 Go 语言编写的库,支持 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等视频流协议的处理。在 FFMPEG 的加持下,它几乎能将任何媒体格式作为输入源,转换为适用于主流流媒体服务和浏览器的格式。

来自 @猎隼丶止戈reNo7 的分享
maroto
Go第 102 期

maroto

用 Go 生成样式美观的 PDF 文件。这一个 Go 语言开发的用于创建 PDF 文件的库,其灵感来源于 Bootstrap 框架。它允许你像使用 Bootstrap 创建网站一样,轻松编写和生成不同样式的 PDF 文件。

来自 @DeShuiYu 的分享
nginx-ui
Go第 102 期

nginx-ui

全新的 Nginx 在线管理平台。该项目是用 Go+Vue.js 构建的 Nginx 在线管理平台,它开箱即用、功能丰富,支持流量统计、在线查看 Nginx 日志、编辑 Nginx 配置文件、自动检查和重载配置文件等功能。

来自 @kekylin 的分享
暂无截图
Go第 102 期

watchtower

自动更新 Docker 容器的工具。该项目能够自动监测并更新正在运行的 Docker 容器。它会定期检查并拉取 Docker Hub 或私有镜像仓库中的最新镜像版本,并自动重启容器。适用于开发、测试和个人使用场景,但不建议在生产环境中使用。```docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \containrrr/watchtower```

doggo
Go第 101 期

doggo

友好的命令行 DNS 查询工具。该项目是用 Go 语言编写的命令行 DNS 客户端工具,安装简单且开箱即用。它提供了友好的命令行界面,可快速显示 DNS 记录信息,支持高亮显示、响应时间和多种 DNS 记录类型等,适用于网络诊断等场景。```# Simple DNS lookup doggo example.com# Query MX records using a specific nameserver doggo MX github.com @9.9.9.9# Use DNS over HTTPS doggo example.com @https://cloudflare-dns.com/dns-query# JSON output for scripting doggo example.com --json | jq '.responses[0].answers[].address'# Reverse DNS lookup doggo --reverse 8.8.8.8 --short```

glasskube
Go第 101 期

glasskube

更容易上手的 K8s 包管理器。这是一款提供直观图形界面和灵活命令行工具的 Kubernetes 软件包管理工具。它操作简单更容易上手,支持自动处理依赖、GitOps 和自动更新等功能,简化了繁琐的手动配置过程。

暂无截图
Go第 101 期

lancet

全面的 Go 语言工具函数库。这是一个高效且全面的 Go 语言工具函数库,包含 600 多个函数,涵盖字符串处理、切片操作、网络编程、并发、加解密、文件处理、时间/日期、流处理、迭代器等功能。来自 [@两双筷子sqldc](https://hellogithub.com/user/5dGtvaZ6H3L4QMY) 的分享```go package main import ("fmt""github.com/duke-git/lancet/v2/strutil")func main() {s := "hello"rs := strutil.Reverse(s)fmt.Println(rs) //olleh}```

neko
Go第 101 期

neko

多功能的虚拟浏览器工具。该项目是运行在 Docker 容器中的自托管虚拟浏览器环境,为用户提供安全、隔离和功能齐全的虚拟浏览器。此外,它还支持在线共享浏览器和实时互动演示,具备多人访问、管理员用户、文本聊天和双向文件传输等功能。

来自 @猎隼丶止戈reNo7 的分享
sftpgo
Go第 101 期

sftpgo

集成云存储的 SFTP 服务器。该项目是用 Go 编写的功能齐全、灵活可配置的 SFTP 服务器,支持 SFTP、SCP、FTP/S、WebDAV、HTTP/S 等多种文件传输协议,并兼容本地文件系统、S3、谷歌云存储等多种存储后端。此外,它还提供了 Web 界面,便于轻松创建和管理用户、文件夹、群组等资源。

来自 @猎隼丶止戈reNo7 的分享
buildg
Go第 100 期

buildg

交互式的 Dockerfile 调试工具。该项是基于 BuildKit 的交互式调试 Dockerfile 的工具,支持设置断点、单步执行和非 root 模式,并且可以在 VSCode 等编辑器中使用。

devzat
Go第 100 期

devzat

程序员专属的 SSH 聊天室。这是一个通过 SSH 连接的聊天室,用户无需安装客户端,仅需一条 SSH 命令即可登录。它支持私人消息、多聊天室、图片和代码高亮等功能,还可以集成第三方服务、自托管 SSH 聊天室。

暂无截图
Go第 100 期

expr

Go 语言的表达式库。该项目是专为 Go 语言设计的表达式语言和求值引擎,支持丰富的算子和高级函数,具有安全、无副作用和静态类型检测等特点。表达式是一行由变量、运算符和函数组成的代码,它能够简化复杂的计算任务,多用于动态配置和业务规则引擎等场景。来自 [@两双筷子sqldc](https://hellogithub.com/user/5dGtvaZ6H3L4QMY) 的分享```go func main() {// 表达式code := `all(Tweets, {.Len <= 240})`program, err := expr.Compile(code, expr.Env(Env{}))if err != nil {panic(err)}env := Env{Tweets: []Tweet{{42}, {98}, {69}},}// 计算表达式output, err := expr.Run(program, env)if err != nil {panic(err)}fmt.Println(output)}```

gdu
Go第 100 期

gdu

快速查看磁盘使用情况的命令行工具。这是一个用 Go 语言编写的磁盘使用分析器,它能够快速扫描并展示文件和目录所占用的磁盘空间,支持 TUI(默认)、非交互和导出三种使用方式。

dblab
Go第 99 期

dblab

交互式的数据库命令行客户端。这是一个用 Go 编写的轻量级、交互式的 TUI 数据库客户端,它开箱即用、方便快捷,支持 PostgreSQL、MySQL、SQLite3 和 Oracle 数据库,不是桌面工具用不起,而是命令行的更有性价比。

go-size-analyzer
Go第 99 期

go-size-analyzer

分析 Go 编译后文件大小的工具。该项目通过逆向工程和反汇编,收集二进制文件中的地址,合并后计算出每个依赖在最终的二进制文件中所占大小,并通过可视化的方式展示出来。它可以用来分析 Go 程序编译后的文件体积,支持命令行和 Web 两种使用方式。

来自 @Zxilly 的分享
gws
Go第 99 期

gws

简单、快速的 Go WebSocket 库。该项目是用 Go 编写的 WebSocket 库,它提供了简洁明了的 API,具备高吞吐、低延迟、低内存占用、稳定可靠的特点,可用于高并发场景,支持上下文接管、自定义窗口大小和广播等功能。

来自 @道一 的分享
river
Go第 99 期

river

基于 Postgres 的后台任务管理平台。该项目是基于 Go+Postgres 数据库开发的任务队列,它内置 Web 管理后台,支持自动重试、定时任务和优先级等功能。

watermill
Go第 99 期

watermill

快速开发事件驱动应用的 Go 库。这是一个能够高效处理消息流的 Go 库,即发布/接收消息并做出反应。它上手容易,支持 Kafka、RabbitMQ、HTTP 和 MySQL binlog 等消息中间件,适用于处理实时数据流、分布式事务和微服务通信等场景。来自 [@DeShuiYu](https://hellogithub.com/user/ZWJkOqsvYbPgD8p) 的分享```go// ...func main() {saramaSubscriberConfig := kafka.DefaultSaramaSubscriberConfig()// equivalent of auto.offset.reset: earliest saramaSubscriberConfig.Consumer.Offsets.Initial = sarama.OffsetOldest subscriber, err := kafka.NewSubscriber(kafka.SubscriberConfig{Brokers: []string{"kafka:9092"},Unmarshaler: kafka.DefaultMarshaler{},OverwriteSaramaConfig: saramaSubscriberConfig,ConsumerGroup: "test_consumer_group",},watermill.NewStdLogger(false, false),)if err != nil {panic(err)}messages, err := subscriber.Subscribe(context.Background(), "example.topic")if err != nil {panic(err)}go process(messages)// ...```

fscan
Go第 98 期

fscan

开源的内网安全扫描工具。该项目是用 Go 语言开发的内网扫描工具,提供了一键自动化全方位的漏洞扫描。它使用方便、功能全面,支持端口扫描、常见的服务器爆破、Web 应用漏洞扫描、NetBIOS 嗅探等功能。

暂无截图
Go第 98 期

go-humanize

让数字和时间更容易理解的 Go 语言库。这是一个提供人性化数字和时间的 Go 语言库,它通过提供格式化函数,帮助开发者将大小和时间等数字转化为更易于人类理解的形式,比如文件大小、相对时间、逗号分隔的数字、序数词等。来自 [@DeShuiYu](https://hellogithub.com/user/ZWJkOqsvYbPgD8p) 的分享```go fmt.Printf("That file is %s.", humanize.Bytes(82854982)) // That file is 83 MB.fmt.Printf("This was touched %s.", humanize.Time(someTimeInstance)) // This was touched 7 hours ago.```

mactop
Go第 98 期

mactop

专为苹果芯片打造的 Mac 性能监控工具。该项目用不到 1k 行的 Go 代码,实现了一个类似 top 命令的工具。它可以实时显示 Apple M 系列芯片的性能指标,包括 CPU、GPU 使用率、内存、网络和硬盘等信息。

micro
Go第 98 期

micro

现代化的终端文本编辑器。这个项目是用 Go 写的基于终端的文本编辑器,可作为 Nano 的替代品。它下载即用、无需配置、跨平台,支持多光标编辑、语法高亮、鼠标、插件扩展等功能,特别适合在 SSH 远程连接服务器时进行文本编辑工作。

superfile
Go第 98 期

superfile

非常漂亮的终端文件管理器。这是一个现代终端文件管理器,为命令行文件操作提供了一个直观且漂亮的界面。它默认采用 Vim 风格的快捷键操作,还支持插件和主题自定义。

freeze
Go第 97 期

freeze

生成代码图片的终端工具。该项目可以将代码片段和终端输出,转换成 PNG、SVG 和 WebP 格式的图片,它采用 Go 语言开发,特点是安装简单和易于使用,支持一条命令生成图片,也可以通过交互模式生成定制的图片。```# macOS or Linux brew install charmbracelet/tap/freeze# Arch Linux (btw)pacman -S freeze# Nix nix-env -iA nixpkgs.charm-freeze```

jaeger
Go第 97 期

jaeger

开源的分布式链路追踪平台。该项目是受到 Dapper 和 OpenZipkin 的启发,由 Uber 创建并开源的分布式调用链追踪平台。它可用于监控和诊断分布式应用(微服务),功能包括支持多语言、全链路追踪、上下文传递、性能指标、可视化和告警等。

来自 @塔咖 的分享
opengist
Go第 97 期

opengist

GitHub Gist 的开源替代品。该项目将代码或文本片段存储于 Git 仓库中,用户可以通过 Git 命令或 Web 查看和修改内容,类似 GitHub 的 Gist 服务。它开源、可自托管,支持创建公开/私人片段、语法高亮、搜索代码、嵌入其它网站和修改历史等功能。

codapi
Go第 96 期

codapi

在线运行代码片段的 Go 服务。该项目提供了一个 API 服务,可以在线运行 Python、TypeScript、C、Go 等 30 种编程语言的代码片段,可用于在文档和教程中展示交互式的代码示例。

focalboard
Go第 96 期

focalboard

开源的项目管理和团队协作工具。这是一款开源、多语言、自托管的项目管理工具,兼容了 Trello 和 Notion 的特点。它支持看板、表格和日历等视图管理任务,并提供评论同步、文件共享、用户权限等功能。该工具还提供了适用于 Windows、macOS、Linux 系统的客户端。

暂无截图
Go第 96 期

go-pretty

美化控制台输出的 Go 库。这是一个用于美化表格、列表、进度条、文本等控制台输出的库,你可以用它输出精美的表格、多层级的列表以及多任务进度条等内容。

gopeed
Go第 96 期

gopeed

一款由 Go+Flutter 开发的高速下载器。这款下载工具后端用的是 Go 语言,支持 HTTP、BitTorrent、Magnet 等多种协议,并使用协程实现高速并发下载。前端部分采用 Flutter 开发,提供了适用于 Windows、macOS、Linux、Android、iOS 和 Web 等全平台的客户端。

来自 @DeShuiYu 的分享
teleport
Go第 96 期

teleport

一款 Go 写的企业级开源堡垒机。这是一个专为基础设施提供连接、身份验证、访问控制和安全审计的平台,它支持对内网的 Linux 服务器、Kubernetes 集群、Web 应用、PostgreSQL 和 MySQL 数据库的安全访问。该平台采用自动下发证书的方式进行认证,无需在目标机器上管理密码和 SSH Key。此外,用户可以方便地使用 ssh、mysql、kubectl 等远程连接工具,轻松接入受管理的资源。

besticon
Go第 95 期

besticon

获取网站 favicon 图标的服务。该服务使用 Go 语言编写,用于获取目标网站 favicon.ico 地址。它特别适用于导航类网站,因为它可以很方便地从源站点上获取图标,即使在找不到图标的情况下,也会返回一个站点名称首字母的灰色图标。

来自 @Liang INX 的分享
暂无截图
Go第 95 期

decimal

解决小数精度问题的 Go 库。该项目旨在解决浮点数类型在计算过程中,可能出现的精度丢失问题。它提供了一个名为 Decimal 的数据类型,支持常见的加法、减法、乘法和除法运算,保证结果不会丢失精度,同时还提供了四舍五入、取整和序列化等功能。```go package main import ("fmt""github.com/shopspring/decimal")func main() {price, err := decimal.NewFromString("136.02")if err != nil {panic(err)}quantity := decimal.NewFromInt(3)fee, _ := decimal.NewFromString(".035")taxRate, _ := decimal.NewFromString(".08875")subtotal := price.Mul(quantity)preTax := subtotal.Mul(fee.Add(decimal.NewFromFloat(1)))total := preTax.Mul(taxRate.Add(decimal.NewFromFloat(1)))fmt.Println("Subtotal:", subtotal) // Subtotal: 408.06 fmt.Println("Pre-tax:", preTax) // Pre-tax: 422.3421 fmt.Println("Taxes:", total.Sub(preTax)) // Taxes: 37.482861375 fmt.Println("Total:", total) // Total: 459.824961375 fmt.Println("Tax rate:", total.Sub(preTax).Div(preTax)) // Tax rate: 0.08875}```

gocv
Go第 95 期

gocv

基于 OpenCV 的 Go 语言计算机视觉库。OpenCV 是一个开源、跨平台的计算机视觉库,多用于做图像处理、视频采集和分析。该项目是 OpenCV 的 Go 语言封装库,让开发者可以使用 Go 语言调用 OpenCV 库,具有支持多平台、OpenCV 4+ 和 GPU 硬件加速等特性。```go package main import ("gocv.io/x/gocv")func main() {// 打开摄像头webcam, _ := gocv.OpenVideoCapture(0)// 新建 GUI 窗口window := gocv.NewWindow("Hello")img := gocv.NewMat()// 显示视频for {webcam.Read(&img)window.IMShow(img)window.WaitKey(1)}}```

goreleaser
Go第 95 期

goreleaser

快速、优雅地发布 Go 应用。这是一个 Go 项目打包、签名和发布的工具,支持自动发布到 GitHub、GitLab 和 Gitea 平台、创建 Docker 镜像、Linux 软件包和 Homebrew 等功能,可在本地运行也支持 CI/CD 系统,但免费版不支持构建 macOS 和 Windows 安装包。

termdash
Go第 95 期

termdash

一个跨平台、可定制的终端仪表盘。该项目提供了丰富的终端小部件,如按钮、进度条、图表等,可用于创建各种交互式终端工具。它支持 UTF-8 编码、鼠标事件和自定义布局等功能,能够快速构建出拥有好看界面的终端应用。

goploy
Go第 94 期

goploy

容易上手的代码发布平台。这是一个采用 Go + Vue.js 构建的 Web 部署平台,可一键部署、发布和回滚项目。支持基于角色的访问控制、监控、秒级定时任务、Xterm、LDAP 等功能,提供了完整的安装引导,即使是初学者也能轻松上手。

来自 @zhenorzz 的分享
listmonk
Go第 94 期

listmonk

开源的邮件列表和营销平台。这是一个开箱即用的邮件营销平台,可以帮助你管理邮件订阅者、创建和发送邮件、分析营销数据。可查看邮件阅读率、链接点击率等,支持自托管适用于个人和企业。

暂无截图
Go第 94 期

restic

一款强大的开源备份工具。该项目提供了简单、快速、安全的开源备份解决方案。它无需繁琐的配置,即可轻松完成备份和恢复操作。采用增量备份策略,备份数据经过加密和压缩处理,保障数据安全且节省空间,支持灵活的存储选择,包括本地磁盘和云存储。可设置自动备份时间,确保数据得到定期的备份保护。```$ restic --repo /tmp/backup backup ~/work enter password for repository:scan [/home/user/work]scanned 764 directories, 1816 files in 0:00[0:29] 100.00% 54.732 MiB/s 1.582 GiB / 1.582 GiB 2580 / 2580 items 0 errors ETA 0:00 duration: 0:29, 54.47MiB/s snapshot 40dc1520 saved```

vfox
Go第 94 期

vfox

无忧应对多编程语言不同版本的工具。这是一款跨平台的通用版本管理工具,通过命令行快速安装、切换编程语言的不同版本,并支持自定义源地址。相比于针对每种语言的独立版本管理工具(如 nvm、fvm、gvm 等),这个项目让开发者摆脱繁琐的学习和记忆过程,只需一个工具、一条命令,轻松搞定多编程语言版本管理。来自 [@Han Li](https://hellogithub.com/user/TV6tBSMzmZUWQqk) 的分享```$ vfox c node -> v20.10.0 java -> v11.0.12```

mailpit
Go第 93 期

mailpit

带 API 的电子邮件测试工具。这是一个小型、快速、多平台的电子邮件测试工具,它可以充当一个 SMTP 服务器,自带 Web 界面,支持模拟电子邮件接收、切换不同设备查看邮件等功能,还提供了可用于自动集成测试的接口。

muffet
Go第 93 期

muffet

Go 写的网站链接检查工具。该项目通过多线程和递归的方式,检查目标网站中所有页面的链接。它使用简单、速度快,支持 a、img、link、script 等多种标签。

one-api
Go第 93 期

one-api

OpenAI 接口管理和分发系统。该项目集成了各种大模型,并统一转化成了类似 OpenAI 接口的服务。它开箱即用、单文件,支持负载均衡、令牌管理、兑换码、用户分组、查看额度、邀请奖励等功能,可用于自建 ChatGPT 服务。

zen-desktop
Go第 93 期

zen-desktop

一款适用于 PC 的广告拦截器。该项目是采用 Go 语言 Wails 框架写的能够屏蔽各种广告的桌面工具。它的工作原理是设置一个代理,拦截所有应用的 HTTP 请求,从而阻止广告和跟踪行为的请求,支持 Windows、macOS 和 Linux 操作系统。

algernon
Go第 92 期

algernon

小型、独立的 Go Web 服务器。该项目是用 Go 编写的“快餐” Web 服务器,采用 BoltDB、Redis、MySQL 或 PostgreSQL 作为数据库,内置 Lua 解释器。所有功能全在一个独立可执行文件中,支持 Markdown 渲染、Lua 脚本、请求限制、用户和权限等。

cheat
Go第 92 期

cheat

一款交互式的“小抄”命令行工具。该项目可以创建、编辑、查看 *nix 系统命令的备忘录,比如常用命令的示例和解释。```cheat tar# To extract an uncompressed archive:tar -xvf '/path/to/foo.tar'# To extract a .gz archive:tar -xzvf '/path/to/foo.tgz'# To create a .gz archive:tar -czvf '/path/to/foo.tgz' '/path/to/foo/'# To extract a .bz2 archive:tar -xjvf '/path/to/foo.tgz'# To create a .bz2 archive:tar -cjvf '/path/to/foo.tgz' '/path/to/foo/'```

暂无截图
Go第 92 期

devbox

为应用程序创建隔离环境的命令行工具。该项目可以创建一个可移植、隔离、用于开发的独立 shell,无需 Docker 和虚拟机。比如你的项目使用 Python 和 Go 语言,用这个工具仅需一条命令就能初始化一个独立的开发环境。```# 安装curl -fsSL https://get.jetpack.io/devbox | bash# 初始化devbox init# 安装 Python 和 Go devbox add python2 go_1_18# 激活devbox shell```

faas
Go第 92 期

faas

一款高星的功能即服务框架。该项目用容器的方式运行 Serverless 函数,让功能即服务(FaaS)变得简单。它可以轻松地将函数和微服务部署到 Kubernetes,支持自动扩缩容、自带 Web 管理平台、Dockerfile 和多种编程语言。

暂无截图
Go第 92 期

migrate

好用的数据库迁移/变更工具。该项目是用 Go 写的数据库迁移(migrate)工具,帮你自动创建 SQL 迁移文件并管理版本,支持 MySQL、MariaDB、PostgreSQL、SQLite、Neo4j、ClickHouse 等不同类型的数据库。```$ migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2```

暂无截图
Go第 91 期

groupcache

Go 写的轻量级分布式缓存库。该项目是由 Golang 官方开源的库,它实现了一个无需部署的分布式缓存。支持当查询未命中缓存时仅一个进程填充缓存(防穿透和雪崩)、热点数据自动扩展等功能,但不支持更新和删除数据(LRU 控制内存),所以仅适用于某些特定场景。

kopia
Go第 91 期

kopia

好用的跨平台备份工具。适用于 Windows、Linux 和 macOS 的备份/还原工具,它能够将指定的文件和目录加密压缩后生成快照,然后上传到远程服务器或云存储,实现远程备份数据的功能,开箱即用支持命令行和 GUI 两种使用方式。

photoprism
Go第 91 期

photoprism

带 AI 功能的开源私人云相册。该项目是用 Go 语言写的在线私人相册,它稳定、部署方便,支持浏览/备份图片、按地点/时间线浏览照片、移动端自动备份照片,以及人脸识别、图片自动分类等功能,可用来搭建私人相册管理你的照片。

来自 @鸿宇Hov 的分享
暂无截图
Go第 91 期

zlsgo

简单易用的 Golang 工具库。该项目把 HTTP 服务、日志、热重启、验证器、编码等十几种开发中经常写的功能,封装成了一个库,拿来即用提高开发效率。来自 [@神经蛙9dyXx](https://hellogithub.com/user/cGatNeI9U83s2wV) 的分享```go func main() {// 需要验证的数据data := "我是需要验证的数据,我的作用是做用户名"// 开始验证数据,不能为空,必须包含字母name, err := zvalid.Text(data, "用户名").Required().HasNumber().HasLetter().String()if err != nil {zlog.Debug("验证失败", err)}data = "我是需要验证的数据,我的作用是做用户名,我有字母 A"name, err = zvalid.Text(data, "用户名").Required().HasLetter().String()zlog.Debug("用户名是:", name)// 初始化一个对象,并绑定需要验证的字符串// zvalid.New().Verifi("username","用户名").String()}```

asynq
Go第 90 期

asynq

纯 Go 写的简单、可靠的分布式任务队列。这是一个基于 Redis 的轻量级异步任务队列,它会为每个任务启动一个 goroutine,支持任务失败重试、优先级队列、定时任务、唯一任务等功能。

暂无截图
Go第 90 期

carbon

一个对开发者友好的 Go 时间处理库。这是一个功能丰富、容易上手的 Go 时间库,支持时间转换、时间差、时间旅行、星座、季节、农历、多语言等功能。```go lang := carbon.NewLanguage()lang.SetLocale("zh-CN")c := carbon.SetLanguage(lang)if c.Error != nil {// 错误处理log.Fatal(err)}c.Now().AddHours(1).DiffForHumans() // 1 小时后c.Now().AddHours(1).ToMonthString() // 八月c.Now().AddHours(1).ToShortMonthString() // 8月c.Now().AddHours(1).ToWeekString() // 星期二c.Now().AddHours(1).ToShortWeekString() // 周二c.Now().AddHours(1).Constellation() // 狮子座c.Now().AddHours(1).Season() // 夏季```

nezha
Go第 90 期

nezha

国产的轻量级服务器监控工具。这是一款名为“哪吒”的服务器监控面板,它安装简单、开箱即用,支持监控多个服务器的系统状态、SSL 证书状态、报警通知、流量监控、设置定时任务等功能,适用于 Linux、Windows、macOS、OpenWRT 等主流系统。

来自 @两双筷子sqldc 的分享
sonyflake
Go第 90 期

sonyflake

Go 语言的分布式 ID 生成库。该项目是索尼开源的分布式唯一 ID 生成器,灵感来自知名的 Twitter 雪花算法(Snowflake)。它比 Snowflake 慢,但拥有更长的寿命,可以在更多的机器上工作,适用于更大的分布式集群。

暂无截图
Go第 89 期

etree

更好用的轻量级 Go 语言 XML 库。虽然 Go 语言内置了处理 XML 的库,但在使用时必须按照嵌套层级定义结构体非常繁琐。这个项目的设计灵感来源于 Python 语言的 ElementTree 库,可以在无需定义结构体的情况下灵活的读取、生成 XML 文档。来自 [@两双筷子sqldc](https://hellogithub.com/user/5dGtvaZ6H3L4QMY) 的分享```go doc := etree.NewDocument()doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`)doc.CreateProcInst("xml-stylesheet", `type="text/xsl" href="style.xsl"`)people := doc.CreateElement("People")people.CreateComment("These are all known people")jon := people.CreateElement("Person")jon.CreateAttr("name", "Jon")sally := people.CreateElement("Person")sally.CreateAttr("name", "Sally")doc.Indent(2)doc.WriteTo(os.Stdout)```

暂无截图
Go第 89 期

golang-design-pattern

Go 语言设计模式的实例代码。该项目是作者阅读《研磨设计模式》一书的读书笔记,并用 Go 语言实现了书中涉及的 23 个设计模式。

ls-lint
Go第 89 期

ls-lint

检查目录和文件命名风格的工具。这是一款 Go 编写的目录和文件名 Lint 工具,它依赖少、速度快,可通过 yml 配置文件自定义检测规则和忽略目录,适用于 Git Hooks、GitHub Action、Docker Image 等多种场景。```ls:.js: snake_case.ts: snake_case | camelCase.d.ts: PascalCase.html: regex:[a-z0-9]+ignore:- node_modules```

webp_server_go
Go第 89 期

webp_server_go

一款开箱即用的 WebP 服务器。WebP 是谷歌开发的一种为了提升图像加载速度的图片格式,该项目是用 Go 写的 WebP 服务,无需二次开发就能实现将 JPG、PNG、BMP、SVG 等格式的图片,转化成 WebP 格式的服务,能够有效地减小图片体积、节省带宽、提升图片加载速度。

暂无截图
Go第 88 期

compress

强大的 Go 语言压缩库。该项目包含了多种压缩算法,支持实时压缩算法 zstandard、Snappy 优化版压缩算法 S2 等,还可用来替代 gzip、zip、zlib 等标准库。

暂无截图
Go第 88 期

feishu2md

飞书文档转化成 Markdown 的工具。这是一个 Go 写的小工具,可以下载飞书文档为 Markdown 文件。它无需安装下载即用,支持命令行、Docker 和在线三种使用方式。

pop
Go第 88 期

pop

在终端发邮件的工具。这是一款用 Go 写的命令行发邮件的工具,它支持 TUI 和命令行两种使用方式,还以可以通过管道和其它工具结合,实现例如 AI 编写邮件等功能。```pop

URLFinder
Go第 88 期

URLFinder

一款快速提取网页信息的工具。该项目可以快速爬取网页上的 URL 地址、JS 文件里的 API 接口等信息,支持批量抓取、深入抓取、安全抓取等模式。

暂无截图
Go第 87 期

gotenberg

基于 Docker 的生成 PDF 文件服务。它支持通过 Docker 启动一个服务,该服务可以通过 API 与 Chromium 和 LibreOffice 进行交互。让你可以通过调用接口,轻松地将网页、HTML、Markdown、Word、Excel 等格式的文档转换为 PDF 文件。```curl \--request POST 'https://demo.gotenberg.dev/forms/chromium/convert/url' \--form 'url="https://sparksuite.github.io/simple-html-invoice-template/"' \-o my.pdf```

暂无截图
Go第 87 期

httprouter

Go 语言的高性能 HTTP 请求路由器。该项目结构简洁,核心代码仅三个文件。它通过 Radix tree 数据结构,实现了高效的路由处理。值得一提的是,著名的 Gin 框架也使用了它。```go package main import ("fmt""net/http""log""github.com/julienschmidt/httprouter")func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {fmt.Fprint(w, "Welcome!\n")}func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))}func main() {router := httprouter.New()router.GET("/", Index)router.GET("/hello/:name", Hello)log.Fatal(http.ListenAndServe(":8080", router))}```

slides
Go第 87 期

slides

一款命令行演示工具。这款命令行工具可以让你在终端中轻松创建和演示幻灯片,它开箱即用、支持 Markdown 语法。

sourcegraph-public-snapshot
Go第 87 期

sourcegraph-public-snapshot

一款强大的代码搜索平台。该项目能够对代码库进行语义索引和分析,支持正则表达式搜索、输入搜索条件时的自动补全、类似 IDE 的跳转到定义和引用。它可以用于构建公司内部的代码搜索平台,帮助程序员完成跨项目的代码查找、代码审查、代码追踪等。

暂无截图
Go第 87 期

tinygo

专为“小场面”而生的 Go 编译器。这是一个基于 LLVM 的小型 Go 编译器,它能够将 Go 代码编译成可运行在开发板、物联网、WebAssembly 等场景的程序。

1Panel
Go第 86 期

1Panel

现代化、开源的 Linux 服务器运维管理面板。这是一款 Go 写的 Linux 服务器的在线管理系统,它安装简单、安全可靠,同时集成了 WordPress 等应用、域名绑定、SSL 证书配置、备份等功能,支持快速建站。

来自 @llei.wang 的分享
gitpod
Go第 86 期

gitpod

随时准备好编码的云开发环境。这是一个提供在线开发环境的 K8s 应用程序,通过配置文件可以快速地为 GitHub、GitLab 上的项目,创建一个集成了在线 IDE、库、依赖项等工具的在线开发环境。

LocalAI
Go第 86 期

LocalAI

OpenAI 的本地替代品。一个实现了在个人电脑上运行 LLM 模型,并集成了服务接口和在线聊天界面的项目。虽然效果无法和 GPT-4 媲美,但它开箱即用且免费,支持 Vicuna、Alpaca、GPT4ALL 等模型。```# Clone LocalAI git clone https://github.com/go-skynet/LocalAI cd LocalAI# (optional) Checkout a specific LocalAI tag# git checkout -b build# Download gpt4all-j to models/wget https://gpt4all.io/models/ggml-gpt4all-j.bin -O models/ggml-gpt4all-j# Use a template from the examples cp -rf prompt-templates/ggml-gpt4all-j.tmpl models/# (optional) Edit the .env file to set things like context size and threads# vim .env# start with docker-compose docker-compose up -d --pull always# or you can build the images with:# docker-compose up -d --build# Now API is accessible at localhost:8080 curl http://localhost:8080/v1/models# {"object":"list","data":[{"id":"ggml-gpt4all-j","object":"model"}]}curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "ggml-gpt4all-j","messages": [{"role": "user", "content": "How are you?"}],"temperature": 0.9}'# {"model":"ggml-gpt4all-j","choices":[{"message":{"role":"assistant","content":"I'm doing well, thanks. How about you?"}}]}```

minikube
Go第 86 期

minikube

一条命令在本机启动 Kubernetes 集群的工具。一个可以在本地轻松运行 K8s 集群的工具,它支持标准的 Kubernetes 功能,可作为本地开发 Kubernetes 应用程序的工具,适用于 macOS、Linux 和 Windows 操作系统。

NTrace-core
Go第 86 期

NTrace-core

一款可视化路由跟踪工具。该项目默认使用 ICMP 协议发送 TraceRoute 请求,特点是显示经过路由器的 IP、地理位置和耗时,以及在地图上以可视化的方式显示路径。

dozzle
Go第 85 期

dozzle

轻巧的 Docker 实时日志查看工具。这是一个实时监控 Docker 日志的 Web 应用,打包成了一个非常小的 Docker 应用。它开箱即用、占用内存少、不存储任何日志文件,支持更加友好的日志展示、容器名称模糊搜索、正则表达式搜索日志等功能。

go-captcha
Go第 85 期

go-captcha

Go 写的行为验证码库。这是一个 Go 语言、简单易用、交互友好的行为验证码库,支持随机验证文本和点选式验证码。采用展示验证码、采集用户行为、验证行为数据的流程,整个过程用户只需点击操作就能完成验证。

kwok
Go第 85 期

kwok

模拟 K8s 集群的工具。它可以在几秒钟内搭建一个由数千个节点组成的 Kubernetes 集群,整个过程仅占用非常少的资源,轻松实现在本机上学习、测试和开发 K8s 集群应用。

来自 @松果 的分享
scrutiny
Go第 85 期

scrutiny

一款监控硬盘运行状况的仪表板。这是 smartd 的 WebUI 平台,smartd 是一个守护进程,它能够监视拥有 S.M.A.R.T.(自我监测、分析及报告技术) 规范的硬盘。该项目基于 smartd 实现了硬盘各项指标的可视化界面,并增加了告警、自定义阈值等功能。

sqlflow
Go第 85 期

sqlflow

连接 SQL 和 AI 框架的工具。该项目能够将类似 SQL 的代码,编译成可运行在 K8s 集群的工作流,实现只写 SQL 就能得到 AI 引擎训练/预测的结果。支持 MySQL、MariaDB、TiDB、Hive 等数据库,以及 TensorFlow、Keras 等框架。来自 [@松果](https://hellogithub.com/user/EFn7Z3e6r0cIpLS) 的分享```sql SELECT * FROM iris.train TO TRAIN DNNClassifier WITH model.hidden_units = [10, 10], model.n_classes = 3, train.epoch= 10 COLUMN sepal_length, sepal_width, petal_length, petal_width LABEL class INTO sqlflow_models.my_dnn_model;```

gorss
Go第 84 期

gorss

一款用 Go 编写的命令行 RSS 阅读器。它简单易用隐蔽性强,支持预览内容、浏览器打开链接、自定义快捷键、主题、单词高亮等功能。

暂无截图
Go第 84 期

gosec

Go 语言源码安全检查工具。该项目通过扫描 Go 代码的 AST 检查源代码是否存在安全问题,能够发现源码中硬编码密码、XSS 和 SQL 注入等问题。

暂无截图
Go第 84 期

skopeo

能够管理远程仓库的容器镜像的工具。它能够查看远程仓库的容器镜像信息,以及执行复制、同步、删除等操作,支持 docker.io、quay.io、私有仓库等。```$ skopeo inspect docker://registry.fedoraproject.org/fedora:latest{..."Architecture": "amd64","Os": "linux","Layers": ["sha256:2a0fc6bf62e155737f0ace6142ee686f3c471c1aab4241dc3128904db46288f0"],"LayersData": [{"MIMEType": "application/vnd.docker.image.rootfs.diff.tar.gzip","Digest": "sha256:2a0fc6bf62e155737f0ace6142ee686f3c471c1aab4241dc3128904db46288f0","Size": 71355009,"Annotations": null}],"Env": ["DISTTAG=f37container","FGC=f37","container=oci"]}```

yaegi
Go第 84 期

yaegi

一款优雅的 Go 语言解释器。它是一个纯 Go、仅依赖标准库实现的 Go 解释器,拥有简单易用的 API,完全支持 Go 编程语言规范,以及 Go 1.18 和 1.19 版本。```go package main import ("github.com/traefik/yaegi/interp""github.com/traefik/yaegi/stdlib")func main() {i := interp.New(interp.Options{})i.Use(stdlib.Symbols)_, err := i.Eval(`import "fmt"`)if err != nil {panic(err)}_, err = i.Eval(`fmt.Println("Hello Yaegi")`)if err != nil {panic(err)}}```

dragonfly
Go第 83 期

dragonfly

一款基于 P2P 的智能镜像和文件分发工具。它提供了高效、稳定、安全的基于 P2P 技术的文件分发和镜像加速系统,能够提高大规模文件传输的效率和速率,最大限度地利用网络带宽,适用于应用分发、缓存分发、日志分发和镜像分发等领域。

来自 @Gaius 的分享
ghz
Go第 83 期

ghz

简单的 gRPC 压测工具。一款用 Go 开发的专门用来压测 gRPC 服务的命令行工具,它使用简单、高效、支持自定义参数。

来自 @禹过留声 的分享
req
Go第 83 期

req

带黑魔法的 Go HTTP 客户端。该库默认就很智能,比如自动解码成 UTF-8 以避免乱码、根据 Content-Type 自动解析响应、自动检测服务器端并选择最优的 HTTP 协议、自动重试等,除此之外还提供了强大且便捷的调试功能。```go package main import ("github.com/imroc/req/v3")func main() {req.DevMode() // Treat the package name as a Client, enable development mode req.MustGet("https://httpbin.org/uuid") // Treat the package name as a Request, send GET request.req.EnableForceHTTP1() // Force using HTTP/1.1 req.MustGet("https://httpbin.org/uuid")}```

sqlc
Go第 83 期

sqlc

将 SQL 转成类型安全的 Go 代码的工具。它可以将输入的 SQL 语句,自动转化成类型安全、可读的操作数据库的 Go 代码,支持 MySQL、PostgreSQL 和 SQLite 数据库。

暂无截图
Go第 83 期

tinykv

构建分布式 Key-Value 数据库的教程。介绍了如何用 Go 语言实现一个高可用、可水平扩展、支持分布式事务的键-值存储服务。

d2
Go第 82 期

d2

一种可将文本转换为图表的脚本语言。该项目是一种图表脚本语言,可将文本转换为图表。你只需描述想要的图表,它就会生成对应的图像。```shell echo 'x -> y' > input.d2 d2 -w input.d2 out.svg```

暂无截图
Go第 82 期

grpcurl

类似 cURL 但用于 gRPC 的工具。一款实现与 gRPC 服务器交互的命令行工具,可以轻松请求 gRPC 服务,就像 gRPC 版的 cURL 一样好用。```# 安装brew install grpcurl# 使用grpcurl grpc.server.com:443 my.custom.server.Service/Method```

shifu
Go第 82 期

shifu

一款云原生物联网开发框架。这是一个生产级别的物联网平台,它可以将物联网(IoT)设备,封装成 K8s 的最小的可部署的计算单元(pod),直接将设备的能力和数据通过 API 开放出来,让物联网应用的开发变得更加简单。```shell cd shifu# 在集群中安装 Shifu kubectl apply -f pkg/k8s/crd/install/shifu_install.yml```

writefreely
Go第 82 期

writefreely

一起写作并建立一个社区。这是一个 Go 写的博客平台,除了能够创建基于 Markdown、极简的独立博客之外,还可以建立类似博客园的博客社区。

yao
Go第 82 期

yao

一款 Go 写的应用引擎。通过该项目最快几分钟,就能从零构建出一套系统,适合用于开发接口服务、管理后台、数据可视化平台、自建低代码平台等系统。

answer
Go第 81 期

answer

一款开源的问答社区。采用 Go 语言编写的问答社区,支持积分、提问、回答、标签等功能,部署简单。

来自 @孤胆枪手 的分享
暂无截图
Go第 81 期

btree

Go 语言实现的 B-树 数据结构。由谷歌开源的 B-树 Go 语言实现,代码整洁、注释丰富,推荐阅读源码。B-树 这种数据结构,能够让查找数据、顺序访问、插入及删除操作,都在对数时间内完成,多用于数据库和文件系统。

nap
Go第 81 期

nap

一款命令行的代码片段管理工具。该项目可以通过命令行界面,快速创建和管理代码片段。支持快捷键、搜索、代码高亮、自定义颜色等功能,操作简单方便。

oh-my-posh
Go第 81 期

oh-my-posh

适用于多种 shell 的终端提示个性化工具。该项目内置多款主题开箱即用,支持 Windows、Linux、macOS 三个系统上的 PowerShell、Bash、Zsh 等多种 shell,自动补全你输入的每个命令。

暂无截图
Go第 81 期

raft

Raft 算法的 Go 语言实现。Raft 是一种分布式一致性算法(共识算法),常用于分布式集群内的任意节点,在某种状态转换上保持一致。

cadvisor
Go第 80 期

cadvisor

一款由 Google 开源的容器监控工具。它可以实时统计容器运行时占用的资源,包括 CPU 利用率、内存使用量、网络传输等信息。提供了 Web 可视化页面,能方便用户分析和监控容器运行状态,支持包括 Docker 在内的几乎所有类型的容器。```sudo docker run \--volume=/:/rootfs:ro \--volume=/var/run:/var/run:ro \--volume=/sys:/sys:ro \--volume=/var/lib/docker/:/var/lib/docker:ro \--volume=/dev/disk/:/dev/disk:ro \--publish=8080:8080 \--detach=true \--name=cadvisor \--privileged \--device=/dev/kmsg \gcr.io/cadvisor/cadvisor:$VERSION```

暂无截图
Go第 80 期

dsq

可直接用 SQL 查询数据文件的命令行工具。通过该项目无需将数据导入数据库,就能用 SQL 查询文件内的数据,可执行模糊查询、计数、排序等命令,支持 JSON、CSV、Excel、Parquet、YAML 等类型的文件。还可以搭配其它命令行工具(jq),实现更丰富的功能。来自 [@总钻风](https://hellogithub.com/user/PDzxTYajWgimyF9) 的分享```shell$ dsq testdata/userdata.parquet 'select count(*) from {}' | jq[{"count(*)": 1000}]```

json-to-go
Go第 80 期

json-to-go

立刻将 JSON 转化为 Go 类型定义的工具。这是一个用 JavaScript 写的在线小工具,可以直接将输入的 JSON 转成对应的 Go 类型定义。

pocketbase
Go第 80 期

pocketbase

仅一个文件的开源后端。将 SQLite 数据库、接口服务、登录认证、管理后台等服务器端的功能,做成一个开箱即用的可执行文件。让原本不懂后端开发的用户,也可以通过用户界面快速构建起接口服务。

supervisord
Go第 80 期

supervisord

用 Go 重新实现的 supervisord 。开源项目 supervisord 作为 Python 项目中常用的进程管理工具,深受广大开发爱好者的喜欢。但如果在非 Python 环境的情况下,用起来就不是那么顺手啦,所以作者用 Go 重写了 supervisord,编译后可以方便地运行在任何环境下。```$ cat supervisor.conf[program:test]command = /your/program args$ supervisord -c supervisor.conf```

暂无截图
Go第 79 期

env

用于解析环境变量的 Go 语言库。一般情况下项目启动时需要的配置参数,都是通过环境变量传递的。该项目就是 Go 语言用来解析环境变量的库,它简单、体积小、零依赖。```go package main import ("fmt""time""github.com/caarlos0/env/v6")type config struct {Home string `env:"HOME"`Port int `env:"PORT" envDefault:"3000"`Password string `env:"PASSWORD,unset"`IsProduction bool `env:"PRODUCTION"`Hosts []string `env:"HOSTS" envSeparator:":"`Duration time.Duration `env:"DURATION"`TempFolder string `env:"TEMP_FOLDER" envDefault:"${HOME}/tmp" envExpand:"true"`}func main() {cfg := config{}if err := env.Parse(&cfg); err != nil {fmt.Printf("%+v\n", err)}fmt.Printf("%+v\n", cfg)}```

k8s-tutorials
Go第 79 期

k8s-tutorials

免费的 Kubernetes 教程。K8s 作为云原生时代的必备技能之一,多少得会一些。该教程侧重于实战引导,用 Go 写的项目作为演示对象,从最基础的容器定义开始,逐一讲述 pod、deployment、service、ingress 等资源,直到用 helm 打包部署一套完整服务。

kubeshark
Go第 79 期

kubeshark

强大的 Kubernetes API 流量查看工具。如果把 k8s 比作操作系统,那它就是 k8s 上的 tcpdump,使用起来就像 Chrome 开发者工具一样简单直接,能够让 k8s 上微服务之间的网络通信一览无遗。

暂无截图
Go第 79 期

rod

Go 语言的网页自动化和爬虫库。该项目是 Go 语言封装的 DevTools 协议库,实现用 Go 语言操作浏览器,自动化之前需要手动完成的操作,比如:爬取客户端渲染的页面、端到端测试、自动填写表单、模拟点击等操作。项目包含丰富的示例代码,改改就能上手使用。```go package main import ("github.com/go-rod/rod")func main() {page := rod.New().MustConnect().MustPage("https://hellogithub.com")page.MustWaitLoad().MustScreenshot("a.png")}```

trivy
Go第 79 期

trivy

一款全面的容器安全扫描工具。目前最流行的开源容器镜像漏洞扫描工具,拥有速度快、精准度高、依赖检测、机密检查、对 CI 友好等特点。它不仅安装简单而且容易上手,仅需一条命令,即可发现镜像存在的安全漏洞。```shell# 安装docker pull aquasec/trivy:0.33.0# 运行trivy image [YOUR_IMAGE_NAME]```

cobra
Go第 78 期

cobra

当下最流行的 Go CLI 框架。功能强大且极易上手的 Go 语言 CLI 库,可用于快速构建命令行程序,被 K8s、Hugo、GitHub CLI 等众多知名 Go 项目所采用,支持自动提示、自动构建项目、嵌套子命令等功能。```go var rootCmd = &cobra.Command{Use: "hugo",Short: "Hugo is a very fast static site generator",Long: "A Fast and Flexible Static Site Generator built with love by spf13",Run: func(cmd *cobra.Command, args []string) {// Do Stuff Here},}func Execute() {if err := rootCmd.Execute(); err != nil {fmt.Println(err)os.Exit(1)}}```

fq
Go第 78 期

fq

一条命令查看二进制文件。用于查看和处理二进制文件的命令行工具,安装简单使用方便,支持 mp4、flac、mp3、jpeg 等多种格式的文件。

HackBrowserData
Go第 78 期

HackBrowserData

一款浏览器数据导出工具。能够导出本地浏览器的密码、历史记录、Cookie、书签、下载记录、localStorage 等数据的命令行工具,支持多平台下的多种主流浏览器。

statsviz
Go第 78 期

statsviz

实时展示 Go 程序运行时指标的 Web 应用。该项目通过图表可视化的方式,实时展示 Go 程序运行时的堆、对象、Goroutines、MSpan/MCache 等信息。```go mux := http.NewServeMux()statsviz.Register(mux)```

v2
Go第 78 期

v2

极简的 feed 订阅工具。该项目的“简”是由内而外,内部代码部分不使用 Web 框架和 ORM 仅采用 Go+PostgreSQL+JS 实现,界面朴实无华、功能精简实用,支持快速自建、源管理、自动获取内容、快捷键、用户系统等,这一切不多不少刚刚好。

bk-cmdb
Go第 77 期

bk-cmdb

腾讯开源的配置平台。面向资产及应用的企业级配置管理平台,拥有主机管理、组织架构管理、通用权限管理、操作审计等功能。该项目的代码审核很严格,此举不仅保证了项目的代码质量,还提高了代码的可读性,推荐阅读源码。

CasaOS
Go第 77 期

CasaOS

简单易用的家庭云系统。只需一键即可安装在 NAS、树莓派等各种家庭智能设备上,让你可以随时随地管理个人数据和设备。

暂无截图
Go第 77 期

colly

可能是最知名的 Go 爬虫框架。它拥有友好的 API 和丰富代码示例,短时间内即可上手。性能方面单核能达到 1K 请求/秒,还可以轻松管理请求方式、间隔和最大并发数,功能强大且优雅。```go func main() {c := colly.NewCollector()// Find and visit all links c.OnHTML("a[href]", func(e *colly.HTMLElement) {e.Request.Visit(e.Attr("href"))})c.OnRequest(func(r *colly.Request) {fmt.Println("Visiting", r.URL)})c.Visit("https://go-colly.org/")}```

暂无截图
Go第 77 期

ddns-go

简单易用的 DDNS 工具。众所周知域名解析中域名对应的是固定 IP,但是本地机器的 IP 一般是动态的,所以无法完成域名解析实现公网访问。动态 DNS(DDNS) 技术就是用来解决动态 IP 的域名解析问题,该项目能够自动获取你本机的公网 IP,并自动更新到域名服务商,从而实现公网访问本地机器。

nightingale
Go第 77 期

nightingale

开源的云原生监控系统。支持 Docker 等多种部署方式,集数据采集、监控告警、可视化为一体的企业级监控平台。借助高性能时序库,可以满足数亿时间线的采集、存储和告警分析的场景。该项目已在上千家企业部署落地,经历了各种生产环境的检验。

gitleaks
Go第 76 期

gitleaks

一款静态应用程序安全测试(SAST)工具。它可以检测项目中是否包含密码、API Key、token 等信息,还能够轻松整合到 Git Hook 和 GitHub Action,实现提交代码时自动检测,通过告警和阻止 push 等方式,有效地防止敏感信息泄漏。

mercure
Go第 76 期

mercure

一种用于实时通信的开放式协议。该项目是基于 HTTP 和 SSE 的一种协议,然后用 Go 语言实现的实时推送服务。相较于 WebSocket 协议它使用起来更加简单,客户端发起订阅就和请求普通的 HTTP 接口一样,而且在 HTTP/2 下还可以双向通信。

ptg
Go第 76 期

ptg

用 Go 写的 GUI gRPC 客户端。作者在调试 gPRC 接口时,发现没有类似 postman 趁手的 gPRC 客户端,所以就自己动手写了一个然后开源了。

wild-workouts-go-ddd-example
Go第 76 期

wild-workouts-go-ddd-example

Go DDD 示例项目。该项目通过一个预约系统的示例,展示了如何在 Go 项目中实现领域驱动设计(DDD)和读写分离架构(CQRS)。

暂无截图
Go第 75 期

go-best-practice

编写可维护 Go 代码的建议。《Go 语言最佳实践》一文的中文翻译版。

natpass
Go第 75 期

natpass

多功能主机管理平台。Go 写的主机管理 Web 平台,支持 shell 和远程桌面管理 Linux、Windows 和 macOS 系统的主机。

navidrome
Go第 75 期

navidrome

Go 写的开源音乐服务器。该项目可以用来搭建自己的音乐网站,功能丰富支持中文界面、专辑封面、多用户、各种音频格式、播放列表等功能,而且硬件要求低即使是在树莓派上也能流畅地运行。

paopao-ce
Go第 75 期

paopao-ce

一个 Go 写的轻量级社区。采用 Gin+Vue 实现的微社区,界面清爽拥有话题、发布短内容、评论等功能。

server
Go第 75 期

server

多用户的屏幕分享服务。该项目可以快速启动一个在线共享屏幕的服务,让用户无需安装任何软件,仅使用浏览器就能分享自己的屏幕画面。它基于网页实时通信(WebRTC) 实现,由 STUN/TURN 协议完成内网穿透和浏览器端对端的连接,既实用又有源码可以学习。

暂无截图
Go第 74 期

ants

高性能 goroutine 池。实现了大规模下的 goroutine 调度和复用,从而节省资源提高执行效果。还有如任务提交、动态调整 pool 大小、查询运行状态等实用接口

fx
Go第 74 期

fx

命令行 JSON 浏览工具。看似简单却十分实用的 JSON 命令行查询工具,支持流式和交互式两种查询方式

httprunner
Go第 74 期

httprunner

开源的 API 测试工具。支持丰富的网络协议,涵盖接口测试、性能测试等测试类型的测试工具- 多种网络协议:支持 HTTP(S)/HTTP2/WebSocket/RPC 等- 多格式可选:测试用例支持 YAML/JSON/go test/pytest 格式- 双执行引擎:同时支持 Golang/Python 两个执行引擎- 一键部署:一条命令在 macOS/Linux/Windows 完成安装部署- 网络性能采集:在场景化接口测试的基础上,可额外采集网络链路性能指标

zincsearch
Go第 74 期

zincsearch

轻量级全文搜索引擎。Go 语言下的轻量级搜索引擎,支持中文搜索自带 Web 管理界面

casdoor
Go第 73 期

casdoor

提供登陆界面的身份访问管理平台。提供中文界面的用户管理后台,支持多种第三方登录、单点登录以及手机/邮箱验证码、找回密码等功能

gorse
Go第 73 期

gorse

由 Go 语言实现的推荐系统引擎。无需具备推荐系统相关知识,就能轻而易举地搭建推荐系统。开发者只需将用户信息、物料信息和互动数据(例如点赞、收藏等)导入系统,Gorse 就会自动训练模型为每个用户生成推荐

lal
Go第 73 期

lal

纯 Go 开发的流媒体服务器。完备的直播服务器,支持多种常见编码格式和 RTMP、RTSP、HLS 等协议

monitoror
Go第 73 期

monitoror

平铺的监控工具。安装简单配置方便的“监控墙”,所有监控指标以平铺的方式展示,美观且一目了然。支持 Linux、macOS 和 Windows 主流操作系统

yomo
Go第 73 期

yomo

低延时流式边缘计算框架。它基于 QUIC(快速 UDP 互联网连接)协议实现,有效地提高了数据传输率和稳定性,实现在复杂网络环境下数据依然可以超低时延传输和处理。原生支持多地域分布式的部署模式,使得终端用户可就近访问节点,保证数据传输的低延时。适用于开发实时交互的应用,比如在线协作 SaaS、元宇宙、AR/VR、云游戏、物联网 IoT 等

暂无截图
Go第 72 期

gota

Go 语言的数据处理库。该库提供了类似 Python 语言 Pandas 库的功能,以及 Series 和 DataFrames 的数据结构,支持用列的方式高效地处理数据```go type User struct {Name string Age int Accuracy float64}users := []User{{"Aram", 17, 0.2},{"Juan", 18, 0.8},{"Ana", 22, 0.5},}df := dataframe.LoadStructs(users)fmt.Println(df)// Output:// [3x3] DataFrame//// Name Age Accuracy// 0: Aram 17 0.200000// 1: Juan 18 0.800000// 2: Ana 22 0.500000//```

暂无截图
Go第 72 期

gse

Go 的高性能多语言分词库。它是结巴分词的 Go 语言实现,支持中文和接入 ES 等功能```go text = "《复仇者联盟3:无限战争》是全片使用IMAX摄影机拍摄制作的的科幻片."// use DAG and HMM hmm := seg.Cut(text, true)fmt.Println("cut use hmm: ", hmm)// cut use hmm: [《复仇者联盟3:无限战争》 是 全片 使用 imax 摄影机 拍摄 制作 的 的 科幻片 .]```

hh-lol-prophet
Go第 72 期

hh-lol-prophet

英雄联盟对局先知工具。免费合法不封号,原理是基于 LOL 客户端接口获取用户数据,实现开局前对玩家信息分析和打分

illustrated-tls12
Go第 72 期

illustrated-tls12

图解 TLS 连接。用在线交互的方式讲解 TLS 的全过程,从建立 TLS 1.2 客户端发送 ping 再到接收 pong,详细到每一个字节。[在线尝试](https://tls.ulfheim.net/)

filestash
Go第 71 期

filestash

在线文件管理工具。在浏览器上管理 FTP、SFTP、Git、S3、MySQL、Dropbox 等服务中的文件和数据,支持编辑文件、图片管理、视频转码、Office 文档、全文搜索等功能

go-chart
Go第 71 期

go-chart

Go 原生图表库。支持折线图、柱状图、饼图等```go package main import ("os""github.com/wcharczuk/go-chart/v2")func main() {graph := chart.Chart{Series: []chart.Series{chart.ContinuousSeries{XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},YValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},},},}f, _ := os.Create("output.png")defer f.Close()graph.Render(chart.PNG, f)}```

暂无截图
Go第 71 期

nali

离线查询 IP 地理信息和 CDN 服务提供商的命令行工具```$ nali 1.2.3.4 1.2.3.4 [澳大利亚 APNIC Debogon-prefix网络]```

revive
Go第 71 期

revive

快速且易扩展的 Go 代码检查工具。它比 golint 更快、更灵活,深受广大 Go 开发者的喜爱

vitess
Go第 71 期

vitess

用于横向扩展 MySQL 数据库的集群系统。基于 Go 语言的并发特性,它能够轻松处理数千个连接。还可以根据配置好的规则,自动优化影响数据库性能的查询,运维方面支持自动处理主故障转移和备份等功能

go-pry
Go第 70 期

go-pry

Go 语言的交互式 REPL 命令行工具```# 安装go get github.com/d4l3k/go-pry go install -i github.com/d4l3k/go-pry# 运行go-pry -i="fmt,math,strconv"```

gotests
Go第 70 期

gotests

自动生成 Go 语言测试代码的工具。该项目基于表驱动测试法(TableDrivenTests)自动生成测试代码,表驱动测试法是创建一张数据表格,每一行为输入和预期输出值,然后用这张表格的数据测试代码

gotop
Go第 70 期

gotop

用 Go 写的系统监控命令行工具。重点是带实时折线图,看起来比较炫酷

minio
Go第 70 期

minio

采用 Go 编写的开源对象存储服务。支持存储图片、视频、日志等文件,还拥有方便操作的 Web 管理后台。虽然轻量却有着不错的性能,同时采用 RS code 编码算法实现即使丢失一半的硬盘,依旧可以找回数据。适用于大数据、机器学习等场景- 高性能:单个文件最大支持 5T,读写速率最高可以达到 55Gb/s 和 35Gb/s- 可扩展:不同集群可以组合,支持跨越多个数据中心- 云原生:支持容器化、基于 K8S 的编排、多租户- 对接多种后端存储:支持 S3、DAS、 NAS、Google 等云存储

octosql
Go第 70 期

octosql

用 SQL 的方式查询多个数据源的命令行工具。支持用 SQL 查询 CSV、JSON 文件和多种数据库中的数据,甚至可以在它们之间自由 JOIN```octosql "SELECT * FROM ./myfile.json"octosql "SELECT * FROM ./myfile.json" --describe # Show the schema of the file.octosql "SELECT invoices.id, address, amount FROM invoices.csv JOIN db.customers ON invoices.customer_id = customers.id ORDER BY amount DESC"octosql "SELECT customer_id, SUM(amount)FROM invoices.csv GROUP BY customer_id"```

air
Go第 69 期

air

有代码变动就会自动重启服务的 Go 工具。在开发 Go Web 项目时,每次修改后都需要手动编译、重启服务,这个工具会在文件和目录发生变动后,自动编译并重启服务,大大提高了开发效率

juicefs
Go第 69 期

juicefs

高性能 POSIX 共享文件系统。像使用本地存储一样高效使用海量云端存储,可同时被多台主机同时挂载读写

k9s
Go第 69 期

k9s

监控和管理 K8s 集群的命令行工具。它安装简单功能齐全,命令行交互的操作方式可以轻松地解决日常问题

kind
Go第 69 期

kind

使用 Docker 容器作为节点,在本地快速运行起 Kubernetes 集群的工具。通过该工具可以快速创建媲美 k8s 原生的本地环境,而且占用资源相对较少启动速度快。多用于本地开发和测试 k8s 原生组件,不能用于线上环境

sniffer
Go第 69 期

sniffer

用于查看进程和连接的流量情况的命令行工具。界面简洁美观,支持进程、Socket 等不同视角查看流量数据

caddy
Go第 68 期

caddy

用 Go 编写的轻量级 Web 服务器。它相较于 Apache、Nginx 这些知名 Web 服务器,独特点在于提供了编译好的可执行文件,实现了真正的开箱即用。无需任何配置即可拥有免费的 HTTPS、自动把 Markdown 文件转化成 HTML 等人性化的功能。如果是搭建中小型的 Web 服务,它完全够用而且省时省心

croc
Go第 68 期

croc

可以让任意两台计算机,安全方便地传输文件和文件夹的工具。轻松实现端到端加密的跨平台文件传输,还支持多文件传输、传输中断和恢复等功能

FerretDB
Go第 68 期

FerretDB

真正开源的 MongoDB 替代品。它底层采用 PostgreSQL 作为存储引擎,用 Go 语言实现了 MongoDB 协议,所以几乎兼容所有的 MongoDB 库,迁移起来毫无负担。如果你用不到 MongoDB 的高级功能,还受限于它的开源协议,那么这个项目可作为 MongoDB 的开源替代方案。它才刚刚起步,建议观望一段时间或做足测试再用于生产环境

gopay
Go第 67 期

gopay

Go 的集合支付库。支持微信、支付宝、PayPal、QQ 支付

remark42
Go第 67 期

remark42

简单轻量级的评论引擎。任何需要评论的页面,都可以通过 remark42 快速实现评论功能。功能丰富包括登陆、多层嵌套回复、删除评论、投票、禁止用户评论、图片上传等功能

rpcx
Go第 67 期

rpcx

国内大佬开源的 Go 语言 RPC 框架。框架入门轻松能够快速上手,性能优于 grpc-go 而且众多国内大厂都在用

go-daily-lib
Go第 66 期

go-daily-lib

每天学习一个 Go 语言库。内容包含标准库和三方库,每个库对应一篇介绍和上手的文章

goflylivechat
Go第 66 期

goflylivechat

基于 Go 语言实现的在线客服系统,采用 Gin+MySQL+JWT+WebSocket 等技术栈实现

open-im-server
Go第 66 期

open-im-server

基于 Go 实现的轻量级即时通讯(IM)项目。具有高性能、易扩展、安装简单、私有化部署等特性,同时包含多种客户端 SDK。从服务器到客户端一体的开源即时通讯(IM)解决方案

video-srt-windows
Go第 66 期

video-srt-windows

自动识别视频语音生成字幕文件的工具。采用 Go+walk 开发所以仅支持 Windows 系统,原理是请求在线语音转文字的服务,超出免费额度需付费。另外还加入了导出字幕文件和翻译功能

viper
Go第 66 期

viper

用来搞定 Go 应用中配置的库。支持多种配置文件类型、监控并重新加载配置文件、远程读取配置系统等```go viper.SetConfigName("config") // 配置文件名,不包括后缀viper.SetConfigType("yaml") // 配置文件的后缀viper.AddConfigPath("/etc/appname/") // 查找配置文件的目录viper.AddConfigPath("$HOME/.appname") // 支持查找多个目录// 异常处理if err := viper.ReadInConfig(); err != nil {if _, ok := err.(viper.ConfigFileNotFoundError); ok {// 如果没有找到配置文件} else {// 找到了配置文件,但出现了其他错误}}```

gocron
Go第 65 期

gocron

基于 Go 语言实现的轻量级定时任务管理平台。功能:- Web 管理界面- 定时任务可精确到秒- 任务失败可重试,超时强制停止- 账户权限控制- 等等

learning_tools
Go第 65 期

learning_tools

作者学习 Go 过程中实践的 Go 代码集合。包含了 Go 语言实用三方库、微服务、数据库、算法等代码片段,虽然内容丰富但缺少分类和梳理。就算这样还是要推荐给寻找 Go 进阶之路的小伙伴,因为内容真的很好

lindb
Go第 65 期

lindb

可水平拓展、高性能的分布式时序数据库,支持海量数据存储以及快速并行查询和计算。已在饿了么内部使用,存储了全量的监控数据。每天增量写入 TB 量级,共计 PB 级的数据

sharingan
Go第 65 期

sharingan

基于 Go 的流量 录制/回放 工具。实现在不影响线上服务的前提下,线下采用线上的真实请求和参数进行测试。特别适合线上重要服务重构后的回归测试,真实流量的测试有助于提早发现问题,避免重大事故

dtm
Go第 64 期

dtm

Go 语言实现的分布式事务管理器。优雅的解决了微服务架构下幂等、空补偿、悬挂等分布式事务难题,提供了简单易用、高性能、易水平扩展的分布式事务解决方案,除 Go 外还有 Python、PHP、Node.js 等语言的客户端```go// 具体业务微服务地址const qsBusi = "http://localhost:8081/api/busi_saga"req := &gin.H{"amount": 30} // 微服务的载荷// DtmServer为DTM服务的地址,是一个url saga := dtmcli.NewSaga("http://localhost:8080/api/dtmsvr").// 添加一个TransOut的子事务,正向操作为url: qsBusi+"/TransOut", 补偿操作为url: qsBusi+"/TransOutCompensate"Add(qsBusi+"/TransOut", qsBusi+"/TransOutCompensate", req).// 添加一个TransIn的子事务,正向操作为url: qsBusi+"/TransOut", 补偿操作为url: qsBusi+"/TransInCompensate"Add(qsBusi+"/TransIn", qsBusi+"/TransInCompensate", req)// 提交saga事务,dtm会完成所有的子事务/回滚所有的子事务err := saga.Submit()```

erda
Go第 64 期

erda

企业级一站式 PaaS 平台。基于 Kubernetes 以应用为中心的 DevOps 且支持微服务治理的多云架构,可以让复杂业务的开发、运维、监控和问题诊断变得更简单、更高效。能减轻使用不同的工具混搭技术底座和云平台的运维难度,同时还有漂亮、简单易用的界面设计

goim
Go第 64 期

goim

轻量级、高性能、支持集群的 IM 和实时推送服务。纯 Golang 实现支持广播消息、房间推送、安全验证和多协议支持等功能,还有基于 Kafka 的异步消息推送

hugo
Go第 64 期

hugo

Go 语言的静态网站生成器。静态网站生成器就是在本地把内容文件生成静态网页(HTML+CSS),然后把生成好的页面上传到服务器的工具。这种工具能够帮你轻松且快速地上线网站,而用户仅需选择喜欢的主题,便可以专注于内容创作。Hugo 作为最流行的静态网站生成器之一,拥有丰富的插件和主题,就算没有编程基础也能帮你快速制作出满意的博客或者网站

TopList
Go第 64 期

TopList

各大网站热门头条的聚合网站。[在线预览](https://mo.fish/)

fzf
Go第 63 期

fzf

能够搜“一切”的模糊搜索命令行工具。它能够搜文件、历史命令、进程、git 提交记录等信息,支持预览内容、整合到 Vim/Neovim 编辑器,而且搜索速度极快

glab
Go第 63 期

glab

用 Go 写的 GitLab 命令行工具。通过它除了能够在命令行管理项目、issues、合并提交之外,还能够查看 CI 的运行状态```api: Make authenticated REST/GRAPHQL auth: Manage glab's authentication state issue: Work with GitLab issues label: Manage labels on remote mr: Create, view and manage merge requests ci: Work with GitLab CI pipelines and jobs release: Manage GitLab releases repo: Work with GitLab repositories and projects```

暂无截图
Go第 63 期

godis

用 Go 语言写的 Redis 服务器。它实现了 Redis 通信协议并兼容 redis-cli 客户端,包含 5 种常用的数据结构和命令比如:TTL、发布订阅、地理位置以及 AOF 持久化等,Go 的初学者可以通过该项目能够学习到关于 TCP、通信协议实现、常用的数据结构等知识,Web 开发学烦了?换一个口味,写个 Redis 作为实战项目吧

暂无截图
Go第 63 期

learngo

适合新手学习 Go 语法的开源项目。学习一门编程语言最好的方法就是动手写,该仓库拥有 1000 多个 Go 语法的问题,让你可以跟着练并附有答案

暂无截图
Go第 63 期

tunny

可设置固定数量协程的 goroutine pool 库。通过这个项目可实现 goroutine 重复使用,从而避免过度创建 goroutine 而造成的内存占用过多等问题```go package main import ("io/ioutil""net/http""runtime""github.com/Jeffail/tunny")func main() {numCPUs := runtime.NumCPU()pool := tunny.NewFunc(numCPUs, func(payload interface{}) interface{} {var result []byte// TODO: Something CPU heavy with payload return result})defer pool.Close()http.HandleFunc("/work", func(w http.ResponseWriter, r *http.Request) {input, err := ioutil.ReadAll(r.Body)if err != nil {http.Error(w, "Internal error", http.StatusInternalServerError)}defer r.Body.Close()// Funnel this work into our pool. This call is synchronous and will// block until the job is completed.result := pool.Process(input)w.Write(result.([]byte))})http.ListenAndServe(":8080", nil)}```

bubbletea
Go第 62 期

bubbletea

一个强大的 TUI(文本用户界面)框架。Bubble Tea 非常适合构建复杂交互的终端应用程序,同时还能让命令行程序变得多彩和炫酷

cloudreve
Go第 62 期

cloudreve

支持多种存储服务的云文件桌面管理工具。开箱即用,功能丰富- 拖拽上传、目录上传、流式上传处理- 客户端直传和限速下载- 视频、图像、音频、文本、Office 文档在线预览

cointop
Go第 62 期

cointop

用于追踪加密货币行情的命令行工具。界面仿照 htop 支持类似 Vim 的快捷键,程序员摸鱼神器。[在线体验](https://cointop.sh/)

duf
Go第 62 期

duf

一款查看磁盘空间情况的命令行工具,足以代替 df 命令。它上手简单使用方便,界面简洁且友好同时支持 Linux、macOS 和 Windows 操作系统

rosedb
Go第 62 期

rosedb

一个完全用 Go 写的 Key-Value 数据库。rosedb 适合在找 Go 实战项目的小伙伴们,因为项目代码简洁、注释清晰,配上作者录制的讲解视频。你可以从中学到 Go 相关的知识- 实用的高级特性,比如:goroutine、chan、mutex- 数据结构及算法相关知识,比如:链表、哈希表、跳表等- 操作系统的一些知识,特别是文件系统和内存映射

暂无截图
Go第 61 期

algorithm-pattern

LeetCode 刷题集合项目。项目从 Go 语言入门讲起,总结了一套刷题模板和解题套路,示例代码为 Go 语言

chanify
Go第 61 期

chanify

基于 Go 实现的向 iOS 设备推送消息的服务。手机上安装好配套的 iOS 应用,然后以 Docker 的方式部署完服务,就可以通过一条命令推送指定消息到 APP 上,是不是很方便吖```# 发送文本消息$ curl --form-string "text=hello" "http://:/v1/sender/"# 发送文本文件$ cat message.txt | curl -H "Content-Type: text/plain" --data-binary @- "http://:/v1/sender/"```

ebiten
Go第 61 期

ebiten

Go 语言的 2D 游戏引擎库。通过它可以轻松地用 Go 语言制作出支持多平台的 2D 游戏,项目中还包含很多示例代码,帮助你快速上手

imaging
Go第 61 期

imaging

Go 语言的图像处理库。支持:调整大小、旋转、剪切、亮度调整等功能,示例代码:```go// 调整dstImage128 := imaging.Resize(srcImage, 128, 128, imaging.Lanczos)// 锐化dstImage := imaging.Sharpen(srcImage, 0.5)```

暂无截图
Go第 61 期

jql

用 Go 写的 JSON 数据查询工具。该工具安装方便,语法简单容易上手,实用示例代码很多比如:```# 查询 test.json 文件中,所有国家的名称cat test.json | jql '(elem "countries" (elem (keys) (elem "name")))'["Poland","United States","Germany"]```

act
Go第 60 期

act

该项目可以让你在本地调试 GitHub Actions 脚本。GitHub Actions 是 GitHub 提供的仓库自动工作流程功能,用户可以利用 GitHub 提供的免费计算机资源轻松实现 CI/CD,还可以用来做很多有意思的事情。但是在编写 actions 脚本时,想调试脚本或得到运行结果,只能 push 到远程仓库等待运行结束,没有办法在本地调试和查看结果。有了 act 这个项目,就可以在本地轻松调试 actions 啦,是不是很棒

暂无截图
Go第 60 期

dns

简单易用高性能的 Go DNS 库。示例代码:```go package main import ("github.com/miekg/dns""net""os""log""fmt")func main() {config, _ := dns.ClientConfigFromFile("/etc/resolv.conf")c := new(dns.Client)m := new(dns.Msg)m.SetQuestion(dns.Fqdn(os.Args[1]), dns.TypeMX)m.RecursionDesired = true r, _, err := c.Exchange(m, net.JoinHostPort(config.Servers[0], config.Port))if r == nil {log.Fatalf("*** error: %s\n", err.Error())}if r.Rcode != dns.RcodeSuccess {log.Fatalf(" *** invalid answer name %s after MX query for %s\n", os.Args[1], os.Args[1])}// Stuff must be in the answer section for _, a := range r.Answer {fmt.Printf("%v\n", a)}}```

暂无截图
Go第 60 期

pretty

漂亮的 Go Printf 开源三方库。示例代码:```go package main import ("fmt""github.com/kr/pretty")func main() {type myType struct {a, b int}var x = []myType{{1, 2}, {3, 4}, {5, 6}}fmt.Printf("%# v", pretty.Formatter(x))}Output:[]pretty_test.myType{{a:1, b:2},{a:3, b:4},{a:5, b:6},}```

暂无截图
Go第 59 期

bild

纯 Go 实现的多种图像处理算法库。示例代码:```go package main import ("github.com/anthonynsimon/bild/effect""github.com/anthonynsimon/bild/imgio""github.com/anthonynsimon/bild/transform")func main() {img, err := imgio.Open("input.jpg")if err != nil {fmt.Println(err)return}inverted := effect.Invert(img)resized := transform.Resize(inverted, 800, 800, transform.Linear)rotated := transform.Rotate(resized, 45, nil)if err := imgio.Save("output.png", rotated, imgio.PNGEncoder()); err != nil {fmt.Println(err)return}}```

darwinkit
Go第 59 期

darwinkit

封装 Apple/Mac 接口的 Go 库。用它仅在 80 行代码内就能写出个 macOS 菜单栏「番茄时钟」应用,[查看源码](https://github.com/progrium/macdriver/blob/main/examples/pomodoro/main.go#L1)

gin-vue-admin
Go第 59 期

gin-vue-admin

一个基于 Gin+Vue 实现的后台管理系统。看项目名字就知道它为什么而生!该项目的作者还做了配套的免费教学视频,找 Go 实战项目的同学可以学起来了

pyroscope
Go第 59 期

pyroscope

基于 Go 的开源实时性能分析平台。仅需在源码中添加几行代码,pyroscope 就能帮你找出代码的性能问题、CPU 使用过高的原因,还有丰富的图表和调用树展示。支持 Go、Python、Ruby 编程语言,[中文说明](https://github.com/pyroscope-io/pyroscope/blob/main/translations/README.ch.md)

containers-the-hard-way
Go第 58 期

containers-the-hard-way

用 Go 实现迷你 Docker,包含 Docker 核心功能的开源项目。该项目仅用 Linux 系统接口实现了类似容器的功能,这些能够帮助你更好地了解容器的工作方式。如果你想更深入地理解容器,就参考本项目写一个迷你 Docker 吧

delve
Go第 58 期

delve

一款 Go 语言的调试工具。如果你还在像我一样用 `fmt.Println` 调试 go 的代码,就试试这个工具吧。万星的开源项目可不是开玩笑的,它上手简单并且支持多种方式调用,助你快速找到 Bug

rqlite
Go第 58 期

rqlite

用 Go 实现的基于 SQLite 轻量级、分布式关系数据库。如果你对分布式数据库的原理及实现感兴趣的话,这个项目真的是你入门这方面的不二之选,这个项目用 SQLite 作为存储引擎,让你可以把更多的精力放在理解分布式的知识上,尝试阅读下这个项目的文档,相信你会对它感兴趣的。设计图如下:

vegeta
Go第 58 期

vegeta

基于 Go 语言的 HTTP 压测工具。目前市面上的压测工具已经很多了,但是今天推荐的这款惊艳到我点是下面这条命令执行后的效果(vegeta+jaggr+jplot),让我们一起来感受下吧```bash echo 'GET http://localhost:8080' | \vegeta attack -rate 5000 -duration 10m | vegeta encode | \jaggr @count=rps \hist\[100,200,300,400,500\]:code \p25,p50,p95:latency \sum:bytes_in \sum:bytes_out | \jplot rps+code.hist.100+code.hist.200+code.hist.300+code.hist.400+code.hist.500 \latency.p95+latency.p50+latency.p25 \bytes_in.sum+bytes_out.sum```

fyne
Go第 57 期

fyne

一款 Go 语言跨平台 UI 库。想用 Go 写图形界面应用的小伙伴,快速上手:```安装$ go get fyne.io/fyne运行一个 demo$ go get fyne.io/fyne/cmd/fyne_demo/$ fyne_demo```

暂无截图
Go第 57 期

golearn

Go 写的机器学习框架。来,跑个模型试试吧:```cd $GOPATH/src/github.com/sjwhitworth/golearn/examples/knnclassifier go run knnclassifier_iris.go```

go-zero
Go第 56 期

go-zero

一个可靠的 Go 语言 Web 和 RPC 框架。就算是 Go 新手基于该框架,也可以快速写出高性能可扩展的微服务。示例代码:```go func main() {flag.Parse()var c config.Config conf.MustLoad(*configFile, &c)ctx := svc.NewServiceContext(c)server := rest.MustNewServer(c.RestConf)defer server.Stop()handler.RegisterHandlers(server, ctx)server.Start()}```

lazykube
Go第 56 期

lazykube

支持鼠标操作和管理 K8s 的命令行工具。对比 k9s 命令行工具,可以不用去记那么多快捷键,直接用鼠标操作。解决公司不使用 rancher 和 dashboard 管理 K8s,只能通过堡垒机访问的场景。使用该工具只需要终端和鼠标,当然用到搜索功能时还是需要键盘的 😂

syncthing
Go第 56 期

syncthing

一个采用 Go 语言编写的免费、跨平台的文件同步工具。它不需要安装,只需要下载对应系统的压缩包解压后就可以直接运行和使用。拥有命令行、Web 和桌面程序多种操作模式,同时支持内网和互联网的文件同步,可以用来搭建私有网盘。又一个代替付费网盘的选择,如果考虑到昂贵的宽费用。可以把 syncthing 做为局域网下手机、电视和电脑共享文件的开源解决方案

ali
Go第 55 期

ali

能够实时展示分析的压力测试工具。现在压测工具有很多,这款的亮点在于可以在终端实时展示压测过程的曲线。一条命令搞定启动:`ali 地址`

ferry
Go第 55 期

ferry

基于 Gin + Vue + Element UI 前后端分离的工单系统。该系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等功能, 帮助减少跨部门之间的沟通,提升工作效率与工作质量,减少不必要的工作量与人为出错率

go-diagrams
Go第 55 期

go-diagrams

用 Go 语言画架构图的工具。想画架构图不知道用什么工具?会 Go 的小伙伴可以试试这个库,通过编写 Go 代码来绘制架构图,接口使用方便,但文档太简单了。示例代码:```go d, err := diagram.New(diagram.Filename("app"), diagram.Label("App"), diagram.Direction("LR"))if err != nil {log.Fatal(err)}dns := gcp.Network.Dns(diagram.NodeLabel("DNS"))lb := gcp.Network.LoadBalancing(diagram.NodeLabel("NLB"))cache := gcp.Database.Memorystore(diagram.NodeLabel("Cache"))db := gcp.Database.Sql(diagram.NodeLabel("Database"))dc := diagram.NewGroup("GCP")dc.NewGroup("services").Label("Service Layer").Add(gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 1")),gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 2")),gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 3")),).ConnectAllFrom(lb.ID(), diagram.Forward()).ConnectAllTo(cache.ID(), diagram.Forward())dc.NewGroup("data").Label("Data Layer").Add(cache, db).Connect(cache, db)d.Connect(dns, lb, diagram.Forward()).Group(dc)if err := d.Render(); err != nil {log.Fatal(err)}```

gorched
Go第 55 期

gorched

Go 语言写的终端游戏 Scorched Earth。它让我想起了“百战天虫”这款游戏,有同龄人吗?一起来回味下

go-admin
Go第 54 期

go-admin

基于 Gin+Vue+Element UI 的前后端分离权限管理系统。文档齐全、还有视频教程适合新手学习,特点:- 遵循 RESTful API 设计规范- 基于 Gin Web API 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、追踪 ID 等)- 支持 Swagger 文档- 等等

go-micro
Go第 54 期

go-micro

一款 Go 插件化的基础框架。我只知道它是个 Go 微服务框架,基于它可以快速构建微服务。示例代码如图所示:

暂无截图
Go第 54 期

now

Go 语言的时间工具库。项目简单、代码易懂,示例代码丰富:```go import "github.com/jinzhu/now"time.Now() // 2013-11-18 17:51:49.123456789 Mon now.BeginningOfMinute() // 2013-11-18 17:51:00 Mon now.BeginningOfHour() // 2013-11-18 17:00:00 Mon now.BeginningOfDay() // 2013-11-18 00:00:00 Mon now.BeginningOfWeek() // 2013-11-17 00:00:00 Sun now.BeginningOfMonth() // 2013-11-01 00:00:00 Fri now.BeginningOfQuarter() // 2013-10-01 00:00:00 Tue now.BeginningOfYear() // 2013-01-01 00:00:00 Tue now.WeekStartDay = time.Monday // Set Monday as first day, default is Sunday now.BeginningOfWeek() // 2013-11-18 00:00:00 Mon now.EndOfMinute() // 2013-11-18 17:51:59.999999999 Mon now.EndOfHour() // 2013-11-18 17:59:59.999999999 Mon now.EndOfDay() // 2013-11-18 23:59:59.999999999 Mon now.EndOfWeek() // 2013-11-23 23:59:59.999999999 Sat now.EndOfMonth() // 2013-11-30 23:59:59.999999999 Sat now.EndOfQuarter() // 2013-12-31 23:59:59.999999999 Tue now.EndOfYear() // 2013-12-31 23:59:59.999999999 Tue now.WeekStartDay = time.Monday // Set Monday as first day, default is Sunday now.EndOfWeek() // 2013-11-24 23:59:59.999999999 Sun```

pgweb
Go第 54 期

pgweb

基于 Go 实现的跨平台 PostgreSQL 数据库管理工具。通过本地起服务+浏览器的方式解决了跨平台的问题,启动命令:```三种方式:参数:pgweb --host localhost --user myuser --db mydb URL:pgweb --url postgres://user:password@host:port/database?sslmode=[mode]Socket:pgweb --url "postgres:///database?host=/absolute/path/to/unix/socket/dir"```

暂无截图
Go第 53 期

ginrpc

简化 go-gin 框架注册路由方式,自动生成 Swagger/Markdown 文档。示例代码:```go type ReqTest struct {UserName string `json:"user_name" binding:"required"` // 带校验方式}type Hello struct {}// Hello [grpc-go](https://github.com/grpc/grpc-go) 模式// @Router /hello_ruter [post,get]func (s *Hello) Hello(c *gin.Context, req ReqTest) (*ReqTest, error) {fmt.Println(req)return &req,nil}func main() {base := ginrpc.New(ginrpc.WithGroup("xxjwxc"))router := gin.Default()base.Register(router, new(Hello)) // 对象注册 like(go-micro)router.Run(":8080")}```

暂无截图
Go第 53 期

go-internals

关于 Go 程序设计语言内部实现原理的讲解。[中文翻译](https://github.com/go-internals-cn/go-internals)

LeetCode-Go
Go第 53 期

LeetCode-Go

《LeetCode Cookbook》是帮助开发者在 LeetCode 上做题,提供解题思路和代码的项目。目前已经收录了 500+ 道题的题解和代码,代码都是 runtime beats 100%,代码全部都是用 Go 语言实现。[在线阅读](https://books.halfrost.com/leetcode)

暂无截图
Go第 52 期

algo

Golang 程序员面试中的问题和解答集合。该项目目前完成了大部分的数据结构和算法部分,准备相关面试的小伙伴可以阅读学习起来了

gotty
Go第 52 期

gotty

能够把终端执行的命令展示到网页上的工具。安装和运行命令如下:```安装:go get github.com/yudai/gotty运行:gotty [options] []```

logrus
Go第 52 期

logrus

可能是 Go 目前最受欢迎的第三方日志库。日志首先要能让人看懂,其次是程序易于处理日志包含的内容,logrus 也许能让你轻松快速实现上述两点

websocket
Go第 52 期

websocket

Go 的 websocket 三方库。看看它和标准库的对比,你就知道为什么它会出现在本期月刊中了

暂无截图
Go第 51 期

fate

起中文名工具,去吧!算名先生

seaweedfs
Go第 51 期

seaweedfs

一款基于 Go 开发的部署方便、使用简单且强大的分布式文件系统

grpcui
Go第 50 期

grpcui

gRPC 的 Web 页面调试工具。该项目提供交互式的调试界面,让你开发 gRPC 的时候如虎添翼

暂无截图
Go第 50 期

uptoc

一个基于 Go 的静态博客部署到云存储的工具。静态博客不论是部署在 GitHubPages 还是 Netlify 等平台都存在国内访问速度慢的问题,解决这个问题最好的办法就是部署在国内的云存储,如腾讯云 COS、阿里云 OSS、七牛云等。借助该工具可以快速上传到上述云存储平台,加快你的静态博客访问速度```bash# 安装curl -sSf http://uptoc.saltbo.cn/install.sh | sh# 使用uptoc --driver oss --region cn-beijing --access_key xxx --access_secret xxx --bucket demo-bucket /opt/blog/public```

crawlab
Go第 49 期

crawlab

基于 Go 的分布式爬虫管理平台。支持 Python、Node.js、Go、Java、PHP 等多种编程语言以及多种爬虫框架

fasthttp
Go第 49 期

fasthttp

高性能 Go HTTP 三方库。性能是标准库 `net/http` 数倍,关于它是怎么做到的可以通过源码学习一下。进阶的路就在面前,往前走不走看你自己喽

暂无截图
Go第 48 期

gops

展示当前系统运行了哪些 Go 程序的工具,同时支持深入分析的参数```# 展示当前运行的所有 Go 程序$ gops 983 980 uplink-soecks go1.9 /usr/local/bin/uplink-soecks 52697 52695 gops go1.10 /Users/jbd/bin/gops 4132 4130 foops * go1.9 /Users/jbd/bin/foops 51130 51128 gocode go1.9.2 /Users/jbd/bin/gocode# 某一个 Go 程序的详细信息$ gops parent PID: 5985 threads: 27 memory usage: 0.199%cpu usage: 0.139%username: jbd cmd+args: /Applications/Splice.app/Contents/Resources/Splice Helper.app/Contents/MacOS/Splice Helper -pid 5985 local/remote: 127.0.0.1:56765 :0 (LISTEN)local/remote: 127.0.0.1:56765 127.0.0.1:50955 (ESTABLISHED)local/remote: 100.76.175.164:52353 54.241.191.232:443 (ESTABLISHED)```

wtf
Go第 48 期

wtf

瞥一眼你的“私人管家”,终端个人信息面板。安装简单,还可通过配置文件设置你想看到的信息。设置可能需要花一些时间,但最终效果还是很可以的

暂无截图
Go第 47 期

7days-golang

用 Go 在 7 天时间内实现 Web 框架、分布式缓存等应用的实战教程

cli
Go第 47 期

cli

GitHub 官方基于 Go 语言开发的命令行 GitHub 工具。用它可以在终端中执行 GitHub 的常用的管理 Issue、切分支、Clone 等操作

暂无截图
Go第 46 期

gojsonq

一款支持解析、查询 JSON/YAML/XML/CSV 数据的 Go 三方开源库。示例代码:```go package main import "github.com/thedevsaddam/gojsonq"func main() {const json = `{"name":{"first":"Tom","last":"Hanks"},"age":61}`name := gojsonq.New().FromString(json).Find("name.first")println(name.(string)) // Tom}```

gormt
Go第 46 期

gormt

一款 MySQL 数据库转 Go struct 的工具。支持:- 命令行、界面方式生成- YML 文件灵活配置- 自动生成快捷操作函数- 支持索引、外键等

statping
Go第 46 期

statping

一个 Go 编写的服务状态展示页项目。通过该项目可以快速搭建起一个展示服务可用状态、服务质量的页面

gf
Go第 45 期

gf

一款高性能、功能丰富的 Go Web 框架。特点:- 模块化、松耦合设计- 模块丰富,开箱即用- 简便及可维护性为宗旨- 详尽的开发文档及示例- 完善的本地中文化支持- 等等

暂无截图
Go第 45 期

gods

简单易用的 Go 语言各种数据结构和算法,并封装成了一个库,开箱即食。示例代码:```go type Stack interface {Push(value interface{})Pop() (value interface{}, ok bool)Peek() (value interface{}, ok bool)containers.Container// Empty() bool// Size() int// Clear()// Values() []interface{}}```

goproxy
Go第 45 期

goproxy

Go 模块安装代理工具。还在因为安装 Go 项目依赖失败而抓耳挠腮吗?快试试这个项目吧

暂无截图
Go第 45 期

gowp

Go 高性能异步并发线程池。接口调用简单、支持错误返回、无论排队多少任务,都不会阻止提交任务。可用于控制并发访问、并发执行。示例代码:```go package main import ("fmt""time""github.com/xxjwxc/gowp/workpool")func main() {wp := workpool.New(10) //设置最大线程数for i := 0; i < 20; i++ { //开启20个请求ii := i wp.Do(func() error {for j := 0; j < 10; j++ { //每次打印0-10的值time.Sleep(1 * time.Second)}return nil})}wp.Wait()fmt.Println("down")}```

pg_flame
Go第 45 期

pg_flame

Postgres 数据库性能分析工具,把 `EXPLAIN ANALYZE` 结果通过火焰图展示

evans
Go第 44 期

evans

基于 Go 语言实现的支持交互模式的 gRPC 客户端,让调试、测试 gRPC API 更加容易

gochat
Go第 44 期

gochat

纯 Go 实现的轻量级即时通讯系统。技术上各层之间通过 rpc 通讯,使用 redis 作为消息存储与投递的载体,相对 kafka 操作起来更加方便快捷。各层之间基于 etcd 服务发现,在扩容部署时将会方便很多。架构、目录结构清晰,文档详细。而且还提供了 docker 一件构建,安装运行十分方便,推荐作为学习项目

暂无截图
Go第 44 期

guide

Uber 内部的 Go 风格规范。[中文翻译版](https://github.com/xxjwxc/uber_go_guide_cn)

mkcert
Go第 44 期

mkcert

无需配置,执行一条命令让本地的开发环境实现 HTTPS 的工具。效果如下:```bash$ mkcert -install Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥The local CA is now installed in the system trust store! ⚡️The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1 Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨Created a new certificate valid for the following names 📜- "example.com"- "*.example.com"- "example.test"- "localhost"- "127.0.0.1"- "::1"The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅```

暂无截图
Go第 43 期

bigcache

基于 Go 语言的高性能大缓存库。在 Ubuntu 18.04 LTS,机器配置 i7-6700K CPU @ 4.00GHz with 32GB of RAM 上性能测试结果:```go version go version go1.13 linux/amd64 cd caches_bench; go test -bench=. -benchmem -benchtime=4s ./... -timeout 30m goos: linux goarch: amd64 pkg: github.com/allegro/bigcache/v2/caches_bench BenchmarkMapSet-8 12999889 376 ns/op 199 B/op 3 allocs/op BenchmarkConcurrentMapSet-8 4355726 1275 ns/op 337 B/op 8 allocs/op BenchmarkFreeCacheSet-8 11068976 703 ns/op 328 B/op 2 allocs/op BenchmarkBigCacheSet-8 10183717 478 ns/op 304 B/op 2 allocs/op BenchmarkMapGet-8 16536015 324 ns/op 23 B/op 1 allocs/op BenchmarkConcurrentMapGet-8 13165708 401 ns/op 24 B/op 2 allocs/op BenchmarkFreeCacheGet-8 10137682 690 ns/op 136 B/op 2 allocs/op BenchmarkBigCacheGet-8 11423854 450 ns/op 152 B/op 4 allocs/op BenchmarkBigCacheSetParallel-8 34233472 148 ns/op 317 B/op 3 allocs/op BenchmarkFreeCacheSetParallel-8 34222654 268 ns/op 350 B/op 3 allocs/op BenchmarkConcurrentMapSetParallel-8 19635688 240 ns/op 200 B/op 6 allocs/op BenchmarkBigCacheGetParallel-8 60547064 86.1 ns/op 152 B/op 4 allocs/op BenchmarkFreeCacheGetParallel-8 50701280 147 ns/op 136 B/op 3 allocs/op BenchmarkConcurrentMapGetParallel-8 27353288 175 ns/op 24 B/op 2 allocs/op PASS ok github.com/allegro/bigcache/v2/caches_bench 256.257s```

go-admin
Go第 43 期

go-admin

基于 Golang 语言的数据可视化与管理平台。特性如下:- 🚀高生产效率:10 分钟内做一个好看的管理后台- 🎨主题:默认为 adminlte,更多好看的主题正在制作中,欢迎给我们留言- 🔢插件化:提供插件使用,真正实现一个插件解决不了问题,那就两个- ✅认证:开箱即用的 rbac 认证系统- ⚙️框架支持:支持大部分框架接入,让你更容易去上手和扩展

RedisShake
Go第 43 期

RedisShake

阿里开源的用于 redis 数据同步的工具。原理图如下:

zerolog
Go第 43 期

zerolog

一个速度快、专门用于输出 JSON 格式日志的库。还在为解析不规则的日志而烦恼吗?有了 zerolog 你可以跳起来了!当然它还有低效但可在控制台输出漂亮日志的模式,快去试试吧。示例代码:```go package main import ("github.com/rs/zerolog""github.com/rs/zerolog/log")func main() {zerolog.TimeFieldFormat = zerolog.TimeFormatUnix log.Info().Msg("hello world")}// Output: {"time":1516134303,"level":"info","message":"hello world"}```

暂无截图
Go第 42 期

ultimate-go

该项目是作者在学习 Go 过程中,对 Go 源码以及涉及到的相关的计算机基础知识的心得与总结。适合 Go 学习者阅读与学习。快来和作者一起深入了解 Go 源码,了解背后的计算机理论和 Go 的设计思想

暂无截图
Go第 41 期

go-github

谷歌出品的 GitHub API Go 语言版本。如果你需要做一个 GiHhub 相关的产品后端,这个可以省去很多功夫,而且还可以学习谷歌工程师写的 Go 项目、设计接口的思路。示例代码:```go import "github.com/google/go-github/v27/github" // 启用的 go module (GO111MODULE=on 或者不在 GOPATH 里)import "github.com/google/go-github/github" // 没启用 go module 时client := github.NewClient(nil)// 获取用户 "willnorris" 所在的所有组织orgs, _, err := client.Organizations.List(context.Background(), "willnorris", nil)```

gridstudio
Go第 41 期

gridstudio

一个后端采用 Go 语言的电子表格 Web 应用程序,支持 Python 编程语言处理数据,结果运行即可见。它旨在提供一个集成的工作流程,用于加载、清理、操作和可视化数据。可在线使用,对于用 Python 等处理数据的数据工程师而言,就是一款神器。之前就很好奇石墨文档怎么做的,这下可以学习下了,电子表单是一个比较复杂的问题,该项目有很多可以学习的地方。安装:```bash git clone https://github.com/ricklamers/gridstudio # clone 项目cd gridstudio && ./run.sh # 直接运行# 然后访问 http://127.0.0.1:8080 用户名:admin 密码:admin```

simple-computer
Go第 41 期

simple-computer

一个用 Go 语言模拟简单计算机 CPU 的项目。只有 Go 语言的函数,没有硬件的模块,从与非门直到一台能做加减运算和显示的迷你虚拟计算机。这些是计算机最底层、基础的东西,虽然是使用 Go 语言模拟,而不是用硬件打造而。但是计算机的基本结构,运行的基本原理都显示的非常清楚。对于新手,既能了解 CPU 原理,也会发现编程语言除了能写软件之外的其他有趣用处。安装命令:```bash make # 构建项目make test # 测试./bin/simulator -bin _programs/brush.bin # 运行虚拟机```

gocui
Go第 40 期

gocui

命令行 UI 库。提供了类似 HTML canvas 的 API 用来在终端中绘制 UI,使得内容可以分块展示,甚至可以在某些终端中支持点击事件。如果你想做一个 redis-cli 或者其它炫酷、支持点击事件的命令行 UI 程序。但是又不想陷入手绘 UI 的困境,该库可以帮你解决这些烦恼

lazydocker
Go第 40 期

lazydocker

带命令行 UI 的 docker 管理工具。可以通过点点点来管理 docker,却又不需要装 rancher 这样的企业级容器管理平台

暂无截图
Go第 40 期

mux

一个基于 Golang 语言的 HTTP 路由库。由于支持各种正则匹配路由,使得对应处理函数复用率大大提高。相比于 Gin、beego 等框架,这个项目基本上跟标准库的 `http.ServeMux` 和 `mux.Router` 保持一致,比标准库更强大的是它支持的正则匹配路由、自定义保留字段、嵌套路由等功能。示例代码:```go func main() {r := mux.NewRouter()r.HandleFunc("/", HomeHandler)r.HandleFunc("/products", ProductsHandler)r.HandleFunc("/articles", ArticlesHandler)http.Handle("/", r)}r := mux.NewRouter()r.HandleFunc("/products/{key}", ProductHandler)r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)```

nps
Go第 40 期

nps

一款功能强大、轻量级的内网穿透代理服务器。支持 TCP 和 UDP 流量转发、支持内网 HTTP 代理、内网 socks5 代理、snappy 压缩、站点保护、加密传输、多路复用等功能。拥有 web 图形化管理,集成多用户模式。可以自搭建内网穿透代理服务,用来替代付费的内网穿透服务。又不像其他类似项目依赖命令行,它有图形页面。安装:```go get -u github.com/cnlh/nps go build cmd/nps/nps.go # 服务端程序go build cmd/nps/npc.go # 客户端程序```

pan-light
Go第 40 期

pan-light

基于 Golang + Qt5 的百度网盘不限速客户端。对比之前命令行版本的百度盘客户端,该项目拥有图形界面,更加友好、方便、易于使用,到 [release 页面](https://github.com/peterq/pan-light/releases)下载运行即可使用

scope
Go第 40 期

scope

k8s 系列的容器间关系依赖可视化组件,通过图的方式解释微服务之间复杂的相互依赖关系。同类目前只有 scope 对于微服务之间的依赖的 debug 是非常有意义的。由于是用图的方式表示,意味着可以用图算法找最短路径、聚类、把耦合紧密的服务合并。通过计算图密度,还能揭示微服务之间的联系紧密。安装如下:```# 安装sudo curl -L git.io/scope -o /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope scope launch# 最后访问 http://localhost:4040```

暂无截图
Go第 39 期

geziyor

Go 的分布式爬虫框架。示例代码:```go func main() {geziyor.NewGeziyor(&geziyor.Options{StartURLs: []string{"http://quotes.toscrape.com/"},ParseFunc: quotesParse,// exporter 可以用来把最终结果存成各种格式,例如 json Exporters: []geziyor.Exporter{exporter.JSONExporter{}},}).Start()}// 请求的结果直接进了一个管道处理函数,这样的函数可以串联起来,爬虫和清洗二合一// 这样拆分爬虫逻辑,某些逻辑也可以重用func quotesParse(g *geziyor.Geziyor, r *geziyor.Response) {r.HTMLDoc.Find("div.quote").Each(func(i int, s *goquery.Selection) {g.Exports a").Attr("href"); ok {g.Get(r.JoinURL(href), quotesParse)}}```

goalert
Go第 39 期

goalert

一个基于 Go 语言实现的报警和处理报警系统。它以发请求或者手动添加方式进行告警,支持短信、电话、发邮件等通知方式。集成了一个看板,基本上算是开箱即用。安装命令如下:```docker run -it --rm -p 8081:8081 goalert/all-in-one访问本地 8081 端口,用户名 admin,密码 admin123```

olivia
Go第 39 期

olivia

一个类似 Siri 的开源语音助手,目前只支持英文。开源的语音助手并不多,而且涉及的问题很复杂,现在有了它就可以基于这个项目做一些有趣的小应用

暂无截图
Go第 39 期

script

一个封装好的 OS 三方库,解决了 Go 使用 OS 标准库错误处理的麻烦。如果没有它,打开一个文件查找一个关键字再统计下数量,你至少会需要 2-3 个异常处理的逻辑。有了它,只需要:```go numErrors, err := script.File("test.txt").Match("Error").CountLines()// 等同于 grep Error test.txt | wc -l```

unioffice
Go第 39 期

unioffice

一个让 Go 可以创建、操作 Office Word、Excel、Powerpoint 三件套的库。示例代码:```go dox := document.New()doc.X().Background = wordprocessingml.NewCT_Background()doc.X().Background.ColorAttr = &wordprocessingml.ST_HexColor{}doc.X().Background.ColorAttr.ST_HexColorRGB = color.RGB(50, 50, 50).AsRGBString()```

CovenantSQL
Go第 38 期

CovenantSQL

具有区块链特性的去中心化 SQL 关系型数据库。可以提供 DBaaS 服务,去中心化存储保证用户隐私。[中文文档](https://developers.covenantsql.io/docs/zh-CN/intro),MacOS 系统可以通过 `brew install cql` 直接安装

diving
Go第 38 期

diving

基于 [dive](https://github.com/wagoodman/dive) 分析 docker 镜像,界面化展示了镜像每层的变动(增加、修改、删除等)、用户层数据大小等信息。便捷获取镜像信息和每层镜像内容的文件树,可以方便地浏览镜像信息。对于需要优化镜像体积时非常方便

gameboy.live
Go第 38 期

gameboy.live

Gameboy 模拟器,还可以通过 socket 远程玩```# 下载git clone https://github.com/HFO4/gameboy.live.git# 运行cd gameboy.live go build -o gbdotlive main.go# 命令说明Usage of gbdotlive:-G Play specific game in Fyne GUI mode # 用 Fyne GUI 模式玩游戏,会弹出一个窗口-c config # 配置文件路径Set the game option list config file path-d Use Debugger in GUI mode # GUI 的 debug 模式-f FPS Set the FPS in GUI mode (default 60) # FPS 设定-g Play specific game in GUI mode (default true) # 是否默认启动 GUI-h This help # 显示帮助-m Turn on sound in GUI mode (default true) # GUI 模式下是否有声音-p port Set the port for the cloud-gaming server (default 1989) # 默认监听端口,可以用 Telnet 玩-r ROM # 游戏 ROM 的路径Set ROM file path to be played in GUI mode-s Start a cloud-gaming server # 启动服务器,用 Telnet 玩```

暂无截图
Go第 38 期

golang-developer-roadmap

成为 Go 开发者的学习路线图,[中文版](https://github.com/Alikhll/golang-developer-roadmap/blob/master/i18n/ReadMe-zh-CN.md)

暂无截图
Go第 38 期

nic

一个易用的 HTTP Request 包。它封装了 Go 的 HTTP 标准库,提供了简洁优雅的 API。可以更轻松的发送HTTP 请求,解决了 Go 标准库自定义 HTTP 请求,操作 headers、cookies 时繁琐的步骤。类似于 Python 的 Requests 和 urllib 的区别。示例代码:```go resp, err := nic.Get("http://example.com", nil)if err != nil {log.Fatal(err.Error())}fmt.Println(resp.Text)```

暂无截图
Go第 38 期

scheduler

Go 语言实现的作业调度工具包。适用于需要任务调度的场景,能够让初学者学到 time、reflect 等标准库的用法,[中文文档](https://github.com/prprprus/scheduler/blob/master/README-zh.md)

暂无截图
Go第 37 期

akutan

eBay 开源的分布式图数据库,少数依然支持 SparQL 的图数据库

kratos
Go第 37 期

kratos

哔哩哔哩开源的一套 Go 微服务框架,包含大量微服务相关框架及工具。解决了 gin 在微服务场景下的一些适配和微服务本身的一系列生态,[快速开始](https://github.com/bilibili/kratos/blob/master/doc/wiki-cn/quickstart.md)

overlord
Go第 37 期

overlord

基于 Go 语言编写的 memcache 和 redis&cluster 的代理及集群管理平台。致力于提供自动化高可用的缓存服务解决方案。自带图形界面的缓存集群管理程序,[安装步骤](https://github.com/bilibili/overlord/blob/master/doc/wiki-cn/platform-deploy.md)

暂无截图
Go第 37 期

slim

自动缩减 docker 镜像的体积的工具。大幅度缩减 docker 镜像的体积,方便分发,使用命令 `docker-slim build --http-probe your-name/your-app`。比如 Node.js 镜像缩减后的对比:```from ubuntu:14.04 - 432MB => 14MB (缩减了 30.85 倍)from debian:jessie - 406MB => 25.1MB (缩减了 16.21 倍)from node:alpine - 66.7MB => 34.7MB (缩减了 1.92 倍)```

auxpi
Go第 36 期

auxpi

基于 API 的简单图床应用。整合了主流图床的 API,并且做了一个 GUI 用来管理,[安装](https://github.com/aimerforreimu/AUXPI/wiki/%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC)简单

暂无截图
Go第 36 期

etcd

一个高可用的分布式键值数据库,k8s 全家桶标配的注册与发现服务。它采用 raft 一致性算法,基于 Go 语言实现。可以通过该项目了解、学习 raft 的实际应用场景```# 使用 etcd 的客户端存取键值对$ etcdctl put mykey "this is awesome"$ etcdctl get mykey```

harness
Go第 36 期

harness

一个基于 Docker 的持续集成平台,使用 Go 语言编写

暂无截图
Go第 36 期

learn-go-with-tests

通过单元测试学习 Go 语言。下载仓库源码后,进入对应目录。每一个小文件夹就是一个对应的 Go 项目,在里面`go test`即可运行单元测试。由于是测试驱动开发,所以需要在你改动代码之后跑通单元测试才算学会通过。每一个对应的文件夹都有相应 Markdown 文字教程,比较浅显易懂。而且还有[中文版](https://studygolang.gitbook.io/learn-go-with-tests)

暂无截图
Go第 36 期

pprof

Go 语言的性能分析工具,可以用来调试 Go 程序的内存泄露、goroutine 泄露之类的问题。使用方法:```# 安装$ go get -u github.com/google/pprof# 生成一个profile文件$ pprof -top [你的golang程序二进制文件] profile.pb.gz# 生成火焰图$ pprof -web [你的golang程序二进制文件] profile.pb.gz```

暂无截图
Go第 35 期

1m-go-websockets

该项目演示了如何用 Go 编写一个可以提供超过一百万个 websockets 连接、运行内存小于 1GB 的服务器。`setup.sh` 是用来创建 websocket 客户端的,`destroy.sh` 则用来销毁客户端

cds
Go第 35 期

cds

企业级开源持续集成系统。支持横向扩展、自带 UI、常用的持续集成构建等功能

docui
Go第 35 期

docui

终端 Docker 管理工具,自带一个终端界面。使用该工具可以方便的通过界面管理 docker 不用再记那些命令。安装命令:```# Homebrew$ brew tap skanehira/docui$ brew install docui# go get$ go get -d github.com/skanehira/docui$ cd $GOPATH/src/github.com/skanehira/docui$ GO111MODULE=on go install```

go-echarts
Go第 35 期

go-echarts

Golang 代码生成对应的 echarts 可视化图表。实例代码:```go// example.go package main import ("log""math/rand""os""time""github.com/chenjiandongx/go-echarts/charts")var nameItems = []string{"衬衫", "牛仔裤", "运动裤", "袜子", "冲锋衣", "羊毛衫"}var seed = rand.NewSource(time.Now().UnixNano())func randInt() []int {cnt := len(nameItems)r := make([]int, 0)for i := 0; i

color
Go第 34 期

color

Golang 的命令行色彩使用库。拥有丰富的色彩渲染输出、通用的 API 方法、兼容 Windows 系统

Modlishka
Go第 34 期

Modlishka

钓鱼网站生成工具。该工具会根据给定的模版生成一个钓鱼网站,然后在该网站输入的用户名密码等敏感信息会被记录

暂无截图
Go第 34 期

sqler

根据 SQL 和配置文件生成接口的工具。与传统的 SQL 生成 RESETful API 的工具不同,这个工具允许你自定义一些 API 的前、后处理,Auth 之类的行为。启动命令 `sqler -config=path to config file`,配置示例:```adduser {// 参数校验validators {user_name_is_empty = "$input.user_name && $input.user_name.trim().length > 0"user_email_is_empty = "$input.user_email && $input.user_email.trim(' ').length > 0"user_password_is_not_ok = "$input.user_password && $input.user_password.trim(' ').length > 5"}bind {name = "$input.user_name"email = "$input.user_email"password = "$input.user_password"}methods = ["POST"]// 权限校验authorizer = <<JS(function(){log("use this for debugging")token = $input.http_authorization response = fetch("http://requestbin.fullcontact.com/zxpjigzx", {headers: {"Authorization": token}})if ( response.statusCode != 200 ) {return false}return true})()JS exec = <<SQL INSERT INTO users(name, email, password, time) VALUES(:name, :email, :password, UNIX_TIMESTAMP());SELECT * FROM users WHERE id = LAST_INSERT_ID();SQL}```

txqr
Go第 34 期

txqr

通过动态二维码传输数据,如:传输文件等

ptt-daily-beauty
Go第 33 期

ptt-daily-beauty

每晚 11 点会自动发送 PTT 论坛(台湾最大论坛) Beauty 板块前 3 名的小姐姐图片。[点击订阅](https://www.daily-beauty.xyz/)

q
Go第 33 期

q

Golang debug 库,自动打印变量类型并且格式化输出

tldr
Go第 33 期

tldr

Golang tldr 客户端。对比之前推荐过的 Python 版本客户端,Golang 版本速度更快、交互友好、且支持选择搜索结果的展示样式。每当你想要用 tar 解压缩,但是记不住具体参数的时候,tldr 可以拯救世界

yeetgif
Go第 33 期

yeetgif

一个命令行工具,用来组合、生成表情的 gif 动图。支持多种模式:旋转、抖动、鬼畜等,可以组合出很魔性的表情

暂无截图
Go第 32 期

archiver

命令行压缩和解压缩工具。终于不用再记 `tar -czvf` 了,使用命令:```# Syntax: arc archive [archive name] [input files...] 压缩$ arc archive test.tar.gz file1.txt images/file2.jpg folder/subfolder# Syntax: arc unarchive [archive name] [destination] 解压缩$ arc unarchive test.tar.gz```

暂无截图
Go第 32 期

athens

Go Modules 下载代理服务,解决国内 Go 装包的痛。妈妈再也不用担心我因为装不上依赖库而不吃饭,使用步骤:```$ export GO111MODULE=on$ export GOPROXY=http://127.0.0.1:3000$ git clone https://github.com/athens-artifacts/walkthrough.git$ cd walkthrough$ go run .go: downloading github.com/athens-artifacts/samplelib v1.0.0 The 🦁 says rawr!```

dive
Go第 32 期

dive

用来探索 docker 镜像每一层文件系统,以及发现缩小镜像体积方法的命令行工具。启动命令:`dive 镜像名`

go-sniffer
Go第 32 期

go-sniffer

该工具通过抓包截取项目中的数据库、redis 请求解析成相应的语句。便于调试,不要修改代码,直接嗅探项目中的数据请求。使用说明如下:```=======================================================================[使用说明]go-sniffer [设备名] [插件名] [插件参数(可选)][例子]go-sniffer en0 redis 抓取redis数据包go-sniffer en0 mysql -p 3306 抓取mysql数据包,端口3306 go-sniffer --[命令]--help 帮助信息--env 环境变量--list 插件列表--ver 版本信息--dev 设备列表[例子]go-sniffer --list 查看可抓取的协议=======================================================================[设备名] : lo0 : 127.0.0.1[设备名] : en0 : x:x:x:x:x5:x 192.168.1.3[设备名] : utun2 : 1.1.11.1=======================================================================```

暂无截图
Go第 32 期

soar

SQL 自动优化和改写的工具。可以自动优化 MySQL 语法族,并且给出为什么要这样优化的理由。功能特点:- 跨平台支持- 目前只支持 MySQL 语法族协议的 SQL 优化- 支持基于启发式算法的语句优化- 支持复杂查询的多列索引优化(UPDATE、INSERT、DELETE、SELECT)- 等等```echo "select title from sakila.film" | ./soar# Query: 25807E6B94BEA72C★ ★ ★ ★ ☆ 80分SELECT title FROM sakila. film## 最外层SELECT未指定WHERE条件* **Item:** CLA.001* **Severity:** L4* **Content:** SELECT语句没有WHERE子句,可能检查比预期更多的行(全表扫描)。对于SELECT COUNT(\*)类型的请求如果不要求精度,建议使用SHOW TABLE STATUS或EXPLAIN替代。```

暂无截图
Go第 32 期

websocketd

把命令行的输出 stdout 和 stderr 重定向为一个 websocket 服务的工具。运行步骤如下:1. 安装命令:`brew install websocketd`2. 创建 count.sh 内容如下3. 运行 count.sh,命令:`./count.sh`4. 启动一个 websocket server,命令:`websocketd --port=8080 ./count.sh`5. 创建 html 文件,代码如下6. 点击打开 count.html 文件,查看效果```count.sh 文件内容如下#!/bin/bash for ((COUNT = 1; COUNT// helper function: log message to screen function log(msg) {document.getElementById('log').textContent += msg + '\n';}// setup websocket with callbacks var ws = new WebSocket('ws://localhost:8080/');ws.onopen = function() {log('CONNECT');};ws.onclose = function() {log('DISCONNECT');};ws.onmessage = function(event) {log('MESSAGE: ' + event.data);};```

暂无截图
Go第 31 期

gitea

一个极易安装、运行快速、安装简单、使用体验良好的自建 Git 服务。采用 Go 作为后端语言,支持 Linux、 macOS、Windows 等,[在线Demo](https://try.gitea.io/)。安装步骤如下:```$ git clone https://github.com/go-gitea/gitea$ cd gitea$ TAGS="bindata" make generate all$ ./gitea web```

暂无截图
Go第 31 期

thunder

Facebook GraphQL 协议的 Go 语言版本。相比之前的其它 GraphQL 库,通过反射结构体的 tag 可以自动生成 schema 给前端,更加便于开发。示例代码:```go// Friend is a small struct representing a person.type Friend struct {FirstName string Last string `graphql:"lastName"` // use a custom name Added time.Date `graphql:"-"` // don't expose over graphql}// FullName builds a friend's full name.func (f *Friend) FullName() string {return fmt.Sprintf("%s %s", f.FirstName, f.Last)}// registerFriend registers custom resolvers on the Friend type.//// Note: registerFriend wouldn't be necessary if the type only// had the default struct field resolvers above.func registerFriend(schema *schemabuilder.Schema) {object := schema.Object("Friend", Friend{})// fullName is a computed field on the Friend{} object.object.FieldFunc("fullName", Friend.FullName)}```

暂无截图
Go第 31 期

wechat-go

微信网页版 API 的 Go 实现。支持模拟微信网页版的登录、联系人、消息收发、机器人回复等功能。示例代码片段:```go func main() {// 创建session, 一个session对应一个机器人// 二维码显示在终端上session, err := wxweb.CreateSession(nil, nil, wxweb.TERMINAL_MODE)if err != nil {logs.Error(err)return}// 注册插件, 所有插件默认是开启的faceplusplus.Register(session)replier.Register(session)switcher.Register(session)gifer.Register(session)// 你也可以自己选择关闭插件里的handler(消息处理器)session.HandlerRegister.DisableByName("faceplusplus")// 登录并接收消息if err := session.LoginAndServe(false); err != nil {logs.Error("session exit, %s", err)}}```

暂无截图
Go第 31 期

wxpay

Go 的微信支付 SDK。微信系的 SDK,填补 Go 在微信支付开发界的空白。支持刷卡支付、统一下单、查询订单、撤销订单、关闭订单等。示例代码如下:```go// 创建支付账户account1 := wxpay.NewAccount("appid", "mchid", "apiKey", false)account2 := wxpay.NewAccount("appid", "mchid", "apiKey", false)// 新建微信支付客户端client := wxpay.NewClient(account1)// 设置证书account.SetCertData("证书地址")// 设置支付账户client.setAccount(account2)// 设置http请求超时时间client.SetHttpConnectTimeoutMs(2000)// 设置http读取信息流超时时间client.SetHttpReadTimeoutMs(1000)// 更改签名类型client.SetSignType(HMACSHA256)```

filebrowser
Go第 30 期

filebrowser

自带文件浏览器的网盘服务。支持功能:文件浏览、文件生成分享链接、批量上传、文件夹创建等服务、用户系统。安装步骤如下:1. 安装:`docker pull filebrowser/filebrowser`2. 配置:配置文件在 `/etc/config.json`,数据库在 `/etc/database.db`3. 启动```docker run \-v /path/to/sites/root:/srv \-v /path/to/config.json:/config.json \-v /path/to/database.db:/database.db \-p 80:80 \filebrowser/filebrowser```4. 访问:然后访问 `http://localhost` 即可,默认是 80 端口,改端口的话修改 `config.json` 文件

暂无截图
Go第 30 期

frp

一个可用于内网穿透的高性能的反向代理应用,支持 tcp、udp、http、https 协议。有时想要让其他人(外网)通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能。例如:微信公众号开发、slack bot 开发等,[中文文档](https://github.com/fatedier/frp/blob/master/README_zh.md)

nes
Go第 30 期

nes

Golang 写的 NES 模拟器。现在可能已经没人玩 NES 游戏了,不过可以了解下怎么写模拟器、如何用 Go 模拟 CPU 和 GPU```1. 安装go get github.com/fogleman/nes 2. 运行nes [rom文件的路径]```

dgraph
Go第 29 期

dgraph

开源、免费的分布式图数据库。如果你在构建用户关系系统,图数据库绝对是比关系型数据库更好的选择。通过 SPARQL 查询一个用户相关的其他用户会比 SQL 快百倍。自带图形界面、RDF 导入工具等必备工具。安装:`curl https://get.dgraph.io -sSf | bash`

git-bug
Go第 29 期

git-bug

嵌入在 Git 中的分布式 bug 追踪、管理系统。用来管理 git 项目的 bug,这些信息会被存在 `.git` 文件夹里,所以其他人克隆也能看到 bug,不需要而外的存储系统。基本命令:```# 安装go get github.com/MichaelMure/git-bug# 创建新 bug git bug new# 把 bug 推送到远程git bug push []# 列出现有的 bug git bug ls```

lazygit
Go第 29 期

lazygit

终端里的 Git 客户端。该客户端启动比各路 GUI 客户端快N倍,功能基本一致。安装 `go get github.com/jesseduffield/lazygit`,然后 `lazygit` 启动。Ready?Go!

暂无截图
Go第 29 期

rclone

Golang 版的 rsync,与 rsync 不同的是 rclone 可以将文件同步到各种云服务的存储桶或 CDN 服务上```# 安装$ curl https://rclone.org/install.sh | sudo bash# 例如同步本地文件夹到 AWS S3 存储桶$ rclone sync /home/local/directory remote:bucket```

暂无截图
Go第 28 期

go-cloud

还在为兼容不同的云平台 SDK 而烦恼吗?go-cloud 通过封装不同云平台的接口,向用户提供统一的 API。例如:阿里云和腾讯云的存储桶 API 不一样,但是通过 go-cloud 的封装,可以使用统一的 API 调用

暂无截图
Go第 28 期

go-mysql

监听 MySQL binlog 的库,可以用来把主库 MySQL 的变化同步到 Redis、elasticsearch 等。同时提供了一个类似阿里 canal 的工具库,监听并解析 binlog 变化。让管理数据和了解数据状态变得更加轻松

暂无截图
Go第 28 期

night

Go 夜读,该项目每周四晚上更新 Go 源码阅读以及线下技术讨论。难得的中文 Golang 源码解析,包含文档和YouTube 视频,干货满满

暂无截图
Go第 28 期

xinge-api-Golang

腾讯信鸽 push v3 版的 Golang SDK。支持函数式配置项、标签推送、全平台推送、批量推送等

appify
Go第 27 期

appify

该项目能够方便的把 Golang 项目包装成 MacOS 可以直接运行的软件。可以用来把自己写的小工具包装成一个其他人可以直接下载并双击使用的软件。提供自定义 logo、名字,分分钟发布自己的 Golang 软件。使用步骤如下:```shell# 1.安装命令$ go get github.com/machinebox/appify# 2.封装命令$ appify -name "My Go Application" -icon ./icon.png /path/to/bin```

暂无截图
Go第 27 期

usql

通用SQL命令行客户端。支持以下所有数据库和协议:| 数据库 (scheme/driver) | 协议别名 [real driver] ||------------------------------|---------------------------------------|| Microsoft SQL Server (mssql) | ms, sqlserver || MySQL (mysql) | my, mariadb, maria, percona, aurora || Oracle (ora) | or, oracle, oci8, oci || PostgreSQL (postgres) | pg, postgresql, pgsql || SQLite3 (sqlite3) | sq, sqlite, file |```安装方法1. 根据你的系统下载最新的 binary 2. 解压缩出 `usql` 或者 `usql.exe`3. 把binary放到你的 `$PATH` (Linux/macOS) 或 `%PATH%` (Windows)路径下4. 然后就可以用`usql`链接到你喜欢的SQL数据库啦~```

暂无截图
Go第 26 期

go-perfbook

《关于 Go 性能优化的思考》概述了编写高性能 Go 代码的最佳实践。[中文](https://github.com/dgryski/go-perfbook/blob/master/performance-zh.md)

暂无截图
Go第 26 期

gopool

Golang 分布式的连接池,协程池。内含 Redis Client 连接池实现,特点如下:- 提供下游的高可用访问,投票机制摘除下游不健康节点- 最小健康比、最大冷却时长可配置- 每个下游节点对应一个 channel,保证负载均衡- 提供连接池状态监控接口包括总连接数、每个 IP 的连接数

lgo
Go第 26 期

lgo

实现像 python 一样的交互式编程,同时整合了 Jupyter Notebook。效果如下:

暂无截图
Go第 25 期

mqant

一款基于 Go 语言的简洁、高性能的分布式游戏服务框架。[快速上手文档](https://github.com/liangdas/mqant/wiki),作者阐述了自己为什么选用 Go 作为开发语言和一些设计思路

暂无截图
Go第 24 期

lux

Go 编写的快速、简单、干净的视频下载程序。支持哔哩哔哩、YouTube 视频网站```$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/Site: 哔哩哔哩 bilibili.com Title: 【2018拜年祭单品】相遇day by day Type: video Stream:[default] -------------------Quality: 高清 1080P60 Size: 220.65 MiB (231363071 Bytes)# download with: annie -f default "URL"16.03 MiB / 220.65 MiB [==>----------------------------] 7.26% 9.65 MiB/s 19s```

rainbond
Go第 22 期

rainbond

[好雨](http://www.rainbond.com/)开源的生产级无服务器 PaaS。用于为云原生应用的整个交付流程提供生产级支持,包括基础设施管理、容器化改造、微服务架构转型、DevOps 工作流落地、混合云多云管理等

mattermost
Go第 21 期

mattermost

采用 Go 语言开发的团队通讯服务项目,可用于自行搭建服务。为团队带来跨 PC 和移动设备的消息收发、文件分享,搜索等功能的通讯服务平台

暂无截图
Go第 20 期

monkey

用 Go 语言写的解析器,包含诸多语言特性。入门实践项目,适合新手熟悉 Go 语言和语言解析器入门

ctop
Go第 19 期

ctop

实现了类 top 命令展示效果的 docker 容器监控工具

echo
Go第 18 期

echo

Go 语言最受欢迎的 Web 框架之一,具有:高性能、便于扩展、轻量的特点,示例代码:```go package main import "github.com/labstack/echo"func main() {e := echo.New()e.GET("/", callback)e.Logger.Fatal(e.Start(":3000"))}func callback(ctx echo.Context) error {return ctx.HTML(200, "你好 echo")}```

tidb
Go第 18 期

tidb

开源分布式 NewSQL 数据库,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。具备如下核心特性:- SQL支持 (TiDB 是 MySQL 兼容的)- 水平线性弹性扩展- 分布式事务- 跨数据中心数据强一致性保证- 故障自恢复的高可用

casbin
Go第 17 期

casbin

访问控制开源库,支持 ACL/RBAC/ABAC 等访问控制模型,支持 MySQL/NoSQL 等存储方式

excelize
Go第 16 期

excelize

操作 XLSX 文件,支持 Microsoft Excel™ 2007 以更高版本

暂无截图
Go第 15 期

aliyungo

非官方的 Aliyun Go语言 SDK 支持API:ECS, OSS, DNS, SLB, RDS, RAM, MNS, STS, SLS, MQ, Push, OpenSearch, DM, Container Service

暂无截图
Go第 14 期

go.uuid

Go 的 [UUID](http://baike.baidu.com/item/UUID) 包

暂无截图
Go第 14 期

poseidon

Poseidon 系统是奇虎 360 开源的一个日志搜索平台,可以在数百万亿条、数百 PB 大小的日志数据中快速分析和检索特定字符串。

dht
Go第 13 期

dht

DHT 实现了 BitTorrent DHT 协议,它包含两种模式,标准模式和爬虫模式。标准模式遵循 DHT 协议,你可以把它当做一个标准的 DHT 组件。爬虫模式是为了嗅探到更多 torrent 文件信息,它在某些方面不遵循 DHT 协议。 基于爬虫模式,你可以打造你自己的 BTDigg,[演示地址](http://bthub.io/)

sshtron
Go第 12 期

sshtron

sshtron 是通过 SSH 运行的多人贪吃蛇游戏,命令行输入:`ssh sshtron.zachlatta.com`,无需安装等待几秒即可进行游戏(因为服务器在国外,很卡😅)

wuzz
Go第 12 期

wuzz

wuzz 是用于调试 HTTP 请求的交互式命令行工具,可以用来检查和修改请求。常用操作如下:| Keybinding | Description || :--------- | :------ || Ctrl+R | 发送请求 || Ctrl+C | 退出 || Ctrl+K,Shift+Tab | 前视图 || Ctlr+J,Tab | 下一个视图 || Ctrl+H,Alt+H | 打开/关闭历史 || Down | 向下移动一条视图线 || Up | 向上移动一条视图线 || Page down | 向下移动一个视图页 || Page up | 向下移动一个视图页 || F2 | 跳转到 URL || F3 | 跳转到查询参数 || F4 | 跳转到 HTTP 方法 || F5 | 跳转到请求体 || F6 | 跳转到 header || F7 | 跳转到搜索 || F8 | 跳转到响应 header || F9 | 跳转到响应体 |

xbar
Go第 12 期

xbar

Bitbar 是可以将任何(自己或别人写好的)脚本的**输出**到 Mac OS 的状态栏上。同时,支持自定义更新频率。例如:定时获取比特币的价格、HelloGitHub 项目的 star 数量,使用步骤如下:1. 运行该程序,选择脚本所在目录2. 确保脚本的有执行权限,赋予执行权限的命令:`chmod +x script.sh`3. 选择 `Refresh all`,刷新使之生效

暂无截图
Go第 11 期

baetyl

百度云开源的边缘计算平台,可将云计算能力拓展至用户现场,提供临时离线、低延时的计算服务,包括设备接入、消息路由、消息远程同步、函数计算、视频接入预处理、AI推断等功能

暂无截图
Go第 11 期

negroni

Negroni 是一个很地道的 Web 中间件,它不是一个框架,是为了方便使用 net/http 而设计的一个库而已。[中文介绍](https://github.com/urfave/negroni/blob/master/translations/README_zh_cn.md)

暂无截图
Go第 10 期

kingshard

kingshard 是一个由 Go 开发高性能 MySQL Proxy 项目,kingshard 在满足基本的读写分离的功能上,致力于简化 MySQL 分库分表操作;能够让 DBA 通过 kingshard 轻松平滑地实现 MySQL 数据库扩容。

kcptun
Go第 8 期

kcptun

也许是世界上最快的 UDP 传输工具,支持 macOS/Linux/Windows/FreeBSD/ARM/Raspberry Pi/OpenWrt。

暂无截图
Go第 7 期

beego

一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架,齐全的文档(中文),丰富的使用案例。[官网地址](https://beego.me)

wukong
Go第 6 期

wukong

悟空引擎是一个高度可定制的全文搜索引擎,[为什么要有悟空引擎](https://github.com/huichen/wukong/blob/master/docs/why_wukong.md),[入门教程](https://github.com/huichen/wukong/blob/master/docs/codelab.md),这个项目的搜索引擎原理如下:

gh-ost
Go第 5 期

gh-ost

GitHub 开源的在线修改表结构工具。目的是解决一个经常碰到的问题:不断变化的产品需求会不断要求更改 MySQL 表结构。gh-ost 通过一种影响小、可控制、可审计、操作简单而且安全的方式来改变线上表结构。[中文简介](http://www.infoq.com/cn/news/2016/08/GitHub-MySQL-gh-ost?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global)

gogs
Go第 5 期

gogs

用 Go 写的一款极易搭建的自助 Git 服务,支持所有平台。就像 GitLab 一样的服务,但是 GitLab 是基于 ruby 语言的。另外:完善的中文文档、支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。[中文介绍](https://github.com/gogits/gogs/blob/master/README_ZH.md)

pholcus
Go第 3 期

pholcus

Pholcus 是 Go 写的重量级爬虫,纯 Go 语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有 Web、GUI、命令行三种操作界面,功能齐全、强大。[使用手册](https://pholcus.gitbooks.io/docs/content/),使用展示如图: