netty应用的问题总结

第1讲-第7讲

1、为什么在Nio的代码里面对SelectionKeys执行iterator.remove()?
2、Cancle()的作用?
3、channel如何获取到ByteBuffer?
4、写一次数据,当发现数据没写完的时候该怎么办?
5、请说下正常拷贝和零拷贝
6…还有很多

第8讲-------------

1、客户端关闭也会触发读操作吗?
2、如何给读感兴趣事件代码加保护?
3、如何给读感兴趣事件代码加异常保护?
4、半包粘包的原因?以及如何解决半包粘包问题?
5、网络的分包问题是怎么解决的?
6、流量控制问题是怎么解决的?

第9讲-------------

1、在服务写数据之后我们会发出多个0呢?原因是什么呢?
2、单线程服务端角度这种流量控制有什么问题?
3、OP_WRITE在什么情况下会使用?
4、怎么知道ByteBuffer有没有写完?
5、Nio写数据的完整流程是什么?
6、什么情况下会改linux句柄大小?
7、主从和主备的区别?
8、主备主切换问题该怎么解决?

第10讲------------

1、单线程版的reactor
2、如何在两个线程中保证运行顺序呢?

第11讲------------

1、多线程版的reaactor
2、零拷贝

第13讲------------

1、NioEventLoopGroup是什么?
2、NioEventLoop和DefaultEventLoop有什么区别?
3、当netty的work线程做比较耗时的操作怎么办?
4、异步和多线程有什么关系?有什么区别呢?
5、Netty的Promise和原生Future有什么差别吗
6、Netty的Promise主要是解决了什么问题?
7、runable和callable异步处理的两个问题?为什么使用promise就没有问题?
8、Netty异步设计的原理
9、关于写业务是否会使用到Promise呢?
10、当bootstrap.connect()时,为什么future.sync阻塞了,还需要去异步处理呢,这个步骤是不是多余的

第15讲-------------

1、添加监听的顺序是否会影响到future的监听?
2、Netty为什么要自己再封装一套Channel?
3、Netty封装channel提供哪些API(方法)
4、调用channel.close需要注意什么?
5、为什么channel.close程序客户端还是未结束运行?
6、请你说下你handler的作用,pipeline是什么呢?pipeline和handler以及ChannelHandlerContext他们之间的关系又是什么?
7、请你说下handler之间是如何传递数据的?
8、如果handler无需传递数据又该怎么办呢?
9、netty内部的pipeline有几个默认的handler分别是什么?

第16讲------------

1、handler和childrenHandler有什么区别吗
2、NettyServer中的handler能干什么事情呢?
3、NettyServer中的childrenHandler能干什么事情呢?
4、ServerBootStrap和BootStrap有什么关系呢?
5、为什么NettyClinet的bootstrap的handler不能设置NioServerSocketChannel只能设置NioSocketChannel呢?
而NettyServer的ServerBootStrap可以设置NioServerSocketChannel以及childrenHandler可以设置NioServerSocketChannel呢?
6、请你说下整个netty的服务端运行过程
7、如何方便的测试Netty的Handler
8、输入时会走head和tail吗,输出时会走head和tail吗

第17讲ByteBuf------------

1、ByteBuf相对于java原生的ByteBuffer的优势
2、如何获得ByteBuf
3、ByteBuf最大的内存空间Integer最大值是多少?
4、如何打印bytebuf的信息?
5、如何打印图形化信息?
6、如何获得ByteBuf,ByteBuf有什么特点?
7、自动扩容的规律是什么呢?
8、堆内存和直接内存的关系,以及特点
9、池化的好处
10、netty默认开启池化吗?
11、ByteBuf内存结构
12、被废弃的数据在Bytebuf还存在吗?
13、如何重复读一个ByteBuf?
14、ByteBuf read和get的区别是什么?
15、ByteBuf内存释放 是不是回收,清空,销毁?
16、Netty是如何释放内存的?
17、Netty是通过什么释放内存的?
18、ByteBuf什么时候需要释放呢?
19、什么情况下会使用切片?使用切片需要注意什么?

第18讲粘包分包--------------

1、数据传输过程
2、发送方内核态Socket缓冲区和接收方Socket内核区一样吗?
3、用户缓存区大 还是 Socket缓冲区大?
4、Socket缓冲区和滑动窗口的区别
5、流量控制->滑动窗口是什么?
6、Socket缓冲区数据是如何到达网卡呢?
7、write()返回值含义是什么呢?
8、Socket缓冲区 默认大小是多少?
9、Netty如何获得ByteBuf?
10、Netty创建的ByteBuf默认大小?
11、Netty 封装了channel 可以设置TCP 接受缓冲区大小参数
12、半包粘包解析思路

第19讲编解码-------------

1、什么是编解码器?
2、codec是什么?
3、Netty中编解码的体现
4、有哪些编解码方式呢?以及各自的优缺点
5、具体的编解码器是那两个?
6、 Netty常见的编解码器 有哪些?它们有啥特殊的地方吗?
7、MessageToMessage门派编解码器与ByteToMessage&&MessageToByte的区别有哪些?
8、封帧相关的有哪些Handler
9、序列化和编解码区别
10、那些编解码自带封帧呢?
11、使用StringDecoder或者StringEncoder需要注意什么呢?

第20讲———— HTTP编解码器

1、port是什么?
2、uri是什么?
3、HTTP1.1 有限长链接的目的
4、Get的请求行信息
5、pipeline的调用与Message个数相关
6、out的长度是根据http请求结构决定的
7、如何限定handler中msg的类型呢?
8、SimpleChannelInBound作用
9、channelRead和channelRead0的区别?
10、 pipeline的调用与 Message的个数相关吗?
11、可以通过SimpleChannelInboundHandler限定消息的类型吗?
12、HTTP编解码器相关有哪些?
13、Http协议的解码器,会出现半包粘包问题么?

第21讲自定义协议——————

1、编码器如何自定义?
2、解码器如何自定义?
3、编解码器合二为一如何自定义?
4、ReplayingDecoder有什么作用吗?
5、编码器ByteBuf数据 一次处理不完有什么后果吗?
6、HTTP需要指令类型吗?
7、自定义系统的通信协议

第22讲 总结handler——————

1、Handler作用:
2、Pipeline中Handler执行流程?
3、Pipeline里面到底有几个Handler呢?
4、ByteBuf的使用和释放
5、channel的生命周期方法都有哪些?
6、异常的处理是如何处理的?

第23讲 总结handler————————

1、netty的设计模式的体现
2、handler的总结
3、IdleStateHandler
4、如何应对当客户端没有问题但是服务器把客户端的链接给关掉这种情况?
5、WebSocketServerProtocalHandler有什么作用?
6、 WebSocket干什么用的?
7、Websocket解决了什么问题呢?
8、WebSocket协议 Http协议关系是什么?
9、Netty如何支持WebScoket
10、WebSocket发送消息过程中需要注意什么?

第24讲 参数讲解————

1、Handler处理过程中 什么情况下可以被多个pipeline共用【使用Shareable 】?
2、关于公用Handler需要注意什么地方?
3、如何公用?以及公用Handler的含义?
4、Channel什么时候关闭?

第25讲 参数讲解————

1、netty客户端的参数是怎么设置的?服务端的参数是怎么设置的?
2、netty中的配置修改原理是什么?
3、默认ByteBuf的大小是多少呢?
4、RCVBUF_ALLOCATOR设置的作用?
5、RCVBUF_ALLOCATOR如何主动设置?
6、SO_RCVBUF & SNDBUF的含义
7、SO开头的参数有什么意义呢?
8、ALLOCATOR详解
9、Socket缓冲区大小如何修改呢?它和滑动窗口是什么关系呢?
10、RCVBUF_ALLOCATOR 和 SO_RCVBUF & SNDBUF的区别是什么?
11、如何控制netty使用直接内存还是非直接内存?
12、第一个Handler的Object msg受什么影响?
13、TCP_NODELAY的作用
14、CONNECT_TIMEOUT_MILLIS的作用
15、ALLOCATOR和RCVBUF_ALLOCATOR的区别
16、SO_BACKLOG的作用
17、三次握手四次挥手
18、三次握手和四次挥手的本质是什么?
19、为什么TCP连接的时候是3次?2次不可以吗?
20、为什么TCP连接的时候是3次,关闭的时候却是4次?
21、三、为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?即为什么客户端在TIME-WAIT阶段要等2MSL?
22、如果已经建立了连接,但是客户端突然出现故障了怎么办?
23、白话形容三次握手、四次挥手:
24、SO_REUSEADDR的理解
25、为什么需要SO_REUSEADDR这个方式?
26、SO_KeepAlive有使用场景吗?
27、SO_KeepAlive工作过程
28、为什么有了KeepAlive还需要心跳?
29、Http协议1.1,保证 有限长连接 KeepAlive头 60秒和Tcp的keepAlive有什么区别呢?
30、HTTP和TCP的关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值