美文网首页
io nio netty

io nio netty

作者: edsin | 来源:发表于2019-02-16 13:28 被阅读0次

    java io

    • 字节流和字符流
    Byte Streams Character Streams
    InputStream Reader
    OutputStream Writer
    • 读/写数据的逻辑
      open a stream
      while more information
      read/write information
      close the stream

    • 节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域

    • 过滤流:使用节点流作为输入或输出。过滤流时使用一个已存在的输入流或输入流连接创建的

    • java.io中最核心的一个概念是流(Stream),面向流的编程。java中,一个流要么是输入流,要么是输出流,不肯同时既是输入流又是输出流

    • java.nio中拥有3个核心概念:Selector,Channel与Buffer。在java.nio中,我们是面向块(block)或是缓冲区(buffer)编程的。Buffer本身就是一块内存,底层实现上,他实际上是一个数组。数据的读写都是通过Buffer来实现的。

    除了数据之外,Buffer还提供了对于数据的结构化访问,并且可以追踪到系统的读写过程。

    • java中的7种原生的数据类型都有各自对应的Buffer类型,如IntBuffer,ByteBuffer,LongBuffer及CharBuffer等等,并没有BooleanBuffer

    Channel指的是可以向其写入数据或是从中读取数据的对象,类似于java.io中的Stream

    所有数据的读写都是通过Buffer来进行的,永远不会出现直接向Channel写入数据的情况,或是直接从Channel读取数据的情况

    与Stream不同的是,Channel是双向的
    由于Channel是双向的,因此他能更好地反映出底层操作系统的真是情况;在Linux系统中底层操作系统的通道就是双向的

    • 通过NIO读取文件设计3个步骤
      1.从FileInputStream获取到FileChannel对象
      2.创建Buffer
      3.将数据从Channel读取到Buffer中

    • 绝对方法和相对方法的含义
      1.相对方法:limit值与position值会在操作时被考虑到
      2.绝对方法:完全忽略掉limit值与position值

    阻塞只会出现在网络通讯中

    IO:阻塞的 程序在获取网络数据的时候,如果网络传输传输很慢,就会一直等待,直到传输完为止

    nio:非阻塞的 等服务器端把数据加载完后,再去读取 jdk 1.5之后

    jdk1.7之后

    同步非阻塞 就是只有一个客户端读取
    aio 异步非阻塞 可以多个客户端去读取 每一个请求分一个线程

    相关文章

      网友评论

          本文标题:io nio netty

          本文链接:https://www.haomeiwen.com/subject/ashkeqtx.html