- 浏览: 743563 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
使用JAVA操作netty框架 -
小灯笼:
Netty源码剖析视频教程网盘地址:https://pan.b ...
使用JAVA操作netty框架 -
luckywind:
请问怎么下载那个svn上的源码啊?
本地调试Hbase源码详解 -
heng123:
Netty视频教程https://www.douban.com ...
使用JAVA操作netty框架 -
kongdong88:
Netty简单应用与线上服 ...
使用JAVA操作netty框架
之前使用过MINA框架,感觉效率非常好,使用长连接可以支持10万次以上的并发。
今天尝试使用了Netty框架,感觉使用上也非常方便,具体效率问题,在接下来的博客会详细解读:
NioServerSocketChannelFactory创建服务端的ServerSocketChannel,采用多线程执行非阻塞IO,和Mina的设计
模式一样,都采用了Reactor模式。其中bossExecutor、workerExecutor是两个线程池,bossExecutor用来接收客户端连接,workerExecutor用来执行非阻塞的IO操作,主要是read,write。
很不错的文章,最近看了看了夜行侠老师讲的Netty深入浅出源码剖析,里面用到了长连接高并发,在测试的时候,性能真的比之前的tomcat那些容器好几十倍
哪里反了?这个我还测试过??望指教
类图关系反了
哪里反了?这个我还测试过??望指教
今天尝试使用了Netty框架,感觉使用上也非常方便,具体效率问题,在接下来的博客会详细解读:
NioServerSocketChannelFactory创建服务端的ServerSocketChannel,采用多线程执行非阻塞IO,和Mina的设计
模式一样,都采用了Reactor模式。其中bossExecutor、workerExecutor是两个线程池,bossExecutor用来接收客户端连接,workerExecutor用来执行非阻塞的IO操作,主要是read,write。
package netty; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelFactory; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; import org.jboss.netty.handler.codec.string.StringDecoder; import org.jboss.netty.handler.codec.string.StringEncoder; import java.net.InetSocketAddress; import java.util.concurrent.Executors; /** * Created by IntelliJ IDEA. * User: flychao88 * Date: 12-6-6 * Time: 上午10:14 * To change this template use File | Settings | File Templates. */ public class DiscardServer { public static void main(String[] args) throws Exception { ChannelFactory factory = new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool()); ServerBootstrap bootstrap = new ServerBootstrap (factory); bootstrap.setPipelineFactory(new ChannelPipelineFactory() { public ChannelPipeline getPipeline() { ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("encode",new StringEncoder()); pipeline.addLast("decode",new StringDecoder()); pipeline.addLast("handler",new DiscardServerHandler()); return pipeline; } }); bootstrap.setOption("child.tcpNoDelay", true); bootstrap.setOption("child.keepAlive", true); bootstrap.bind(new InetSocketAddress(8080)); } }
package netty; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.*; /** * Created by IntelliJ IDEA. * User: flychao88 * Date: 12-6-6 * Time: 上午10:10 * To change this template use File | Settings | File Templates. */ public class DiscardServerHandler extends SimpleChannelUpstreamHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { System.out.println("服务器接收1:"+e.getMessage()); } @Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) { e.getCause().printStackTrace(); Channel ch = e.getChannel(); ch.close(); } }
package netty; import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.channel.ChannelFactory; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; import org.jboss.netty.handler.codec.string.StringDecoder; import org.jboss.netty.handler.codec.string.StringEncoder; import java.net.InetSocketAddress; import java.util.concurrent.Executors; /** * Created by IntelliJ IDEA. * User: flychao88 * Date: 12-6-6 * Time: 上午10:21 * To change this template use File | Settings | File Templates. */ public class TimeClient { public static void main(String[] args) throws Exception { ChannelFactory factory = new NioClientSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool()); ClientBootstrap bootstrap = new ClientBootstrap(factory); bootstrap.setPipelineFactory(new ChannelPipelineFactory() { public ChannelPipeline getPipeline() { ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("encode",new StringEncoder()); pipeline.addLast("decode",new StringDecoder()); pipeline.addLast("handler",new TimeClientHandler()); return pipeline; } }); bootstrap.setOption("tcpNoDelay" , true); bootstrap.setOption("keepAlive", true); bootstrap.connect (new InetSocketAddress("127.0.0.1", 8080)); } }
package netty; /** * Created by IntelliJ IDEA. * User: flychao88 * Date: 12-6-6 * Time: 上午10:22 * To change this template use File | Settings | File Templates. */ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.*; import java.util.Date; public class TimeClientHandler extends SimpleChannelUpstreamHandler { @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { e.getChannel().write("abcd"); } @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { e.getChannel().close(); } @Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) { e.getCause().printStackTrace(); e.getChannel().close(); } }
评论
15 楼
萨琳娜啊
2018-07-10
Java读源码之Netty深入剖析
网盘地址:https://pan.baidu.com/s/11kYm2fhJg5CkxIkv0Etvbw 密码: kipg
备用地址(腾讯微云):https://share.weiyun.com/5Bs3HcR 密码:uu95be
JavaCoder如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,如果你要进阶,想了解Java服务器的深层高阶知识,Netty绝对是一个必须要过的门槛。
本课程带你从一个Socket例子入手,一步步深入探究Netty各个模块的源码,深入剖析Netty的工作流程和源码设计,让你不但“真懂”也要“会用”
网盘地址:https://pan.baidu.com/s/11kYm2fhJg5CkxIkv0Etvbw 密码: kipg
备用地址(腾讯微云):https://share.weiyun.com/5Bs3HcR 密码:uu95be
JavaCoder如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,如果你要进阶,想了解Java服务器的深层高阶知识,Netty绝对是一个必须要过的门槛。
本课程带你从一个Socket例子入手,一步步深入探究Netty各个模块的源码,深入剖析Netty的工作流程和源码设计,让你不但“真懂”也要“会用”
14 楼
小灯笼
2018-06-06
Netty源码剖析视频教程
网盘地址:https://pan.baidu.com/s/1bvqEWNLisEcJ6OCHYhlcsw 密码: f4e4
备用地址(腾讯微云):http://url.cn/5R2xYI4 密码:OmbopD
网盘地址:https://pan.baidu.com/s/1bvqEWNLisEcJ6OCHYhlcsw 密码: f4e4
备用地址(腾讯微云):http://url.cn/5R2xYI4 密码:OmbopD
13 楼
heng123
2017-10-03
Netty视频教程https://www.douban.com/note/619228582/
12 楼
kongdong88
2017-08-16
Netty简单应用与线上服务器部署
课程学习地址:http://www.xuetuwuyou.com/course/198
课程出自学途无忧网:http://www.xuetuwuyou.com
一、开发环境
4.1.11.Final
jdk1.8
maven 3.2
Spring 4.3.9
二、适合人群
①想深入学习java ClassLoader
②想在线上linux服务器上运行netty或Springboot服务
三、课程目标
①掌控ClassLoader
②学会编写shell脚本
③了解jvm内存分配
④熟悉线上服务器部署
四、课程目录
1、系统架构技术介绍
2、netty服务器编写
3、netty的编码和解码
4、Netty客户端编写
5、与spring整合
6、netty服务器待解决的问题
7、Classloader类加载器
8、自定义类加载器
9、第二种类加载器
10、热部署
11、类加载器加载外部配置文件
12、项目运行时加载依赖jar
13、项目运行时加载依赖jar第二种方案
14、linux服务器编写通用shell脚本启动JVM
15、优化Shell脚本
16、Shell脚本中加上JVM堆栈内存参数以及垃圾回收机制
17、Netty服务器加上配置信息
Netty课程整合推荐:
Netty简单应用与线上服务器部署
课程观看地址:http://www.xuetuwuyou.com/course/198
深入浅出Netty源码剖析
课程观看地址:http://www.xuetuwuyou.com/course/157
Netty实战高性能分布式RPC
课程观看地址:http://www.xuetuwuyou.com/course/171
NIO+Netty5各种RPC架构实战演练
课程观看地址:http://www.xuetuwuyou.com/course/52
物联网核心技术之Netty入门到精通课程
课程观看地址:http://www.xuetuwuyou.com/course/14
Netty三部曲,夜行侠老师带你玩转netty
课程观看地址:http://www.xuetuwuyou.com/course/175
Netty物联网高并发系统第一季
课程观看地址:http://www.xuetuwuyou.com/course/178
课程学习地址:http://www.xuetuwuyou.com/course/198
课程出自学途无忧网:http://www.xuetuwuyou.com
一、开发环境
4.1.11.Final
jdk1.8
maven 3.2
Spring 4.3.9
二、适合人群
①想深入学习java ClassLoader
②想在线上linux服务器上运行netty或Springboot服务
三、课程目标
①掌控ClassLoader
②学会编写shell脚本
③了解jvm内存分配
④熟悉线上服务器部署
四、课程目录
1、系统架构技术介绍
2、netty服务器编写
3、netty的编码和解码
4、Netty客户端编写
5、与spring整合
6、netty服务器待解决的问题
7、Classloader类加载器
8、自定义类加载器
9、第二种类加载器
10、热部署
11、类加载器加载外部配置文件
12、项目运行时加载依赖jar
13、项目运行时加载依赖jar第二种方案
14、linux服务器编写通用shell脚本启动JVM
15、优化Shell脚本
16、Shell脚本中加上JVM堆栈内存参数以及垃圾回收机制
17、Netty服务器加上配置信息
Netty课程整合推荐:
Netty简单应用与线上服务器部署
课程观看地址:http://www.xuetuwuyou.com/course/198
深入浅出Netty源码剖析
课程观看地址:http://www.xuetuwuyou.com/course/157
Netty实战高性能分布式RPC
课程观看地址:http://www.xuetuwuyou.com/course/171
NIO+Netty5各种RPC架构实战演练
课程观看地址:http://www.xuetuwuyou.com/course/52
物联网核心技术之Netty入门到精通课程
课程观看地址:http://www.xuetuwuyou.com/course/14
Netty三部曲,夜行侠老师带你玩转netty
课程观看地址:http://www.xuetuwuyou.com/course/175
Netty物联网高并发系统第一季
课程观看地址:http://www.xuetuwuyou.com/course/178
11 楼
smart152829
2017-07-01
很不错的文章,最近看了看了夜行侠老师讲的Netty深入浅出源码剖析,里面用到了长连接高并发,在测试的时候,性能真的比之前的tomcat那些容器好几十倍
10 楼
xingxing
2016-11-18
有jar包吗?
9 楼
darren_nizna
2016-09-07
http://gitlore.com/darren/netty_in_action/index.html Netty 实战(精髓)
8 楼
ustcdqk
2016-01-21
[flash=200,200][/flash] |
7 楼
Balena
2015-11-28
NIO+Netty5各种RPC架构实战演练,我讲了一堂比较深入的视频,叫NIO+Netty5各种RPC架构实战演练,想要的小伙伴,可以加群511029656,也可以直接进入www.xuetuwuyou.com/course/52直接观看
6 楼
紫皇林
2015-07-10
5 楼
逃荒形象
2015-02-08
为什么服务端和客户端都启动后,服务端那边的消息是server ,客户端的client,服务端和客户端收到的是自己的。
4 楼
Jong88
2013-04-06
flychao88 写道
ljl_ss 写道
貌似NioClientSocketChannelFactory和NioServerSocketChannelFactory位置放反了
哪里反了?这个我还测试过??望指教
类图关系反了
3 楼
flychao88
2012-08-09
ljl_ss 写道
貌似NioClientSocketChannelFactory和NioServerSocketChannelFactory位置放反了
哪里反了?这个我还测试过??望指教
2 楼
flychao88
2012-08-09
哪里反了?这个我还测试过?指教啊
1 楼
ljl_ss
2012-07-20
貌似NioClientSocketChannelFactory和NioServerSocketChannelFactory位置放反了
发表评论
-
Akka框架性能的简单测试分析
2016-02-27 18:17 1496因为最近工作的关系,要把异步任务从应用服务器中拆分到专门的 ... -
SEDA架构模型
2016-01-25 18:45 1267一、传统并发模型的缺点基于线程的并发 特点:每任务一 ... -
Using Redis as an LRU cache文章翻译
2015-09-14 14:55 944周末有空翻译了:http://redis.io/topic ... -
跟我学之Dubbo源码类分析图
2015-05-05 20:26 2344客户端类图: 服务端类图 -
【转】MAVEN 解决包依赖冲突方案
2015-03-31 13:15 1153使用maven最烦人的可能就是类包之间的版本冲突引发的问题了 ... -
Spring ApplicationContextAware使用方法
2015-03-06 16:20 2532项目用到了ApplicationContex ... -
Spring AOP 源码实现过程
2015-02-27 10:40 5082我们看看在Spring AOP中拦截器链是 ... -
基于Spring_Batch大数据并行处理文章分享--建议大家多看看
2014-11-14 10:04 1770请见附件!!! 以下链接是我以前写的一个简单例子, ... -
开发者必备的 Chrome 扩展
2014-11-06 12:20 781Firebug:不用多介绍了吧https://chrome.g ... -
【转】使用Netty实现多路复用的client
2014-10-17 11:16 10650Netty只提供的异步传输数据的方式,但是并 ... -
Redis分布式中间件TwemProxy
2014-10-07 08:57 14163twemproxy,也叫nutcraker。 ... -
-淘宝HSF服务框源码解析
2014-09-21 09:41 3129最近在学习淘宝HSF ... -
关于<mvc:default-servlet-handler/>报错问题的解决
2014-03-14 14:42 3002在spring mvc中引用<mvc:default- ... -
Spring Batch实例详解
2013-12-16 18:20 4969Spring Batch是 ... -
Struts2源码分析
2013-11-06 09:17 867struts2源码分析讲解 一、struts2宏观示意图 ... -
Nginx的upstream目前支持5种分配方式
2013-10-24 13:43 12991、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服 ... -
tomcat源码流程分析(一)
2013-02-25 15:02 982上图是tomcat源码的一个执行流 ... -
探索tomcat源码(一)
2013-02-25 14:50 2下图是tomcat源码执行流程,我抽空看源码时整理出来,供大家 ... -
处理HTTP响应(响应码、响应头、请求重定向、自动刷新/跳转)
2012-09-28 16:44 11200我们已经对servlet有了基本的认识了。接着我们来简单看看对 ... -
Tomcat并发数优化和设置
2012-09-25 09:42 20131、使用NIO在服务器端会有更好的性能,加强服务器端对并发处理 ...
相关推荐
java Netty 框架例子源码.rar
MOBA游戏的服务端,基于Java的Netty框架编写
做Java开发,现在很多场合需要分布式应用,很多通信框架的底层实现都包含Netty技术,为了更好了解,值得有兴趣的人研究一下
Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持...技术体系:(使用 netty 实现通信及协议解析,使用 nutzboot 提供依赖注入及属性配置,使用 redis 实现消息缓存,集群,使用 kafka 实现消息代理(可选))。
资源名称:Java_NIO框架Netty教程资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
资源名称:Java-NIO-Netty框架学习资源目录:【】Netty5.0架构剖析和源码解读【】Netty5用户指南【】Netty_in_Action(第五版-目录修正版)【】Netty_in_Action_v08_MEAP【】Netty_in_Action_v10_MEAP【】Netty_代码...
基于Netty框架的远程桌面控制程序,压缩文件包含可执行jar包、源代码jar包和依赖的netty4jar包,jdk版本为1.7,双击MyRemoteControllerV2-1.0.jar可直接运行,最好在两台机子上测试,当然单机也可以测试,只不过有些...
java netty框架 4.1 版本的包
Android Studio 开发Netty网络访问框架,实现了客户端、服务端两种访问方式,支持发送心跳数据,使用Handler实现外部数据交互,有调用Demo,在实际项目中使用暂时没有问题
java-netty netty 框架的通信例子,参考www.itstack.org
通过Netty4 获取串口数据并且下发数据到串口,是一个封装不错的框架
基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务
java语言用netty框架串口查询ups电压参数,通信协议用到自定义长度,CustomLengthFieldBasedFrameDecoder能自动解包避免半包
物联网通讯协议,基于netty框架,支持COM(串口)和TCP协议,同时支持设备组多台设备高并发通讯。设计上采用工厂设计模式,代码采用继承和重写的方式实现高度封装,可作为SDK提供封装的接口,让具体的业务开发人员...
也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,...
Java NIO框架Netty教程 很好的东西!
Java_NIO框架Netty教程.pdf
部分说明文档内容: 协议层问题(协议设计) 登录功能 登录--指的是一个玩家在Socket连接上服务器后,还没开始游戏的一种状态,在这种状态下,客户端不应该接受任何关于游戏逻辑的消息。 完成登录功能需要设计...