收藏

深入Go底层原理,重写Redis中间件实战

学透Go核心技术,晋升Offer收割机

深入Go底层原理,重写Redis中间件实战

¥499.00
已完结 难度 高级 时长 20小时 学习人数 457 综合评分 10.00
  • 第1章 课程导学与学习指南 2 节 | 12分钟

    本章主要对课程进行整体介绍,在学习方法上提出一些建议和指导。

    收起列表

    • 图文: 1-1 课前必读(不读错过一个亿)
    • 视频: 1-2 Go课程概览 (11:53) 试看
  • 第2章 Go的开发环境搭建与快速入门 4 节 | 13分钟

    本章指导同学安装学习环境,并指导没有GO基础的同学快速入门GO语言,达到跟上进阶课程的目的。

    收起列表

    • 视频: 2-1 快速搭建Go学习环境 (12:57)
    • 图文: 2-2 GO 语言超快速入门
    • 图文: 2-3 如何安装Go
    • 图文: 2-4 GO语言快速入门练习
  • 第3章 带你重新认识Go语言 8 节 | 87分钟

    本章介绍GO语言底层的几个本质特性,让同学们站在高处审视将要深入学习的这门技术。并在选择具体语言技术时,心中有数。

    收起列表

    • 视频: 3-1 为什么要用Go语言? (15:19)
    • 视频: 3-2 何为Runtime? (08:49)
    • 视频: 3-3 Go程序是如何编译的? (15:30)
    • 视频: 3-4 Go程序是如何运行的? (19:44)
    • 视频: 3-5 Go语言是面向对象的吗? (11:57)
    • 视频: 3-6 实战:企业级 Go 项目包管理方法 (15:32)
    • 图文: 3-7 面试题
    • 图文: 3-8 本章作业
  • 第4章 Go在高并发下的数据结构 16 节 | 193分钟

    本章主要带大家研究GO基本类型的底层原理,刷新对GO基本类型的认识。详细讲解了数组、字符串、接口、Sync.map等数据结构的原理,仔细研究源码,为实战手撕Redis打下基础。

    收起列表

    • 视频: 4-1 什么变量的大小是 0 字节? (16:25)
    • 视频: 4-2 数组,字符串,切片底层是一样的吗?(一) (18:53)
    • 视频: 4-3 数组,字符串,切片底层是一样的吗?(二) (16:31)
    • 视频: 4-4 map:重写 Redis 能用它吗?(一) (13:54)
    • 视频: 4-5 map:重写 Redis 能用它吗?(二) (13:53)
    • 视频: 4-6 map为什么需要扩容? (13:02) 试看
    • 视频: 4-7 怎么解决map的并发问题?(一) (13:41)
    • 视频: 4-8 怎么解决map的并发问题?(二) (11:11)
    • 视频: 4-9 接口--隐式更好还是显式更好? (一) (12:53)
    • 视频: 4-10 接口--隐式更好还是显式更好?(二) (11:29)
    • 视频: 4-11 nil,空接口,空结构体有什么区别? (13:36)
    • 视频: 4-12 实战:内存对齐是如何优化程序效率的?(一) (12:07)
    • 视频: 4-13 实战:内存对齐是如何优化程序效率的?(二) (17:35)
    • 图文: 4-14 本章作业
    • 图文: 4-15 面试题
    • 视频: 4-16 本章小结 (07:10)
  • 第5章 高并发的核心工具:Goroutine 协程 11 节 | 116分钟

    协程是GO的精髓,没有协程就没有GO。本章作为最核心的章节,会详解协程的本章以及协程的调度方法。并精读协程执行与协程调度相关源码。让同学在以后的应用中,对协程的使用得心应手。

    收起列表

    • 视频: 5-1 为什么要有协程,线程不好用吗? (14:00)
    • 视频: 5-2 协程的本质是什么? (12:56)
    • 视频: 5-3 协程是如何执行的?(一) (16:09) 试看
    • 视频: 5-4 协程是如何执行的?(二) (07:52)
    • 视频: 5-5 为什么要有 G-M-P 调度模型? (15:52)
    • 视频: 5-6 如何实现协程并发? (17:05)
    • 视频: 5-7 抢占式调度解决了什么问题? (16:06)
    • 视频: 5-8 实战--协程太多有什么问题? (10:52)
    • 图文: 5-9 本章作业
    • 图文: 5-10 面试题
    • 视频: 5-11 本章小结 (04:36)
  • 第6章 Go高并发下的锁 14 节 | 154分钟

    极少有课程讲解GO的锁,但锁又很重要。本章详解原理操作的原理、GO的锁机制、读写锁、Wait Group等,并精读源码。让同学彻底搞通搞透锁的原理。

    收起列表

    • 视频: 6-1 锁的基础是什么?(一) (13:47)
    • 视频: 6-2 锁的基础是什么?(二) (13:31)
    • 视频: 6-3 互斥锁解决了什么问题? (11:46)
    • 视频: 6-4 互斥锁是如何工作的? (17:34)
    • 视频: 6-5 锁饥饿怎么办? (14:58)
    • 视频: 6-6 只让你看,不让你改,能实现吗?(一) (15:22)
    • 视频: 6-7 只让你看,不让你改,能实现吗?(二) (12:59)
    • 视频: 6-8 只让你看,不让你改,能实现吗?(三) (09:25)
    • 视频: 6-9 如何通过WaitGroup互相等待? (16:20)
    • 视频: 6-10 段代码只能执行一次,怎么实现? (10:20)
    • 视频: 6-11 实战:如何排查锁异常问题 (12:35)
    • 图文: 6-12 本章作业
    • 图文: 6-13 面试题
    • 视频: 6-14 本章小结 (05:14)
  • 第7章 高并发下的通信方式:Channel 管道 7 节 | 70分钟

    有了协程,就需要解决协程间的通讯问题,Channel应运而生。本章详解Channel的底层原理。并按照实战情况分析了Channel的底层源码。让同学对Channel的理解更加深入。

    收起列表

    • 视频: 7-1 为什么要用 Channel,共享内存不好用吗? (14:03)
    • 视频: 7-2 如何设计高性能 Channel? (11:45)
    • 视频: 7-3 Channel 发送数据的底层原理是什么? (16:11)
    • 视频: 7-4 Channel 接收数据的底层原理是什么? (14:22)
    • 视频: 7-5 实战:非阻塞的Channel怎么做? (09:16)
    • 图文: 7-6 面试题
    • 视频: 7-7 本章小结 (03:32)
  • 第8章 高并发应用:TCP网络编程 13 节 | 133分钟

    网络应用是GO的最主力需求。本章详解GO对非阻塞IO的实现方式。感受Google工程师的神奇脑洞。学会怎样使用GO搭建高性能TCP服务器。

    收起列表

    • 视频: 8-1 什么是非阻塞 IO?(一) (11:31)
    • 视频: 8-2 什么是非阻塞 IO?(二) (15:32)
    • 视频: 8-3 Go是如何抽象Epoll的?(一) (10:39)
    • 视频: 8-4 Go是如何抽象Epoll的?(二) (12:20)
    • 视频: 8-5 Network Poller 是如何工作的?(一) (13:36)
    • 视频: 8-6 Network Poller 是如何工作的?(二) (17:45)
    • 视频: 8-7 Go 是如何抽象 Socket 的?(一) (12:10)
    • 视频: 8-8 Go 是如何抽象 Socket 的?(二) (12:03)
    • 视频: 8-9 Go 是如何抽象 Socket 的?(三) (12:16)
    • 视频: 8-10 实战:怎样结合阻塞模型和多路复用? (08:08)
    • 图文: 8-11 本章作业
    • 图文: 8-12 面试题
    • 视频: 8-13 本章小结 (06:43)
  • 第9章 高并发下的内存模型与垃圾回收 12 节 | 147分钟

    堆内存的结构和垃圾回收是GO语言设计最复杂的部分,也是性能调优最关键的部分。本章详解GO的内存管理与垃圾回收机制,让同学从底层了解GO堆内存的架构,并且能够处理有关内存和GC的高级技术问题。

    收起列表

    • 视频: 9-1 为什么说 Go 的栈在堆上? (16:59)
    • 视频: 9-2 协程栈不够用了怎么办? (17:29)
    • 视频: 9-3 GO 的堆内存结构是怎样的?(1) (09:35)
    • 视频: 9-4 GO 的堆内存结构是怎样的?(2) (15:04)
    • 视频: 9-5 GO 的堆内存结构是怎样的?(3) (15:38)
    • 视频: 9-6 GO 的是如何分配堆内存的? (19:46)
    • 视频: 9-7 什么样对象需要垃圾回收? (13:09)
    • 视频: 9-8 如何减小GC对性能的影响? (16:44)
    • 视频: 9-9 实战:如何优化GC效率? (12:43)
    • 图文: 9-10 本章作业
    • 图文: 9-11 面试题
    • 视频: 9-12 本章小结 (09:15)
  • 第10章 Go的其他高级特性 8 节 | 61分钟

    本章学习GO的其他重要的高级特性。完善GO的高级知识图谱。例如反射、recover等。

    收起列表

    • 视频: 10-1 如何实现GO调用C代码? (15:03)
    • 视频: 10-2 defer的底层原理是怎样的? (09:38)
    • 视频: 10-3 recover如何在panic中拯救程序? (09:55)
    • 视频: 10-4 GO是怎么实现反射的? (10:24)
    • 视频: 10-5 实战:使用反射调用方法 (08:55)
    • 图文: 10-6 作业:如何使用修改后的runtime源码
    • 图文: 10-7 面试题
    • 视频: 10-8 本章小结 (06:10)
  • 第11章 GO实现TCP服务器 5 节 | 60分钟

    本章开始实战项目。首先实现一个Echo TCP Server,学会搭建Go中间件的基本框架。并学会如何优雅地关闭客户端的连接。

    收起列表

    • 视频: 11-1 实现最简TCP服务器 (15:26)
    • 视频: 11-2 实现完善的TCP服务器 (13:56)
    • 视频: 11-3 实现EchoHandler(一) (11:43)
    • 视频: 11-4 实现EchoHandler(二) (11:03)
    • 视频: 11-5 测试TCP服务器 (07:17)
  • 第12章 GO实现Redis协议解析器 17 节 | 187分钟

    本章讲解RESP协议。在 TCP Server的基础上,实现Redis的通信协议,既学习了Redis的技术规范,又提升了Go编码能力,一举两得。

    收起列表

    • 视频: 12-1 Redis网络协议详解 (07:54)
    • 视频: 12-2 实现const reply (15:57)
    • 视频: 12-3 实现error reply (09:47)
    • 视频: 12-4 实现自定义reply (16:44)
    • 视频: 12-5 实现ParseStream (11:14)
    • 视频: 12-6 实现ReadLine (15:12)
    • 视频: 12-7 实现ParseMultiBulkHeader (10:00)
    • 视频: 12-8 实现ParseBulkHeader (07:32)
    • 视频: 12-9 实现ParseSingleLine (07:39)
    • 视频: 12-10 实现readBody (07:47)
    • 视频: 12-11 实现parser(1) (14:07)
    • 视频: 12-12 实现parser(2) (15:31)
    • 视频: 12-13 实现Connection (10:38)
    • 视频: 12-14 实现RespHandler(1) (08:39)
    • 视频: 12-15 实现RespHandler(2) (13:50)
    • 视频: 12-16 实现EchoDatabase (09:18)
    • 视频: 12-17 测试RESP协议解析 (04:13)
  • 第13章 GO实现内存数据库 14 节 | 146分钟

    本章实战Redis的基本功能。学习Redis原理的同时,也锻炼了GO特有的高并发开发能力,并进一步体会GO跨平台特性的独特优势。

    收起列表

    • 视频: 13-1 定义Dict接口(加片头) (08:19)
    • 视频: 13-2 实现SyncDict(一) (09:45)
    • 视频: 13-3 实现SyncDict(二) (09:37)
    • 视频: 13-4 定义command结构体 (08:39)
    • 视频: 13-5 实现DB.Exec (11:16)
    • 视频: 13-6 完成db.go (17:04)
    • 视频: 13-7 实现PING命令 (03:10)
    • 视频: 13-8 实现KEYS命令集(一) (12:18)
    • 视频: 13-9 实现KEYS命令集(二) (13:35)
    • 视频: 13-10 实现KEYS命令集(三) (05:23)
    • 视频: 13-11 实现STRING命令集(一) (10:45)
    • 视频: 13-12 实现STRING命令集(二) (06:18)
    • 视频: 13-13 实现核心Database(一) (15:39)
    • 视频: 13-14 实现核心Database(二) (13:46)
  • 第14章 GO实现Redis持久化 8 节 | 84分钟

    本章学习Redis的数据持久化方法。并实战GO的文件IO特性。至此,单机版本Redis更加完善。

    收起列表

    • 视频: 14-1 定义AofHandler (09:49)
    • 视频: 14-2 实现AddAof (14:58)
    • 视频: 14-3 实现HandleAof (11:10)
    • 视频: 14-4 实现Aof落盘功能(一) (10:08)
    • 视频: 14-5 实现Aof落盘功能(二) (05:50)
    • 视频: 14-6 debug闭包问题 (10:32)
    • 视频: 14-7 实现Aof恢复(一) (13:54)
    • 视频: 14-8 实现Aof恢复(二) (07:06)
  • 第15章 GO实现Redis集群 11 节 | 149分钟

    本章完成Redis集群的开发。首先学习目前非常先进的一致性哈希技术,并使用Go语言实现一致性哈希。完成此章后,会大幅提高同学们的Go语言大型项目开发能力。

    收起列表

    • 视频: 15-1 详解一致性哈希 (11:44)
    • 视频: 15-2 定义NodeMap (09:14)
    • 视频: 15-3 实现一致性哈希 (12:46)
    • 视频: 15-4 集群架构讲解 (09:08)
    • 视频: 15-5 实现连接工厂 (14:18)
    • 视频: 15-6 初始化ClusterDatabase (14:39)
    • 视频: 15-7 操作连接池 (12:48)
    • 视频: 15-8 实现三种执行模式 (13:17)
    • 视频: 15-9 实现defaultFunc (12:02)
    • 视频: 15-10 实现特殊模式的指令 (20:19)
    • 视频: 15-11 完成ClusterDatabase (18:26)
  • 第16章 回顾与总结 1 节 | 19分钟

    本章主要对课程整体内容进行回顾,总结重难点。

    收起列表

    • 视频: 16-1 一切才刚刚开始 (18:02)
本课程已完结

试看

全部试看小节



讲师

目前担任公有云技术架构师,负责多个PaaS产品,所研发产品支撑数十个公有云、私有云机房。三星专家软件工程师认证。精通Java、微服务架构、K8S,区块链技术等。曾参与开发国内早期以太坊钱包并实现双机热备架构。线下主讲的系列课程受到学员欢迎。 

讲师其他课程

课程预览

检测到您还没有关注慕课网服务号,无法接收课程更新通知。请扫描二维码即可绑定
重新观看
意见反馈 帮助中心 APP下载
官方微信

学习咨询

选课、学习遇到问题?

扫码添加指导老师 1V1 帮助你!

添加后老师会第一时间解决你的问题