![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netty权威指南
阿凡T
这个作者很懒,什么都没留下…
展开
-
同步阻塞式I/O编程
1.BIO主要的问题在于每当有一个新的客户端请求接入时,服务器必须创建一个新的线程处理新接入的客户端链路,一个线程只可以处理一个客户端连接,在高性能服务器应用领域,往往需要面向成千上万个客户端的并发连接,这种模型显然无法满足高性能,高并发接入的场合 代码例子: 1.server端代码package com.afan.bio;import java.io.IOException;import j原创 2017-10-21 18:20:28 · 208 阅读 · 0 评论 -
伪异步I/O
1.伪异步I/O通信是采用线程池和任务队列实现的一种通信框架,当有新的客户端接入时,将客户端的Socket封装成一个task投递到后端的线程池中进行处理,JDK的线程池维护一个消息队列和N个活跃线程,对消息队列中的任务进行处理,由于线程池可以设置消息队列的大小和最大线程数,因此,它的资源占用是可控的,无论多少个客户端并发访问,都不会导致医院的耗尽和宕机 伪异步i/o代码 1.serverTime原创 2017-10-21 18:53:52 · 434 阅读 · 0 评论 -
NIO编程
1.NIO弥补了原来同步阻塞I/O的不足,它在标准java代码中提供了高速的,面向块的I/O 2.NIO的几个特性 缓冲区(buffer),通道(channel);多路复用器(selector) 3.一个多路复用器selector可以同时轮循多个Channel,JDK使用epoll()代替传统的select实现,因此它并没有最大连接句柄1024的限制,这个意味着只需要一个线程负责selec原创 2017-10-21 21:00:07 · 195 阅读 · 0 评论 -
AIO
1.NIO2.0引入了新的异步通道的概念,真正实现了异步非阻塞I/O,对应于UNIX网络编程的事件驱动I/O,它不使用多路复用器selector对注册的通道进行轮询操作即可实现异步读写,简化了NIO的编程模型 AIO例子: 1.TimeServerpackage com.afan.aio;public class TimeServer { public static void main(S原创 2017-10-22 13:49:35 · 334 阅读 · 0 评论 -
netty解决TCP网络传输中的拆包与粘包问题
1.netty中提供的一些api可以解决拆包与粘包问题 2.lineBasedFrameDecoder 3.StringDecoder 4.DeLimiterBasedFrameDecoder:可以自动完成以分隔符做结束标志的消息的解码 5.FixedLengthFrameDecoder:可以自动完成对定长消息的解码原创 2017-10-22 14:53:14 · 252 阅读 · 0 评论 -
序列化
1.java本身提供的序列化的缺点 1.无法跨语言 2.序列化后的码流太大 3.序列化性能太低2.市场上流行的几种序列化框架 1.Protobuf 2.Thrift 3.JBOSS Marshallling原创 2017-10-22 15:08:48 · 219 阅读 · 0 评论