
├── 01 Go语言基础与核心特性
│ ├── 1-1安装Go语言
│ ├── 1-2安装ide
│ ├── 1-3定义变量
│ ├── 1-4内建变量
│ ├── 1-5常量与枚举
│ ├── 1-6条件判断
│ ├── 1-7循环
│ ├── 1-8函数
│ ├── 1-9指针
│ ├── 1-10数组
│ ├── 1-11切片
│ ├── 1-12Map
│ ├── 1-13结构体与方法
│ ├── 1-14封装
│ ├── 1-15接口是什么
│ ├── 1-16Go语言中的鸭子类型
│ ├── 1-17接口的实现
│ ├── 1-18接口的值到底是什么类型
│ ├── 1-19接口组合的威力
│ ├── 1-20Go标准库中的接口
│ ├── 1-21函数式编程
│ ├── 1-22延迟调用
│ ├── 1-23错误处理
│ ├── 1-24测试
│ ├── 1-25协程
│ ├── 1-26Go语言调度器的作用
│ ├── 1-27通道与协程
│ ├── 1-28WaitGroup
│ ├── 1-29Select与协程
│ ├── 1-30锁Mutex
│ └── …
├── 02 Go Web开发与微服务基础
│ ├── 1-31Go语言的依赖管理
│ ├── 1-32GoModule
│ ├── 1-33Gin介绍
│ ├── 1-34Default()与New()初始化都干了什么?有什么区别?
│ ├── 1-35Gin非常贴心的Group功能
│ ├── 1-36Gin是如何获取Url参数的
│ ├── 1-37Gin是如何处理GET和POST请求的
│ ├── 1-38Gin如何处理表单验证
│ ├── 1-39重点!Gin如何使用中间件?
│ ├── 1-40Gin的中间件是如何退出的?
│ ├── 1-41如何让你的Gin程序安全优雅的退出
│ ├── 1-42ORM的前世今生
│ └── …
├── 03 数据库与Gorm实战
│ ├── 1-43Go语言如何连接数据库
│ ├── 1-44如何通过结构体生成表结构
│ ├── 1-45数据库的基础操作-增删改查
│ ├── 1-46Gorm更新零值的第二种解决方案
│ ├── 1-47如何使用Gorm的Tag
│ ├── 1-48避坑-update更新默认值
│ ├── 1-49批量添加数据有几种方法
│ ├── 1-50查询记录的几种方式
│ ├── 1-51带条件的查询
│ ├── 1-52多种更新操作
│ ├── 1-53真删除还是假删除
│ ├── 1-54如何添加有依赖关系的数据
│ └── …
├── 04 RPC与Protobuf
│ ├── 1-57RPC简介
│ ├── 1-58Http的客户端如何调用服务端
│ ├── 1-59你要知道的RPC四要素
│ ├── 1-60第一个原生的GO语言RPC示例
│ ├── 1-61如何让原生rpc跨语言如何高并发
│ ├── 1-62grpc+protobuf在一起
│ ├── 1-63玩转protobuf必备工具
│ ├── 1-64编写第一个Protobuf文件
│ ├── 1-65用代码比较protobufvsjson
│ ├── 1-66如何生成proto对应的protobuf+grpc的代码
│ ├── 1-67尝鲜GRPC+Protobuf
│ ├── 1-68GRPC的3种流式操作
│ └── …
├── 05 微服务注册发现与配置中心
│ ├── 2-1Go语言如何生成JWT
│ ├── 2-2如何解析JWT
│ ├── 2-3gin+jwt在一起
│ ├── 2-4Go语言如何生成验证码
│ ├── 2-5如何使用gin+redis保存图片验证码
│ ├── 2-6跨域真的那么难么
│ ├── 2-7如何安装服务注册和服务发现的基础组件
│ ├── 2-8如何注册和注销你的服务
│ ├── 2-9如何让HTTP服务轻松在注册中心里成功注册-1
│ ├── 2-10如何让HTTP服务轻松在注册中心里成功注册-2
│ ├── 2-11viper+zap改造account服务端
│ ├── 2-12如何让GRPC服务轻松在注册中心里成功注册
│ ├── 2-13如何通过注册中心成功调用到服务端
│ └── …
├── 06 电商微服务项目实战
│ ├── 2-24分析产品数据库解构梳理
│ ├── 2-25产品数据库建表
│ ├── 2-26产品相关业务功能梳理
│ ├── 2-27产品分类相关业务功能梳理
│ ├── 2-28品牌相关业务功能梳理
│ ├── 2-29广告相关业务功能梳理
│ ├── 2-30品牌分类相关业务功能梳理
│ ├── 2-31如何快速启动产品服务
│ ├── 2-32产品模块新建删除修改
│ ├── 2-33brand删除和更新
│ ├── 2-34brand模块单元测试
│ ├── 2-35广告相关业务功能实现
│ └── …
├── 07 分布式系统与高并发技术
│ ├── 2-57库存有多重要
│ ├── 2-58库存设计
│ ├── 2-59库存GRPC服务设计
│ ├── 2-60如何快速让库存服务跑起来
│ ├── 2-61如何设置库存,如何获取库存
│ ├── 2-62如何保证库存归还的数据一致
│ ├── 2-63单元测试-设置库存+获取库存详情
│ ├── 2-64如何迭代扣减库存保证数据一致
│ ├── 2-65如何保证库存归还的数据一致
│ ├── 2-66单元测试-并发扣减库存+库存归还
│ ├── 2-67如何防止双11,618大促下的超卖
│ └── …
├── 08 消息队列与分布式事务
│ ├── 3-3为什么要使用消息队列
│ ├── 3-4如何为Go语言选择合适的消息队列
│ ├── 3-5如何安装和配置消息队列
│ ├── 3-6消息队列的基本概念
│ ├── 3-7消息类型都有哪些
│ ├── 3-8如何用Go语言发送消息到消息队列中
│ ├── 3-9如何用Go语言读取消息队列中的消息
│ ├── 3-10如何利用消息队列解决订单超时的问题
│ ├── 3-11限流、熔断、降级是什么鬼?
│ ├── 3-12限流技术哪家强?
│ ├── 3-13流量高,如何通过qps限流
│ └── …
├── 09 Docker与Kubernetes容器化
│ ├── 3-46Docker是如何改变软件交付模式的
│ ├── 3-47Dockerfile常用命令详解
│ ├── 3-48如何制作自己的Docker镜像1
│ ├── 3-49如何制作自己的Docker镜像2
│ ├── 3-50如何让Docker镜像减肥
│ ├── 3-51如何管理你的镜像
│ ├── 3-52k8s是什么
│ ├── 3-53K8S核心功能
│ ├── 3-54K8S是如何调度的?
│ ├── 3-55K8S如何做健康检查
│ ├── 3-56K8S如何扩缩容
│ └── …
├── 10 网关、搜索与服务治理
│ ├── 3-70为什么需要网关
│ ├── 3-71网关都能做什么
│ ├── 3-72网关内部数据是如何流转的
│ ├── 3-73如何搭建网关
│ ├── 3-74网关是如何进行url转发的
│ ├── 3-75网关是如何请求到我们的服务
│ ├── 3-77如何安装elasticsearch
│ ├── 3-78如何学习elasticsearch
│ ├── 3-79如何向elasticsearch中添加数据
│ └── …
└── 11 前端基础与Vue应用
├── 4-1br标签
├── 4-2html注释
├── 4-5CSS介绍
├── 4-21js基础001
├── 4-22js基本语法及规范
├── 4-34vue安装
├── 4-35第一个vue应用
├── 4-40vue声明周期
├── 4-41vue路由
├── 4-43vuex
└── 4-45前端商城讲解