📥 源码下载
Go官网下载地址:https://golang.org/dl/
Go官方镜像站(推荐):https://golang.google.cn/dl/
- |– 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测试。可以通过这个学到一些特性的使用。
这里我给大家整理归纳为四大块,分别是语法、中间件、后端开发、云原生。
我们通过这个四个板块的学习,逐步进阶成一个可以从事后端服务器开发的工程师。
下面我们简单介绍中间件和云原生:
MySQL、Redis、MongoDB、Kafka这些常见的中间件,这里我们不做赘述。我们着重简述下Gin、etcd、ElasticSearch、gRPC。
-
Gin
Gin是一个用Go (Golang)编写的HTTP web框架。它具有一个类似martinii的API,性能要好得多——快了40倍。
官方Github项目:https://github.com/gin-gonic/gin -
etcd
Etcd是一种强一致性的分布式键值存储,它提供了一种可靠的方法来存储需要被分布式系统或机器集群访问的数据。它可以在网络分区期间优雅地处理leader选举,并且可以容忍机器故障,即使是leader节点。
官网:https://www.elastic.co/cn/elasticsearch/ -
ElasticSearch
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
官网:https://etcd.io/ -
gRPC
gRPC是一个现代的开源高性能远程过程调用(Remote Procedure Call, RPC)框架,可以在任何环境中运行。通过对负载平衡、跟踪、运行状况检查和身份验证的可插拔支持,它可以有效地连接数据中心内和跨数据中心的服务。它也适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。
官网:https://grpc.io/
-
微服务
微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相互通信。 -
DevOps
DevOps是一种重视“软件开发人员”和“IT运维技术人员”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 -
持续部署
持续部署,是一种软件工程方法,意指在软件开发流程中,以自动化方式,频繁而且持续性的,将软件部署到生产环境中,使软件产品能够快速的发展。 持续部署可以整合到持续整合与持续交付(Continuous delivery)的流程之中。 -
容器化
容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操作系统 (OS)。
想要高效地的学习Golang,单单知道学习哪几个板块,是远远不够的。我们还需要将每个板块的知识点进一步细化。
——成功与失败之间,最重要的是不容忽视的细节
那么开始进一步完善之前的知识点:
- 语法基础
- 错误处理
- 包定义以及导入
- 结构体
- 反射原理
- 值传递、引用传递、defer函数
- 并发编程
- goroutine
- 锁
- 通道channel
- runtime包
- Context使用原则
- 网络编程
- tcp/udp编程
- http实现
- websocket
- 源码掌握
- GC机制
- 调度器
- 定时器
- map与切片
- 第三方测试框架
- goconvey
- gostub
- gomock
- monkey
- MySQL
- golang的CRUD
- jmorion/sqlx包
- 连接池
- 异步mysql
- Gin
- RESTful API
- URL查询参数
- query接收数组和Map
- 表单参数
- 上传文件
- 分组路由routel以及中间件授权
- json、struct、xml、yaml、protobuf渲染
- Redis
- go-redis
- get/set/zset操作
- 连接池
- 分布式锁
- MongoDB
- MongoDB-driver
- BSON解析
- CRUD操作
- 文档管理
- 连接池
- Kafka
- saram包
- 同步、异步
- zstd压缩算法
- 横向扩展
- go实现生产消费者
- topic和partition
- 消息分发策略
- 分区副本机制
- etcd
- 原理
- 分布式锁
- etcd操作
- 服务发现于注册
- ElasticSearch
- es服务器
- go- elasticsearch包
- node于cluster
- Index于Document
- 检测与配置
- gRPC
- protoc-gen-go开发包
- .proto文件
- gRPC Service Stub
- rpc接口设计
- 通信模式
- 拦截器
- 多路复用
- 负载均衡
- 安全认证
- 游戏后端
- leaf框架
- 网关、协议、日志、网络模块
- 流媒体Web后端
- Restful接口设计
- scheduler设计
- apidefs结构体
- mysql建库建表
- 小程序后端
- 公众号开发流程
- 微信消息接收与解析
- 公众号验证URL+Token
- 内网环境接口测试
- 后端程序测试脚本
- goadmin后台权限管理系统
- RESTful API设计
- Gin框架
- JWT认证
- 支持Swagger文档
- GORM对象关系映射
- 基于Casbin的RBAC访问控制模型
- goim千万级高并发推送服务
- 单个、多个、广播消息推送
- 应用心跳、tcp、keepalive、http log pulling
- 异步消息推送
- 接入层多协议
- 可拓扑架构
- 注册发现服务
- 消息协议(protobuf)
- goim推送
- grpc编程
- 腾讯云大数据
- TBDS
- 云数据仓库PostgreSQL
- 弹性MapReduce
- WeData数据开发平台
- 微服务
- go-micro原理
- rpc
- 服务间同步
- json/protobuf
- DevOps
- 项目管理 CODING-PM
- 测试管理 CODING-TM
- 制品库 CODING-AR
- 代码托管 CODING-CR
- 持续部署
- spinnake
- webhook外部对接
- 蓝绿分布/金丝雀发布
- SCF云函数
- 快速回滚
- 容器化
- Docker化部署
- k8s集群
- CVM云服务器
- TKE容器服务
《Go语言趣学指南》
《Go语言从入门到进阶实战》
《Go语言高并发与微服务实战》
title | Link |
---|---|
Go (Golang) Tutorial - Go语言入门教程 #1 ~ #22 | 百度网盘:btjy |
GopherCon 2017- Russ Cox - The Future of Go | 百度网盘:zx1w |
GopherCon 2018- George Tankersley - Micro optimizing Go Code | 百度网盘:tzau |
GopherCon 2018- Kat Zien - How Do You Structure Your Go Apps | 百度网盘:qmrq |
GopherCon 2018 Lightning Talk- Aidan Coyle - Lazy JSON Parsing | 百度网盘:g4f5 |
GopherCon 2018 Lightning Talk- Alan Braithwaite - Web Session Management in Go | 百度网盘:2ibm |
GopherCon 2018 Lightning Talk- Hugo Torres - Talking to the Docker Socket | 百度网盘:unlh |
GopherCon 2019- Dave Cheney - Two Go Programs, Three Different Profiling Techniques | 百度网盘:kgjj |
Let's Go - Why I'm moving to Go Programming Language - Why GoLang has a Promising Future | 百度网盘:ewon |
Golang's Garbage - USENIX | 百度网盘:kkl4 |
Golang REST API With Mux | 百度网盘:el4d |
Golang Crash Course | 百度网盘:v4jw |
Brad Fitzpatrick Go 1 11 and beyond | 百度网盘:yg9r |
dotGo 2015 - Rob Pike - Simplicity is Complicated | 百度网盘:594c |
Title | Translation(参考) | 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 和 Kubernetes | |
《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 | 未知 |
- Go in TiDB
- Go 如何助力企业进行微服务转型
- Golang 内存管理探微&mdash&mdash,如何高效使用 Golang 内存以及腾讯云实战-杨晖
- Golang主动式内存缓存的优化探索之路
- Golang在百万亿搜索引擎中的应用
- Golang在阿里巴巴调度系统Sigma中的实践
- Go在大数据开发中的经验总结
- Go在探探后端的工程实践
- Go在证券行情系统中的应用
- Go微服务实战
- Go打造亿级实时分布式平台
- Go语言在讯联扫码支付系统中的成功实践
- Go语言在证券期货行情系统中的实践
- Go语言的抢占式调度
- Improving Go Backend Developer Experience in Grab
- Processing XML and Spreadsheet Data in Go
- The Zen of Go
- Tracing in TiDB
- goplus-gopher-china
- 云原生技术在2B交付中的实践
- 利用夜莺扩展能力打造全方位监控系统
- 基于 Golang 构建高可扩展的云原生 PaaS 平台
- 基于Kubernetes的私有云实战
- 大规模场景下Kubernetes Service负载均衡性能优化
- 天猫DevOps转型实践
- 如何用Go模拟CPU
- 字节跳动在 Go 网络库上的实践
- 深入Go Module
- 深入理解BFE
- 罗辑思维Go语言微服务改造实践
- 谈如何构建易于拆分的单体应用
- 跨境电商的Go服务治理实践
- 阿里巴巴新一代基于 Go 的云原生应用引擎实践
这里我们讲云原生,主要目的是为了大家如何利用云原生技术,快速地使用go语言开发。而不是研究云原生本身的技术。
我们以腾讯云为例,列举腾讯云为我们提供的云原生接口项目:(列举部分我们常见的)
- 实时音视频
- 混流转码
- 房间管理
- 其他接口
- 通话质量监控
- 云点播
- 视频处理
- 参数模板
- 其他接口
- 任务流
- 分发
- 媒资管理
- 视频上传
- 事件通知
- AI 样本管理
- 视频分类
- 任务管理
- 域名管理
- 数据统计
- 视频处理
- 视频处理
- 工作流管理
- 其他接口
- 解析事件通知
- AI 样本管理
- 参数模板
- 任务管理
- 腾讯云剪
- 平台管理
- 项目管理
- SaaS 平台管理
- Headless媒体合成
- 任务管理
- 视频编辑项目
- 媒体资源管理
- 媒资授权
- 团队管理
- 分类管理
- 登录态管理
- 其他接口
- 智能编辑
- 画质重生任务
- 媒体质检任务
- 编辑理解
- 编辑处理
- 即时通信 IM
- 获取云通信 IM 的 SDKAppid
- 短信
- 短信统计
- 发送短信
- 拉取状态
- 短信模板
- 短信签名
- 分布式消息队列
- 集群
- 命名空间
- 主题
- 消息
- CMQ管理
- CMQ消息
- 其他接口
- 生产消费
- 消息队列 Ckafka
- 主题
- ACL
- 实例
- 路由
- 其他接口
- 验证码
- 控制台
- 服务器
- 文本内容安全
- 图片内容检测
- 图片内容审核
- 图片内容检测
- 音频内容检测
- 创建音频审核任务
- 查看任务详情
- 查看审核任务列表
- 短音频识别接口
- 取消任务
- 视频内容安全
- 查看审核任务列表
- 查看任务详情
- 创建视频审核任务
- 取消任务
- 文字识别
- 通用文字识别
- 卡证文字识别
- 票据单据识别
- 汽车场景识别
- 行业文档识别
- 智能扫码
- 营业执照核验
- 增值税发票核验
- 图像分析
- 图像理解
- 图像处理
- 图像审核
- 图像质量检测
- 智能识图
- 商品识别
- 语音识别
- 语音流异步识别
- 录音文件识别
- 一句话识别
- 自学习
- 热词
- 语音合成
- 长文本语音合成
- 通用语音合成
- 智能语音服务
- 语音合成
- 其他接口
- 语音识别
- 云直播
- 水印管理
- 证书管理
- 录制管理
- 直播流管理
- 延播管理
- 直播拉流
- 直播转码
- 截图鉴黄
- 鉴权管理
- 域名管理
- 直播回调
- 统计查询
- 实时日志
- 直播混流
- 小程序 · 云直播
- live
- 其他接口
- 直播
- 人脸识别
- 人脸检测与分析
- 五官定位
- 人脸比对
- 人员库管理
- 人脸搜索
- 人脸验证
- 人脸静态活体检测(高精度版)
- 人脸静态活体检测
- 人员查重
- 内容安全
- 内容安全
- 图片内容安全
- 文本内容安全
- 自定义识别
- 自然语言处理
- 向量技术
- 词法分析
- 句法分析
- 篇章分析
- 知识图谱
- 对话机器人
......