随笔分类 -  IO和NIO

摘要:选择器服务器端代码 上一篇文章毫无条理地讲了很多和选择器相关的知识点,下面进入实战,看一下如何写和使用选择器实现服务端Socket数据接收的程序,这也是NIO中最核心、最精华的部分。 看一下代码: 代码中已经有了相关的注释,这里继续解释一下: (1)第8行~第12行,确定要监听的端口号,这里是123 阅读全文
posted @ 2016-05-20 18:38 IT·达人 阅读(674) 评论(0) 推荐(0) 编辑
摘要:选择器 最后,我们探索一下选择器。由于选择器内容比较多,所以本篇先偏理论地讲一下,后一篇讲代码,文章也没有什么概括、总结的,写到哪儿算哪儿了,只求能将选择器写明白,并且将一些相对重要的内容加粗标红。 选择器提供选择执行已经就绪的任务的能力,这使得多元I/O成为了可能,就绪执行和多元选择使得单线程能够 阅读全文
posted @ 2016-05-20 18:37 IT·达人 阅读(754) 评论(0) 推荐(0) 编辑
摘要:Socket通道 上文讲述了通道、文件通道,这篇文章来讲述一下Socket通道,Socket通道与文件通道有着不一样的特征,分三点说: 1、NIO的Socket通道类可以运行于非阻塞模式并且是可选择的,这两个性能可以激活大程序(如网络服务器和中间件组件)巨大的可伸缩性和灵活性,因此,再也没有为每个S 阅读全文
posted @ 2016-05-20 18:36 IT·达人 阅读(434) 评论(0) 推荐(0) 编辑
摘要:什么是缓冲区 一个缓冲区对象是固定数量的数据的容器, 其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区像前篇文章讨论的那样被写满和释放,对于每个非布尔原始数据类型都有一 个缓冲区类,尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节,非字节缓冲区可以再后 阅读全文
posted @ 2016-05-20 18:35 IT·达人 阅读(298) 评论(0) 推荐(0) 编辑
摘要:通道是什么 通道式(Channel)是java.nio的第二个主要创新。通道既不是一个扩展也不是一项增强,而是全新的、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。 通常情况下,通道与操作系统 阅读全文
posted @ 2016-05-20 18:35 IT·达人 阅读(1996) 评论(0) 推荐(0) 编辑
摘要:I/O模型 在开始NIO的学习之前,先对I/O的模型有一个理解,这对NIO的学习是绝对有好处的。我画一张图,简单表示一下数据从外部磁盘向运行中进程的内存区域移动的过程: 这张图片明显忽略了很多细节,只涉及了基本操作,下面分析一下这张图。 用户空间和内核空间 一个计算机通常有一定大小的内存空间,如一台 阅读全文
posted @ 2016-05-20 18:34 IT·达人 阅读(466) 评论(0) 推荐(0) 编辑
摘要:前言 前面的文章主要讲了文件字符输入流FileWriter、文件字符输出流 FileReader、文件字节输出流FileOutputStream、文件字节输入流FileInputStream,这些都是常见的流类。当然除了 这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流。 管道 阅读全文
posted @ 2016-05-20 18:33 IT·达人 阅读(1536) 评论(0) 推荐(0) 编辑
摘要:字节流、字符流继承关系 前几篇文章讲解了字节流、字符流的使用,不过Java提供给用户的流类远不止此,限于篇幅原因,没办法一一讲解,而且也没有必要一一讲解,就像我在写博客的时候多次提到的,有问题的时候学会查JDK API即可。OK,虽然不一一讲解每种流,我自己简单画了几张UML图,说明一下字节输入流、 阅读全文
posted @ 2016-05-20 18:33 IT·达人 阅读(1559) 评论(0) 推荐(0) 编辑
摘要:字符流和字节流的区别 拿一下上一篇文章的例子: 1 public static void main(String[] args) throws Exception 2 { 3 File file = new File("D:/writer.txt"); 4 Writer out = new File 阅读全文
posted @ 2016-05-20 18:32 IT·达人 阅读(268) 评论(0) 推荐(0) 编辑
摘要:字符流 字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0 和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为上一篇文章写了,一个Unicode字符占用2个字节,而字节流 一次只能操作一个字节。既然Java的口号就是"一次编写、处处运行", 阅读全文
posted @ 2016-05-20 18:31 IT·达人 阅读(353) 评论(2) 推荐(0) 编辑
摘要:流类 Java的流式输入/输出是建立在四个抽象类的基础上的:InputStream、OutputStream、Reader、Writer。它们用来创建具体的流式子类。尽管程序通过具体子类执行输入/输出操作,但顶层类定义了所有流类的基本通用功能。 InputStream和OutputStream为字节 阅读全文
posted @ 2016-05-20 18:30 IT·达人 阅读(278) 评论(1) 推荐(0) 编辑
摘要:前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流, 那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概念,因此这边文章就专门详细写一下字符编码,具体 的网上有很多,但本文目的是尽量讲清楚各种编码方式的作用,个人认为,不求 阅读全文
posted @ 2016-05-20 18:30 IT·达人 阅读(771) 评论(0) 推荐(0) 编辑
摘要:RandomAccessFile RandomAccessFile类可以说是Java语言中功能最为丰富的文件访 问类,它提供了众多的文件访问方法。RandomAccessFile类支持"随机访问"方式,可以跳转到文件的任意位置处读写数据。要访问一个文件的时 候,不想把文件从头读到尾,而是希望像访问一 阅读全文
posted @ 2016-05-20 18:29 IT·达人 阅读(297) 评论(0) 推荐(0) 编辑
摘要:IO 大多数的应用程序都要与外部设备进行数据交换,最常见的外部设备包含磁盘和网络。IO就是指应用程序对这些设备的数据输入与输出,Java语言定义了许多类专门负责各种方式的输入、输出,这些类都被放在java.io包中。 File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与 阅读全文
posted @ 2016-05-20 18:28 IT·达人 阅读(358) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示