目录

菠萝🍍的博客

有谁不喜欢吃菠萝呢

标签: Net (3)

Netty的复习【3】Buffer、NIO

Buffer ByteBuffer可以理解为放在内存中的一个数组。Buffer是一个抽象类,它的具体实现有 ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer。为什么没有string,用char代替了。 在这些类型中,使用最多的是ByteBuffer,可以在网络上进行传输。 该图描述的是Buffer的分配、读写和常用操作 原生JDK网络编程- Buffer capacity 作为一个内存块,Buffer有一个固定的大小值,也叫“capacity”.你只能往里写capacity个byte、long,char等类型。一旦Buffer满了,需要将其清空(通过读数据或者清除数据)才能继续写数据往里写数据。 position 当你写数据到Buffer中时,position表示当前的位置。初始的position值为0.当一个byte、long等数据写到Buffer后, position会向前移动到下一个可插入数据的Buffer单元。position最大可为capacity – 1. 当读取....

Netty的复习【2】AIO

水平触发和边缘触发 水平触发Level_triggered 当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读完(如读写缓冲区太小),那么下次调用epoll_wait()时,它还会通知你在上没读写万的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!!!如果系统中有大量你不需要读写的就绪文件描述符,而它们每次都会返回,这样会大大降低处理程序检索自己关心的就绪文件描述符的效率。 边缘触发Edge_triggered 当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据全部读写完(如读写缓冲区太小),那么下次调用epoll_wait()时,它不会通知你,也就是它只会通知你一次,知道该文件描述符上出现第二次可读写事件才会通知你!!!这种模式比水平触发效率高,系统中不会充斥大量你不关心的就绪文件描述符!! select(),poll()模型都是水平触发模式,信号驱动IO是边缘触发模式,epoll()模型即支持水平触发,也支持边缘触发,默认是水平触发。 原生的JD....

Netty的复习【1】

OSI七层模型【记不太清了,要好好复习一下】 OSI七层模型各层作用 物理层 物理层并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程。 DTE、DCE DTE数据终端:手机 DCE数据通信设备:光猫 作用 1.提供数据传输的实际通道 2.传输数据 数据链路层 数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。 网卡可以看作独立的数据链路层产品。 网络层 路由选择和中继,在一条数据链路上复用多条网络连接 传输层 定义传输数据的协议端口号,以及流控和差错校验。 会话层 建立、管理、终止会话 表示层 把应用层提供的信息变换为能够共同理解的形式 应用层 网络服务与最终用户的一个接口 TCP/IP协议 端口号:端口号用来识别同一台计算机中进行通信的不同应用程序。因此,也被称为程序地址。 三次握手 首先标志位SYN置为1,客户端将这个报文发送给服务器端。 然后客户端的状态变为SYN_CENT,然后服务端把SYN,ACK标志位置为1,大写的ACK和小写的ack并不一样,小写的ack表示一个具体的值,seq=K中的K值为随机数,然后服务端....