如果你翻到这门课,多半是被两个词吸引:Netty,和「仿微信」。前一个代表高并发网络编程,后一个代表你每天都在用的即时通讯场景。但先别急着下判断,这门课值不值得花时间,取决于你现在的处境——是想搞清楚 IM 后台到底怎么扛住长连接,还是只想要一个能写进简历的项目。

它真正解决的是什么工作场景

课程的核心不是教你做一个能聊天的小程序,而是让你亲手处理一个真实 IM 系统绕不开的几件事:客户端与服务端之间怎么维持长连接、消息怎么可靠地收发、在线状态怎么同步、单机连接数上去之后线程模型怎么调。这些问题的答案,在普通 CRUD 项目里基本碰不到,但一旦你接触推送、客服系统、物联网设备接入、游戏后台,它们会反复出现。

所以这门课的定位更接近「网络编程的落地练习」,而不是又一套后台管理系统。Spring Boot 负责业务层的组织和接口,Netty 负责连接层的高性能处理,两者怎么配合、边界划在哪里,是贯穿始终的主线。

学完你能独立做出什么

按课程节奏走完,你应该能独立搭出一个具备基本通讯能力的后台:客户端能登录、建立连接、收发消息,服务端能管理会话、路由消息、处理断线重连。更进一步,你能说清楚为什么这里用 Netty 而不是原生 Socket,为什么线程模型要这样设计,消息编解码为什么不能随便来。

这里要泼一点冷水:它不会让你学完就变成架构师。IM 里真正难的部分——海量连接下的心跳策略、离线消息存储、消息有序性、集群下的会话路由——课程会涉及,但更多是带你入门和建立认知,剩下的深度要靠你自己在项目里继续挖。

资料适合什么基础的人

  • 有 Java 基础、写过 Spring Boot 接口,但对网络编程、NIO、线程模型比较模糊的人,收益最大。
  • 做过一两个后台项目、想补一块「高并发连接处理」经历的人,可以把它当作针对性的实战补充。
  • 完全没接触过 Java 或没写过后端的人,不建议直接上手,前面会卡在环境和非阻塞概念上。

课程属于实战导向,配套有章节笔记。笔记的价值不在「看」,而在「复盘」——每学完一段,用它快速回顾关键决策点,比重新看视频效率高得多。

怎么用这份资料更划算

建议按顺序推进,先理解 Netty 的基本组件和线程模型,再进入和 Spring Boot 的整合,最后落到仿微信的综合实战。不要一上来就冲着完整项目去,跳过基础部分,后面调 bug 时会很痛苦。

每完成两到三节,自己动手复现一遍,哪怕只是把消息收发跑通。学完后,试着脱离课程独立做一个简化版:只保留登录、单聊、心跳三块功能。能独立跑通,这块知识才算真正落到你手里。至于它和考证、运维岗的关系,不必强行挂钩——它更倾向于后端开发和网络编程方向的能力积累。

课程目录

第1章 课程介绍与学习指南 1-1 课前必读(不读错过一个亿).mp4
 1-2 即时通讯系统-课程导学 (11:44).mp4
 第2章 为什么要自研一套即时通讯系统? 2-1 章节介绍 (00:57).mp4
 2-2 纵多成熟的IM系统,我们仍需要自研 (08:52).mp4
 2-3 如何自研一套即时通讯系统? (07:53).mp4
 2-4 章节总结 (01:49).mp4
 第3章 基础数据开发-用户&关系&群组 3-1 章节介绍 (01:12).mp4
 3-2 业务系统的基石 – 用户模块业务分析&数据库设计 (04:47).mp4
 3-3 带你看看大型企业级项目使用什么结构管理项目骨架的 (03:18).mp4
 3-4 导入用户资料,删除用户资料,修改用户资料,查询用户资料 (17:34).mp4
 3-5 即时通讯中最有价值的数据 – 关系链模块业务分析&数据库设计 (04:11).mp4
 3-6 导入、添加、更新好友业务功能实现 (33:00).mp4
 3-7 删除好友、所有好友的业务功能实现 (07:14).mp4
 3-8 拉取指定好友信息&拉取所有好友信息业务功能实现 (03:32).mp4
 3-9 校验好友关系其实比你想象中的复杂 (24:16).mp4
 3-

10 添加、删除、校验黑名单业务功能实现 (01:39).mp4
 3-11 获取所有好友申请列表&好友申请列表已读&审批好友申请业务功能实现 (18:20).mp4
 3-

12 好友分组(类似微信的好友标签)业务介绍&DB设计 (01:59).mp4
 3-13 好友分组创建、添加&删除成员&好友分组删除业务功能实现 (04:17).mp4
 3-

14 即时通讯最复杂的模块 – 群组模块业务分析&数据库设计 (07:40).mp4
 3-

15 导入群、群成员 (19:59).mp4
 3-

16 创建群组、修改群信息&获取群信息业务功能实现 (17:10).mp4
 3-

17 获取用户加入的群列表业务功能实现 (07:54).mp4
 3-

18 解散群组、转让群主业务功能实现 (01:44).mp4
 3-

19 拉人入群成员、移除群聊&退出群聊业务功能实现 (03:09).mp4
 3-

20 获取群成员信息&修改群成员信息接口业务功能实现 (02:26).mp4
 3-

21 禁言群、禁言群成员业务功能实现 (02:33).mp4
 3-22 即时通讯为什么难?.mp4
 3-23 作业:想实现和腾讯云类似的拓展资料,数据库要如何设计?.mp4
 3-

24 章节总结 (03:45).mp4
 第4章 BIO,NIO&Netty入门 4-1 章节介绍 (01:44).mp4
 4-2 BIO线程模型详解 – 彻底搞懂BIO如何工作 (08:23).mp4
 4-3 NIO线程模型详解 – 彻底搞懂NIO如何工作 (11:26).mp4
 4-4 BIO和NIO总结 (03:30).mp4
 4-5 详解Netty (03:51).mp4
 4-6 Nett初体验-上手写第一个Netty程序 (10:02).mp4
 4-7 NIO与BIO详解.mp4
 4-8 作业:使用Netty实现分数录入返回是否及格.mp4
 4-9 章节总结 (01:14).mp4
 第5章 Netty企业开发必须掌握的技能 5-1 章节介绍 (00:59).mp4
 5-2 使用Netty实现聊天室 (08:11).mp4
 5-3 窥探编解码器 – 初识Netty编解码 (08:08).mp4
 5-4 Netty底层数据流转的核心 – pipeline机制详解 (06:56).mp4
 5-5 传输层协议TCP留给我们的难题-Netty解决半包、粘包方案(一) (10:48).mp4
 5-6 传输层协议TCP留给我们的难题-使用私有协议解决半包、粘包(二) (10:18).mp4
 5-7 ByteBuf核心API讲解 (08:48).mp4
 5-8 IdleStateHandler心跳机制源码详解-揭开主流注册中心心跳机制实现原理 (12:07).mp4
 5-9 Netty的源码解析-掌握Netty核心功能的实现 (11:16).mp4
 5-

10 使用Netty实现文件上传 (12:16).mp4
 5-11 Nett服务端启动流程源码详解.mp4
 5-12 作业:使用Netty实现简单的HTTP服务器.mp4
 5-

13 章节总结 (01:30).mp4
 第6章 IM开发核心 之构建TCP网关(上) 6-1 章节介绍 (00:35).mp4
 6-2 正式开始编写IM主程序ServerBootstrap (05:54).mp4
 6-3 WebSocketServerProtocolHandler-给我们的程序添加webSocket支持 (02:50).mp4
 6-4 Snakeyaml解析配置文件 – 动态配置tcp程序 (12:35).mp4
 6-5 大白话讲通信协议 – 详解主流通信协议 (06:52).mp4
 6-6 私有协议编解码-设计篇 (05:52).mp4
 6-7 私有协议编解码-实现篇 (14:00).mp4
 第7章 IM开发核心之构建TCP网关(下) 7-1 章节介绍 (03:37).mp4
 7-2 登录消息 – 保存用户NioSocketChannel为channel设置自定义属性 (09:56).mp4
 7-3 分布式缓存中间件 – Redisson快速入门操作数据&发布订阅 (09:46).mp4
 7-4 用户登录网关层 – 保存用户Session (12:46).mp4
 7-5 用户退出网关层 – 离线删除用户Session (09:28).mp4
 7-6 服务端心跳检测 – IdleStateHandler (13:57).mp4
 7-7 RabbitMQ的安装、发布订阅、路由模式详解 (11:20).mp4
 7-8 TCP接入RabbitMQ,打通和逻辑层交互 (14:38).mp4
 7-9 分布式TCP服务注册中心的技术选型 (06:38).mp4
 7-

10 TCP服务注册 – Zookeeper注册TCP服务 (12:39).mp4
 7-

11 服务改造 – TCP服务分布式改造 (13:40).mp4
 7-12 即时通讯系统支持多端登录模式-应对多端登录的场景(一) (08:16).mp4
 7-13 即时通讯系统支持多端登录模式-应对多端登录的场景(二) (10:05).mp4
 7-14 即时通讯系统如何支持多端登录模式-应对多端登录的场景(三) (23:08).mp4
 7-15 拓展:详解Zookeeper.mp4
 7-16 作业:利用这两章知识来实现一个简易版的登录+单聊即时通讯系统.mp4
 7-

17 章节总结 (02:39).mp4
 第8章 打通业务服务器与IM服务器&多端同步 8-1 章节介绍 (02:19).mp4
 8-2 负载均衡策略-随机模式 (13:24).mp4
 8-3 负载均衡策略-轮训模式 (02:58).mp4
 8-4 负载均衡策略-一致性hash方式(TreeMap实现) (15:36).mp4
 8-5 配置文件配置负载均衡策略 (06:42).mp4
 8-6 回调机制介绍-业务系统和im系统同步数据 (02:50).mp4
 8-7 使用Apache-HttpClient封装https请求工具类和回调方法 (06:59).mp4
 8-8 编写用户资料变更回调 (03:00).mp4
 8-9 编写好友模块回调 (08:43).mp4
 8-

10 编写群组模块回调 (10:07).mp4
 8-

11 启动一个新的应用服务验证回调机制 (02:44).mp4
 8-

12 tcp通知机制介绍-多端数据同步 (04:02).mp4
 8-

13 封装查询用户Session工具类 (07:19).mp4
 8-

14 封装MessageProducer给用户发送消息 (13:41).mp4
 8-

15 编写用户资料变更通知 (06:30).mp4
 8-

16 编写好友模块TCP通知 (10:06).mp4
 8-17 封装GroupMessageProducer给群组用户发送消息 (04:43).mp4
 8-

18 编写群组模块TCP通知 (07:47).mp4
 8-

19 TCP服务处理逻辑层投递的MQ消息 (08:41).mp4
 8-20 接口调用鉴权加密-加解密算法HMAC-SHA256演示 (03:00).mp4
 8-

21 接口调用鉴权加密-统一入口拦截器加密校验用户请求 (20:55).mp4
 8-22 拓展:RabbitMQ简介.mp4
 8-23 根据一致性hash自己实现一个自定义负载均衡策略.mp4
 8-

24 章节总结 (00:34).mp4
 第9章 消息业务的流程之打通消息收发核心 9-1 章节介绍 (00:57).mp4
 9-2 重中之重 – 消息收发核心流程梳理 (03:17).mp4
 9-3 单聊消息分发逻辑-RabbitMQ连接tcp层和网关层 (08:56).mp4
 9-4 单聊消息分发逻辑-发送消息前置校验 (16:17).mp4
 9-5 单聊消息分发逻辑-消息分发主流程 (19:25).mp4
 9-6 详细分析群聊业务 (01:03).mp4
 9-7 发送群聊消息前置校验 (06:32).mp4
 9-8 群聊消息分发逻辑是怎样的? (13:09).mp4
 9-9 即时通讯聊天记录存储结构&单聊群聊读扩散or写扩散选型 (08:15).mp4
 9-

10 IM消息ID专题 – 分布式自增id解决方案介绍 (01:45).mp4
 9-

11 如何将单聊消息持久化到DB上? (13:21).mp4
 9-

12 如何将群聊消息持久化到DB上? (04:09).mp4
 9-

13 手把手带你编写发送单聊&群聊消息的接口 (06:57).mp4
 9-

14 章节总结 (00:59).mp4
 第10章 消息业务的核心之消息可达性、一致性、幂等性、实时性 10-1 章节介绍 (01:52).mp4
 10-2 消息实时性 – 利用多线程解决消息串行问题,提升处理效率 (06:01).mp4
 10-3 消息实时性- 校验逻辑前置由tcp通过feign接口提前校验(一) (15:26).mp4
 10-4 消息实时性- 校验逻辑前置由tcp通过feign接口提前校验(二) (03:05).mp4
 10-5 消息实时性- 利用mq异步持久化消息(一) (07:13).mp4
 10-6 消息实时性- 利用mq异步持久化消息(二) (12:38).mp4
 10-7 用了tcp就不会丢包,丢消息了吗? (09:50).mp4
 10-8 单人消息可靠性- 双重ack保证上下行消息可靠(一) (06:11).mp4
 10-9 单人消息可靠性- 双重ack保证上下行消息可靠(二) (15:21).mp4
 10-10 (9分22喷麦)单人消息有序性 – 消息并行可能导致消息乱序,如何保证客户端消息有序性 (12:18).mp4
 10-

11 消息幂等性 – 保证消息不“重复”(一) (07:49).mp4
 10-

12 消息幂等性 – 保证消息不“重复”(二) (11:43).mp4
 10-

13 单聊优化总结 (04:39).mp4
 10-

14 群聊消息实时性 – 消息并行,持久化解耦,校验前置 (11:33).mp4
 10-

15 群聊消息有序性 – 消息并行可能导致消息乱序,如何保证客户端消息有序性 (02:35).mp4
 10-

16 群聊消息消息幂等性 – 保证消息不“重复” (04:59).mp4
 10-

17 详解消息已读的实现方案 (05:14).mp4
 10-

18 构建聊天会话 – 消息已读功能实现(一) (13:34).mp4
 10-

19 构建聊天会话 – 消息已读功能实现(二) (16:27).mp4
 10-

20 构建聊天会话 – 会话置顶,删除会话接口 (15:12).mp4
 10-

21 离线消息 – 离线消息设计与实现(一) (06:10).mp4
 10-

22 离线消息 – 离线消息设计与实现(二) (23:32).mp4
 10-

23 章节总结 (01:20).mp4
 第11章 揭秘QQ、微信数据同步的演进 11-1 剖析qq和微信背后数据同步的完整过程 (11:48).mp4
 11-2 关系链模块问题修复 (03:39).mp4
 11-3 如何将关系链数据全量拉取改为增量拉取?(一) (15:00).mp4
 11-4 如何将关系链数据全量拉取改为增量拉取?(二) (16:56).mp4
 11-5 如何将会话数据全量拉取改为增量拉取? (04:29).mp4
 11-6 如何将群组数据全量拉取改为增量拉取? (05:05).mp4
 11-7 手把手带你实现增量同步接口(一) (05:52).mp4
 11-8 手把手带你实现增量同步接口(二) (09:02).mp4
 11-9 手把手带你实现增量同步接口(三) (13:41).mp4
 11-

10 手把手带你编写获取用户sequence接口 (06:27).mp4
 11-

11 如何实现增量拉取离线消息 (12:11).mp4
 11-

12 客户端数据库sqlite介绍 (04:46).mp4
 11-13 sqlite案例-uniapp-nview模式开发原生客户端演示sqlite数据库 (06:48).mp4
 11-

14 章节总结 (04:07).mp4
 第12章 打造QQ在线状态功能之为你的应用增添色彩 12-1 章节介绍 (02:18).mp4
 12-2 在线状态设计 (02:17).mp4
 12-3 netty网关用户状态变更通知&登录ack (08:25).mp4
 12-4 逻辑层处理用户上线下线 (12:47).mp4
 12-5 在线状态订阅-临时订阅 (11:58).mp4
 12-6 带你实现手动设置客户端状态接口 (08:36).mp4
 12-7 推拉结合实现在线状态更新 (10:12).mp4
 12-8 章节总结 (01:21).mp4
 第13章 IM拓展之IM能做的事还有很多 13-1 章节介绍 (01:42).mp4
 13-2 IM进阶拓展 – 如何让陌生人只能发送几条消息&消息监管、鉴黄功能 (05:36).mp4
 13-3 IM进阶拓展 – 如何实现消息撤回 (17:23).mp4
 13-4 IM进阶拓展 – 如何设计亿级聊天记录存储方案(一) (15:32).mp4
 13-5 IM进阶拓展 – 如何设计亿级聊天记录存储方案(二) (09:08).mp4
 13-6 IM进阶拓展 – 视频通话实现思路和流程 (10:10).mp4
 13-7 IM进阶拓展–红包功能如何实现?.mp4
 13-8 IM进阶拓展–智能对话机器人.mp4
 13-9 IM进阶拓展–如何开发匿名聊天.mp4
 13-10 IM进阶拓展–如何开发公众号.mp4
 13-

11 章节总结 (00:54).mp4
 第14章 系统对接&sdk讲解 14-1 演示开发一款应用如何接入我们的系统(一) (15:50).mp4
 14-2 演示开发一款应用如何接入我们的系统(二) (14:02).mp4
 14-3 web版sdk讲解 (17:47).mp4
 第15章 课程总结 15-1 课程总结 (05:12).mp4