简单理解NIO
来源:互联网 发布:boost高并发网络框架 编辑:程序博客网 时间:2024/05/21 14:58
NIO:JavaNon-blocking IO(Java非阻塞I/O)
关键词:
Channel(通道) Buffer(缓存区) Selector(选择器)
Channel(通道)类似于Java传统读取IO中的Stream,但是区别是一个Stream一般是只能读或者只能写,比如InputStream只能read、OutputStream只能write。但是Channel既能读也能写。
Buffer(缓存区),NIO中读写的东西一般都要先放在Buffer中。
Selector(选择器)是NIO中最关键的一个部分,Selector的作用就是用来轮询每个注册的Channel,一旦发现Channel有注册的事件发生,便获取事件然后进行处理。
重点了解数据传输的过程,不论读写都先到buffer。
Selector
Handle
register
当前留下的NIO是netty
问题:buffer之间也有数据交换?selecter的事件处理 channel上的事件定义
socket和servlet有什么异同?
Socket是j2se在网络编程这块最基本的东西。把一系列网络io复杂性封装。但是光有io,光能传输数据,不足以完成标准化的网络通信。所以在这个基础上,加入了协议支持。比如web容器(tomcat等)加入了http协议的解析(所谓的协议,就是一系列带有标准格式的字符串)。而把里面可以独立给程序员的模型接口抽取出来,就是Servlet。所以,Servlet可以看做是web容器运行的一部分逻辑(请求和响应,即request和response其实可以看成是dto,最后执行完servlet.service方法后,由容器传递给socket类的outputstream,完成相关操作)。而Socket则是web容器的核心(负责交换协议)。
参考:
Java NIO:NIO概述
Java Socket实战之六 使用NIO包实现Socket通信
- 简单理解NIO
- NIO简单理解(一,NIO服务端简单实现逻辑)
- nio简单demo,帮助理解io与nio区别
- Java BIO, NIO, AIO 简单理解
- Java NIO 的简单读写 以及理解
- NIO理解
- NIO简单理解(二,传统IO与NIO模型粗析)
- 深入理解java NIO
- 理解Java NIO
- 理解Java NIO
- NIO的理解
- 理解Java NIO
- 理解Java NIO
- 理解Java NIO
- 理解Java NIO
- Java NIO 理解
- nio学习理解
- 深入理解Java NIO
- 将.Net应用程序依赖的库文件部署到其他目录下
- 如果想飞得高,就该把地平线忘掉
- hdoj2058(the sum problem
- 关系的幂运算
- 安卓新手的摸索之路
- 简单理解NIO
- 程序员的Job Security - 我的OJ(Online Judge)比较
- 字符串之旋转词
- ajax网络请求时候的data参数应该用JSON.stringify?
- 辛星浅析ruby下的mkmf.rb can't find header files for ruby at
- virsual box共享文件夹
- 超时设置方法( the way to set timeout )
- 论 为啥把博客从163搬家到CSDN
- 在Ubuntu中通过安装Nautilus实现鼠标右键打开Terminal