NIO
文章平均质量分 75
逆流丶石头
这个作者很懒,什么都没留下…
展开
-
Netty 异步模型
相比传统阻塞 I/O, 执行 I/O 操作后线程会被阻塞住,直到操作完成;异步处理的好处是不会造成线程阻塞, 线程在 I/O 操作期间可以执行别的程序,在高并发情形下会更稳定和更高的吞吐量。当 Future 对象刚刚创建时,处于非完成状态,调用者可以通过返回的 ChannelFuture 来获取操作执行的状态、注册监听函数来执行完成后的操作。原创 2023-03-17 14:07:49 · 118 阅读 · 0 评论 -
Netty 线程模型
做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor。Reactor 多线程模型。原创 2023-03-03 22:46:36 · 135 阅读 · 0 评论 -
Netty 概述
原生NIO存在的问题:Netty 官网: https://netty.ioNetty 简介:Netty的优点:原创 2023-02-20 17:11:17 · 110 阅读 · 0 评论 -
NIO 零拷贝
Linux 2.1 版本提供了sendFile 函数,数据不经过用户态,直接从内核缓冲区进入到socket buffer,同时,由于和用户态完全无关,就减少了一次上下文切换。3次拷贝,2次状态切换。通过内存映射,将文件映射到内核缓冲区,同时,用户空间可以共享内核空间的数据,在进行网络传输时,就可以减少内核空间到用户控件的拷贝次数。拷贝次数是3次,3次状态切换。Linux 2.4 版本做了一些修改,避免了从内核缓冲区拷贝到socket buffer的操作,直接拷贝到协议栈,从而再一次减少了数据拷贝(原创 2023-02-20 16:41:45 · 163 阅读 · 0 评论 -
NIO 群聊系统
基于NIO 的群聊系统原创 2023-02-20 12:46:31 · 122 阅读 · 0 评论 -
NIO 三大核心-Selector
Java的NIO, 用非阻塞的 I/O 方式。可以用一个线程,处理多个客户端连接,就会用到Selector(选择器)Selector 能够检测多个注册的通道上是否有事件发生(注意:多个Channel 以事件的方式可以注册到同一个Selector), 如果有事件发生,便获取事件然后针对每个事件进行相应的处理。这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求只有在连接真正有读写事件发生时,才会进行读写,就大大地减少了系统开销,并且不必为每个连接都创建一个线程,不用去维护多个线程。原创 2023-02-10 17:54:52 · 107 阅读 · 0 评论 -
NIO 三大核心-Channel
FileChannel、DatagramChannel、ServerSocketChannel( 类似 ServerSocket ) 和 SocketChannel (类似 Socket 当客户端连接 Server的时候,会由 ServerSocketChannel 产生一个对应客户端的 SocketChannel)主要用来对本地文件进行IO操作。原创 2023-02-07 17:31:27 · 141 阅读 · 0 评论 -
NIO 三大核心-Buffer
一组方法,可以更轻松得使用内存块,缓冲区对象内置一些机制,能够跟踪和记录缓冲区的状态变化情况。Channel 提供从文件、网络读取数据的渠道,但是读取或写入的数据都必须经由Buffer。4. 每个基本数据类型(除boolean外),都有一个Buffer类型预置对应,最常用的是ByteBuffer类。2. Buffer类定义了所有的缓冲区都具有的四个属性来提供关于其包含的数据元素的信息。从当前位置上put, put之后,position会自动+1。: 缓冲区本质上是一个可以读写数据的内存块,可以理解成一个。原创 2023-02-07 16:30:01 · 209 阅读 · 0 评论 -
IO 模型
Netty IO模型原创 2023-02-07 13:58:59 · 72 阅读 · 0 评论