从搜索引擎到并发工程:Golang 实战的完整闭环

这门课并非泛泛而谈的语法入门,而是聚焦于「高性能 Go 后端开发」的实战体系。它解决的核心问题是:当你需要构建高并发的搜索服务或分布式系统时,如何跳出基础 CRUD,深入理解底层数据结构(如跳表、LSM 树)与网络通信(gRPC、HTTP 中间件)在 Go 语言中的具体落地。课程以一个视频搜索引擎为案例,从单机倒排索引的设计、实现,一步步扩展到分布式集群的构建,中间穿插了设计模式的重构实践。这种「业务驱动技术」的路径,比单纯背八股文更接近真实工作场景。

适合人群与前置基础

这套资料适合已经掌握 Go 语言基本语法(变量、结构体、切片、接口、并发原语)的中初级开发者。如果你连 goroutine 和 channel 都没写过,建议先补基础。课程假设你具备一定的后端思维,能看懂 HTTP 协议和 SQL 基本操作。对于想转行后端或希望从 Java/Python 迁移到 Go 的工程师,这门课能提供高密度的工程化思维训练。

学习路径与重点模块

不要按顺序从头看视频,建议采用「分块突破」策略。首先攻克「核心数据结构」部分,重点学习跳表、倒排索引的设计与位运算优化,这是搜索性能的关键。其次,必须精读「分布式与通信」模块,涵盖 gRPC 服务对接、服务注册发现、以及中间件(如令牌桶限流)的实现。最后,将「设计模式」章节作为复盘工具,观察课程如何将迭代器、代理、外观模式融入代码重构中。此外,末尾关于 Go 1.21/1.22 新特性的内容,能帮你理解标准库的演进趋势,避免使用过时写法。

学完能做什么及资料配合

学完后,你应能独立搭建一个支持分布式检索的简单搜索引擎后端,并能熟练运用 gRPC 进行微服务通信。更重要的是,你掌握了将复杂业务逻辑通过设计模式解耦的能力,这在面试和实际维护遗留代码时极具价值。资料包包含大量 MP4 视频,建议观看时同步敲代码。由于视频文件分散,你可以根据上述模块主题自行整理播放列表。练习时,不要只抄代码,尝试修改索引算法或增加一个新的 gRPC 接口,观察对整体性能的影响。遇到并发死锁或网络超时问题,课程中的中间件和测试章节提供了排查思路。这是一套注重「为什么这样写」而非「怎么跑通」的高阶资料,适合愿意沉下心打地基的工程师。

课程目录

分布式搜索引擎与设计模式48 集
  • 228-13-跳表【公重号:CunWorkNotes】.mp4 [12.3 MB]
  • 220-5-迭代器模式【不易整理‖请关注:CunWorkNoteS】.mp4 [50.1 MB]
  • 226-11-2个有序链表求交集【整理不易‖记得关注:CunWorKNotes】.mp4 [16.5 MB]
  • 248-33-代理模式【资源精选‖更多关注:CunworkNotes】.mp4 [59.5 MB]
  • 227-12-多个有序链表求交【更多精选‖公众号:CunWorknotes】 .mp4 [6.6 MB]
  • 257-42-中间件和http_header【优质资源‖关注:cunWorkNotes 解锁】.mp4 [23.7 MB]
  • 222-7-位运算练习【优质资源‖关注:cunWorkNotes 解锁】.mp4 [23.8 MB]
  • 221-6-位运算【整理不易‖记得关注:CunWorKNotes】.mp4 [16.0 MB]
  • 259-44-模板方法.mp4 [68.9 MB]
  • 260-45-设计模式总结【持续更新‖免费提供:CunworknoteS】.mp4 [15.1 MB]
  • 251-36-搜索哨兵_对接分布式grpc服务【整理不易‖记得关注:CunWorKNotes】.mp4 [58.1 MB]
  • 256-41-单机版视频搜索实现.mp4 [69.5 MB]
  • 252-37-radic项目代码结构及module发布.mp4 [36.8 MB]
  • 254-39-mysql批量写表.mp4 [49.9 MB]
  • 253-38-视频搜索业务数据介绍.mp4 [29.6 MB]
  • 215-0-课程介绍.mp4 [6.3 MB]
  • 255-40-遍历mysql表【整理不易‖记得关注:CunWorKNotes】.mp4 [40.7 MB]
  • 217-2-倒排索引v0版实现【公重号:CunWorkNotes】.mp4 [19.4 MB]
  • 233-18-倒排索引搜索函数的实现【公重号:CunWorkNotes】.mp4 [28.1 MB]
  • 218-3-HashMap的底层实现.mp4 [23.2 MB]
  • 229-14-多跳表求交集【持续更新‖免费提供:CunworknoteS】.mp4 [45.2 MB]
  • 219-4-自行实现并发安全的map.mp4 [41.3 MB]
  • 261-go1_21新特性.mp4 [16.5 MB]
  • 223-8-倒排索引value的设计.mp4 [17.0 MB]
  • 262-go1_22新特性【公重号:CunWorkNotes】.mp4 [21.0 MB]
  • 250-35-grpc索引服务.mp4 [54.3 MB]
  • 216-1-倒排索引的设计【持续更新‖免费提供:CunworknoteS】.mp4 [15.0 MB]
  • 225-10-BitMap求交集【更多精选‖公众号:CunWorknotes】 .mp4 [22.8 MB]
  • 232-17-Builder模式.mp4 [15.8 MB]
  • 258-43-分布式视频搜索实现.mp4 [45.9 MB]
  • 247-32-令牌桶限流算法.mp4 [29.4 MB]
  • 224-9-位运算实现搜索过滤【更多精选‖公众号:CunWorknotes】 .mp4 [19.9 MB]
  • 249-34-代理测试【持续更新‖免费提供:CunworknoteS】.mp4 [32.2 MB]
  • 244-29-服务注册与发现【持续更新‖免费提供:CunworknoteS】.mp4 [16.4 MB]
  • 241-26-外观模式【优质资源‖关注:cunWorkNotes 解锁】.mp4 [49.6 MB]
  • 236-21-LSM树【更多精选‖公众号:CunWorknotes】 .mp4 [31.2 MB]
  • 230-15-向倒排索引上添加删除文档【不易整理‖请关注:CunWorkNoteS】.mp4 [52.0 MB]
  • 237-22-使用函数作为参数和使用接口的联系【整理不易‖记得关注:CunWorKNotes】.mp4 [26.9 MB]
  • 234-19-KV数据库介绍【更多精选‖公众号:CunWorknotes】 .mp4 [16.0 MB]
  • 242-27-分布式索引架构.mp4 [21.7 MB]
  • 239-24-bolt_badger_API解读.mp4 [35.0 MB]
  • 240-25-面向接口测试.mp4 [34.7 MB]
  • 238-23-工厂模式【优质资源‖关注:cunWorkNotes 解锁】.mp4 [42.7 MB]
  • 245-30-用etcd实现服务中心.mp4 [42.1 MB]
  • 231-16-搜索表达式【不易整理‖请关注:CunWorkNoteS】.mp4 [34.7 MB]
  • 243-28-单例模式对比【整理不易‖记得关注:CunWorKNotes】.mp4 [27.9 MB]
  • 235-20-B+树.mp4 [20.3 MB]
  • 246-31-策略模式【持续更新‖免费提供:CunworknoteS】.mp4 [26.2 MB]
go语言并发编程实战--抽奖+秒杀系统28 集
  • 190-3-抽奖核心算法.mp4 [41.9 MB]
  • 196-9-用channel传递信号.mp4 [17.1 MB]
  • 204-17-并行读写slice【优质资源‖关注:cunWorkNotes 解锁】.mp4 [11.7 MB]
  • 193-6-用channel作并发小容器_节约内存【更多精选‖公众号:CunWorknotes】 .mp4 [24.9 MB]
  • 209-22-在线排查协程泄漏.mp4 [44.8 MB]
  • 202-15-分布式锁.mp4 [20.6 MB]
  • 188-1-协程和WaitGroup【资源精选‖更多关注:CunworkNotes】.mp4 [28.1 MB]
  • 191-4-生成抽奖大转盘【持续更新‖免费提供:CunworknoteS】.mp4 [32.8 MB]
  • 207-20-select多路监听【持续更新‖免费提供:CunworknoteS】.mp4 [23.4 MB]
  • 214-27-kafka在秒杀场景中的应用【持续更新‖免费提供:CunworknoteS】.mp4 [51.4 MB]
  • 211-24-如何确保缓存的订单数据不丢失.mp4 [34.8 MB]
  • 195-8-channel导致的死锁问题.mp4 [19.5 MB]
  • 208-21-接口超时控制.mp4 [27.2 MB]
  • 206-19-接口并发测试、压力测试【资源精选‖更多关注:CunworkNotes】.mp4 [49.8 MB]
  • 212-25-多协程如何协调结束工作.mp4 [26.9 MB]
  • 194-7-channel的遍历.mp4 [12.7 MB]
  • 213-26-如何避免重复关闭channel.mp4 [37.1 MB]
  • 201-14-读写锁【优质资源‖关注:cunWorkNotes 解锁】.mp4 [12.6 MB]
  • 200-13-并发安全性与原子操作.mp4 [17.5 MB]
  • 198-11-用channel限制接口的并发请求量.mp4 [6.2 MB]
  • 199-12-用channel限制协程的总数【整理不易‖记得关注:CunWorKNotes】.mp4 [20.2 MB]
  • 187-0-课程介绍【不易整理‖请关注:CunWorkNoteS】.mp4 [4.1 MB]
  • 197-10-用channel并行处理文件【更多精选‖公众号:CunWorknotes】 .mp4 [48.1 MB]
  • 192-5-抽奖接口实现_并发减库存的问题【优质资源‖关注:cunWorkNotes 解锁】.mp4 [46.7 MB]
  • 203-16-并行读写map【资源精选‖更多关注:CunworkNotes】.mp4 [21.0 MB]
  • 210-23-秒杀写库策略【优质资源‖关注:cunWorkNotes 解锁】.mp4 [21.3 MB]
  • 205-18-比sync_Map快3倍的并发安全map【资源精选‖更多关注:CunworkNotes】.mp4 [37.0 MB]
  • 189-2-协程和线程对比_及MPG并发模型【公重号:CunWorkNotes】.mp4 [51.1 MB]
go语言经典项目开发全流程:双token博客系统36 集
  • 179-28-GIN中间件.mp4 [25.0 MB]
  • 181-30-基于jwt身份认证全流程.mp4 [31.2 MB]
  • 171-20-登录接口的实现【资源精选‖更多关注:CunworkNotes】.mp4 [39.4 MB]
  • 180-29-jwt算法及其go实现【资源精选‖更多关注:CunworkNotes】.mp4 [60.7 MB]
  • 172-21-js代码调试.mp4 [16.1 MB]
  • 170-19-哈希及用户密码的安全保障【资源精选‖更多关注:CunworkNotes】.mp4 [38.6 MB]
  • 162-11-单例模式.mp4 [41.2 MB]
  • 166-15-插入和删除数据库记录.mp4 [18.0 MB]
  • 160-9-用SQL语句建表建索引_.mp4 [50.5 MB]
  • 183-32-双token身份认证.mp4 [62.0 MB]
  • 184-33-数据上报与promethus.mp4 [58.9 MB]
  • 178-27-go读写redis.mp4 [34.4 MB]
  • 186-35-GIN知识点汇总.mp4 [32.1 MB]
  • 177-26-基于cookie的身份认证.mp4 [66.9 MB]
  • 174-23-博客详情页.mp4 [24.5 MB]
  • 161-10-创建数据库连接池.mp4 [55.0 MB]
  • 167-16-gin快速入门.mp4 [25.7 MB]
  • 173-22-博客列表页_go_template.mp4 [24.8 MB]
  • 169-18-js基础介绍.mp4 [32.9 MB]
  • 158-7-配置文件解析与监听.mp4 [46.4 MB]
  • 163-12-gorm数据库查询.mp4 [64.0 MB]
  • 168-17-html+css基础介绍.mp4 [20.7 MB]
  • 165-14-gorm修改数据库.mp4 [21.3 MB]
  • 153-2-go项目初始化及go_mod依赖管理.mp4 [28.1 MB]
  • 159-8-日志工具.mp4 [53.7 MB]
  • 164-13-反射--orm的核心实现原理.mp4 [41.9 MB]
  • 182-31-Session存储和Local存储【更多精选‖公众号:CunWorknotes】 .mp4 [71.8 MB]
  • 157-6-获得当前代码的具体位置【公重号:CunWorkNotes】.mp4 [26.3 MB]
  • 151-0-课程介绍【整理不易‖记得关注:CunWorKNotes】.mp4 [14.1 MB]
  • 152-1-项目代码结构【优质资源‖关注:cunWorkNotes 解锁】.mp4 [20.4 MB]
  • 154-3-单元测试【持续更新‖免费提供:CunworknoteS】.mp4 [37.1 MB]
  • 176-25-GIN参数校验【更多精选‖公众号:CunWorknotes】 .mp4 [17.7 MB]
  • 175-24-博客修改功能的实现【持续更新‖免费提供:CunworknoteS】.mp4 [33.4 MB]
  • 155-4-基准测试.mp4 [44.2 MB]
  • 185-34-系统监控与grafana【整理不易‖记得关注:CunWorKNotes】.mp4 [20.1 MB]
  • 156-5-理解rune和string的本质【持续更新‖免费提供:CunworknoteS】.mp4 [29.3 MB]
Go语言编程大全,web微服务数据库十大专题精讲84 集
  • 05_0-数据库课程介绍【整理不易‖记得关注:CunWorKNotes】.mp4 [9.9 MB]
  • 136_17-prometheus数据上报与查询.mp4 [49.6 MB]
  • 126_9-grpc数据加密【公重号:CunWorkNotes】.mp4 [37.9 MB]
  • 111_4-option模式【不易整理‖请关注:CunWorkNoteS】.mp4 [49.3 MB]
  • 128_11-etcd数据读写,对标redis.mp4 [45.9 MB]
  • 04_0-IO课程介绍.mp4 [5.2 MB]
  • 07_0-web课程介绍.mp4 [7.6 MB]
  • 119_2-proto文件互相引用.mp4 [50.9 MB]
  • 09_0-微服务课程介绍.mp4 [11.1 MB]
  • 113_6-使用BloomFilter进行url排重【持续更新‖免费提供:CunworknoteS】.mp4 [8.7 MB]
  • 76_3-消息队列的并发性.mp4 [25.4 MB]
  • 74_1-安装RabbitMQ【优质资源‖关注:cunWorkNotes 解锁】.mp4 [24.0 MB]
  • 60_5-stmt与sql编译优化.mp4 [15.6 MB]
  • 18_二分区间查找【不易整理‖请关注:CunWorkNoteS】.mp4 [17.7 MB]
  • 30_13-基于堆的归并排序.mp4 [30.6 MB]
  • 48_7-B+树如何让磁盘比内存还快?【整理不易‖记得关注:CunWorKNotes】.mp4 [34.8 MB]
  • 23_6-快速排序.mp4 [51.8 MB]
  • 37_20-alias采样【持续更新‖免费提供:CunworknoteS】.mp4 [25.8 MB]
  • 35_18-最长公共子串【公重号:CunWorkNotes】.mp4 [49.9 MB]
  • 105_10-OAuth2.0授权登录.mp4 [49.2 MB]
  • 86_13-如何保证kafka的消息顺序【资源精选‖更多关注:CunworkNotes】.mp4 [11.5 MB]
  • 102_7-cookie认证代码复现,GIN编程的经典模式.mp4 [66.5 MB]
  • 131_13-etcd配置中心.mp4 [29.5 MB]
  • 56_1-Mysql实战经验总结.mp4 [26.2 MB]
  • 52_11-自行实现高性能logger【资源精选‖更多关注:CunworkNotes】.mp4 [63.5 MB]
  • 145_2-服务脚手架代码.mp4 [22.2 MB]
  • 59_4-SQL注入攻击【不易整理‖请关注:CunWorkNoteS】.mp4 [20.9 MB]
  • 149_6-在中间件里获取请求和响应数据【更多精选‖公众号:CunWorknotes】 .mp4 [36.8 MB]
  • 108_1-8种常见的http请求方式【公重号:CunWorkNotes】.mp4 [45.5 MB]
  • 142_go1.21新特性.mp4 [16.5 MB]
  • 116_9-自动提交表单【更多精选‖公众号:CunWorknotes】 .mp4 [13.5 MB]
  • 125_8-grpc拦截器.mp4 [32.5 MB]
  • 152_9-fail重试机制.mp4 [6.4 MB]
  • 147_4-服务注册与发现.mp4 [31.2 MB]
  • 133_15-grpc网关--http server与grpc se.mp4 [42.2 MB]
  • 94_5-jwt鉴权算法及go代码实现.mp4 [29.2 MB]
  • 28_11-LRU缓存实现.mp4 [40.5 MB]
  • 121_4-关于grpc连接的一些问题.mp4 [24.4 MB]
  • 118_1-protobuf序列化.mp4 [91.0 MB]
  • 67_12-redis分布式锁及在秒杀中的应用.mp4 [16.8 MB]
  • 112_5-html页面解析【整理不易‖记得关注:CunWorKNotes】.mp4 [88.2 MB]
  • 24_7-用分治寻找topK.mp4 [38.3 MB]
  • 97_2-中间件的本质和使用方法【资源精选‖更多关注:CunworkNotes】.mp4 [46.1 MB]
  • 87_14-kafka结合redis在电商秒杀场景下的应用.mp4 [6.1 MB]
  • 64_9-ORM实现机制【持续更新‖免费提供:CunworknoteS】.mp4 [31.4 MB]
  • 68_13-内存淘汰策略及redis使用场景总结.mp4 [34.8 MB]
  • 96_1-GIN参数校验.mp4 [49.5 MB]
  • 110_3-colly回调函数.mp4 [58.8 MB]
  • 10_0-kitex及课程介绍【更多精选‖公众号:CunWorknotes】 .mp4 [5.2 MB]
  • 132_14-服务注册与发现.mp4 [116.7 MB]
  • 08_0-爬虫课程介绍.mp4 [5.1 MB]
  • 120_3-创建grpc服务.mp4 [63.6 MB]
  • 109_2-爬虫的核心功能.mp4 [54.9 MB]
  • 15_5-语义化版本规范【持续更新‖免费提供:CunworknoteS】.mp4 [12.4 MB]
  • 100_5-Swagger自动文档工具【优质资源‖关注:cunWorkNotes 解锁】.mp4 [45.1 MB]
  • 12_2-代理与本地缓存.mp4 [31.6 MB]
  • 139_20-在http和grpc中传递追踪信息.mp4 [33.3 MB]
  • 123_6-grpc stream.mp4 [33.6 MB]
  • 32_15-上台阶问题.mp4 [15.5 MB]
  • 146_3-kitex日志工具【整理不易‖记得关注:CunWorKNotes】.mp4 [24.6 MB]
  • 124_7-grpc和http的使用场景【更多精选‖公众号:CunWorknotes】 .mp4 [28.8 MB]
  • 107_12-多人聊天室的实现.mp4 [55.3 MB]
  • 33_16-编辑距离.mp4 [68.8 MB]
  • 80_7-交换机与路由.mp4 [20.5 MB]
  • 78_5-数据持久化.mp4 [23.6 MB]
  • 122_5-recover【优质资源‖关注:cunWorkNotes 解锁】.mp4 [19.1 MB]
  • 43_2-并行写文件【持续更新‖免费提供:CunworknoteS】.mp4 [22.1 MB]
  • 129_12-基于etcd的分布式锁.mp4 [33.1 MB]
  • 19_2-自行实现双向链表.mp4 [46.2 MB]
  • 99_4-如何理解GIN中间件的Next和Abort.mp4 [30.1 MB]
  • 72_17-ClickHouse语法及对应的golang库【资源精选‖更多关注:CunworkNotes】.mp4 [43.6 MB]
  • 01_专题课程介绍.mp4 [4.2 MB]
  • 02_0-go module课程介绍.mp4 [2.4 MB]
  • 115_8-高级爬虫技巧.mp4 [31.9 MB]
  • 98_3-自行实现类GIN的中间件API.mp4 [25.3 MB]
  • 143_go1.22新特性【整理不易‖记得关注:CunWorKNotes】.mp4 [21.0 MB]
  • 50_9-logrus日志工具【资源精选‖更多关注:CunworkNotes】.mp4 [34.3 MB]
  • 93_4-https与TLS的实现原理【资源精选‖更多关注:CunworkNotes】.mp4 [21.0 MB]
  • 36_19-布隆过滤器【更多精选‖公众号:CunWorknotes】 .mp4 [45.2 MB]
  • 55_14-json序列化【资源精选‖更多关注:CunworkNotes】.mp4 [55.4 MB]
  • 31_14-斐波那契数列.mp4 [32.6 MB]
  • 39_22-高并发限流算法【更多精选‖公众号:CunWorknotes】 .mp4 [34.0 MB]
  • 41_0-二进制文件和文本文件.mp4 [46.3 MB]
  • 14_4-部署私有代理.mp4 [9.6 MB]
  • … 其余 16 项略,目录共 216 项