netty入门文章1

文章目录

1、java nio是什么

2、netty是什么、做什么用

3、netty相关产品有哪些

 

正文部分

1、java nio是什么

1.1、java io

io是主存和外部设备(硬盘、终端、网络等)之间拷贝数据的过程,io是操作系统底层功能的实现。

操作系统底层通过io指令完成io操作,所有语言运行时系统提供执行I/O较高级别的工具。

比如:c语言提供的输入输出函数,java语言提供的面向对象的封装。

字节流(inputStream,outputStream)和字符流(reader,writer),老的io体系,阻塞式io。java nio为异步非阻塞new io。

sun公司标榜的java nio特性如下:

 a.为所有原始类型提供buffer缓存支持。

 b.字符集编码解码解决方案。java.nio.charset

 c.一个新的原始io抽象,Channel通道。

 d.支持锁和内存映射文件的文件访问接口。

 e.提供多路non-bloking非阻塞式的高伸缩性的网络io。

更多细节如下:

通道和缓冲区,新的io体系,非阻塞式io

buffer      //一个连续的内存块,nio数据读取的中转站

channel   //数据的源头或者数据的目的地,buffer的接口

Buffer 常见方法:

flip(): 写模式转换成读模式

rewind():将position 重置为0,一般用于重复读。

clear():清空buffer,准备再次被写入(position变成0,limit变成capacity)。

compact(): 将未读取的数据拷贝到buffer的头部位。

mark()、reset():mark可以标记一个位置,reset可以重置到该位置。

Buffer常见类型,基本数据类型的都有对应的buffer类

ByteBuffer

CharBuffer

StringBuffer

MappedByteBuffer

...

Channel常见类型

FileChannel

DatagramChannel(UDP)

SocketChannel(TCP)

ServerSocketChannel(TCP)

另外,java.nio.charset提供了编码解码的一套解决方案。

Selector

每个线程的处理流程大概都是读取数据、解码、计算处理、编码、发送响应。 //解包、解码、业务处理、编码、发包流程。

异步IO的核心类,它能检测一个或多个通道(channel)上的事件,并将事件分发出去。

使用一个select线程就能监听多个通道上的事件,并基于事件驱动触发相应的响应。而不需要为每个channel去分配一个线程。

SelectionKey

包含了事件的状态信息和时间对应的通道的绑定。

2、netty是什么、做什么用

2.1、netty是什么

Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

Netty支持多种协议,包括HTTP,TCP,UDP,SMTP,FTP以及二进制文本协议等等,另外Netty文档齐全,总之一句话Netty很牛逼很强大。。。

官方标榜如下:

Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.

学习网站:

netty官方网站:http://netty.io/

netty官方api:http://netty.io/4.0/api/

netty下载地址:http://netty.io/downloads.html

github地址:https://github.com/netty/netty

官方提供的入门文档:http://netty.io/4.0/guide/

2.2、netty做什么用

Netty是一个吸收了多种协议的实现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项目。

最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。

3、netty相关产品有哪些

apache mina:http://mina.apache.org/ 出自同一作者

 

你可能感兴趣的:(netty入门文章1)