
Java网络编程
duanduan_l
这个作者很懒,什么都没留下…
展开
-
Java I/O模型
本文介绍了Java中的四种I/O模型,同步阻塞,同步非阻塞,多路复用,异步阻塞。同时将NIO和BIO进行了对比。1、同步,异步,阻塞,非阻塞 从内核角度看I/O操作分为两步:用户层API调用;内核层完成系统调用(发起I/O请求),所以,同步,异步针对用户的API调用阻塞,非阻塞针对IO请求;同步与异步: 简单来说,同步与异步的重点在于当有多个任务和事件发生时,...原创 2019-02-28 17:26:34 · 171 阅读 · 0 评论 -
Netty中零拷贝的理解
首先,我想介绍一下传统上零拷贝的含义,事实上,Netty中的零拷贝又有所区别,最后再介绍Netty中零拷贝的四种实现方式。数据传输的相关概念 计算机早期的数据传输方式:整个流程:CPU主动启动I/O设备; CPU不断询问I/O设备是否准备好; 若I/O设备准备好了,CPU开始从I/O设备中读数据; CPU将数据传输给主存。从整个数据传输流程可以看出:CPU是一...原创 2019-03-22 15:48:24 · 1389 阅读 · 1 评论 -
Netty ByteBuf与NIO ByteBuffer
Netty中引入了ByteBuf,相较于NIO中的ByteBuffer有了一下改进,使得网络编程更加简便。ByteBuffer的缺点 在NIO的Buffer中,我们已经知道Buffer有七种,最常用的是ByteBuffer,而ByteBuffer也有一些局限性: ByteBuffer的长度是固定的,一旦分配完成就不能进行扩容和收缩,当需要操作的对象大于Buffer的容量时...原创 2019-03-20 21:54:29 · 3708 阅读 · 0 评论 -
Java NIO之多路复用器(Selector)
多路复用器Selector是Java NIO编程的基础,熟练地掌握Selector对于掌握NIO编程至关重要。多路复用器提供选择已经就绪的任务的能力。简单来讲,Selector会不断地轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的...转载 2019-03-15 20:35:51 · 2726 阅读 · 0 评论 -
Java NIO之通道(channel)
什么是通道? 通道(Channel)是 java.nio 的第二个主要创新。它们提供与 I/O 服务的直接连接。Channel 用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。通道是一种途径,借助该途径,可以用最小的总开销来访问操作系统本身的 I/O 服务。缓冲区则是通道内部用来发送和接收数据的端点。创建通道 通道主要分为...原创 2019-03-15 16:34:04 · 1289 阅读 · 0 评论 -
Netty框架简述
Netty是什么? Netty 是一个广泛使用的 Java 网络编程框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 的内部实现时很复杂的,但是 Netty 提供了简单易用的 api 从网络处理代码中解耦业务逻辑。 Netty 是完全基于 NIO 实现的,实际上相当于NIO+多线程,所以整个 Netty ...原创 2019-03-19 21:53:54 · 1176 阅读 · 0 评论 -
缓冲区(Buffer)
本文主要介绍缓冲区的特点,作用以及基本操作。 一个Buffer对象是固定数量的数据的容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。对于每个非布尔原始数据类型都有一个缓冲区类。尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可以在后台执行从字节或到字节的转换,这取决于缓冲区是如何创建的。属性 ...原创 2019-03-15 15:59:46 · 2984 阅读 · 0 评论 -
TCP连接的建立与释放(三次握手与四次挥手)
在介绍TCP连接建立与释放之前,首先介绍TCP首部,然后再介绍三次握手与四次挥手。 TCP提供了一种可靠的,面向连接的字节流服务。面向连接表示两个使用TCP的应用(一般是一个服务端和一个客户端)在彼此交换数据前必须先建立TCP连接;关于TCP连接的可靠性会在文章末尾进行解释。 TCP的首部 每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端...原创 2019-02-26 16:33:07 · 685 阅读 · 0 评论 -
Java NIO简述
本文首先介绍NIO涉及到的相关概念,然后将介绍NIO的编程流程以及示例,最后简述NIO涉及的相关问题解答。Java New IO(NIO)是从Java1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。主要涉及三个概...原创 2019-03-05 14:33:34 · 129 阅读 · 0 评论 -
一次服务端大量CLOSE_WAIT问题的解决
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-08-29 15:30:41 · 363 阅读 · 0 评论