![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaIO
文章平均质量分 93
MiracleWW
这个作者很懒,什么都没留下…
展开
-
JavaIO(五)-NIO选择器和多路复用详解
之前的一篇文章中,我们的代码其实已经实现了简单的多路复用,由一个线程来管理多个连接和通道数据,但是我们同时也看到了自己实现的程序的缺陷,无用轮询过多,导致响应和数据接收过慢。所以才有了选择器Selector。这一篇可能更偏理论。什么是选择器?先分析字面意思,首先它是一个容器,作用是选择。这么理解没毛病吧,那么既然是容器,那么就相当于是一个集合,我们需要将东西放进去,然后根据条件拿出我们想要的,这样才叫做选择。而操作系统提供的选择器提供了选择执行已经就绪的任务的能力,这使得多元 I/O 成为可能。所以牛的原创 2021-03-23 22:27:13 · 513 阅读 · 0 评论 -
JavaIO(四)-NIO通道详解
什么是通道?通道是访问 I/O 服务的导管。可以在通道上传输“源缓冲区”与“目的缓冲区”要交互的数据,NIO 技术中的数据要放在缓 区中进行管理,再使用通道将缓冲区中的数据传输到目的地,那么Channel就是缓冲区和缓冲区之间的传输管道。public interface Channel extends Closeable { public boolean isOpen(); public void close() throws IOException;}最顶层的Channel原创 2021-03-23 22:19:23 · 346 阅读 · 0 评论 -
JavaIO(三)-NIO缓冲区详解这一篇就够了
BIO一个线程对应一个连接和其阻塞的本质,已经无法适应当下的互联网环境。那NIO为什么就能?NIO三件套:缓冲区(Buffer),通道(Channel),选择器(Selector)。缓冲区是工具,通道是桥梁,选择器是核心。缓冲区(Buffer):之前我们说过,所谓“I/O”讲的无非就是把数据移进或移出缓冲区。而NIO为我们提供了专门针对各种缓冲区的专业API。所以我开头才说,Buffer只是工具,重点是会用。所谓Buffer可以暂时理解为一个数组对象,具有数组的属性定长、类型一致、索引。一个原创 2021-03-23 22:06:58 · 502 阅读 · 0 评论 -
JavaIO(二)-BIO详解
啥也不说先上代码,这是一个很简单的从本地文件中读取数据的程序public class FileBioTest { public static void main(String[] args) throws Exception { BufferedReader reader = null; try { //2号参数可以指定缓冲区大小 默认8192 reader = new BufferedReader(new Fil原创 2021-03-23 21:52:37 · 443 阅读 · 0 评论 -
JavaIO(一)-IO与网络编程基础及TCP详解
学IO之前需要先了解几个概念,这篇文章中不说同步、非同步,阻塞、非阻塞的概念,直接说太干。对IO中计算机底层比较感兴趣,可以读一下这篇IO和DMA原理几个概念:内核空间:所有的程序都需要加载到内存中才能运行,而操作系统也是程序的一种,程序被加载到内存之后,操作系统占用的这部分内存被称为内核空间。内核空间中的指令拥有最高指令权限,可以直接访问硬件,可以执行机器能够运行的任何指令,安全性要求极高也更为复杂。用户空间:除操作系统之外的程序加载到内存中所占用的内存空间被称为用户空间。用户空间所能执行的指原创 2021-03-23 21:32:43 · 492 阅读 · 0 评论