网络编程之Netty一站式精讲
全面掌握迈向高级工程师的必备技能
彤哥读源码 · 互联网大厂项目经理

共计40节 · 已更新40节

619人已订阅

课程亮点:

  • 由浅入深,从基础知识到实战,老手新手都能学
  • 深入源码层面,理解 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 开发生产级网络应用,包含软件开发的整个生命周期。

五、实战进阶

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

六、课程总结

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

查看全部
专栏目录
目录
适合人群
  • 有一定 Java 基础,想要进一步学习 Java 网络编程的在校生
  • 工作 1-5 年,接触过 Netty,想要深入了解内部原理的同学
  • 对技术有追求,想要在面试中提高自己竞争力的同学
  • 对 Netty 底层源码感兴趣的爱好者
购买须知
  1. 本专栏为图文形式内容服务,共计 40 小节,上线时间为 2020 年 7 月 14 日,预计 2020 年 9 月 14 日更新完成;
  2. 本专栏更新时间为周一至周五每日更新 1 篇(法定节假日顺延),形式为图文;
  3. 订阅成功后,用户即可通过慕课网 PC 端、App 端、WAP 端享有永久阅读的权限;
  4. 慕课专栏为虚拟内容服务,订阅成功后概不退款;
  5. 在专栏阅读过程中,如有任何问题,请邮件联系 kf@imooc.com;
  6. 慕课专栏版权归本平台所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布 / 发表,违者将依法追究责任。
0 / 3
登录后可任选 3 个小节免费阅读
Mr_Raymond

想问下老师,我想学Netty,手头上正好有《TCP:IP详解:协议卷1》《Java网络编程》,可以直接学Netty呢? 还是先把这两本书看完在学? 或者是边学Netty,遇到不明白的再去针对性的从这两本书里找一些资料呢?

讲师回复:同学,你好,《TCP/IP详解》更偏底层,《Java网络编程》更偏传统的BIO网络通信,Netty更偏向于NIO编程,在计算机领域,往往越是底层的东西越枯燥,如果你想快速入手Java网络编程或者想快速能看懂其他开源框架的源码,我建议先从Netty开始;如果你想把IO/NIO这块的东西都搞明白,可以先看《Java网络编程》再看Netty,同时还要把IO/NIO这块的源码看懂;如果你想深入理解计算机底层关于网络通信这块的处理,可以看看《TCP/IP详解》。
2020-08-31
0
qq_达达_14

通俗易懂,爱了爱了!

讲师回复:爱了爱了~~
2020-10-19
1
慕九州4486665

讲得非常有趣,给作者点赞!

讲师回复:多谢夸奖,哈哈^^
2020-07-27
1
张三丰1

"但是它有一个非常大的优点,就是我们始终只有一个线程,并没有启动额外的线程来处理每个连接的事务,解决了 BIO 线程无限增加的问题,所以,NIO 是非常高效的" 这句话不太理解,BIO那个程序完全也可以采用单线程的处理方式啊,这样就不存在创建大量线程的缺点了,这段NIO再消费客服端请求的时候采用的是单线程阻塞的方式,前一章的BIO程序也是可以去掉线程池的,所以从这方面去分析,也看不出谁更高效,因为都是阻塞IO。退一步讲,上一章BIO采用的是线程池,那么处理客服端请求是可以并行处理的,它的性能反而更加的高效才对,这就很矛盾了。

讲师回复:首先,非常感谢您的提问。 然后,请看下面这段代码: while ((msg = reader.readLine()) != null) { System.out.println("receive msg: " + msg); } 始终要记着,我们这里讲的是TCP长连接,如果BIO使用单线程,请思考如何持续地读取多个客户端发送过来的数据?即使使用线程池,假设为10个线程,如何知道哪个客户端发来了数据?
2020-07-26
4
慕粉花小鱼

看了不少专栏,发现作者的写作风格,非常有意思,赞了

讲师回复:爱了爱了^^
2020-07-16
0
MartinCode

写的不错!

讲师回复:我就当是夸我了^^
2020-07-15
0
慕粉花小鱼

请问,在IO 多路复用中,委托美女,向美女询问菜好了没有的时候,到底能不能玩手机?

讲师回复:此时,你可以玩手机,但是美女去询问厨房的时候她是阻塞的,到了第二阶段,你去端菜的时候,你就是阻塞的了,就不能玩手机了。两个阶段都是阻塞的,对象不一样。少玩手机多学习,奥力给!
2020-07-16
1
桂林山水甲天下

嗯非常对 最重要的还是需要掌握底层核心知识,这些核心知识掌握了,学习其他东西真的能事半功倍。老师讲解的源代码和核心原理适合入门学习吗?

讲师回复:可以的,源码注释的非常详细,原理也有大量的图帮助理解,更有Java底层的知识帮助你理解消化。
2020-07-20
0
小爱仙子

老师写得可以啊,学起来~~

讲师回复:必须滴~~
2020-07-20
2
慕九州4486665

我的理解: Reactor主从模式和变异的Reactor模式的区别如下: 在我看来好像他俩的唯一区别就是主从模式中,子Reactor将read/send事件与IO处理分开了,IO处理放到了线程池中进行;而变异的Reactor模式则是将read/send事件与IO处理作为一个整体,然后放到线程池中进行; 第一个问题: 我如上的理解正确吗? 第二个问题: 主从和变异的两种方式哪个效率更高呢?为什么Netty选择的是变异的Reactor模式呢?

讲师回复:1. 你的理解是对的,不过概念错了,IO处理是read和send,decode/process/encode是业务处理,将业务处理放到单独的线程池中的好处是,业务处理不会影响到IO事件的处理,线程池也可以起到一定的缓冲作用。2. 默认情况下,我们将IO事件和业务处理放一起,是因为业务处理逻辑非常快,不需要再另建一个线程池专门处理业务。如果业务处理比较耗时(比如,业务有读取数据库、网络IO等耗时操作),或者一些特殊情况(比如,类似于Redis单线程处理业务逻辑),还是需要另建业务线程池的。
2020-08-03
3
— 造烛求明,读书求理 —
¥68.00
立即购买