Netty 源码剖析与实战
傅健
Netty 源码贡献者、Cisco 高级软件工程师
32935 人已学习
新⼈⾸单¥59
课程目录
已完结/共 60 讲
第一章:初识Netty:背景、现状与趋势 (7讲)
第三章:Netty源码:从“线”(请求处理)的角度剖析 (8讲)
第六章:成长为Netty的贡献者 (6讲)
Netty 源码剖析与实战
登录|注册
留言
28
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 08 | Netty怎么切换三种I/O模式?
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 揭开Netty面纱
04 | 为什么舍近求远:不直接用JDK NIO?
05 | 为什么孤注一掷:独选Netty?
06 | Netty的前尘往事
07 | Netty的现状与趋势
08 | Netty怎么切换三种I/O模式?
09 | 源码剖析:Netty对I/O模式的支持
10 | Netty如何支持三种Reactor?
11 | 源码剖析:Netty对Reactor的支持
12 | TCP粘包/半包Netty全搞定
13 | 源码剖析:Netty对处理粘包/半包的支持
14 | 常用的“二次”编解码方式
15 | 源码剖析:Netty对常用编解码的支持
16 | keepalive与idle监测
17 | 源码剖析:Netty对keepalive与idle监测的支持
18 | Netty的那些“锁”事
19 | Netty如何玩转内存使用
20 | 源码解析:Netty对堆外内存和内存池的支持
21 | Netty代码编译与总览
22 | 源码剖析:启动服务
23 | 源码剖析:构建连接
24 | 源码剖析:接收数据
25 | 源码剖析:业务处理
26 | 源码剖析:发送数据
27 | 源码剖析:断开连接
28 | 源码剖析:关闭服务
29 | 编写网络应用程序的基本步骤
30 | 案例介绍和数据结构设计
31 | 实现服务器端编解码
32 | 实现一个服务器端
33 | 实现客户端编解码
34 | 完成一个客户端雏形
35 | 引入"响应分发"完善客户端
36 | Netty编码中易错点解析
37 | 调优参数:调整System参数夯实基础
38 | 调优参数:权衡Netty核心参数
39 | 调优参数:图解费脑的三个参数
40 | 跟踪诊断:如何让应用易诊断?
41 | 跟踪诊断:应用能可视,心里才有底
42 | 跟踪诊断:让应用内存不“泄露”?
43 | 优化使用:用好自带注解省点心
44 | 优化使用:“整改”线程模型让"响应"健步如飞
45 | 优化使用:增强写,延迟与吞吐量的抉择
46 | 优化使用:如何让应用丝般“平滑”?
47 | 优化使用:为不同平台开启native
48 | 安全增强:设置“高低水位线”等保护好自己
49 | 安全增强:启用空闲监测
50 | 安全增强:简单有效的黑白名单
51 | 安全增强:少不了的自定义授权
52 | 安全增强:拿来即用的SSL-对话呈现表象
53 | 安全增强:拿来即用的SSL-抓包暴露本质
54 | 安全增强:拿来即用的SSL-轻松融入案例
55 | Cassandra如何使用Netty ?
56 | Dubbo如何使用Netty ?
57 | Hadoop如何使用Netty ?
58 | 赏析Netty之美
59 | 如何给Netty贡献代码?
60 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(28)

  • 最新
  • 精选
DJZhu
关于老师提到的水平触发,边缘触发,前面的评论给出了很形象的解释。我尝试从“水平”和“边缘”的由来再解释一次。 水平触发和边缘触发借鉴的是电子触发的概念。在各种数字电子元器件中,输出是随着输入变化而逻辑变化的,最常见的有“与电门”。在与电门中,两个输入的电极同为正电压(真),则输出一个正电压(真);任意一个输入的电位变成负电压(假),则输出一个负电压(假)。问题在于,什么时候触发电位的变化呢?有两种方案: 1. 在一个输入的电位变化时(边缘触发) 2.在输入的电位状态变成目标状态时(水平触发) _______ ____| |__ (1) (2) 你可能会问,这不是一个概念么?在电子学的概念里,不是。而在这里,网络通信借鉴了这个概念,将消息到达后,读取(触发)的时机形象地分为“水平触发”和“边缘触发”。边缘触发是指消息到来的时刻进行消费,如果一次到达的消息超过了一次消费的最大值,剩余的消息不会被继续消费(类似于高电位保持并不会边缘触发的输出变法),要消费这一部分消息要么等到下一次消息的到来,要么在这次消费之后主动触发消费剩余消息。至于水平触发,则是以是否有剩余消息为标准,有剩余,就一直主动消费直到无消息。

作者回复: 补充的很赞👍,谢谢

2020-01-20
2
23
HaydnSyx
老师,什么是水平触发?什么是边缘触发?能否举个例子说明一下呢

作者回复: 水平触发: 点单后,菜(数据)做好了,服务员端上来问吃不吃(读),你不吃或者吃不完,她过会还会端过来问你吃不吃,提醒你,还没吃完,可以继续吃,反反复复。 边缘触发: 服务员端上菜后,你一次没有吃完,好了,等你想吃剩下的时候,也别吃了,除非再点菜,才能吃到刚没吃完的。

2019-10-13
6
22
lwenbin
老师,您好 三种模式中的第二种,点单等待被叫是否有些小问题?NIO中还是要自己用selector去查询事件是否就绪的,没有事件就绪时查询会阻塞在那里,这个是否和“点单等待被叫”有些不同? 谢谢!

作者回复: 阻塞的主体不同,这个selector你可以理解成点单的吧台,你去点单了,给你个号码,等于注册了一个事件,然后吧台记录下来了,等菜好了,就喊这个号码了。selector本身的阻塞不是我们读写数据时候的阻塞,是他在等待事件就绪的阻塞,比如菜也没好,吧台就等着,和我们数据阻塞不是一个主体。

2019-10-11
4
9
ezekiel
水平触发和边缘触发,适用场景是什么?

作者回复: 边缘触发相当于高速模式,理论上效率更高,但是复杂度也高,所以现在大多应用(Redis等)还是默认水平触发,如果追求要更好的性能、同时有信心编码好,可以尝试使用边缘触发,例如nginx。 另外,还有点注意的是边缘触发只支持非阻塞模式。

2019-12-01
7
Coding小先
老师,只会简单的Java,学这个课程吃力吗?要不要先学学Java网络编程方面的知识

作者回复: 我觉得可能会吃力,但是也不定会太吃力,如果有时间,先学点java网络编程比较好,因为课程默认有点基础了,所以你可以看看课程git repo资料里面,有个直播的pdf里面有些推荐的书,其中java网络编程推荐的第二本,下个电子版的看看。那本书页数很少。但是很好,也不花钱,网上有pdf.

2019-11-28
3
Douglas
我看到的例子都是这种,排队啊,点餐啊,离操作系统实际处理io请求太远了,对于计算机专业的人来说很业余,老师可以从系统底层来讲么,比如不同io模型,操作系统是如何来调度io设备的

作者回复: 这个估计让人很晕还记不住,所以才想着搞形象点,通俗(简单)易懂点

2020-03-10
2
蛮野
Linux为什么没有学习采纳win的aio成熟方案呢?是这个方案与linux的设计理念有冲突吗?linux系统很多概念也都是学习过来的

作者回复: 这两个系统完全是两套系统,最本质的问题在于linux的aio还是基于epoll,用epoll来模拟的,所以性能优势/复制的性价比并不高,既然不高,用的人就少,用的人少,自然就问题多,所以自然成熟度没有windows下的AIO高。 为什么不搞的更好(学习windows)?不考虑能不能学(毕竟系统不同),我觉得需要时间来演进和发展,就像从bio到nio也需要了一段时间,同样aio肯定也需要发展,或者说以后直接演进成其他更好的模式都是有可能的。

2020-01-16
1
yang
叫老师好呢 还是叫健哥好呢? 老师,视频里提到 linux下的aio实现不够成熟, 应该怎么理解啊?

作者回复: 主要移除原因还是性能在linux下没优势,后来想重新引入,但是前提是要证明有很大性能优势。关键移除后,一般人没动力再搞再研究再证明了

2019-10-12
2
1
Gary
windows的aio比较成熟,指的是iocp模型的成熟吗?

作者回复: 是的

2019-10-10
1
just code it
老师我有个问题,源码里边,方法的形参很多有时候都要加上final这样做有什么好处吗?

作者回复: 是一种保护,也是一种暗示,告诉你它不会变,不让变,也不需要你担心它变。

2020-04-07
收起评论