Golang 开源项目2023年终盘点
作为一名程序员, 我平时非常关注关于Go, Python, Java, C#和Javascript相关的一些开源项目, 这里我整理了一份目前最受欢迎的一些Golang开源项目, 按照Github上Star的数量排序, 依次是
作为一名程序员, 我平时非常关注关于Go, Python, Java, C#和Javascript相关的一些开源项目, 这里我整理了一份目前最受欢迎的一些Golang开源项目, 按照Github上Star的数量排序, 依次是
project-based-learning
这是一个编程相关教程列表,为开发人员可以在其中学习如何从头开始构建应用程序。 这些教程分为不同的主要编程语言。 教程可能涉及多种技术和语言。144k stars
go
Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计成员中包括很多有着数十年编程语言研究领域经验的研究者。
Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言:
- 内置并发编程支持:
- 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。
- 使用通道(channel)来实现协程间的同步和通信。
- 内置了映射(map)和切片(slice)类型。
- 支持多态(polymorphism)。
- 使用接口(interface)来实现裝盒(value boxing)和反射(reflection)。
- 支持指针。
- 支持函数闭包(closure)。
- 支持方法。
- 支持延迟函数调用(defer)。
- 支持类型内嵌(type embedding)。
- 支持类型推断(type deduction or type inference)。
- 内存安全。
- 自动垃圾回收。
- 良好的代码跨平台性。
- 自定义泛型(从Go 1.18开始)。
117k stars.
awesome-go
Awesome Go, Golang相关资料的精选列表, 包含框架、库和成品软件, 它无需月费,贡献者们通过努力工作来维持它的运行。 用筹集到的善款来回报每一位参与者的努力! 您可以看到项目如何计算计费和分配募集到的资金,因为它向整个社区开放。
114k stars
Caddy
在追求性能的道路上,nginx已经一骑绝尘。这种情况下诞生的 Caddy有什么特性呢?
Caddy的作者Matt Holt有这样的理念: 其他Web Server为Web而设计,Caddy为human设计。一句话就是 Caddy主打易用性,使用配置简单。
Caddy有下面这些开箱即用的特性:
- 全自动支持HTTP/2协议,无需任何配置。
- Caddy 使用 Let’s Encrypt 让你的站点全自动变成HTTPS,无需任何配置。
- 合理使用多核多核 得益于go的特性
- 完全支持IPv6环境
- Caddy 对WebSockets有很好的支持
- 自动把Markdown转成 HTML
- Caddy 对log格式的定义很容易
- 易于部署 得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署
- 得益于Go的跨平台特性,Caddy很容易的支持了三大主流系统:Windows、 Linux、Mac
“几乎所有的功能在Caddy里的都是插件,HTTP服务器是插件,高级的TLS特性也是插件,每一行命令实现的功能都是一个插件”
51.3k stars
act
act
是一个 github action
的本地运行工具,可以在本地运行 github action
的 workflow
,方便调试。
46.3k stars
traefik
Traefik (发音和 traffic 相同,采用 Golang 编写)是一个云原生的新型的 HTTP 反向代理、负载均衡软件。它负责接收系统的请求,然后使用合适的组件来对这些请求进行处理。Traefik 兼容所有主流的集群技术,比如 Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon,等等;并且可以同时处理多种方式。(甚至可以用于在裸机上运行的比较旧的软件。)
使用 Traefik,不需要维护或者同步一个独立的配置文件:因为一切都会自动配置,实时操作的(无需重新启动,不会中断连接)。使用 Traefik,你可以花更多的时间在系统的开发和新功能上面,而不是在配置和维护工作状态上面花费大量时间。
Traefik 也被称之为边缘路由器(Edge Router),是你整个平台的大门,拦截并路由每个传入的请求:它知道所有的逻辑和规则,这些规则确定哪些服务处理哪些请求;传统的反向代理需要一个配置文件,其中包含路由到你服务的所有可能路由,而 Traefik 会实时检测服务并自动更新路由规则,可以自动服务发现。
46k stars
v2ray-core
V2Ray是一个优秀的开源网络代理工具,可以帮助你畅爽体验互联网,目前已经全平台支持Windows、Mac、Android、IOS、Linux等操作系统的使用。相对起Shadowsocks来说属于后起之秀,在混淆能力、兼容性、速度上有着独到的优点。
44.2k stars
golang-standards/project-layout
这是 Go 应用程序项目的基本布局。它不是核心 Go 开发团队定义的官方标准;然而,它是 Go 生态系统中一组常见的老项目和新项目的布局模式。其中一些模式比其他模式更受欢迎。它还具有许多小的增强,以及对任何足够大的实际应用程序通用的几个支持目录。
如果你尝试学习 Go,或者你正在为自己建立一个 PoC 或一个玩具项目,这个项目布局是没啥必要的。从一些非常简单的事情开始(一个 main.go
文件绰绰有余)。随着项目的增长,请记住保持代码结构良好非常重要,否则你最终会得到一个凌乱的代码,这其中就包含大量隐藏的依赖项和全局状态。当有更多的人参与这个项目时,你将需要更多的结构。这时候,介绍一种管理包/库的通用方法是很重要的。当你有一个开源项目时,或者当你知道其他项目从你的项目存储库中导入代码时,这时候拥有私有(又名 internal
)包和代码就很重要。克隆存储库,保留你需要的内容,删除其他所有的内容!仅仅因为它在那里并不意味着你必须全部使用它。这些模式都没有在每个项目中使用。甚至 vendor
模式也不是通用的。
43.7k stars
rclone
Rclone
是一个命令行程序,用于管理云存储上的文件。它是云供应商 Web 存储接口的功能丰富的替代方案。超过 70 种云存储产品支持 Rclone
,包括 S3 对象存储、商业和消费者文件存储服务以及标准传输协议。
41.8k stars
Gitea
Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。
在这个领域,名气最响的应该是 Gitlab。
但实际使用中Gitlab也有点问题,首先就是资源占用。Gitlab 是使用 ruby 编写的,好几年之前刚出来的时候,一台1G内存的虚拟主机连安装运行都做不到,着实震惊。
时至今日都已经发展到了以docker镜 像分发,gitlab 仍旧会有体积和运行时资源占用的问题。另一点就是功能,对于一般标准团队来说,gitlab的功能太过于丰富,这是往好的地方说,往坏的地方说就是它包含了太多不需要的东西,而这些东西还占用磁盘和运行时资源。
同时 Gitlab 的许可证政策对新的用户也不是非常友好,主要在于与其他平台的同步上面。
39.9k stars
cobra
cobra既是一个用于创建强大现代CLI应用程序的库,也是一个生成应用程序和命令文件的程序。cobra被用在很多go语言的项目中,比如 Kubernetes、Docker、Istio、ETCD、Hugo、Github CLI等等,此列表包含很多广泛使用cobra的项目列表
34.6k stars
GORM
Gorm 是 Golang 的一个 orm 框架。ORM 是通过实例对象的语法,完成关系型 数据库的操作,是”对象-关系映射”(Object/Relational Mapping) 的缩写。使用 ORM 框架可以让我们更方便的操作数据库。
Gorm官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server
作者是中国人,中文文档齐全,对开发者友好,支持主流数据库。
- 全功能 ORM
- 关联 (拥有一个,拥有多个,属于,多对多,多态,单表继承)
- Create,Save,Update,Delete,Find 中钩子方法
- 支持 Preload、Joins 的预加载
- 事务,嵌套事务,Save Point,Rollback To to Saved Point
- Context、预编译模式、DryRun 模式
- 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
- SQL 构建器,Upsert,锁,Optimizer/Index/Comment Hint,命名参数,子查询
- 复合主键,索引,约束
- 自动迁移
- 自定义 Logger
- 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
- 每个特性都经过了测试的重重考验
- 开发者友好
34.4k stars
cli
这是Github官方的cli命令行工具, 通过此工具, Github将所有功能带到了Terminal终端上。
34.1k stars
alist
一个支持多种存储的文件列表程序, 使用Gin和Solidjs开发。
1、支持多存储平台。例如本地存储、阿里网盘、百度网盘、360网盘、天翼网盘、谷歌云存储、又拍云、夸克网盘和蓝奏云等等常用的网盘。总体算下来差不多支持30左右的网盘平台。
2、配置简单。一个强大的系统,一般来说,安装与配置就很复杂。AList恰恰相反。官方支持多种安装方式,源码安装、Docker安装、一键安装等等安装方式。每一种安装方式都非常的简单,直接安装官网文档操作即可。
3、使用简单。当我们安装好之后,直接就可以访问,上传视频、图片、压缩包和常用的办公软件等等文件格式,都是支持的。
4、体验性好。上传到该软件之后,我们随时随地可以通过一个链接访问、预览、分享和下载等操作。使用起来也非常的便捷。
6、开源使用。项目采用AGPL-3.0 license
开源协议,因此你完全可以放心使用,同时也可以基于此进行二次开发使用。
7、性能好。项目使用Go和Solidjs开发,Go本身性能就是非常好的一款服务端编程语言,这也使得软件在性能上非常好。
33.7k stars
Docker Compose
Compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack
中的 Heat
十分类似。
Compose
定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。Compose
允许用户通过一个单独的 docker-compose.yml
模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose
中有两个重要的概念:
- 服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose
项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose
来进行编排管理。
31.3k stars
LeetCode-Go
说到 LeetCode,作为一个程序员来说,应该不陌生,近几年参加面试都会提到它。国内外的程序员用它刷题主要是为了面试。据历史记载,这个网站 2011 年就成立了,马上就要到自己 10 周年的生日了。每周举行周赛,双周赛,月赛,在有限时间内编码,确实非常能考验人的算法能力。一些大公司赞助冠名的比赛获得前几名除了有奖品,还能直接拿到内推的机会。
作者刷题刷了一年了,想和大家分享分享一些做题心得,解题方法。想和有相同爱好的人交个朋友,一起交流学习。对于自己来说,写题解也是一种提高。把一道深奥的题目讲给一点都没有头绪的人,并能让他完全听懂,很能锻炼人的表达能力。在讲解中很可能还会遇到听者的一些提问,这些问题可能是自己的知识漏洞,强迫自己去弥补。笔者在公司做过相关的分享,感受很深,双方受益都还不错。
31.1k stars
PhotoPrism
基于 go 语言和 Google TensorFlow 开发,支持人脸识别、元数据提取和强大的搜索, 是一个非常强大的照片管理解决方案。虽然是 web 应用,但是无论是在手机、平板电脑还是台式电脑上,PhotoPrism 都提供了原生应用般的体验。
photoprism有几个优点:
1、支持AI识别,支持搜索,不过准确度一般。
2、高级提取元数据。支持的字段包括标题、说明、日期、位置、相机、镜头、ISO、F 值、曝光、焦距、主题、艺术家、关键字和版权。
3、支持地图和地点。
4、拥有丰富的文件格式支持,支持索引、查看和转换最流行的图像、视频和 RAW 格式,包括 JPEG、PNG、GIF、BMP、HEIF、HEIC、MP4、MOV、WebP 和 WebM。我们的目标是为所有RAW 图像提供一流的支持,无论相机品牌和型号。
5、支持重复检测。
6、支持使用PhotoSync在后台安全地备份 iOS 和 Android 手机。Microsoft 的 Windows Explorer 和 Apple 的 Finder 等 WebDAV 客户端可以直接连接到 PhotoPrism,允许您从计算机打开、编辑和删除文件,就像它们在本地一样。
30.6k stars
Fiber
Fiber是一个受到 Express 启发的Web框架,基于使用 Go 语言编写的最快的 HTTP 引擎 Fasthttp 构建。旨在通过零内存分配和高性能服务,使快速开发更加简便。
从 Node.js 切换到 Go 的新 gopher
在开始构建 Web
应用程序或微服务之前需要经历一段艰难的学习过程。 而 Fiber
,一个基于极简主义并且遵循 UNIX 方式创建的 Web 框架, 使新的 gopher
可以在热烈和可信赖的欢迎中迅速进入 Go
的世界。
Fiber
受到了互联网上最流行的Web
框架Express
的启发 。我们结合了Express
的易用性和Go
的原始性能 。如果您曾经使用Node.js
构建Web
应用程序(使用 Express 或类似框架),那么许多方法和原理对您来说应该非常易懂。
29.7k stars
pocketbase
PocketBase 是一个 Go 编写的开源后端 [[BaaS]] Backend-as-a-Service,只用了一个二进制文件就可以实现:
- 内嵌的 SQLite 数据库
- Auth 管理
- 内置的文件存储和用户管理
- 方便的 Admin 管理面板(Dashboard) 管理所有的资源
- 简单的 REST-ish API
28.5k stars
linkedin-skill-assessments-quizzes
LinkedIn 技能评估答案 2023 的完整参考(aws-lambda、rest-api、javascript、react、git、html、jquery、mongodb、java、Go、python、机器学习、power-point)linkedin excel 测试 lösungen、linkedin 机器学习测试 LinkedIn 测试题及答案
27.7k stars
Mattermost
Mattermost是一套开放源代码、可自行架设的在线聊天服务,有分享文件、搜索与集成其他服务等功能。它被设计成用于组织与公司的内部沟通,且主要将其作为Slack与Microsoft Teams的开放源代码替代品。
Mattermost的代码原本是私有的,因为其被当作游戏开发工作室SpinPunch的内部聊天工具,但不久后就开放源代码了。1.0版本于2015年10月2日发布。
此项目由Mattermost公司维护与开发。Mattermost透过贩售支持服务与未在开放源代码版本中提供的额外功能来盈利。
Mattermost有Windows、macOS与Linux的桌面应用程序,以及iOS与Android的移动应用程序。
在媒体上,Mattermost在大多数情况下被认为是较流行的Slack的替代品。其也以”GitLab Mattermost”之名集成到GitLab中,虽然GitLab在2017年收购了另一个也相当流行的聊天工具Gitter。
27.1k stars
go-zero
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。
使用 go-zero 的好处:
- 轻松获得支撑千万日活服务的稳定性
- 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力
- 无需配置和额外代码
- 微服务治理中间件可无缝集成到其它现有框架使用
- 极简的 API 描述,一键生成各端代码
- 自动校验客户端请求参数合法性
- 大量微服务治理和并发工具包
26.7k stars
go-kit
Go-kit 并不是一个微服务框架,而是一套微服务工具集,我们可以用工具Go-kit为 Go 创建微服务,包含包和接口,有点类似于JAVA Spring Boot,但是没那么强大。可以利用Go-kit提供的API和规范可以创建健壮的,可维护性高的微服务体系,它提供了用于实现系统监控和弹性模式组件的库,例如日志记录、跟踪、限流和熔断等,这些库可以协助开发人员提高微服务架构的性能和稳定性。
25.8k stars