- 浏览: 2662576 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
在Netty中所有的io操作都是异步的,这也就是意味任何io访问,那么就立即返回处理,并且不能确保
返回的数据全部完成。因此就出现了channelFuture,channelFuture在传输数据时候包括数据和状态两个
部分。他只有Uncompleted和Completed, 既然netty io是异步的,那么如何知道channel传送完成有两种方式,一种添加监听器addListener(ChannelFutureListener) 还有一种直接调用await()方法,这两种方式有下面的区别:
监听器:
是以事件模式的,因此代码就需要用事件模式的样式去写,相当复杂,但他是non-blocking模式的性能方面要比await方法好,而且不会产生死锁情况
wait():
直接方法调用,使用简单,但是他是blocking模式,性能方面要弱而且会产生死锁情况
不要在ChannelHandler 里面调用await(),这是因为通常在channelHandler里的event method是被i/o线程调用的(除非ChannelPipeline里面有个ExecutionHandler),那么如果这个时候用await就容易产生死锁。
io write() 之后并不直接写数据, 而是将数据写入一个队列, 然后返回. 由worker线程取出, 执行写操作, 成功后发送事件, 也就调用了你的那个 Listener,所以doSomething() 也是在worker线程执行的.
发表评论
-
Netty笔记ReplayingDecoder
2013-03-15 11:39 1319为什么需要ReplayingDecoder,它和FrameD ... -
netty StringDecoderTester
2013-02-21 16:55 1035netty package com.duita ... -
netty文档集合
2013-02-10 13:17 1117Netty 3.1 中文用户手册(一)-序言 Netty ... -
TransferQueue
2013-02-08 14:55 1598在看netty的代码实现发 ... -
ChannelBuffer介绍介绍
2012-11-07 11:28 849A random and sequential ... -
FrameDecoder介绍
2012-11-05 18:26 1217FrameDecoder 负责 decodes ... -
netty简单介绍
2012-11-03 20:05 1172ServerBootstrap 启动nett ... -
Netty服务器线程模型概览
2012-10-08 16:57 10888一切从ServerBootstrap开始 ServerB ... -
netty源代码分析
2012-10-08 16:35 968这篇文章(http://san-yun.iteye.com/b ... -
netty ExecutionHandler
2012-10-08 16:34 1533前面(http://san-yun.iteye.com/blo ... -
netty的一点学习笔记
2012-10-02 22:57 1079原文:http://macrochen.iteye.com/b ... -
Netty实现原理浅析
2012-09-29 15:47 1366Netty是JBoss出品的高效的Java NIO开发框架, ... -
Netty代码分析
2012-09-29 13:22 774参考:http://rdc.taobao.co ... -
netty初探
2011-05-24 15:56 1620netty API //启动类 Server ...
相关推荐
Netty 采用 ChannelFuture 和 ChannelPromise 提供异步编程模型,使得开发者可以优雅地处理异步操作的完成和异常。 5. **Netty 的数据处理** - **ByteBuf**:Netty 的缓冲区实现,提供了高效的字节操作和内存管理...
这个“netty官网学习手册中文版”针对的是Netty的3.1版本,虽然现在的Netty已经发展到了5.x版本,但3.1版本的知识仍然具有历史参考价值,特别是对于那些初次接触或需要理解Netty基础概念的开发者来说。 1. **Netty...
通过“Netty-API-文档中文版”,你可以详细了解到如何创建ServerBootstrap、Bootstrap、ChannelFuture、ChannelInboundHandlerAdapter等核心组件,以及如何配置和使用各种编解码器。文档还会介绍如何进行连接管理、...
ChannelFuture f = b.bind(port).sync(); f.channel().closeFuture().sync(); } finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } ``` 这里的`NioServerSocketChannel`是Netty...
ChannelFuture和ChannelHandlerContext是两个关键概念,前者用于异步操作,后者提供了上下文信息,用于在处理器之间传递消息。 Netty的缓冲区(Buffer)机制是其性能优化的关键之一。它提供了一种高效的方式来读写...
Netty 的事件驱动模型通过 `EventLoopGroup` 和 `ChannelFuture` 实现了这一点,它们负责调度事件处理和异步操作。 标签中的 "chatdemo" 表明这是一个简单的聊天应用示例,适合初学者了解 Netty 的基本用法。而 ...
此外,Netty 提供的 ChannelFuture 和 Promise 模型使得异步编程更加简洁和易懂。通过理解并运用这些特性,可以编写出高效、灵活且易于扩展的网络程序。 总的来说,Netty 4.1 的中文文档和用户指南是学习和使用 ...
其ChannelFuture和Promise机制,使得异步操作的链式调用变得简单,同时提供了灵活的错误处理策略。 5. **零拷贝**:Netty实现了操作系统层面的零拷贝,通过直接缓冲区和FileChannel的transferTo方法,减少了数据在...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨“Netty 通过端口调用关闭”的主题,这通常涉及到网络服务器的生命周期管理和资源...
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio....
11. **ChannelFuture与Promise**:ChannelFuture表示异步操作的结果,Promise是其子类,用于处理回调。通过它们,开发者可以编写出非阻塞的代码。 12. **WebSocket支持**:Netty提供了WebSocket协议的完整实现,...
2. ChannelFuture:异步操作的结果,等待操作完成的监听器。 3. EventLoopGroup:事件循环组,处理I/O事件的核心组件。 4. ChannelInboundHandlerAdapter:自定义处理器适配器,用于处理入站事件,如连接建立、数据...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在深入探讨Netty之前,我们先要理解网络编程和Socket的基础概念。 网络编程是计算机通过网络进行通信的过程...
Netty 的 ChannelFuture 和 ChannelPromise 可以用来处理这些异常,实现错误重试和断点续传。 8. **流量控制** Netty 提供的 FlowControlStrategy 可以帮助控制数据的发送速率,防止因过快的发送速度导致接收方...
Netty的ClientBootstrap类提供了创建客户端连接的便利,配合ChannelFuture,客户端可以在连接建立后立即启动数据采集任务。此外,客户端可能使用了心跳机制来保持连接活跃,并检测网络异常。 "JSONObject"库,通常...
2. 连接处理:通过ChannelFuture监听客户端连接,处理连接建立和断开事件。 3. 数据收发:使用ByteBuf读写数据,通过Pipeline中的处理器进行解码和编码。 4. 错误处理:设置异常处理器,捕获并处理网络通信中的错误...
- **ChannelFuture**: 表示Channel上的异步操作,可以通过监听其完成或失败来处理结果。 - **Decoder和Encoder**: 用于将网络数据转换为应用程序可以理解的对象,以及将应用程序对象编码为网络数据。 - **...
然而,在Netty中,由于其非阻塞I/O模型,同步数据获取通常涉及ChannelFuture对象,它代表了一个异步操作的结果。我们可以注册监听器来处理操作完成后的回调,从而实现同步效果。 1. **NettySocket同步数据获取**: ...
10. **ChannelFuture**和**Promise**:这些概念提供了异步编程的支持,使得开发者能够编写非阻塞的代码,提高了程序的响应速度。 这个中文版的帮助文档会详细解释以上各个组件的使用方法,以及如何配置和优化Netty...
4. **Bootstrap** 和 **ChannelFuture**:Bootstrap是启动网络连接的配置类,ChannelFuture代表操作的未来结果,可用于异步操作。 5. **Pipeline**:网络事件的处理链,你可以将多个ChannelHandler添加到Pipeline中...