面试题:
https://www.cnblogs.com/xiaoyangjia/p/11526197.html

netty原理

netty每日一遍

传统io
阻塞1:服务端要等待客户端的连接(A连接上来了,只有当A释放了连接,B才能链接上来----可以使用线程池来解决这个问题)
阻塞2: 服务端要等待客户端发送数据
netty每日一遍
客户端先和内核进行tcp3次握手建立连接,

new serversocket()执行的操作是
调用内核的socket()方法,得到一个变量/描述符(文件描述符6fd)生命一个描述符,再将变量和端口号绑定,然后监听端口号。accept函数想得到客户端的一个文件描述符6fd,其实就是监听端口号上的一个连接,然后执行内核调用获得返回值7fd,然后再去读取7fd里面的内容
单线程bio
netty每日一遍
一连接一线程bio(1万连接得开1万个线程,显然不行)
netty每日一遍
解决方案:
让accept/read不断轮询监听,有连接来,数据来了就返回1,否则返回-1,再回去接着转
操作系统文件描述符:可读可写
flip()翻转的意思
boss做accept
work做读和写

6fd:有无连接
7fd:有无数据到达
netty每日一遍
同步:内核知识告诉你内核空间有无数据,用户需要自己讲数据提到用户空间

channel,bytebuffer,selector

相关文章:

  • 2021-10-25
  • 2022-02-17
  • 2022-02-05
  • 2022-12-23
  • 2021-12-30
  • 2022-12-23
  • 2021-12-24
  • 2021-08-04
猜你喜欢
  • 2021-12-15
  • 2022-03-06
  • 2021-11-09
  • 2021-10-04
  • 2022-01-11
  • 2021-08-16
  • 2021-05-27
相关资源
相似解决方案