导图社区 golang学习思维导图
Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。下图介绍了golang的相关内容,包括参考资料、安装配置、快速入门、高级特性、HTTP框架、微服务框架等,收藏下图学习笔!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
golang学习
快速入门
参考资料
简明教程:https://geektutu.com/post/quick-golang.html
安装配置
https://golang.google.cn/doc/install
go env -w GOPROXY=https://goproxy.cn,direct
IDE安装配置
vscode安装配置、基本插件、golang插件、工具集、settings.json全局配置
基本命令、module式代码结构、debug调试、交叉编译、编译优化
基础
helloworld、变量、基本数据类型、string与utf8编码、数组与切片、值传递与指针包装对象、字典、指针与引用、const/iota模拟枚举
make与new的区别(slice、map、channel使用之前使用make初始化)
golang中只有值传递即复制,有些对象是复制传递(array/struct),有些对象天生就是指针包装类型(slice/map/channel)
流程控制
if-else、switch-case、for、break、continue等
函数
channel/slice/map是指针的包装对象,可以不用传递指针直接值传递,如果函数需改变slice的长度,则仍需要取地址传递指针;函数也可以作为参数传递
错误处理
error/panic、error is value原则、defer/finally清理、文件操作示例
面向对象
struct/class、new与初始化、interface接口、空接口/任意object、只支持静态反射
并发处理
goroutine、sync同步、channel同步、缓冲与无缓冲channel
测试
功能测试示例(go test -v calc.go calc_test.go -cover)
性能测试示例(go test -v -bench=. -run=calc_b_test.go -benchtime=5s -benchmem -memprofile memprofile.out -cpuprofile profile.out)
性能分析(go tool pprof profile.out)、top/list/web等命令
深入进阶
高级特性
并发原理
传统多线程(如python)、reactor(如java、nodejs)、actor(如scala)、mpg(如golang)、轻量级进程(如erlang)等实现方案
并发编程
golang并发mpg模型、select监听多个channel事件、context上下文(routine控制树)、超时控制
mutex互斥锁、读写锁、routine泄露、协程池
对象池sync.Pool减少GC与内存占用、sync.Once、sync.Cond
http框架
参考资料:https://geektutu.com/post/quick-go-gin.html
net/http、gin等轻量级框架:https://github.com/gin-gonic/gin
curl -XGET 'http://localhost:8080/user/zhangsan?role=teacher'
curl -XPOST -d 'username=zhangsan&age=18' 'http://localhost:8080/users'
curl -XPOST -d '{"username": "zhangsan", "age": 18}' 'http://localhost:8080/users/'
rpc框架
protobuf
参考资料:https://geektutu.com/post/quick-go-protobuf.html https://developers.google.cn/protocol-buffers/docs/gotutorial
protoc/protoc-gen-go工具、protoc --go_out=. *.proto、序列化反序列化
net/rpc
原生rpc框架基于net/http实现,支持同步异步调用(Call/Go),按照规范实现接口即可
req/resp对象属性要求可导出、server定义与service实现需要严格在同一个包中
grpc
参考资料:https://github.com/grpc/grpc-go,protoc-gen-go/protoc-gen-go-grpc插件
代码生成、server/client开发、一次性/异步流式/双向调用、跨语言调用
网络问题导致包下载遗漏(go get package@none 清理重新下载)
ssl/tls
加密通信、秘钥证书、证书信任、双向认证、grpcurl工具等:https://colobu.com/2016/06/07/simple-golang-tls-examples/
微服务框架
kite
参考资料:https://github.com/koding/kite,创新点是基于websocket通信,项目已经不维护了
https://my.oschina.net/jackeyzhang/blog/485567
go-kit
参考资料:https://github.com/go-kit/kit
go-micro
参考资料:https://github.com/asim/go-micro
动手实现简易rpc框架
连接、编码/解码、同步/异步调用、反射、超时控制、服务发现、负载均衡