为了账号安全,请及时绑定邮箱和手机立即绑定

解锁网络编程之NIO的前世今生

难度入门
时长 1小时40分
学习人数
综合评分9.57
43人评价 查看评价
9.5 内容实用
9.4 简洁易懂
9.8 逻辑清晰
  • 核心类

    NIO核心

    Channel:通道

    Buffer:缓冲区

    Selector:选择器或多路复用器

    其中:

    channel是信息传输的通道,是jdk NIO中对输入输出方法的另一种抽象,类比IO中的流,与流不同之处在于,channel具有双向性,而流是单向传输的,一个流必须是InputStream或OutputStream的子类,而通道可以用于读写或二者同时进行。channel可以工作在非阻塞模式下,构成NIO的基础。在NIO中,操作channel的唯一方式是使用buffer,通过buffer操作channel,实现数据块的传输。

    channel的实现:

    1. 文件类:FileChannel,用于对文件的读写

    2. UDP类:DatagramChannel, 用于UDP的数据读写

    3. TCP类:ServerSocketChannel/SocketChannel,用于TCP的数据读写


    查看全部
  •  非阻塞式I/O模型

    弹性伸缩能力强

    单线程节省资源


    查看全部
  • NIO 网络编程模型

    ====创建连接===
    1.注册建立连接事件(Selector)
    2.客户端发起连接请求
    3.服务端接收请求,启动建立连接事件处理器(Acceptor Handler)
    4.Acceptor Handler创建与客户端的连接
    5.Acceptor Handler响应客户端建立连接请求
    6.Acceptor Handler向Selector注册连接可读事件

    ====处理流===

    7.Client发起请求
    8.Selector启动连接读写处理器(Read&Write Handler)
    9.Read&Write Handler处理与Client的读写业务
    10.Read&Write Handler响应Client的请求
    11.Read&Write Handler向Selector注册连接可读事件


    查看全部
    0 采集 收起 来源:NIO网络模型

    2019-07-31

  • BIO网络模型缺点

    1. 阻塞式I/O模型

    2. 弹性伸缩能力差

    3. 多线程耗资源


    查看全部
  • BIO缺点:

    每次客户端请求就会生成一个线程,在大量的并发的情况下,接入的服务端过多,就会出现问题。1千个请求,创建一千个线程

    查看全部
    0 采集 收起 来源:BIO网络模型

    2019-07-31

  • BIO模型:阻塞同步IO

    过程:

    1. 服务端启动,开始建立监听客户端的连接请求;

    2. 客户端启动,向服务器端发起建立连接请求;

    3. 服务器在收到客户端的请求后,将会创建一个新的线程;

    4. 服务端新创建的线程会与客户端建立socket连接,用于响应客户端的请求,通知客户端连接


    查看全部
    0 采集 收起 来源:BIO网络模型

    2019-07-31

  • NIO :Non-blocking I/O(非阻塞IO) 或者New I/O

    JDK1.4开始有的

    查看全部
    0 采集 收起 来源:编程模型

    2019-07-31

  • 开发环境!

    查看全部
    0 采集 收起 来源:开发环境

    2019-07-31

  • NIO编程实现步骤

    第一步:创建Selector

    第二步:创建ServerSocketChannel,并绑定监听端口

    第三步:将Channel设置为非阻塞模式

    第四步:将Channel注册到Selector上,监听连接事件

    第五步:循环调用Selector的select方法,检测就绪情况

    第六步:调用selectedKeys方法获取就绪channel集合

    第七步:判断就绪事件种类,调用业务处理方法

    第八步:根据业务需要决定是否再次注册监听事件,重复执行第三步操作



    查看全部
  • SelectionKey 选择键

    四种就绪状态常量:连接就绪、接受就绪、读就绪、写就绪


    查看全部
  • Selector的使用方法

    查看全部
  • Selector 选择器/多路复用器

    作用:I/O就绪选择

    地位:NIO网络编程的基础


    查看全部
  • Buffer:缓冲区,它提供唯一与channel进行交互的方式,作用是读写channel中的数据。Buffer从本质上说是一块内存区域,它是一块可以写入数据,读取数据的内存。


    Buffer的属性

    Capacity:分配的buffer容量,一旦写入的最大字节数超过这个容量,需要将其清空之后,才能继续往里面写数据

    Position:当前操作的位置,初始值为0,最大值:容量值-1

    Limit:上限,写模式下等于Capacity,读模式下等于最多能读取的数据

    Mark:标记,记录mark的位置,调用reset方法时position会回到mark的位置


    查看全部
  • Channel的使用

    查看全部
  • NIO核心

    Channel:通道

    Buffer:缓冲区

    Selector:选择器或多路复用器

    其中:

    channel是信息传输的通道,是jdk NIO中对输入输出方法的另一种抽象,类比IO中的流,与流不同之处在于,channel具有双向性,而流是单向传输的,一个流必须是InputStream或OutputStream的子类,而通道可以用于读写或二者同时进行。channel可以工作在非阻塞模式下,构成NIO的基础。在NIO中,操作channel的唯一方式是使用buffer,通过buffer操作channel,实现数据块的传输。

    channel的实现:

    1. 文件类:FileChannel,用于对文件的读写

    2. UDP类:DatagramChannel, 用于UDP的数据读写

    3. TCP类:ServerSocketChannel/SocketChannel,用于TCP的数据读写


    查看全部

举报

0/150
提交
取消
课程须知
1.具备基础Java知识 2.了解IO流相关知识 3.了解多线程相关知识
老师告诉你能学到什么?
1.了解编程模型,学会从模型角度学习一项新知识 2.温习BIO网络编程知识 3.学习NIO网络编程原理及设计思想 4.如何使用JDK中NIO相关核心类的API 5.通用NIO网络编程步骤 6.如何实现一个基于NIO的多人聊天室程序 7.NIO网络编程的缺陷有哪些

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!