Java网络编程和NIO
一点一滴g
这个作者很懒,什么都没留下…
展开
-
Java网络编程和NIO详解3:IO模型与Java网络编程模型
基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系...转载 2019-04-26 19:24:20 · 284 阅读 · 0 评论 -
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
mmap基础 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同...转载 2019-05-03 18:30:57 · 188 阅读 · 0 评论 -
Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector
转自https://www.javadoop.com/post/nio-and-aio 缓冲区(Buffer) 一个 Buffer 本质上是内存中的一块,我们可以将数据写入这块内存,之后从这块内存获取数据。 java.nio 定义了以下几个 Buffer 的实现,这个图读者应该也在不少地方见过了吧。 核心是最后的 ByteBuffer,前面的一大串类只是包装了一下它而已,我们使用最多的通常也是...转载 2019-04-29 17:28:56 · 82 阅读 · 0 评论 -
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
JAVA 中原生的 socket 通信机制 知识点 socket 的连接处理 IO 输入、输出流的处理 请求数据格式处理 请求模型优化 场景 今天,和大家聊一下 JAVA 中的 socket 通信问题。这里采用最简单的一请求一响应模型为例,假设我们现在需要向 baidu 站点进行通信。我们用 JAVA 原生的 socket 该如何实现。 建立 socket 连接 首先,我们需要建立 socke...转载 2019-04-24 23:11:40 · 118 阅读 · 0 评论 -
Java网络编程与NIO详解2:JAVA NIO 一步步构建I/O多路复用的请求模型
JAVA NIO 一步步构建I/O多路复用的请求模型 场景 接着上一篇中的站点访问问题,如果我们需要并发访问10个不同的网站,我们该如何处理? 在上一篇中,我们使用了java.net.socket类来实现了这样的需求,以一线程处理一连接的方式,并配以线程池的控制,貌似得到了当前的最优解。可是这里也存在一个问题,连接处理是同步的,也就是并发数量增大后,大量请求会在队列中等待,或直接异常抛出。 为解决...转载 2019-04-25 14:47:02 · 182 阅读 · 0 评论 -
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO
JAVA AIO简介 jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2,或称为AIO(Asynchronous I/O)。AIO最大的一个特性就是异步能力,这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O处理。AIO是对JDK1.4中提出的同步非阻塞I/O(NIO)的进一步增强。 关于NIO,之前的一篇文章可...转载 2019-04-30 23:09:37 · 170 阅读 · 0 评论 -
Java网络编程和NIO详解6:Linux epoll实现原理详解
为什么要 I/O 多路复用 当需要从一个叫 r_fd 的描述符不停地读取数据,并把读到的数据写入一个叫 w_fd 的描述符时,我们可以用循环使用阻塞 I/O : while((n = read(r_fd, buf, BUF_SIZE)) > 0) if(write(w_fd, buf, n) != n) err_sys("write error"); 但是,如果要从...转载 2019-04-30 23:49:37 · 191 阅读 · 0 评论 -
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
转自:https://www.jianshu.com/p/2b71ea919d49 浅谈 Linux 中 Selector 的实现原理 概述 Selector是NIO中实现I/O多路复用的关键类。Selector实现了通过一个线程管理多个Channel,从而管理多个网络连接的目的。 Channel代表这一个网络连接通道,我们可以将Channel注册到Selector中以实现Selector对其的管...转载 2019-05-01 11:36:53 · 105 阅读 · 0 评论