zoukankan      html  css  js  c++  java
  • IO流常用基类

    1.为什么我们需要IO?

    IO流主要是处理应用程序之外的数据交互 ;Input 输入 Output输出

    2.IO流的分类

    根据数据流向分类:输入流(读入数据) 与 输出流(写出数据)

    即输入流 inputStream/Reader 与输出流 outputStream/Writer

    根据数据类型分类:字节流与字符流

    即字节输入流/输出流 inputStream/outputStream

      字符流:Reader/Writer

      在Java IO技术中,数据可以保存到文本文件,二进制文件以及压缩文件中,Java中的字符是Unicode编码,是双字节的,inputstream是处理字节的,

    在处理字符文本时不是很方便,Java为字符文本的输入提供了专门的一套单独的类reader,但reader类并不是inputstream类的替换者,只是在处理字符串时简化了编程。

    转换流的作用是将字节流转换为字符流,字符流就是处理文本的,java针对转换提供了两个API:InputStreamReader 与OutputStreamWriter。

    3.NIO NO-NEW INPUT OUTPUT

    传统IO存在如下几个问题:

    1.线程资源受限:线程是操作系统中非常宝贵的资源,同一时刻有大量的线程处于阻塞状态是非常严重的资源浪费,操作系统耗不起
    2.线程切换效率低下:单机cpu核数固定,线程爆炸之后操作系统频繁进行线程切换,应用性能急剧下降。
    3.除了以上两个问题,IO编程中,我们看到数据读写是以字节流为单位,效率不高。

    jdk4就出现了NIO,其是面向块(缓冲区)来处理数据的

    NIO主要用在架构方面处理高并发高性能方面的应用,是以缓存、选择器+channel 通道的方式,新IO是不阻塞的,可以使用多线程进行处理,使用事件驱动。

  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/sunshine2017/p/7523874.html
Copyright © 2011-2022 走看看