泻药,Go后端工程师路过
首先表示,初学者go语言的学习项目不应该是K8s、Docker这种,K8s现有代码接近50万行!!这很难练手的!
我还是推荐初学者学习一些500行至3000行的项目练手,比如极客兔兔那个系列就是很好的例子!
(收藏同时点个赞哈,作者写这么多很辛苦的)
同时,作者推出一个tiny系列:tinyrpc、tinybalancer、redis-tools等。每个系列的代码约1千行左右,可以帮助gopher深入学习go语言,之后会陆续发链接和地址
Redis-Tools
redis-tools聚合了后端小伙伴常见的工具集,它有以下特性:
- 分布式锁、自旋锁
- 原子命令 compare and swap
- 原子命令 compare and delete
redis-tools 代码量极少,学习它,开发者可以得到以下收获:
- 代码简洁规范
- redis lua脚本实现
- redis 分布式锁的正确实现
TinyRPC
TinyRPC 是基于Go语言标准库 net/rpc 扩展的远程过程调用框架,它具有以下特性:
- 基于TCP传输层协议
- 支持多种压缩格式:gzip、snappy、zlib;
- 基于二进制的 Protocol Buffer 序列化协议:具有协议编码小及高扩展性和跨平台性;
- 支持生成工具:TinyRPC提供的 protoc-gen-tinyrpc 插件可以帮助开发者快速定义自己的服务;
TinyRPC 的源代码仅有一千行左右,通过学习 TinyRPC ,开发者可以得到以下收获:
- 代码简洁规范
- 涵盖大多数 Go 语言基础用法和高级特性
- 单元测试编写技巧
- TCP流中处理数据包的技巧
- RPC框架的设计理念
TinyBalancer
TinyBalancer 是基于Go语言标准库 net/http/httputil 扩展的反向代理负载均衡器,它支持以下特性:
round-robin、random、power of 2 random choice、consistent hash、consistent hash with bounded、ip-hash、least-load
TinyBalancer 的源代码仅有一千行左右,通过学习 TinyBalancer ,开发者可以得到以下收获:
- 深入理解负载均衡算法
- 代码简洁规范
- 用Go语言设计反向代理的技巧
- 单元测试编写技巧
- 工厂设计模式在go语言中的应用
TinyWeb(开发中,后续会更新)
除了自己开源项目,作者还喜欢以下开源项目!!
小而美的DB: RoseDB
如果喜欢K-V数据库的小伙伴可以看看,可以深入学习数据结构和K-V数据库的日志设计模式,这个作者很喜欢!很喜欢!
牛客网题库入门
建议刚入门Go语言的同学多刷一些基础题,牛客网上有go语言的练习题库,里面有很多适合新手做的Go语言入门题,多刷刷练练手,提升更快~
单元测试(源码值得学习!很短!)
作为一名合格的开发者,当然少不了单元测试的编写,一般在工作中,对Go语言代码进行单元测试时通常会使用的两个框架:
Go语言断言库:
Go语言接口测试库:
这两个库会在工作中经常遇到!对单元测试很重要!重要的话说三遍!!!
HTTP(源码值得学习!很短!)
Go语言本身提供的标准库非常强大!通过标准库也可以写出优美的Restful接口。官方推荐的web学习教程:Learn Web Programming in Go by Examples,很短很短,一个小时就能看完!
其中这个教程中的路由、Session会话相关的库选择了Google开发的
,这两个库都非常迷你精巧,也符合Go语言的初衷。
(重点在用,有兴趣看看源码,mux和sessions的源码都在一两千行左右)
关系型数据库(会用即可,ORM这类框架源码没什么看的!)
如果开发者在实际开发过程中,比较喜欢写纯SQL语句或者对性能敏感度较高的话,作者建议选择sqlx库,这个库对Go语言标准库中的sql进行了二次封装。
如果比较喜欢使用ORM框架,作者推荐选择GORM库。
gorm的文章非常详细,有兴趣的可以看看:GORM Guides。
RPC(会用即可,GRPC-GO的源码接近16万行,不推荐初学者看!)
这时,你还想学点微服务相关的,首先强烈推荐grpc-go!!gRPC
grpc是google推出的,基于http2.0和protocol buffer协议的远程过程调用框架
其次,有兴趣的话你可以看看它的生态,https://github.com/grpc-ecosystem ,这个生态合辑包含监控、限流、日志等等,堪比哆啦A梦的小肚兜!!
序列化协议(可以看看Protocol buffer的编码原理!精髓!)
关于序列化协议,web常用的文本序列化协议就是JSON了,二进制序列化协议多数为Protocol buffer
Protocol buffer的指南:Language Guide (proto3)
Go语言代码规也是非常非常重要的东西!!!!
uber的Go语言的代码规范:uber-go/guide,至今是很多Go语言开发团队的典范!强烈推荐熟读一遍
中文翻译版:uber_go_guide_cn
深入原理(不喜欢八股文的可以跳过)
如果你想面试来BAT上班,除了后端必备的东西,Go语言的八股文给大家来一打!!
敲重点!!!!!
如果想收藏的同时点个赞喔~