📚 课程介绍
本课程深入探讨Go语言的底层原理,通过实战案例重写Redis中间件,适合有一定Go语言基础,希望提升并发处理能力和中间件开发能力的学员。
📋 学习前提
1. Go语言基础(了解Go的基本语法和编程范式) 2. 熟悉Redis基本操作(了解Redis的常用命令和数据结构)
📖 课程目录
第5章 高并发的核心工具:Goroutine 协程
5-1为什么要有协程,线程不好用吗?
5-2协程的本质是什么?
5-3协程是如何执行的一
5-4协程是如何执行的二
5-5为什么要有G-M-P调度模型?
5-6如何实现协程并发?
5-7抢占式调度解决了什么问题?
5-8实战–协程太多有什么问题
5-9本章作业
5-10面试题
第4章 Go在高并发下的数据结构
4-1什么变量的大小是0字节?
4-2数组,字符串,切片底层是一样的吗?
4-3数组,字符串,切片底层是一样的吗?
4-4map:重写Redis能用它吗?
4-5map:重写Redis能用它吗?
4-6map为什么需要扩容?
4-7怎么解决map的并发问题?
4-8怎么解决map的并发问题?
4-9接口隐式更好还是显式更好?
4-10接口隐式更好还是显式更好?
4-11nil,空接口,空结构体有什么区别?
4-12实战:内存对齐是如何优化程序效率的?
4-13实战:内存对齐是如何优化程序效率的?
4-14本章小结
4-15面试题
4-16本章小结
第7章 高并发下的通信方式:Channel管道
7-1为什么要用Channel,共享内存不好用吗?
7-2如何设计高性能Channel?
7-3Channel发送数据的底层原理是什么?
7-4Channel接收数据的底层原理是什么?
7-5实战:非阻塞的Channel怎么做?
7-6本章作业
7-7面试题
7-8本章小结
第8章 高并发应用:TCP网络编程
8-1什么是非阻塞IO?
8-2什么是非阻塞IO?
8-3Go是如何抽象Epoll的?
8-4Go是如何抽象Epoll的?
8-5NetworkPoller是如何工作的?
8-6NetworkPoller是如何工作的?
8-7Go是如何抽象Socket的?
8-8Go是如何抽象Socket的?
8-9Go是如何抽象Socket的?
8-10实战:怎样结合阻塞模型和多路复用?
8-11本章作业
8-12面试题
8-13本章小结
第9章 高并发下的内存模型与垃圾回收
9-1为什么说Go的栈在堆上?
9-2GO的堆内存结构是怎样的?
9-3GO的堆内存结构是怎样的?
9-4什么样对象需要垃圾回收?
9-5实战:如何优化GC效率?
9-6本章作业
9-7什么样对象需要垃圾回收?
9-8实战:如何优化GC效率?
9-9实战:如何优化GC效率?
9-10本章作业
9-11本章小结
第13章 GO实现内存数据库
13-1定义Dict接口
13-2实现SyncDict
13-3实现SyncDict
13-4定义command结构体
13-5实现DB.Exec
13-6初始化ClusterDatabase
13-7实现PING命令
13-8实现KEYS命令集
13-9实现KEYS命令集
13-10实现KEYS命令集
13-11实现STRING命令集
13-12实现STRING命令集
13-13实现核心Database
13-14实现核心Database
13-15本章小节
13-16使用教程
第15章 GO实现Redis集群
15-1详解一致性哈希
15-2定义NodeMap
15-3实现一致性哈希
15-4集群架构讲解
15-5实现连接工厂
15-6初始化ClusterDatabase
15-7操作连接池
15-8实现三种执行模式
15-9实现defaultFunc
15-10实现特殊模式的指令
15-11完成ClusterDatabase
