Home

Awesome

👏👏👏最全空降Golang资料补给包(满血战斗),包含文章,书籍,作者论文,理论分析,开源框架,云原生,大佬视频,大厂实战分享ppt

<div align=center> <img width="70%" height="70%" src="https://user-images.githubusercontent.com/87457873/128655088-7e2704a7-ce37-4e78-9b9c-a8865597f364.png"/>

—— 未来服务器端编程语言

<br>
🏃‍♂<br>     环境安装     📚<br>    知识归纳    📕<br>    电子书籍   
📖<br>精选文章💽<br>大佬视频🏗<br>开源项目
📄<br>学术论文🖼<br>大会PPT<br>云原生
</div> <br>

📣【今日推荐阅读】Go自带库的使用说明

🔠【还不会入门,找我】Go语言基础语法宝典

🗡【一册在手,天下我有】Go 语言参考手册

🤔【导图辅助,有如神助】Golang 入门笔记(pdf版下载)

🧑‍🤝‍🧑 Rob Pike谈Google Go

<div align=center> <img width="50%" height="50%" src="https://user-images.githubusercontent.com/87457873/129528229-cb400b53-90a4-440b-982b-1af4b20fe7e4.png"/>

Google · Go语言之父

</div>
1. Rob,你创建了Google Go这门语言。什么是Google Go?能简明扼要的介绍一下Google Go吗?
2. Go的主要特点是什么?有什么重要功能?
3. 在我们继续话题之前,能否解释一下为什么Go编译器能达到那么快的编译速度呢?有什么法宝?
4. 让我们开始聊聊Go里的类型系统吧。Go里面有结构(struct)、有类型(type),那么Go里的类型是什么?
5. 那么这些方法只是在包内部可见喽?
6. 你的意思是,我可以给int增加方法,但是必须先使用typedef吗?
7. 你们借鉴了Ruby里开放类的思想,这很有意思。Ruby的开放类实际上是可以修改类并增加新的方法,这是有破坏性的,但是你们的方法本质上是安全的,因为创建了新的东西。
8. 你还提到了typedef,是叫typedef吧?
9. Typedef在C里是一种预处理指令吗?【编辑注/免责申明:C语言里的typedef与预处理无关】
10. 我们从底层说起吧,在Go里最小的类型是什么?
11. 但是,int这样的类型是值类型对吧.
12. 它们类似C++的引用吗?
13. 它是结构内部一个复合对象。
14. 你提到过接口比较有趣,那下面咱们就谈谈这一部分。
15. 某种程度上有点类似结构化类型系统(structural typing)
16. 你提到过类,但Go没有类,对吧。
17. 但是没有类怎么去写代码?
18. 如果我有一些行为要实现,而且想放在多个structs里,怎么去共享这些行为?
19. 如果有多重继承命名冲突的问题该怎么办?
20. 因为系统中没有根对象或根类,如果我想得到一个拥有不同类型的结构的列表,应该怎么办?
21. Go里有叫做Goroutines的东西,它们和coroutines有什么区别?不一样么?
22. 你提到你们使用了m:n线程模型,即m个coroutines映射到n个线程上?
23. Goroutines有用于通信的通道吗?
24. 你提到你们有缓存的同步通道和异步通道。
25. 每个Goroutine就像是一个小的线程,可以这么给读者解释吧。
26. 它们是轻量级的。但是每个线程同样都预分配栈空间,因而它们非常耗费资,Goroutines是怎么处理的呢?
27. 我们再来谈谈自动化方面的东西,最初你们是将Go语言作为系统级语言来推广的,一个有趣的选择是使用了垃圾回收器,但是它速度并不快或者说有垃圾回收间歇问题,如果用它写一个操作系统的话,这是非常烦人的。你们是怎么看这一问题的?
28. 有没有方法能够避免直面垃圾回收器,比如用一些大容量缓存,我们可以把数据扔进去。
29. 最后一个问题:Go是系统级语言还是应用级语言?

📚 资料包

<div align=center>

128686978-0d16ca8a-d070-4c3b-a4d9-640b265acc8d

</div>

📕 书籍

入门

《Go 入门指南》

《Go语言101》

《Go语言趣学指南》

《Go语言从入门到进阶实战》

《Go语言学习笔记》

《Go语言入门经典》:hdcy

《Go语言编程》

《Go语言实战》

《Go Web 编程》

《Go语言编程入门与实战技巧》:sgro

进阶

《Go 语言圣经》

《Go专家编程》

《Go 语法树入门》

《Go语言程序设计》:flnj

《Go语言高级编程》

《Go语言核心编程》:v9fl

《Go语言高并发与微服务实战》

《Go并发编程实战》第2版:lsn0

《Go语言并发之道》:6ppw


📖 文章

当红开发语言Go,真的是未来的技术主流吗?

Go语言之goroutine协程详解

Golang之sync.Pool对象池对象重用机制总结

Golang的GC和内存逃逸

GO语言之垃圾回收机制

Go内存分配那些事,就这么简单

Go语言TCP Socket编程

从源码角度看 Golang 的调度

Protobuf入门

etcd的使用

深入理解 Go Map

用go实现常见的数据结构

Go 程序是怎样跑起来的

go内存管理一:系统内存管理

go内存管理二:go内存管理

图解Go内存分配器

Go常用命令


💽 视频

<br> <div align=center>
titleLink
【golang云原生】 golang实现行程码、健康码识别点击观看
【golang云原生】 golang 实现ping网络指令点击观看
【golang云原生】golang 借助公有云实现点播转直播点击观看
【golang云原生】如何使用gin框架构建web项目脚手架点击观看
【golang云原生】 为什么jwt会被广泛应用点击观看
【golang云原生】 golang实现生产者消费者模式点击观看
【golang云原生】 go语言UDP网络编程之发送DNS请求点击观看
【golang云原生】 go语言快速实现一个web互动直播(一)点击观看
【golang云原生】go语言快速实现一个web互动直播(二)点击观看
【golang云原生】golang实现文件上传到对象存储点击观看
【golang云原生】论一款强大的验证组件在web开发中的重要性点击观看
【golang云原生】golang配合公有云实现机器人流量的拦截点击观看
【golang云原生】golang面试题实现一个内存缓存系统点击观看
【golang云原生】最受欢迎的开源日志框架logrus实战应用点击观看
【golang云原生】基于公有云快速实现邮件推送点击观看
</div>

🏗 开源项目(段位纯属分类管理,不分先后)

王者段位

<div align=center>
项目简介
docker无人不知的虚拟化平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。
golanggo本身,也是用go语言实现的,包括他的编译器,要研究go源代码的可以看此项目录
kubernetesGoogle出品,用于调度和管理docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。
gogs一款基于git的代码托管系统,类似于github和gitlab,不过其小巧易用,功能强大,部署方便,也有不少用户在使用。
syncthing开源的文件同步系统,它使用了其独有的对等自由块交换协议,速度很快,据说可以替换BitTorrent Sync。
grafana一款开源监控度量的看板系统,可以接Graphite、Elasticsearch、InfluxDB等数据源,定制化很高。
etcd一款分布式的,可靠的K-V存储系统,使用简单,速度快,又安全。
hub一款更便捷使用github的工具,包装并且扩展了git,提供了很多特性和功能,使用和git差不多。
influxdb可伸缩的数据库,使用场景主要用来存储测量数据,事件点击以及其他等实时分析数据,用来做监控性能很不错。
caddy快速的,跨平台的HTTP/2 Web服务器。
beego国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔。
martini也是一款不错的Web框架。
cayleyGoogle开源的图数据库,这是一个NoSql数据库,适合处理复杂的,但是结构化低的数据,适用于社交网络,推荐系统等。
nsq一款开源的实时的,分布式的消息中间件系统。
codisCodis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。
delve这个Go开发者都知道,一款go应用开发的调试工具。
cobracobra是一个命令行go库,可以让你创建非常强大的,现代的CLI命令行应用。
megaease/easegress云本地流量编排系统
</div>

大师段位

项目简介
ViperViper 是一个完整的 Go 应用配置解决方案。
echo高性能、极简主义的 Go Web 框架
uber-go/fx一个基于依赖注入的 Go 应用框架。
Swagger生成器、UI 和验证
LogrusLogrus 是一个适用于 Go(golang) 的结构化记录器,与标准库记录器完全 API 兼容。
mockeryGolang 的模拟代码自动生成器
migrate用 Go 编写的数据库迁移。作为 CLI 使用或作为库导入。
NSQ消息传递
sqlxsqlx 是一个库,它在 Go 的标准 database/sql 库上提供了一组扩展。
Macaron一款具有高生产力和模块化设计的 Go Web 框架
Gin轻量 Web 框架
zinxTCP并发服务器框架
NegroniWeb 中间件
csrfCSRF 中间件
handlersGo的net/http包的有用处理程序集合
SizedWaitGroup并发控制
concurrent并发工具包
grab文件下载
go-netty网络框架

钻石段位

项目简介
gorilla/websocketGo的一个快速、经过良好测试和广泛使用的WebSocket实现。
nhooyr/websocket 常用的Go WebSocket库
websocketdGo 开发的一键搭建 WebSocket 服务器命令行工具
wsWebSocket 开发包
melodyWebSocket 服务框架
neffos一个现代的、快速的、可扩展的websocket框架,带有优雅的Go API
fastwsfastttp和net/http的快速WebSocket实现。默认支持并发读写操作。
Centrifugo实时消息服务器,可以与任何语言编写的应用程序后端结合使用
goim支持集群的 im 及实时推送服务
Tinode即时消息服务器,通过 websocket/JSON 或 gRPC/TCP 等协议传输
WebRTCWebRTC 实现
Berty安全的点对点通讯软件
Keybase即时通讯工具 Keybase 全平台客户端
golang/protobufGo 版本的 Protocol Buffers
gogo/protobufgolang/protobuf 的扩展替代品
Objx操作 map、slice、JSON 等数据的包
gorilla/rpc构建基于 HTTP 的 RPC 服务,比如 JSON-RPC
Twirp基于 Protobuf 的 RPC 框架,与 gRPC 类似

铂金段位

项目简介
dubbo-goApache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁,与 gRPC/Spring Cloud 生态互联互通,带领 Java 生态享受云原生时代的技术红利
NSQ实时分布式消息平台
NATS云原生消息中间件
saramaKafka 客户端
InfluxDB时间序列数据库
Thanos支持 Prometheus 简化部署、高可用、分布式存储
CockroachDB分布式 SQL 数据库
RadonDB基于 MySQL 研发的新一代分布式关系型数据库
TiDB分布式关系型数据库,兼容 MySQL 协议
AresDBUber 开源的 GPU 驱动的实时分析存储&查询引擎
leveldbLevelDB 的 Go 实现
GCachegolang的内存缓存库。支持多种驱逐政策:LRU、LFU、ARC
go-cacheGo的内存键:值存储/缓存(类似于Memcached)库,适用于单机应用程序。
groupcache分布式缓存
cachego支持 Redis、Bolt 等缓存接口
go-tagexpr字节跳动开源的结构体标签表达式解释器
goavFFmpeg 视频处理
rosedb基于 bitcask 的 k-v 存储模型,高效、快速、简洁

🖼 大厂实战分享ppt


📄 论文与理论分析

<div align=center>
TitleTranslation(参考)Company
《Acme: A User Interface for Programmers》程序员的用户界面AT&T,贝尔实验室
《Understanding Real-World Concurrency Bugs in Go》了解真实go中的并发bug宾夕法尼亚州立大学
《A Formal Model of the Kubernetes Container Framework》Kubernetes容器框架的形式化模型奥斯陆大学
《Running Cloud Native Applications on DigitalOcean Kubernetes》在DigitalOcean Kubernetes上运行云本地应用未知
《Kubernetes as an Availability Manager for Microservice Applications》Kubernetes作为微服务应用程序的可用性管理器康科迪亚大学
《Borg, Omega, and Kubernetes》Borg、Omega 和 KubernetesGOOGLE
《A Raft-based HTAP Database》基于raft的HTAP数据库VLDB基金会论文集
《For Reproducible Environments and Containerized Applications》用于可复制环境和容器化应用程序圣克劳德州立大学
《Escape from Escape Analysis of Golang》golang逃离分析清华大学
《Using gRPC with Go》在Go中使用gRPC未知
</div>

☁ 云原生

这里我们讲云原生,主要目的是为了大家如何利用云原生技术,快速地使用go语言开发。而不是研究云原生本身的技术。

我们以腾讯云为例,列举腾讯云为我们提供的云原生接口项目:(列举部分我们常见的)

📥 源码下载

Go官网下载地址:https://golang.org/dl/

Go官方镜像站(推荐):https://golang.google.cn/dl/

🏃‍♂ 开启Go语言学习之旅,从"Hello World"开始!

<div align=center>

image

</div>

Step 1:了解源代码目录结构

<div align=center>

image

</div> <br>
文件名文件属性
AUTHORS文件,官方 Go语言作者列表
CONTRIBUTORS文件,第三方贡献者列表
LICENSE文件,Go语言发布授权协议
PATENTS文件,专利
README文件,README文件,大家懂的。提一下,经常有人说:Go官网打不开啊,怎么办?其实,在README中说到了这个。该文件还提到,如果通过二进制安装,需要设置GOROOT环境变量;如果你将Go放在了/usr/local/go中,则可以不设置该环境变量(Windows下是C:\go)。当然,建议不管什么时候都设置GOROOT。另外,确保$GOROOT/bin在PATH目录中。
VERSION文件,当前Go版本
api目录,包含所有API列表,方便IDE使用
doc目录,Go语言的各种文档,官网上有的,这里基本会有,这也就是为什么说可以本地搭建”官网”。这里面有不少其他资源,比如gopher图标之类的。
favicon.ico文件,官网logo
include目录,Go 基本工具依赖的库的头文件
lib目录,文档模板
misc目录,其他的一些工具,相当于大杂烩,大部分是各种编辑器的Go语言支持,还有cgo的例子等
robots.txt文件,搜索引擎robots文件
src目录,Go语言源码:基本工具(编译器等)、标准库
test目录,包含很多测试程序(并非_test.go方式的单元测试,而是包含main包的测试),包括一些fixbug测试。可以通过这个学到一些特性的使用。

Step 2:Golang开发后台掌握哪些知识点?

这里我给大家整理归纳为四大块,分别是语法中间件后端开发云原生

我们通过这个四个板块的学习,逐步进阶成一个可以从事后端服务器开发的工程师。

<div align=center> <img width="70%" height="70%" src="https://user-images.githubusercontent.com/87457873/128867223-af882655-eaa7-4523-b737-b3de4c4f5b56.png"/> </div>

下面我们简单介绍中间件和云原生:

中间件

MySQL、Redis、MongoDB、Kafka这些常见的中间件,这里我们不做赘述。我们着重简述下Gin、etcd、ElasticSearch、gRPC。

云原生

Step 3:如何高效地学习Go?

想要高效地的学习Golang,单单知道学习哪几个板块,是远远不够的。我们还需要将每个板块的知识点进一步细化。<br> ——成功与失败之间,最重要的是不容忽视的细节<br>

那么开始进一步完善之前的知识点:

<div align=center> <img width="70%" height="70%" src="https://user-images.githubusercontent.com/87457873/128875154-16e7ce3a-5817-4cb5-804a-1ad4b5bc5b5b.png"/> </div>

语法

<div align=center> <img width="70%" height="70%" src="https://user-images.githubusercontent.com/87457873/128885748-5d075c80-c5d2-4f3b-bb2c-1939970b1305.png"/> </div>

中间件

<div align=center> <img width="70%" height="70%" src="https://user-images.githubusercontent.com/87457873/128963340-173a3516-c0ec-470b-8546-ef6a34683066.png"/> </div>

后端开发

<div align=center> <img width="70%" height="70%" src="https://user-images.githubusercontent.com/87457873/128963600-fcca8120-e8e1-4a69-9562-e112e541e973.png"/> </div>

云原生

🤝 鸣谢

本repo励志作为全网golang资料最全的repo,因此非常感谢各位贡献patch的朋友, 还有很多在issue里面出谋划策的朋友,为此衷心感谢。
<a href="https://github.com/wangbojing"> <img src="https://avatars.githubusercontent.com/u/18027560?v=4" width="40px"> </a> <a href="https://github.com/wenchao1024"> <img src="https://avatars.githubusercontent.com/u/87457873?v=4" width="40px"> </a> <a href="https://github.com/aiyijing"> <img src="https://avatars.githubusercontent.com/u/11643145?v=4" width="40px"> </a> <a href="https://github.com/nathan-tw"> <img src="https://avatars.githubusercontent.com/u/61750268?v=4" width="40px"> </a> <a href="https://github.com/louis70109"> <img src="https://avatars.githubusercontent.com/u/6940010?v=4" width="40px"> </a> <a href="https://github.com/z774379121"> <img src="https://avatars.githubusercontent.com/u/32691620?v=4" width="40px"> </a> <a href="https://github.com/roseduan"> <img src="https://avatars.githubusercontent.com/u/22375523?v=4" width="40px"> </a> <a href="https://github.com/IanSmith123"> <img src="https://avatars.githubusercontent.com/u/19611084?v=4" width="40px"> </a> <br/> <br/> <h3 >零领工作</h3>
实时提供,每周发布北京,上海,广州,深圳,杭州,南京,合肥,武汉,长沙,重庆,成都,西安,厦门的c/c++,golang方向的招聘岗位信息。 校招,社招,实习岗位都有的。 面经,八股,简历都有的
<img src="https://img.0voice.com/public/0e59910091576beaebe20f303357edf7.jpg" alt="零领工作" style="width:300px;height:300px;"> <br/> <br/>