摘要:当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。 1. Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我
阅读全文
摘要:1. Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。 这里是Pipe原理的图示: 2. Pipe使用 (1)创建管道 通过Pipe.open()方法打开管道。例如: (2)向管道写数据 要向管道
阅读全文
摘要:1. Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。 2. DatagramChannel的使用 (1)打开 DatagramChannel 下面是 DatagramChannel
阅读全文
摘要:1. Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。 这里有个例子: 2.ServerSocketChannel
阅读全文
摘要:1. Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个SocketChannel
阅读全文
摘要:Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 1. 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要
阅读全文
摘要:Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 1. 为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理
阅读全文
摘要:1. 在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。 (1)transferFrom(): FileChannel的 transferFrom()方法可以将数据 从 源通
阅读全文
摘要:1. Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。 分散(scatter): 从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此
阅读全文
摘要:Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 1. Buffer的基本用法 使用B
阅读全文
摘要:1. Java NIO的Channel(通道)类似 Stream(流),但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。 正如上面所说,从通道读取数据到缓冲区,从
阅读全文
摘要:1.Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓冲区) Selectors(选择器) 虽然Java NIO 中除此之外还有很多类和组件,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是
阅读全文
摘要:一、相关概念 1. 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 2. Class文件中的常量池 在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件
阅读全文
摘要:关于printf函数输出先后顺序的讲解!! 对于printf函数printf("%d%d\n", a, b);函数的实际输出顺序是这样的先计算出b,然后再计算a,接着输出a,最后再输出b;例子如下: 运行结果如下: 此题的执行过程如下: 首先对于第一个printf先计算出 j=(i+=2), 这样此
阅读全文
摘要:一、ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源;(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChanged(); 二、ListView中的单个item的数据变化后,动态刷新步骤(局部刷新): 1、引言
阅读全文
摘要:1、图片异步加载: (1)处理图片的方式: 如果ListView中自定义的Item中有涉及到大量图片的,一定要对图片进行细心的处理,因为图片占的内存是 ListView 项中最头疼的,处理图片的方法大致有以下几种: ①、不要直接拿路径就去循环 BitmapFactory.decodeFile;使用
阅读全文
摘要:SQL语句大全一、创建和删除数据库 1、创建用户 //创建用户且置密码,在MySQL中行,但在Oracle中行 ----必须在超级管理员身份下操作 create user hncu identified by '1234' 2、创建数据库 //创建数据库 并手动指定编码格式//错,因为根据手册的查询
阅读全文