作者 彤哥读源码 认证作者
发布时间
更新时间 2020-08-08 15:50

课程亮点:

  • 由浅入深,从基础知识到实战,老手新手都能学
  • 深入源码层面,理解 Netty 核心知识的源码
  • 掌握生产级网络应用的编写套路 + 调优方法
  • 了解网络编程面试的难点,面试有把握

课程简介:

Netty 作为当前最流行的网络通信框架,在大数据领域、游戏行业、通信行业等获得了广泛的应用,很多业界的开源组件底层也是基于 Netty 构建的,比如 Dubbo、Spark、Flink、Cassandra 等,Netty 无疑已经成为了 Java 网络编程的事实标准,所以掌握 Netty 是每个初中级工程师迈向高级的必备技能之一。

除此之外,很多大厂,比如阿里、腾讯、百度、滴滴等,在高级工程师的面试中,也会经常问一些与 Netty 相关的技术问题,如果你能全面掌握 Netty,相信也能在面试中给面试官留下深刻的印象,提高收割 offer 的能力。

本专栏采用循序渐进的方式,从网络编程的基础知识讲起,再过渡到 Netty,并结合生产级的实战案例以及完整的思维导图,带你系统全面地掌握 Netty。因此,本专栏从理论到实战兼顾,不仅适合小白上手 Netty,也同样适合老手学习生产级的实战经验。

每篇文章的结构大致如下:

  1. 前言:承上,将前面学习过的知识与本篇内容进行衔接;
  2. 正文:以提问的形式循序渐进、由浅入深地学习;
  3. 后记:启下,根据本篇的内容引出下一篇的内容;
  4. 思维导图:每篇文章都会提供思维导图进行总结,便于加深理解、快速复习;
    希望本期专栏可以帮助大家更好地学习 Netty,同时,也欢迎大家踊跃留言,共同讨论。

讲师介绍:

讲师彤哥,现任国内某大型互联网企业研发经理,负责中台架构的建设、新技术预研等工作。同时是技术公众号 “彤哥读源码 “的运营者, 擅长阅读源码,并有一套源码阅读的方法论。

课程模块:

本专栏分为 6 大模块,共 40 小节。
专栏布局由易到难,由浅入深,不仅适合小白快速上手 Netty,也适合老手深入剖析 Netty。

一、基础知识

介绍 Netty 的发展历史,并学习 Java 及 Netty 网络编程的基础知识。

二、源码剖析 —— 数据流向

从数据流向的角度剖析源码,包含服务启动、接收数据、关闭连接等。

三、源码剖析 —— 核心知识

从核心知识的角度剖析源码,包含内存池、对象池、线程池等。

四、项目实战

以一个游戏项目为例介绍如何使用 Netty 开发生产级网络应用,包含软件开发的整个生命周期。

五、实战进阶

对实战项目进行不断调优,并介绍如何排查生产问题。

六、课程总结

对整门课程做总结和回顾。

  • 第 1 章 基础知识
    • 01 开篇词:专栏介绍
    • 02 Netty是如何发迹的
    • 03 IO的五种模型是什么
    • 04 Java中如何使用BIO、NIO、AIO
    • 05 Java NIO的核心组件有哪些
    • 06 如何从整体上把握Netty的架构
    • 07 如何优雅地编写Netty应用程序
    • 08 Netty的核心组件有哪些
    • 09 什么是Reactor模式
    • 10 如何解决粘包半包问题
    • 11 Netty是如何支持常见的编解码方式的
  • 第 2 章 源码剖析——数据流向
    • 12 Netty服务启动的时候都做了什么
    • 13 Netty服务如何接收新的连接
    • 14 Netty服务如何接收新的数据
    • 15 Netty服务如何写出数据
    • 16 Netty服务如何优雅关闭
  • 第 3 章 源码剖析——核心知识
    • 17 如何从源码的角度深入剖析ByteBuffer
    • 18 Netty的ByteBuf是如何支持堆内存非池化实现的
    • 19 Netty的ByteBuf是如何支持直接内存非池化实现的
    • 20 jemalloc内存分配器是什么
    • 21 Netty的内存池是如何实现的
    • 22 Netty的对象池又是如何实现的
    • 23 Netty的FastThreadLocal到底快在哪里
    • 24 Netty的队列有何不一样
    • 25 Netty的Future是如何做到简捷易用的
    • 26 Netty的线程池有什么样的特性
  • 第4章 项目实战
    • 27 软件开发的基本步骤,无套路不欢
    • 28 需求分析,能砍则砍,最小化闭环
    • 29 系统设计,前期规划很重要
    • 30 协议实现,双端打通
    • 31 领域模型实现,我又贫血了
    • 32 业务逻辑实现,游戏线程池如何设计?
    • 33 Mock客户端实现,四个人来一局
  • 第5章 实战进阶
    • 34 如何支持Protobuf
    • 35 如何支持WebSocket
    • 36 如何增加安全性
    • 37 如何调优参数
    • 38 如何增加监控
    • 39 如何快速排查生产问题
  • 第6章 课程总结
    • 40 课程总结与回顾