1、概述

    1.1  BIO的问题

          读取输入流中的数据时,如果没有读到有效数据,该线程将被阻塞

          传统输入、输出流都是阻塞式的;

          传统的输入、输出流都是通过字节移动处理

          面向流的输入、输出一次只能处理一个字节

    1.2  JDK1.4开始,java提供了NIO

          NIO与BIO有相同的目的:用于进行输入、输出功能;

          NIO使用了不同的方式处理输入、输出

            (NIO采用内存映射文件的方式来处理输入、输出;

             NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件,这种方式模拟了OS上的虚拟内存的概念;

             );

          Channel、Buffer是NIO的2个核心对象:

             Channel

                对BIO的模拟(类似于InputStream、OutPutStream);

                NIO中所有数据都需要通过Channel传输

                Channel与BIO的InputStream、OutPutStream不同在于:提供一个map方法,可以直接将“一块数据”映射到内存中

                BIO是面向流、NIO是面向块;

             Buffer

                可以理解为一个容器,本质是一个数组(类似于BIO的缓冲区);

                发送到Channel的所有对象必须先放到Buffer中;

                从Channel中读取的数据也必须先读取到Buffer中;

                

             

    

最新文章

  1. 几个有趣的WEB设备API(二)
  2. PreparedStatement
  3. 在Android上用AChartEngine轻松绘制图表
  4. [转]HDFS客户端的权限错误:Permission denied
  5. 如何调试R程序(转载)
  6. 使用Join代替In
  7. Codeforces Round #326 (Div. 2)-Duff and Meat
  8. 靠边伸缩菜单的做法(类似QQ,碰到就会伸出来)
  9. 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好
  10. 非常详细的 Docker 学习笔记
  11. 问题分享:ActiveX component can't create object: "MSComDlg.CommonDialog"
  12. 使用spring的jdbcTemplate-----用JDBC模板查询数据库
  13. SystemConfig.getPropertyValue("test");配置文件已经加了test=abc,但是取得时候空字符串
  14. A Free , Fast and Small Automatic Formatter for C , C++ , C# , Java Source Codes
  15. JQuery学习笔记——基础选择器
  16. cocos2dx 3.2之Lua打飞机项目
  17. MVN TEST指定运行脚本
  18. IIS 7.0的集成模式和经典模式
  19. LINQ to SQL 实现 GROUP BY、聚合、ORDER BY
  20. sofa graphql 2 rest api框架

热门文章

  1. Luogu 1445 樱花
  2. Luogu 4867 Gty的二逼妹子序列
  3. spark 1.5的hivecontext的问题
  4. [raspberry pi3] aarch64 mongodb 编译和安装
  5. 数组最后一个元素的 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁
  6. Xamarin.Forms(一) 学习笔记
  7. java 文件的读写操作
  8. Python3 中socket使用
  9. AngularJS(三)——指令实战及自定义指令
  10. 51nod1455(dp)