栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-IO思维导图笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-IO思维导图笔记

Java-IO IO模型 读写原理
  • 读和写并不是内存和物理设备直接操作, 而是需要通过两步

    • 内核线程缓存区和物理设备

      • 操作系统内核(如Kernel)完成
    • 内核线程缓存区和用户线程缓存区

      • read : 内核缓存区复制到用户线程区
      • write: 用户线程缓存区复制到内核缓存区
  • 这么设计的目的

    • 减少系统中断, 提升性能

      • 大家都知道,外部设备的直接读写,涉及操作系统的中断。发生系统中断时,需要保存之前的进程数据和状态等信息,而结束中断之后,还需要恢复之前的进程数据和状态等信息。为了减少这种底层系统的时间损耗、性能损耗,于是出现了内存缓冲区。
      • 底层操作会对内核缓冲区进行监控,等待缓冲区达到一定数量的时候,再进行IO设备的中断处理,集中执行物理设备的实际IO操作,这种机制提升了系统的性能
同步异步, 阻塞非阻塞
  • 同步异步

    • 同步异步是指服务端(或内核)是否主动发送状态到客户端(或用户线程)
    • 客户端需要不断的去请求服务端获取最终结果, 属于同步CAS
    • 异步, 客户端不需要多次访问服务端, 服务端如果准备处理好了, 会告诉客户端
  • 阻塞非阻塞

    • 阻塞非阻塞是指客户端(或用户线程)的操作是否是可以进行其他操作, 还是只能等待
四种模型
  • BIO

    • 同步阻塞IO

      • Java传统的IO就是这种

        • 读操作图

    • 具体应用

      • JAVA-IO-字节字符流

        • Java字节字符流.html
      • 网络流

        • Socket

        • ServerSocket

        • demo

          • BIOClientTest.java
          • BIOServer.java
          • BIOServerMuilt.java
            - 客户端的Socket和服务端用ServerSocket.accept() 得到的Socket其实是一个实例
          
  • NIO

    • 同步非阻塞IO

      • 注意并不是java中的NIO

        • 读示例

      • 很少直接使用

  • IO多路复用

    • 异步阻塞IO

    • 具体应用

      • Java-NIO

        • 3大元素

          • Channel

            • 一个Channel可以理解为一个通道, 类比BIO的socket。 可以得到输入,也可以得到输出

            • 常用子类

              • FileChannel

                • 文件通道, 是阻塞式的. 不能绑定到Selector
              • SocketChannel

                • TCP连接的客户端和服务器端都会用到

                • 创建

                  • open()
                  • ServerSocketChannel.accept()//服务器端创建
                  • SelectionKey.channel()
                • 其他方法

                  • connect

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号