netty
一直学习一直爽
这个作者很懒,什么都没留下…
展开
-
nio回顾
在nio中是面向块(block)或者缓冲区(buffer)编程的,selector(是一个线程) :这个线程可以对channel进行来回切换(通过事件来决定)channel (可以将nio中的channel理解成io中的stream):指的是可以向其中写入对象或者读取对象,但是所有数据的读写都是通过buffer来进行的,永远不会出现直接向channel写如数据的情况或者从Channel读取数...原创 2019-04-22 18:43:50 · 135 阅读 · 0 评论 -
netty注册流程
//1. // 2 //3 ChannelFuture regFuture = config().group().register(channel); if (regFuture.cause() != null) { if (channel.isRegistered()) { ...原创 2019-05-16 14:19:13 · 497 阅读 · 0 评论 -
serverBootstrap.bind(8899)
public ChannelFuture bind(SocketAddress localAddress) { validate(); //1 if (localAddress == null) { throw new NullPointerException("localAddress"); } ret...原创 2019-05-10 18:30:07 · 432 阅读 · 0 评论 -
ChannelPipeline
//Channel是socket的连接点public interface Channel extends AttributeMap, ChannelOutboundInvoker, Comparable<Channel> 所有的事件都是由channelPiple来处理的,具体的实现是EventHandler,channelPiple将netty中若干的EventHandler组合...原创 2019-05-15 15:59:33 · 512 阅读 · 0 评论 -
Future
public interface Future<V> extends java.util.concurrent.Future<V> 等待future的完成 Future<V> sync() throws InterruptedException;监视/** * Listens to the result of a {@link Future}....原创 2019-05-10 17:34:46 · 201 阅读 · 0 评论 -
EventLoopGroup
EventLoopGroup bossGroup=new NioEventLoopGroup();//接收客户端连接转发到worker EventLoopGroup workerGroup=new NioEventLoopGroup();//真正处理业务逻辑package io.netty.channel;import io.netty.util.concurrent.Ev...原创 2019-05-14 15:04:30 · 420 阅读 · 0 评论 -
nettybuffer内存分配
AdaptiveRecvByteBufAllocator.class static final int DEFAULT_MINIMUM = 64; static final int DEFAULT_INITIAL = 1024; static final int DEFAULT_MAXIMUM = 65536; private static final int...原创 2019-05-14 14:29:21 · 323 阅读 · 0 评论 -
Reactor模式
Reactor模式(反应器模式)分发恰当的handler来对io event 进行response(netty中的assetExtension就是一个Reactor)客户端向Reactor线程发起连接,然后Reactor线程将客户端的请求派发给其他xia线程进行请求,在其他请求中完成解码。计算,编码,响应等Proactor模式netty整体架构是Reactor模式的体现...原创 2019-05-13 17:48:44 · 174 阅读 · 0 评论 -
netty的长连接
websocket是解决http协议的缺陷http协议是无状态基于请求和响应的协议这种无状态的协议会出现一种问题,无法知道请求来自于哪个客户端,所以用cookie和session或者redis解决这种问题服务端收到客户端的请求会进行处理,比如servlet的doget和dopost,处理完之后服务端就会构造出响应对象,response响应给客户端, 如果是基于http1.0的话,短连接,连接...原创 2019-04-19 22:14:05 · 1488 阅读 · 0 评论 -
(四)netty建立连接的心跳检测
public class IdleStateHandler extends ChannelDuplexHandlernetty 提供了 IdleStateHandler 类来对连接进行心跳检测,防止建立的无用长连接占用系统资源 public IdleStateHandler( //读的时间 int readerIdleTimeSeconds, ...原创 2019-04-18 19:25:12 · 243 阅读 · 0 评论 -
(二)第二个netty程序(使用netty的websocket)
先创建serverpublic class MyServer { public static void main(String[] args) throws InterruptedException { EventLoopGroup bossGroup=new NioEventLoopGroup(); EventLoopGroup workerGroup...原创 2019-04-18 18:45:08 · 97 阅读 · 0 评论 -
第一个netty程序(使用netty进行http开发)
学习目的:了解netty服务器端的基本构建过程public class TestServer { public static void main(String[] args) throws InterruptedException { //事件循环组 两个死循环 EventLoopGroup bossGroup =new NioEve...原创 2019-04-18 16:04:52 · 296 阅读 · 0 评论 -
netty学习(学习大纲)
Netty介绍netty架构实现Netty模块分析Netty Http TunnelNetty对socket的实现Netty压缩与解压缩Netty对于RPC的支援WebSocket实现与原理分析WebSocket连接建立方式与生命周期分解WebSocket服务端与客户端开发RPC框架分析Google Prtobuf使用方式分析Apache Thirft使用方式与文件编写方...原创 2019-04-18 13:40:28 · 282 阅读 · 0 评论 -
netty中的Future
ChannelFuture() 和 ChannelPromise(可写入的 setsuccess)区别JDKFuture只能通过手工方式检查执行结果,而这个结果是阻塞的, netty对ChanelFuture增强,通过addListener以回调的方式执行结果,去除了手工检查阻塞的操作,Future 是如何知道他里面的异步操作执行完了: 通过Promise的setSuccess方法适配器模...原创 2019-05-23 13:21:18 · 237 阅读 · 0 评论