【直播笔记】22年最新【面试题】TCP/IP和NIO

文件系统有界数据:有数据,历史,可寻址的数据网络数据: 无界数据old IO flush() 空实现,断电会丢数据。但是vi会看见数据?vi和javaAPP会和内核交互。移动硬盘自带电容,防止突然断电。NIOforce调用内核,刷写数据。OSI程序: 应用层,会话层,表示层内核: 传输控制层,网络层,链路层,物理层其实网络io是程序自己对着自己系统内核的过程。传输==控制==层:1、TCP三次握手等面试题2、SOCKET通信的面试题3、TCP状态切换的面试题4、长连接、短
摘要由CSDN通过智能技术生成

1、TCP三次握手等面试题
2、SOCKET通信的面试题
3、TCP状态切换的面试题
4、长连接、短连接、有无状态通信、会话等面试题
5、OIO/BIO/NIO/AIO/DIO等IO模型面试题
6、多路复用器EPOLL的面试题
7、NettyIO框架的常见面试题
8、粘包、拆包、粘包、半包、编解码面试题
9、HttpClient、连接池等面试题
10、redis、nginx、tomcat常见通用面试题

文件系统

有界数据:有数据,历史,可寻址的数据

网络数据: 无界数据

old IO flush() 空实现,断电会丢数据。但是vi会看见数据?vi和javaAPP会和内核交互。

移动硬盘自带电容,防止突然断电。

在这里插入图片描述

NIO

在这里插入图片描述
force调用内核,刷写数据。

OSI

程序: 应用层,会话层,表示层
内核: 传输控制层,网络层,链路层,物理层

其实网络io是程序自己对着自己系统内核的过程。

在这里插入图片描述
传输控制层:TCP/UDP-
TCP:面向连接可靠的传输控制协议

三次握手

三次握手:连接就是开辟资源的过程,数据包的交互过程。
都确认自己的输入输出没问题,收到并且开辟资源。
三次握手可以创建一个资源,一个socket

在这里插入图片描述
在这里插入图片描述

资源创建了状态 ESTABLISHED

资源是个啥? Socket(套接字,插板)
四元组: ip:port + ip:port
在这里插入图片描述

为什么是四元组

是双方的,且在双方是唯一的。

端口号: 0~65535
在这里插入图片描述
IPA:0 IPB:80 存在
IPA:0 IPB:90 还可以创建
在这里插入图片描述
在这里插入图片描述
抓包
在这里插入图片描述
三次握手 和 四次分手
P: 不要缓冲,立刻push
S:请求连接
S. :
. : 有ack就会有个店
在这里插入图片描述

BIO

java里每一个连接都有一个线程
有两个阻塞。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
BIO: 等待数据,阻塞,每个线程对应一个socket,浪费资源,
cpu: 缓存,保护,恢复,
在这里插入图片描述

NIO: 可能会返回空,掉一次会立即返回,一个线程遍历各个连接。

在这里插入图片描述

NIO: nonblock

在这里插入图片描述

N: java nio new
linux nonblock 非阻塞,一个线程可以处理多个连接

弊端: 一万个连接在一个线程里,while循环的方式, 循环一次代价O(10000),成本—一万次的尝试去调用内核的读取,O(1)有数据.9999调用是浪费的。浪费的是系统调用。用户态–》内核态
于是就有了多路复用器

多路复用器

减少了无用的系统调用次数。第一代: select,poll
select和poll的区别在于存储socket的数据结构的差异 一个是数组 一个是链表
epoll也属于多路复用器,是调优版本

在这里插入图片描述

IO模型:异步,同步

异步io模型: 内核级线程。
在这里插入图片描述
app面对 队列读取。

在这里插入图片描述

在这里插入图片描述

man查看系统调用

总结

1.BIO模型

每一条路对应一个线程
在这里插入图片描述

2.NIO模型

在这里插入图片描述

3.多路复用器 select poll

跑一次有意义的。
与内核交互,问内核的socket的状态
然后针对这些状态读取数据

在这里插入图片描述

4. 多路复用器 epoll

给内核开辟一个空间,准备一个记事本。
线程中每来一个连接(内核的socket的状态),将这个连接记录到该空间里。
在这里插入图片描述

kafka使用多线程如何保证分区有序

kafka分区有序,而且批次提交。
redix单线程处理一堆连接的数据,每个连接里的数据是能保证有序的

但是kafka是多线程处理所有连接的消息,io模型应该是基于epoll的方式。

都是IO线程,一堆的reactor。

多线程处理 channel中的数据,可能会导致数据乱序

在这里插入图片描述

在这里插入图片描述
静音操作
当一个客户端连接 向socket channel发送一个数据后,会静音。在所有的客户端连接发来的数据 一轮处理完之后,再处理下一个。

在性能方面:
因为是多任务的情况下,每次处理的每个任务都是一样的。

03:10:00

深度剖析:Kafka 请求是如何处理?看完这篇文章彻底懂了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值