zoukankan      html  css  js  c++  java
  • 第十五章:输入和输出(I/O)

    一:流分类   

       抽象基类:InputStream和Reader        抽象类不能用于创建模板哦!

                     OutputStream和Writer

        方向:  以内存为中心!

         输入流(读)

                  输出流(写)

        数据单元:(字节流:以InputStream和OutputStream作为基类; 字符流:以Reader和Writer作为基类)

         字节流:8byte (字节)

                  字符流:16位字符

        角色:   

          节点流:与数据源直接相连

                 处理流:封装节点流     (装饰器设计模式)


    对象的序列化:把内存中的java对象转换为与平台无关的二进制流!(保存、传输)

    系统序列化、自定义序列化

    编码和解码

    文件锁:排它锁、共享锁

        

    二:操作

        1.File类:操作文件和目录的!          

        

    三:解惑

    (1)之前看《深入浅出nodeJS》一直傻傻分不清楚:同步IO   异步IO   阻塞IO  非阻塞IO ;近期总结一下:

    IO请求的两个阶段

     a:发出IO请求( 等待资源阶段 & 排队阶段)    

     b:完成实际的IO操作 ( 使用资源阶段 & 服务阶段)

    阻塞IO和非阻塞IO:如果发出IO请求会阻塞线程(请求资源被上一个使用者使用还没有被释放时),就是阻塞IO。反之,非阻塞IO。

                                     阻塞IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。

                                     非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用。  

    同步和异步: 如果IO是由OS处理,再将结果返回给应用程序,就是异步IO。         使用回调函数的函数(更准确:异步函数): 我只负责调用,发起请求,调用完交给OS帮我处理

                          IO,IO成功了,通知我!(轮询机制在里面) 

                           如果IO需要应用程序本身去执行,会阻塞线程,就是同步IO。

    阻塞和非阻塞: 发出IO请求是否会阻塞线程! 

    (2) CPU密集型   IO密集型

    (3) 长轮询  短轮询

    (4) IO多路复用   ..........

                                                                                                                                                                                                                                                                                                                   

  • 相关阅读:
    使用JDBC连接并操作数据库
    JDBC连接数据库的url设useSSL参数为true产生的问题
    0-1背包问题的学习及LeetCode相关习题练习
    MySQL---操作数据库
    6、Python Requests库高级操作【2】
    5、Python Requests库高级操作【1】
    4、Python 数据解析【2】
    3、Python 数据解析【1】
    Python正则re.S,re.I等作用
    2、Python 使用Requests库通用爬取数据操作
  • 原文地址:https://www.cnblogs.com/njqa/p/5995729.html
Copyright © 2011-2022 走看看