- 浏览: 441836 次
最新评论
-
liaodongdakai:
Java读源码之Netty深入剖析网盘地址:https://p ...
java Netty 之 字符串消息收发(ChannelBuffer) -
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
java Netty 之 教学视频 -
ccqy66:
感觉步骤1的描述有问题吧,aof重写时是不会读原aof文件是, ...
Redis的AOF重写机制 -
dick1305:
没有了,能否再提供一个下载地址。谢谢。
java Netty 之 教学视频 -
dick1305:
...
java NIO 之 mina 和 netty
文章列表
java NIO 之 Pipe
- 博客分类:
- java--NIO
java NIO 之 Pipe
Java NIO Pipe是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。
Pipe原理的图示:
Pipe的特点
Pipe 提供一种机制,可以按照写入的顺序读取数据。 Pipe.SinkChannel用来向管道写入数据,而Pipe.SourceChannel用来从管道读取数据
例子:
package cn.outofmemory.nio.channels;
import java.io ...
java NIO 之 DatagramChannel
Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。
打开 DatagramChannel
DatagramChannel channel = ...
java NIO 之 ServerSocketChannel
Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。
代码例子:
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.socket().bind(new InetSocketAddress(99 ...
java NIO 之 SocketChannel
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:
打开一个SocketChannel并连接到互联网上的某台服务器。
一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。
打开 SocketChannel
SocketChannel socketChannel = SocketChannel.open();
socketChannel.connect(new I ...
java NIO 之 FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。
FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。
打开FileChannel
在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来获取一个FileChannel实例。下面是通过RandomAccessFile打开FileChannel的示例: ...
java NIO 之 Selector
- 博客分类:
- java--NIO
java NIO 之 Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。
为什么使用Sel ...
java NIO 之 通道之间的数据传输
在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(通道)传输到另外一个channel。
transferFrom()
FileChannel的transferFrom()方法可以将数据从源通道 ...
java NIO 之 Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(通道)中读取或者写入到Channel的操作。
分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。
聚集(gather)写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,因此,Channel 将多个Buffer中的数据“聚集(gath ...
java NIO 之 Buffer
- 博客分类:
- java--NIO
java NIO 之 Buffer
Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。
缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。
Buffer的基本用法
Buffer读写数据的步骤:
写入数据到Buffer
调用flip()方法
从Buffer中读取数据
调用clear()方法或者compact()方法
当向buffer写入数据时,buffer会记录 ...
java NIO 之 Channel
- 博客分类:
- java--NIO
java NIO 之 Channel
java NIO和流类似,但还是有所区别
既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
通道可以异步地读写
通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入
从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:
Channel的实现
FileChannel:从文件中读写数据。
DatagramChannel:能通过UDP读写网络中的数据。
SocketChannel:能通过TCP读写网络中的数据。
ServerSocketChannel ...
java NIO 之 基础
- 博客分类:
- java--NIO
java NIO 之 基础
Java NIO 由以下几个核心部分组成:
Channels
Buffers
Selectors
虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。
Channel 和 Buffer
基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从 ...
java NIO 之 NIO与IO
- 博客分类:
- java--NIO
java NIO 之 NIO与IO
Java NIO和IO的主要区别
IO NIO
面向流 面向缓冲
阻塞IO 非阻塞IO
无 Selector
面向流与面向缓冲
面向流:例如文件和程序之间有一个通道,像水流一样 ...
Socket 和 http 的区别
HTTP
超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。
Http请求的协议
http协议
基于http协议 ...
java socket编程(实践)
InetAddress
InetAddress类用于标识网络上的硬件资源,标识互联网协议(IP)地址。(该类没有构造方法)
//获取本机的InetAddress实例
InetAddress address =InetAddress.getLocalHost();
address.getHostName();//获取计算机名
address.getHostAddress();//获取IP地址
byte[] bytes = address.getAddress();//获取字节数组形式的IP地址,以点分隔的四部分
...
java socket编程(理论)
网络编成的两个主要问题
如何准确的定位网络上一台或多台主机
找到主机后如何可靠高效的进行数据传输
在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
实现方式
通过HTTP协议传输数据,因为HTTP属于应用层,所以我们可以通过该协议,进行一次短连接,然后传输数据。
通过Socket进行数据传输,S ...