本月博客排行
-
第1名
龙儿筝 -
第2名
johnsmith9th -
第3名
wy_19921005 - zysnba
- sgqt
- lemonhandsome
年度博客排行
-
第1名
宏天软件 -
第2名
青否云后端云 -
第3名
龙儿筝 - gashero
- wallimn
- vipbooks
- benladeng5225
- wy_19921005
- fantaxy025025
- e_e
- zysnba
- ssydxa219
- sam123456gz
- javashop
- arpenker
- tanling8334
- kaizi1992
- xpenxpen
- wiseboyloves
- xiangjie88
- ranbuijj
- ganxueyun
- sichunli_030
- xyuma
- wangchen.ily
- jh108020
- lemonhandsome
- zxq_2017
- jbosscn
- Xeden
- luxurioust
- lzyfn123
- zhanjia
- johnsmith9th
- forestqqqq
- ajinn
- nychen2000
- wjianwei666
- hanbaohong
- daizj
- 喧嚣求静
- silverend
- mwhgJava
- kingwell.leng
- lchb139128
- lich0079
- kristy_yy
- jveqi
- java-007
- sunj
最新文章列表
Netty4源码分析- read
本文为原创,转载请注明出处
Netty4源码分析- read
当selector检测到OP_READ事件时,触发read操作:
//NioEventLoop
if ((readyOps & (SelectionKey.OP_READ | SelectionKey.OP_ACCEPT)) != 0 || readyOps == 0) {
u ...
第一个netty4的例子
这个例子参与http://netty.io/wiki/user-guide-for-4.x.html文档实现,主要是服务器接收并打印命令行输入的字符,例子简单直接上代码:
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelFutur ...
Netty 4 源码分析——EventExecutor
先从EventExecutor开始,因为它是一个很基础的工具类,是对I/O线程的包装。先了解下它的源码会对后面的分析有更好的理解。
先看下EventExecutor的类关系图,这里只是简单的画出了类和接口的继承和实现关系,还有其他的聚合关系没有画出来,为的是便于分析思路的清晰。
说到Executor,很容易联想到jdk中 java.util.concurrent.Executor 接口,这个 ...
Netty 4 源码分析——结构概览
看了两天的netty源码,现在总算有了些眉目了。下面是用excel画的一个简单的结构图
Channel是对最终I/O处理的封装
EventExecutor 封装了负责处理I/O 事件的线程
ChannelHandler 处理相关I/O Event的扩展接口,分为ChannelInboundHandler和[*]ChannelOutboundHandler,分别处理不同流向的事件
Channel ...
Netty+Kryo实现高性能网络通信
netty 是 开源的基于java的网络通信框架,其中java对象的传输,netty使用的是java原生的序列化/反序列化实现的,而Kryo是性能更好的java序列化框架,能否让netty和kryo结合,实现高性能的数据通信呢?下面就是如何实现。
首先,模仿Netty自带的ObjectEncoder,写一个kryo序列化的ObjectEncoder:
import static org ...
netty4服务端启动源码分析-线程的创建
本文为原创,转载请注明出处
netty4服务端启动源码分析-线程的创建
本文分析Netty中boss和worker的线程的创建过程:
以下代码是服务端的启动代码,线程的创建就发生在其中。
EventLoopGroup bossGroup = new NioEventLoopGroup();
NioEventLoopGroup的类关系图如下:
构造方法执行过程如下:
...
netty4源码分析-bind
本文为原创,转载请注明出处
netty4源码分析-bind
在前一篇文章中分析了监听套接字ServerSocketChannel的创建过程,本文接着分析绑定IP和端口的过程。
回到之前未分析完的doBind逻辑,前一篇文章已分析到dobind方法中initAndRegister方法,该方法最终触发了对regPromise 的listener的回调,Listener将bind任务加到bo ...
netty4源码分析-socket
本文为原创,转载请注明出处
netty4源码分析-socket
服务端启动的第一步必须先创建一个监听套接字ServerSocketChannel,该过程是由ChannelFuture f = b.bind(port)中的bind触发。下面详细分析其过程:
Bind源码如下,代码位于ServerBootstrap的父类AbstractBootstrap
//Ab ...
Netty源码分析 之 NioServerSocketChannelFactory
NioServerSocketChannelFactory 是ChannelFactory的实现接口之一,负责创建并管理服务端Channel。
先来看下它的周边类图是怎样
下面针对核心的类做下讲解,然后就开始跟踪源码一步一步分析
NioServerSocketPipelineSink
接受和处理终端的下游ChannelEvent事件.
AbstractNio ...
Netty源码分析 之 实现原理
开门见山,在此我就不介绍Netty,关于Neety的介绍、用法我在此推荐一篇文章http://www.kafka0102.com/2010/06/167.html,关于Java NIO网络编程的知识请Google。
Netty版本:3.6.6
个人觉得Netty之所以高性能主要是因为它的多路I/O复用模型和零拷贝的Buffer。
Netty中有两大核心组件ChannelFact ...
Netty源码分析之handler decoder
ChannelHandler是处理业务逻辑的代码所在。下面首先分析下ChannelHandler的体系结构,然后重点分析几个有意思的Handler:IdleStateHandler、ExceptionHandler1.ChannelHan ...
Netty源码分析之消息的收发
在前面已经说明了在接收新连接时,将向worker注册默认的READ事件。然后worker开始阻塞select监听事件。
发送消息的情况。
这种情况常常是由DownstreamHandler主动发起,在对接收的消息处理后主动发送消息ctx.sendMessage,由内向外经过由DownstreamHandler和encode组成的过滤链,在链的尽头由NioServerSocketPipelineSin ...
java.lang.OutOfMemoryError: unable to create new native thread
bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
异常
java.lang.OutOfMemoryError: unable to create new nat ...