由于Netty,了解了一些异步IO的知识,JAVA里面NIO就是原来的IO的一个补充,本文主要记录下在JAVA中IO的底层实现原理,以及对Zerocopy技术介绍。

IO,其实意味着:数据不停地搬入搬出缓冲区而已(使用了缓冲区)。比如,用户程序发起读操作,导致“ syscall read ”系统调用,就会把数据搬入到 一个buffer中;用户发起写操作,导致 “syscall write ”系统调用,将会把一个 buffer 中的数据 搬出去(发送到网络中 or 写入到磁盘文件)

上面的过程看似简单,但是底层操作系统具体如何实现以及实现的细节就非常复杂了。正是因为实现方式不同,有针对普通情况下的文件传输(暂且称普通IO吧),也有针对大文件传输或者批量大数据传输的实现方式,比如zerocopy技术。

先来看一张普通的IO处理的流程图:

整个IO过程的流程如下:

1)程序员写代码创建一个缓冲区(这个缓冲区是用户缓冲区):哈哈。然后在一个while循环里面调用read()方法读数据(触发"syscall read"系统调用)

byte[] b = new byte[4096];

while((read = inputStream.read(b))>=0) {
total = total + read;
// other code....
}

2)当执行到read()方法时,其实底层是发生了很多操作的:

①内核给磁盘控制器发命令说:我要读磁盘上的某某块磁盘块上的数据。--kernel issuing a command to the disk controller hardware to fetch the data from disk.

②在DMA的控制下,把磁盘上的数据读入到内核缓冲区。--The disk controller writes the data directly into a kernel memory buffer by DMA

③内核把数据从内核缓冲区复制到用户缓冲区。--kernel copies the data from the temporary buffer in kernel space

这里的用户缓冲区应该就是我们写的代码中 new 的 byte[] 数组。

从上面的步骤中可以分析出什么

ⓐ对于操作系统而言,JVM只是一个用户进程,处于用户态空间中。而处于用户态空间的进程是不能直接操作底层的硬件的。而IO操作就需要操作底层的硬件,比如磁盘。因此,IO操作必须得借助内核的帮助才能完成(中断,trap),即:会有用户态到内核态的切换。

ⓑ我们写代码 new byte[] 数组时,一般是都是“随意” 创建一个“任意大小”的数组。比如,new byte[128]、new byte[1024]、new byte[4096]....

但是,对于磁盘块的读取而言,每次访问磁盘读数据时,并不是读任意大小的数据的,而是:每次读一个磁盘块或者若干个磁盘块(这是因为访问磁盘操作代价是很大的,而且我们也相信局部性原理) 因此,就需要有一个“中间缓冲区”--即内核缓冲区。先把数据从磁盘读到内核缓冲区中,然后再把数据从内核缓冲区搬到用户缓冲区。

这也是为什么我们总感觉到第一次read操作很慢,而后续的read操作却很快的原因吧。因为,对于后续的read操作而言,它所需要读的数据很可能已经在内核缓冲区了,此时只需将内核缓冲区中的数据拷贝到用户缓冲区即可,并未涉及到底层的读取磁盘操作,当然就快了。

The kernel tries to cache and/or prefetch data, so the data being requested by the process may already be available in kernel space.
If so, the data requested by the process is copied out.
If the data isn't available, the process is suspended while the kernel goes about bringing the data into memory.

如果数据不可用,process将会被挂起,并需要等待内核从磁盘上把数据取到内核缓冲区中。

那我们可能会说:DMA为什么不直接将磁盘上的数据读入到用户缓冲区呢?一方面是 ⓑ中提到的内核缓冲区作为一个中间缓冲区。用来“适配”用户缓冲区的“任意大小”和每次读磁盘块的固定大小。另一方面则是,用户缓冲区位于用户态空间,而DMA读取数据这种操作涉及到底层的硬件,硬件一般是不能直接访问用户态空间的(OS的原因吧)

综上,由于DMA不能直接访问用户空间(用户缓冲区),普通IO操作需要将数据来回地在 用户缓冲区 和 内核缓冲区移动,这在一定程序上影响了IO的速度。那有没有相应的解决方案呢?

那就是直接内存映射IO,也即JAVA NIO中提到的内存映射文件,或者说 直接内存....总之,它们表达的意思都差不多。示例图如下:

aaarticlea/png;base64,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ayP7/YR+Npxy0x1LqBoUzncnVOkJbQlTCxCGZTIZTKIaGxvhQCgU6nS63sZ+HhQg308EveeBePxAbXc8fkJrNRoNvI1mzpz57LPPfvLJJ8nJyd9///2mTZvefvvtv/3tb59//nl2dvamTZveeuutDz/8MCkp6dtvvz127Ngvv/zy66+/btmyZdasWe++++7EiRO/++676upqmG1XVVVlZGR89dVXCxYsmDp16sSJE48cOVJbW3v27NmEhIS4uDhYVktKSsrLy9NqtXl5ed98883KlSvHjRs3efLkWbNmHTt2jMlkHj58eM6cObNmzZoxY8b27duvXLlSXl5+T34/oW1CY8GC+NP9+fqABSgCFglVU1NTU1MDQU8sFovFYvH5fIz9QFT8fdxUsH7Rw1k7ePxotVpgzxj7Cef3I8dFe7HZ7GvXrm3cuHHYsGHPPvvs008//cYbb3z88cebN2/+5JNP1qxZs2bNmp07d168eBHPfvLy8qhUanJyckJCwuzZs6dOnbpy5crjx49nZWXRaLRbt26tX79+9uzZM2bM+Oijj44dO3bo0KEVK1bMnz9/2bJlO3fuvH79+smTJ+fOnbt48eIzZ8788ssva9euhfarV68G+jJ9+vR+/fo9/fTTzz///NixY7ds2VJRUcFmsy9evPjll19+8MEH77///pw5c7744ovi4uLS0tLExMTY2NilS5cuWbJk0aJFM2bMGDt27JQpUzZt2rR58+ZZs2a9//7769evP3HiBJVKhbVOhUJBp9PPnz8fGxsbHR29YMGCpUuXzpgxY8mSJUeOHMnJyaFQKHl5eYmJifPnz58yZcrMmTM3b9585syZ8vJygUDAYrHS09M3btw4ffr0+Pj45cuXjxkzZty4cYcOHSouLq6srMzLy9u5c+e8efPef//9hQsXfvPNN+np6UwmMzQKrDtysgKXqlsul2txKbJg7fWBeI8BYJdTtOPY7wqn09nc3CwQCOrq6mAwwcvMIC3DjYplOMP/4pgmFIQIWs69+vTch8dPd6LDgrScCJbuaEW235Se1tZWm82G/5ZghR0SkzY3N/P5fJi14lUfOG5sbNRqtYj9dA0s309kvaeHHj9B7CeCx09orUwmq6iowNjPRx99dP78+cTExEWLFkVFRf3zn//ctm1bZmbmihUrXnjhheHDh7/33nuff/75iRMnEhIS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yJFvv/32f//3f5eVlaWkpMTHx0+YMGHs2LGh7Gffvn3jx49//fXXhw8f/u677y5btmzmzJn//Oc/R40atX379vXr1/fr12/IkCEJCQnnz5+vrq6mUChnzpz5+OOPBw0aNHLkyE8//XTr1q2zZ89evHjx/v37P/vsswEDBoDGc/bs2aqqqtLS0kOHDi1atOjll18eN25ccnIyjUa7efPmtm3bBg8e/Nprr61Zs+aTTz5544033nzzzY0bN27btm3WrFkjR44cPHjwnDlzLl++/Ouvv0ZHR//zn/+cN2/e+vXr165dO2/evFdffXXc1xBhxwAAIABJREFUuHG3b9+GZ00kEpHJZGA/AwYM+Pzzzw8fPrxx48aZM2cOHz586tSpV65coVKpoPHMnj17+PDhzz333KBBg/bv33/27Nk5c+YMGjTovffeW7t27aFDhw4cOPD2228D+/npp5/mzZs3YMCAoUOHRkdHL168ODY2dtCgQW+88cavv/4aOox0X07GPPEbGxvhpQjt4VnweDwej6fnPkB+v1+N8v38zoB8P+BZ2NDQAE73gt+At8AxJlQA8RX+BghZksvlQqEQ3hEggYTThzAdJYLSE9omtPb39gHC60AwU4WhG956mLoDpBAW9BsbGxsaGiDMgs/nw9cF32c41ac3+/243W6RSNTQ0GCz2XrSD3g9hwvWwFKuQW2X2gz+GKbp8jA5oLuM84IhEuIhoU2QJqTX66uqqoD9/OEPf3juuedefvnlIUOGjB8/PjEx8datWykpKZcuXZozZ84zzzzzySefpKWlpaWlXblyZe7cuX/5y182bdqUn5//888/b9myZcyYMX/+85/XrFlz7dq1+fPnP/300x9++OG1a9cYDIZWq/3xxx+nTJkybNiwF198cc6cOTt27JgyZcoLL7ywefPmoqIikIXeeuut4cOHb9iw4dq1a9evX7969Wp8fPyLL744bty4FStWnD59msViNTY2Rojk6o6uE9lPKFTXAQIU6uuD/yy+tr6+vrS0tKCgIDMzMzc3t7CwEBQgKpXKYrGw0B6LxQKxwfea7wd2V/b7/fe98gVBDTAxgjelWq2GJBZBSo/st2zIXXr/ZGdnx8bGjhkzZsyYMdu2baurqyMQCB9//PGkSZOio6Pj4+N/+eWXnTt3YuwnMTFxwIABf/3rX4cPHz5lypTY2Njp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zJjx4YcfXrx48T68ee4v2ksdshdYOF8frNZoNDY2NpaWlgL7IZFIRUVFZDK5pKSksrLygXg993yfr1C/H3zkFxbbFeTrg7eAJpSdnb1s2bIJEyZMmDBhx44dbDYbVr7A8tFHH507dy4pKWnw4METJ048ceLE2bNnExMTQW6ZN2/ev//978uXLycnJ6enpxcUFGRlZV29ejUpKWnSpEljxoyZO3fuN998U1dXRyKRPv7446ioqOeee27y5Mk3btyoqakpLS3Nzs6+evXqnj17IDJr3rx569at27NnT0JCwtChQ4cOHbp27dqTJ0/m5OScOXNmypQpI0aMWL58+a5duw4dOnTt2rXq6moikfj555/PmDFj0qRJCQkJZWVlRCJx2rRp/fv3j42N3bZt265duz7++OMhQ4aMGzfuxo0boX4/L730Umxs7Jo1a95++21gYEuXLl26dOmsWbOGDh06fPjwFStWrF27dvjw4UOHDt2zZ8+FCxe2bt06Z86cqKioIUOGzJ8/f/Hixa+99hqwn8uXL3/99derV69+991333333cTExIsXL16/fj0rK4vFYoX6+txVVMYGCkhAxWAwysvLwQUNFCA2mw2ZrLW4+K/79ifr6Ojwer2wcdL99YBwVwTleg7y8gk9xqs+930M73sssgxvCT3GtCVoCeH3oLt0ecxisSAlulAoFAgEsBMA1k9TUxNYRCJRT44j60N39QfC2A/WT6/1+/H7/eA03sOdLvx+v8ViCZ20wbukO549mD7UJfsJ1YHu6vcTus8XjUa7ffv26tWr33zzzV27dhUVFXG5XGzKWF1dnZqaumbNmjfeeCMxMbGwsJDL5SoUirS0tKSkpBUrVkyZMmXy5MnTp0/ftWtXampqXV2dXq/PyspKSkr68MMPx48fP2fOnNWrV//yyy9UKvW7775bsGBBXFxcfHx8QkLCjh078vLyDAbD7du3N23atGrVqsWLF4OzJ+yxunv37uXLl8+bNw8S0P30008lJSX34c3T82ivCL4+QbVcLhdjPwQCIScnh0QiVVZWwqYfPWc/Op2uurq6JztdhPr9qHGRX1hsF+bJpP5t/y/MAppQXl7eZ599FhcXFxcXd+jQIR6PRyaTt2zZApYvv/wyOTn50KFDEydO/OCDD86fP5+bm5uRkXH06NEPP/xw3rx58fHxW7duPXLkyKVL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" alt="" width="426" height="269" />

从上图可以看出:内核空间的 buffer 与 用户空间的 buffer 都映射到同一块 物理内存区域。

它的主要特点如下:

①对文件的操作不需要再发read 或者 write 系统调用了---The user process sees the file data as memory, so there is no need to issue read() or write() system calls.

②当用户进程访问“内存映射文件”地址时,自动产生缺页错误,然后由底层的OS负责将磁盘上的数据送到内存。关于页式存储管理,可参考:内存分配与内存管理的一些理解

As the user process touches the mapped memory space, page faults will be generated automatically to bring in the file data from disk. 
If the user modifies the mapped memory space, the affected page is automatically marked as dirty and will be subsequently
flushed to disk to update the file.

这就是是JAVA NIO中提到的内存映射缓冲区(Memory-Mapped-Buffer)它类似于JAVA NIO中的直接缓冲区(Directed Buffer)。MemoryMappedBuffer可以通过java.nio.channels.FileChannel.java(通道)的 map方法创建。

使用内存映射缓冲区来操作文件,它比普通的IO操作读文件要快得多。甚至比使用文件通道(FileChannel)操作文件 还要快。因为,使用内存映射缓冲区操作文件时,没有显示的系统调用(read,write),而且OS还会自动缓存一些文件页(memory page)

zerocopy技术介绍

看完了上面的IO操作的底层实现过程,再来了解zerocopy技术就很easy了。IBM有一篇名为《Efficient data transfer through zero copy》的论文对zerocopy做了完整的介绍。感觉非常好,下面就基于这篇文来记录下自己的一些理解。

zerocopy技术的目标就是提高IO密集型JAVA应用程序的性能。在本文的前面部分介绍了:IO操作需要数据频繁地在内核缓冲区和用户缓冲区之间拷贝,而zerocopy技术可以减少这种拷贝的次数,同时也降低了上下文切换(用户态与内核态之间的切换)的次数。

比如,大多数WEB应用程序执行的一项操作就是:接受用户请求--->从本地磁盘读数据--->数据进入内核缓冲区--->用户缓冲区--->内核缓冲区--->用户缓冲区--->socket发送

数据每次在内核缓冲区与用户缓冲区之间的拷贝会消耗CPU以及内存的带宽。而zerocopy有效减少了这种拷贝次数。

Each time data traverses the user-kernel boundary, it must be copied, which consumes CPU cycles and memory bandwidth.
Fortunately, you can eliminate these copies through a technique called—appropriately enough —zero copy

那它是怎么做到的呢?

我们知道,JVM(JAVA虚拟机)为JAVA语言提供了跨平台的一致性,屏蔽了底层操作系统的具体实现细节,因此,JAVA语言也很难直接使用底层操作系统提供的一些“奇技淫巧”。

而要实现zerocopy,首先得有操作系统的支持。其次,JDK类库也要提供相应的接口支持。幸运的是,自JDK1.4以来,JDK提供了对NIO的支持,通过java.nio.channels.FileChannel类的transferTo()方法可以直接将字节传送到可写的通道中(Writable Channel),并不需要将字节送入用户程序空间(用户缓冲区)

You can use the transferTo()method to transfer bytes directly from the channel on which it is invoked to 
another writable byte channel, without requiring data to flow through the application

下面就来详细分析一下经典的web服务器(比如文件服务器)干的活:从磁盘中中读文件,并把文件通过网络(socket)发送给Client。

File.read(fileDesc, buf, len);
Socket.send(socket, buf, len);

从代码上看,就是两步操作。第一步:将文件读入buf;第二步:将 buf 中的数据通过socket发送出去。但是,这两步操作需要四次上下文切换(用户态与内核态之间的切换) 和 四次拷贝操作才能完成。

①第一次上下文切换发生在 read()方法执行,表示服务器要去磁盘上读文件了,这会导致一个 sys_read()的系统调用。此时由用户态切换到内核态,完成的动作是:DMA把磁盘上的数据读入到内核缓冲区中(这也是第一次拷贝)。

②第二次上下文切换发生在read()方法的返回(这也说明read()是一个阻塞调用),表示数据已经成功从磁盘上读到内核缓冲区了。此时,由内核态返回到用户态,完成的动作是:将内核缓冲区中的数据拷贝到用户缓冲区(这是第二次拷贝)。

③第三次上下文切换发生在 send()方法执行,表示服务器准备把数据发送出去了。此时,由用户态切换到内核态,完成的动作是:将用户缓冲区中的数据拷贝到内核缓冲区(这是第三次拷贝)

④第四次上下文切换发生在 send()方法的返回【这里的send()方法可以异步返回,所谓异步返回就是:线程执行了send()之后立即从send()返回,剩下的数据拷贝及发送就交给底层操作系统实现了】。此时,由内核态返回到用户态,完成的动作是:将内核缓冲区中的数据送到 protocol engine.(这是第四次拷贝

这里对 protocol engine不是太了解,但是从上面的示例图来看:它是NIC(NetWork Interface Card) buffer。网卡的buffer???

下面这段话,非常值得一读:这里再一次提到了为什么需要内核缓冲区。

Use of the intermediate kernel buffer (rather than a direct transfer of the data
into the user buffer)might seem inefficient. But intermediate kernel buffers were
introduced into the process to improve performance. Using the intermediate
buffer on the read side allows the kernel buffer to act as a "readahead cache"
when the application hasn't asked for as much data as the kernel buffer holds.
This significantly improves performance when the requested data amount is less
than the kernel buffer size.
The intermediate buffer on the write side allows the write to complete asynchronously.

一个核心观点就是:内核缓冲区提高了性能。咦?是不是很奇怪?因为前面一直说正是因为引入了内核缓冲区(中间缓冲区),使得数据来回地拷贝,降低了效率。

那先来看看,它为什么说内核缓冲区提高了性能。

对于读操作而言,内核缓冲区就相当于一个“readahead cache”,当用户程序一次只需要读一小部分数据时,首先操作系统从磁盘上读一大块数据到内核缓冲区,用户程序只取走了一小部分( 我可以只 new 了一个 128B的byte数组啊! new byte[128])。当用户程序下一次再读数据,就可以直接从内核缓冲区中取了,操作系统就不需要再次访问磁盘啦!因为用户要读的数据已经在内核缓冲区啦!这也是前面提到的:为什么后续的读操作(read()方法调用)要明显地比第一次快的原因。从这个角度而言,内核缓冲区确实提高了读操作的性能。

再来看写操作:可以做到 “异步写”(write asynchronously)。也即:wirte(dest[]) 时,用户程序告诉操作系统,把dest[]数组中的内容写到XX文件中去,于是write方法就返回了。操作系统则在后台默默地把用户缓冲区中的内容(dest[])拷贝到内核缓冲区,再把内核缓冲区中的数据写入磁盘。那么,只要内核缓冲区未满,用户的write操作就可以很快地返回。这应该就是异步刷盘策略吧。

(其实,到这里。以前一个纠结的问题就是同步IO,异步IO,阻塞IO,非阻塞IO之间的区别已经没有太大的意义了。这些概念,只是针对的看问题的角度不一样而已。阻塞、非阻塞是针对线程自身而言;同步、异步是针对线程以及影响它的外部事件而言....)【更加完美、精辟的解释可以参考这个系列的文章:系统间通信(3)——IO通信模型和JAVA实践 上篇

既然,你把内核缓冲区说得这么强大和完美,那还要 zerocopy干嘛啊???

Unfortunately, this approach itself can become a performance bottleneck if the size of the data requested 
is considerably larger than the kernel buffer size. The data gets copied multiple times among the disk, kernel buffer,
and user buffer before it is finally delivered to the application.
Zero copy improves performance by eliminating these redundant data copies.

终于轮到zerocopy粉墨登场了。当需要传输的数据远远大于内核缓冲区的大小时,内核缓冲区就会成为瓶颈。这也是为什么zerocopy技术合适大文件传输的原因。内核缓冲区为啥成为了瓶颈?---我想,很大的一个原因是它已经起不到“缓冲”的功能了,毕竟传输的数据量太大了。

下面来看看zerocopy技术是如何来处理文件传输的。

当 transferTo()方法 被调用时,由用户态切换到内核态。完成的动作是:DMA将数据从磁盘读入 Read buffer中(第一次数据拷贝)。然后,还是在内核空间中,将数据从Read buffer 拷贝到 Socket buffer(第二次数据拷贝),最终再将数据从 Socket buffer 拷贝到 NIC buffer(第三次数据拷贝)。然后,再从内核态返回到用户态。

上面整个过程就只涉及到了:三次数据拷贝和二次上下文切换。感觉也才减少了一次数据拷贝嘛。但这里已经不涉及用户空间的缓冲区了。

三次数据拷贝中,也只有一次拷贝需要到CPU的干预。(第2次拷贝),而前面的传统数据拷贝需要四次且有三次拷贝需要CPU的干预。

This is an improvement: we've reduced the number of context switches from four to two and reduced the number of data copies
from four to three (only one of which involves the CPU)

如果说zerocopy技术只能完成到这步,那也就 just so so 了。

We can further reduce the data duplication done by the kernel if the underlying network interface card supports 
gather operations. In Linux kernels 2.4 and later, the socket buffer descriptor was modified to accommodate this requirement.
This approach not only reduces multiple context switches but also eliminates the duplicated data copies that
require CPU involvement.

也就是说,如果底层的网络硬件以及操作系统支持,还可以进一步减少数据拷贝次数 以及 CPU干预次数。

从上图看出:这里一共只有两次拷贝 和 两次上下文切换。而且这两次拷贝都是DMA copy,并不需要CPU干预(严谨一点的话就是不完全需要吧.)。

整个过程如下:

用户程序执行 transferTo()方法,导致一次系统调用,从用户态切换到内核态。完成的动作是:DMA将数据从磁盘中拷贝到Read buffer

用一个描述符标记此次待传输数据的地址以及长度,DMA直接把数据从Read buffer 传输到 NIC buffer。数据拷贝过程都不用CPU干预了。

与JVM内存之间的关系:

JVM内存模型包含了堆内存(Java Heap)和堆外内存(Native memory),ByteBuffer.allocateDirect()分配的内存在堆外内存上。堆外内存的回收也需要jvm gc 触发(gc cycle),当堆外内存占用了大量内存空间紧张,但是Java Heap空间足够从而未触发GC,那么很可能发现堆外内存OOM异常。

参考:Understanding how the JVM uses native memory on Windows and Linux

应用:

当Kafka Consumer向Kafka Broker拉取分区消息时,Kafka Broker采用zerocopy技术传递数据。

总结:

这篇文章从IO底层实现原理开始讲解,分析了IO底层实现细节的一些优缺点,以及为什么引入zerocopy技术和zerocopy技术的实现原理。个人的学习记录,转载请注明出处。

参考文献:

1)《JAVA NIO》O'Reilly出版社

2)《Efficient data transfer through zero copy》IBM出版

3)Zero Copy I: User-Mode Perspective

JAVA IO 以及 NIO 理解的更多相关文章

  1. 如何解读 Java IO、NIO 中的同步阻塞与同步非阻塞?

    原文链接:如何解读 Java IO.NIO 中的同步阻塞与同步非阻塞? 一.前言 最近刚读完一本书:<Netty.Zookeeper.Redis 并发实战>,个人觉得 Netty 部分是写 ...

  2. Java IO 和 NIO

    昨天面试问到了有关Java NIO的问题,没有答上来.于是,在网上看到了一篇很有用的系列文章讲Java IO的,浅显易懂.后面的备注里有该系列文章的链接.内容不算很长,需要两个小时肯定看完了,将该系列 ...

  3. 漫谈Java IO之 NIO那些事儿

    前面一篇中已经介绍了基本IO的使用以及最简单的阻塞服务器的例子,本篇就来介绍下NIO的相关内容,前面的分享可以参考目录: 网络IO的基本知识与概念 普通IO以及BIO服务器 NIO的使用与服务器Hel ...

  4. Java IO、NIO、AIO知识总结

    本文主要讲述下自己对IO的理解,对IO的用法和细则可能没有顾虑到. 本文的理解基于以下几篇文章,他们对各自部分都讲的很细,对我理解IO提供了很大帮助. https://www.cnblogs.com/ ...

  5. 关于Java IO与NIO知识都在这里

    由于内容比较多,我下面放的一部分是我更新在我的微信公众号上的链接,微信排版比较好看,更加利于阅读.每一篇文章下面我都把文章的主要内容给列出来了,便于大家学习与回顾. Java面试通关手册(Java学习 ...

  6. java IO、NIO、AIO详解

    概述 在我们学习Java的IO流之前,我们都要了解几个关键词 同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调 ...

  7. java IO和NIO 的区别

    Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别. IO                NIO 面向流            面向缓冲 阻塞IO           非 ...

  8. java IO和NIO区别

    面向流与面向缓冲 Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的. Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方 ...

  9. Java IO 与 NIO 服务器&客户端通信小栗子

    本篇包含了入门小栗子以及一些问题的思考 BIO package com.demo.bio; import java.io.*; import java.net.ServerSocket; import ...

随机推荐

  1. Sticker.js – 帮助你在网站中加入贴纸效果

    Sticker.js 是一个很小的 JavaScript 库,它允许您在网页中创建漂亮的贴纸效果.没有依赖关系(不需要 jQuery),可以在大多数支持 CSS3 的主流浏览器工作.下面有简单的使用示 ...

  2. 2015年免费的25款 WordPress 网站模板

    2015年 WordPress 插件和主题的数量继续在增长.这一年,我们可以期待WP主题引入一些新的技术,从背景,自适应响应式图像到从背景图片中提取主色. 本文包含25款最近发布的 WordPress ...

  3. 【HTML5】HTML5本地数据库(Web Sql Database)

    Web Sql数据库简介 Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库. Web SQL数据库的浏览器支持情况 Web SQL 数 ...

  4. Weinre调试移动端页面

    Weinre是什么 如果我们做的是Cordova(phonegap)或其他hybird应用,当使用到原生功能时候(类似原生请求数据或页面切换时),没办法在PC chrome浏览器调试页面,一旦页面在手 ...

  5. javascript --- 设计模式之创造者模式

    在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定.如何应 ...

  6. [Android]对BaseAdapter中ViewHolder编写简化

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3642849.html 在Android项目中,经常都会用到Li ...

  7. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  8. html ul li的学习

    DIV+CSS里,我们用得最多的就是ul li来显示数据,如新闻按钮等. <div id="menu"> <ul> <li><a href ...

  9. node.js Tools for Visual Studio 介绍

    node.js Tools for Visual Studio简称NTVS 项目 安装包地址:https://nodejstools.codeplex.com 目前支持2012和2013

  10. Android项目开发实战-2048游戏

    <2048>是一款比较流行的数字游戏,最早于2014年3月20日发行.原版2048首先在GitHub上发布,原作者是Gabriele Cirulli,后被移植到各个平台.这款游戏是基于&l ...