开发&语言 - Java NIO 10
作者 张松然  发布于 2016年12月07日  阅读 8453
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Ne...
文章 发布于 2016年10月06日  阅读 490
本章包含ChannelHandler和ChannelPipeline APIs检测资源泄露异常处理在前一章,你学习了Netty的数据容器ByteBuf。在这一章我们会在你已经学过的知识的基础上探讨Netty的数据流和处理模块。你会开始看到这个框架的一些重要元素被组合到一起了。你已经了解到,ChannelHandler在一个ChannelPipeline中被链在一起,将所有的处理逻辑组织起来。我们会...
文章 发布于 2016年10月05日  阅读 354
本章包含线程模型概览Event Loop的概念和实现Task调度实现详解简单来说,线程模型定义了操作系统,编程语言,框架或者应用程序线程管理的关键部分。线程是如何,并且何时被创建,显然对代码的执行有很大的影响。因此,开发者需要理解不同线程模型中存在的权衡利弊。无论他们是直接为自己选择模型,还是通过用一种语言或者框架隐性地来选择模型,这一点都是毋庸置疑的。在这一章我们会详细探讨Netty的线程模型。...
文章 发布于 2016年10月03日  阅读 323
本章包含OIO—阻塞传输NIO—异步传输本地传输—JVM内部的异步通信嵌入式传输—测试你的ChannelHandler经过一个网络的数据通常是同一种类型:字节。这些数据是如何移动的基本上取决于被我们称之为网络传输的概念,这个概念帮我们抽象了底层的数据传输机制。用户不关心细节,他们只关心他们的字节数据被可靠地传送和接收。如果你有Java网络编程的经验,你也许会在某个时刻发现,你需要支持比预料还要多的...
文章 发布于 2016年10月02日  阅读 1029
无处不在的C/S架构在这个充斥着云的时代,我们使用的软件可以说99%都是C/S架构的你发邮件用的Outlook,Foxmail等你看视频用的优酷,土豆等你写文档用的Office365,googleDoc,Evernote等你浏览网页用的IE,Chrome等(B/S是特殊的C/S)......C/S架构的软件带来的一个明显的好处就是:只要有网络,你可以在任何地方干同一件事。例如:你在家里使用Offi...
文章 发布于 2016年09月25日  阅读 815
理解零拷贝零拷贝是Netty的重要特性之一,而究竟什么是零拷贝呢? WIKI中对其有如下定义:"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another.从WIKI的定义中,我们看到“零拷贝”是...
文章 发布于 2016年09月25日  阅读 884
Java 内存模型堆外内存 / 直接内存(Direct Memory)JDK1.4 中引入的NIO类,基于 channel 和 Buffer 的 I/O 方式,可用 Native 库直接分配堆外内存,然后利用一个存储在堆中的 DirectByteBuffer 对象作为这块内存引用来操作。避免了在 Java 堆 和Native 堆中来回复制数据。直接内存并不是虚拟机运行时数据区的一部分也不是 Jav...
文章 发布于 2015年09月01日  阅读 438
与 Socket & ServerSocket 对应,Java NIO 提供了 ServerSocketChannel & SocketChannel 对应。SocketChannel & ServerSocketChannelJava NIO 中的 SocketChannel 是一个连接 TCP 网络套接字的通道,ServerSocketChannel 是一个TCP 管道的监听器。SocketC...
文章 发布于 2015年09月01日  阅读 914
在 Java 1.4 之前的 IO 系统中,提供的都是面向流的 IO 系统(InputStream / OutputStream),系统一次一个字节(Byte)地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的 IO 速度非常慢。在 Java 1.4 推出了 NIO,这是一个面向块的 IO 系统,系统以块的方式处理。在NIO中有几个核心对象:缓冲区(Buffer)、通...
文章 发布于 2015年04月22日  阅读 3158
系统调用进程有两种运行模式:用户态和内核态。进程通常在用户态,这时可以使用CPU和内存,而当进程需要对硬件外设进行操作的时候(如读取磁盘文件、发送网络数据),就必须切换到内核态,当在内核态的任务完成后,进程又切回到用户态。由于系统调用涉及进程从用户态到内核态的切换,导致一定的内存空间交换,这也是一定程度上的上下文切换,所以系统调用的开销通常是比较昂贵的。减少不必要的系统调用,也是Web服务器性能优...
共10条记录 共1页 上一页 首页 1 末页 下一页