泻药,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语言的八股文给大家来一打!!

敲重点!!!!!


如果想收藏的同时点个赞喔~