有没有推荐的golang的练手项目?

2个月前 (02-09) 0 点赞 0 收藏 0 评论 8 已阅读

泻药,鹅厂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 扩展的反向代理负载均衡器,它支持以下特性:

支持http以及https协议支持七种负载均衡算法,分别是:round-robin、random、power of 2 random choice、consistent hash、consistent hash with bounded、ip-hash、least-load。支持心跳检测,故障恢复

TinyBalancer 的源代码仅有一千行左右,通过学习 TinyBalancer ,开发者可以得到以下收获:

深入理解负载均衡算法代码简洁规范用Go语言设计反向代理的技巧单元测试编写技巧工厂设计模式在go语言中的应用

TinyWeb(开发中,后续会更新)

除了开源项目,作者对Go语言进阶的同学有以下一些小指点!

牛客网题库入门

建议刚入门Go语言的同学多刷一些基础题,牛客网上有go语言的练习题库,里面有很多适合新手做的Go语言入门题,多刷刷练练手,提升更快~

单元测试(重点在用,有兴趣看看源码,很短)

作为一名合格的开发者,当然少不了单元测试的编写,一般在工作中,对Go语言代码进行单元测试时通常会使用的两个框架:

Go语言断言库:

Go语言接口测试库:

这两个库会在工作中经常遇到!对单元测试很重要!重要的话说三遍!!!


HTTP

Go语言本身提供的标准库非常强大!通过标准库也可以写出优美的Restful接口。官方推荐的web学习教程:Learn Web Programming in Go by Examples,很短很短,一个小时就能看完

其中这个教程中的路由、Session会话相关的库选择了Google开发的

,这两个库都非常迷你精巧,也符合Go语言的初衷。

(重点在用,有兴趣看看源码,mux和sessions的源码都在一两千行左右)

关系型数据库(会用即可)

如果开发者在实际开发过程中,比较喜欢写纯SQL语句或者对性能敏感度较高的话,作者建议选择sqlx库,这个库对Go语言标准库中的sql进行了二次封装。

如果比较喜欢使用ORM框架,作者推荐选择GORM库。

gorm的文章非常详细,有兴趣的可以看看:GORM Guides。


RPC(会用即可)

这时,你还想学点微服务相关的,首先强烈推荐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)

API官方文档:Protocol Buffer Basics: Go


Go语言代码规也是非常非常重要的东西!!!!

uber的Go语言的代码规范:uber-go/guide,至今是很多Go语言开发团队的典范!强烈推荐熟读一遍

中文翻译版:uber_go_guide_cn

深入原理(不喜欢八股文的可以跳过)

如果你想面试来BAT上班,除了后端必备的东西,Go语言的八股文给大家来一打!!

可以看看左老师的:https://draveness.me/golang/

敲重点!!!!!

Slice原理

Map原理

Channel原理

Go 语言调度器与 Goroutine 实现原理

Go语言内存分配模型

Go语言垃圾回收原理

有空再看看Go语言的内存逃逸分析:Go中的内存逃逸分析 - SegmentFault 思否

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


本文收录在
0评论

登录

忘记密码 ?

切换登录

注册