zoukankan      html  css  js  c++  java
  • 面试知识点总结之I/O流IO/BIO/NIO/AIO区别

    程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件

    1. 字节流主要操作byte类型数据,以bate数组为准,主要操作类 OutputStream, InputStream

      程序->字节流->文件    直接操作文件

    2. 字符流:字符流在操作时使用了缓冲区,通过缓冲区再去操作文件 缓冲区(理解为一种内存区域) 提升性能的

      程序->字符流->缓存->文件  数据先放在缓存,之后再从缓存写入文件

    本质区别:字节流是原生的操作,而字符流是经过处理后的操作;网络数据传输,磁盘数据保存所支持的数据类型只有’字节‘,而子盘中的数据必须先读取到内存后才能进行操作,而内存中会帮助我们把字节变为字符,字符更适合处理中文

    字符流,不关闭有可能保存在缓存中斌没有输出目标源

    转换流

    OutputStreamWriter:字符流->字节流

    InputStreamReader:字节流->字符流

    IO/BIO/NIO/AIO区别:

    BIO:同步且阻塞,服务器实现模式,即一个链接一个线程,客户端有链接请求时启动一个线程处理,如果连接不做事,造成不必要的开销,当然可以通过线程池改善;

    NIO:同步非阻塞,即一个请求一个线程,客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理

    AIO:异步非阻塞,一个有效请求一个线程,客户端的I/O请求都是OS先完成了再通知服务器应用去启动线程处理

    // TODO

  • 相关阅读:
    Mysql:Group Replication & Replication
    使用winsw包装服务将nginx包装为Windows服务
    Nginx的一些常用配置
    在ASP.NET Core 2.0中使用Facebook进行身份验证
    展现层实现增删改查
    ABP创建应用服务
    ABP领域层定义仓储并实现
    ABP领域层创建实体
    通过模板创建一个ABP项目
    Android UI组件:布局管理器
  • 原文地址:https://www.cnblogs.com/cgy-home/p/14525955.html
Copyright © 2011-2022 走看看