21天以实例精通Go服务开发
Table of Contents
第一部分:基础篇(Day 1 - Day 7)—— 打牢Go编程与服务开发根基
-
Day 1:Go 开发环境与工具链
- Go Modules、依赖管理
- 常用 IDE(VSCode、GoLand)与调试技巧
- 使用
go test
进行单元测试
-
Day 2:数据结构与 map 底层
- LeetCode 示例:两数之和(HashMap 应用)
- Go 中 map 的键比较规则,底层实现
- 最佳实践:map 并发访问与 sync.Map
-
Day 3:切片与内存模型
- LeetCode 示例:三数之和 / 滑动窗口
- 切片扩容机制、内存逃逸
- 实战:写一个安全的分页查询函数
-
Day 4:并发基础
- goroutine 与调度原理
- LeetCode 示例:生产者-消费者模型(多线程版)
- 实战:用
channel
实现工作池
-
Day 5:错误处理与上下文
- Go 错误处理哲学
context.Context
的用法(超时、取消、请求范围数据)- 实战:写一个带超时的 HTTP 客户端
-
Day 6:Go 接口与多态
- LeetCode 示例:LRU 缓存(结合接口与结构体)
- 接口设计的最佳实践(参考 Uber Go Style)
- 实战:写一个可替换存储引擎(内存/文件)
-
Day 7:单元测试与基准测试
- Go
testing
框架、基准测试 - LeetCode 示例:排序算法对比基准测试
- 实战:mock 数据库、mock HTTP server
- Go
第二部分:服务篇(Day 8 - Day 14)—— 构建高质量 Go 服务
-
Day 8:Go Web 框架快速上手
- 标准库
net/http
vs Gin/Fiber - 实战:实现用户注册登录接口
- 标准库
-
Day 9:数据存储与 ORM
- SQL 与 NoSQL 选择
- 使用 GORM 访问 MySQL
- LeetCode 示例:数据库模拟题(员工关系/日志统计)
- 实战:任务管理表设计 + CRUD 接口
-
Day 10:配置管理
- Viper 使用
- 12-Factor App 配置最佳实践
- 实战:多环境配置加载(dev/staging/prod)
-
Day 11:日志与监控
- zap、logrus 使用
- OpenTelemetry、Prometheus metrics
- 实战:请求链路追踪(TraceID)
-
Day 12:RESTful API 设计
- OpenAPI/Swagger 文档
- 分页、排序、错误码设计
- 实战:任务列表 API
-
Day 13:gRPC 与微服务通信
- Protobuf 使用
- gRPC 服务与客户端实现
- 实战:提醒服务与任务服务通信
-
Day 14:认证与鉴权
- JWT、OAuth2
- Casbin RBAC 模型
- 实战:实现基于角色的任务权限控制
第三部分:进阶篇(Day 15 - Day 21)—— 工程化与微服务最佳实践
-
Day 15:缓存与性能优化
- LeetCode 示例:前缀和、LRU 缓存优化
- Redis 在微服务中的应用
- 实战:为任务查询增加缓存
-
Day 16:消息队列与异步任务
- Kafka、NATS、RabbitMQ 简介
- 实战:任务提醒推送异步化
-
Day 17:服务注册与发现
- etcd、Consul、Nacos
- gRPC + etcd 服务发现实践
-
Day 18:容器化与部署
- Dockerfile 最佳实践
- CI/CD(GitHub Actions/GitLab CI)
- 实战:构建并发布任务服务镜像
-
Day 19:Kubernetes 微服务部署
- Deployment、Service、Ingress
- ConfigMap、Secret、Helm
- 实战:任务系统在 k8s 上部署
-
Day 20:弹性与容错
- 熔断、限流、重试
- Go 实现 Hystrix 模式
- 实战:任务提醒服务的容错处理
-
Day 21:综合项目演练
- 项目回顾:任务管理 + 提醒系统
- 接口文档、架构设计
- 压测与优化
- 最佳实践总结
Comments |0|
Category: 似水流年