为什么需要ReplayingDecoder,它和FrameDecoder有什么不同呢?ReplayingDecoder是一种特殊 FrameDecoder,它能实现在IO阻塞的情况下实现无阻塞的解码。听起来比较拗口而且不好理解,举个例子来说,假设你在用netty设计一个文件 传输的模块,采用的Header-Content的协议,在Header中说明文件的长度,我们用一个int来容纳长度,Content则是该int长度 的字节数组。该如何设计这个Decoder呢?代码有可能是下面这样的。可能你会觉得比你想象的要复杂,多了markReadIndex(),多了是否可 读的判断,假如读一个int,我们得首先判断可读的字节数是否大于等于4个。为什么需要这样呢?这就回到了开头的问题,一种原因是和 FrameDecoder有关,假设每一帧都是100bytes,其中4bytes用来标示Header中的int,其余96字节为content。假设 NioWorker读取了1003bytes交给FrameDecoder去处理,那么前10帧都能完美地处理,当处理第11帧的时候,要读取int的时 候,但是只有3bytes了。为了防范这类问题我们需要在每次解码之前mark一下当前的index,发现没有足够的bytes时resetindex为 之前mark的值。并且返回null在下一个loop中处理。
- 浏览: 2662255 次
- 来自: 杭州
文章分类
- 全部博客 (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 StringDecoderTester
2013-02-21 16:55 1034netty package com.duita ... -
netty文档集合
2013-02-10 13:17 1116Netty 3.1 中文用户手册(一)-序言 Netty ... -
TransferQueue
2013-02-08 14:55 1598在看netty的代码实现发 ... -
ChannelBuffer介绍介绍
2012-11-07 11:28 848A random and sequential ... -
FrameDecoder介绍
2012-11-05 18:26 1217FrameDecoder 负责 decodes ... -
netty简单介绍
2012-11-03 20:05 1171ServerBootstrap 启动nett ... -
Netty服务器线程模型概览
2012-10-08 16:57 10888一切从ServerBootstrap开始 ServerB ... -
netty源代码分析
2012-10-08 16:35 967这篇文章(http://san-yun.iteye.com/b ... -
netty ExecutionHandler
2012-10-08 16:34 1533前面(http://san-yun.iteye.com/blo ... -
netty ChannelFuture
2012-10-08 14:12 1343在Netty中所有的io操作都是异步的,这也就是意味任何io访 ... -
netty的一点学习笔记
2012-10-02 22:57 1078原文:http://macrochen.iteye.com/b ... -
Netty实现原理浅析
2012-09-29 15:47 1365Netty是JBoss出品的高效的Java NIO开发框架, ... -
Netty代码分析
2012-09-29 13:22 773参考:http://rdc.taobao.co ... -
netty初探
2011-05-24 15:56 1620netty API //启动类 Server ...
相关推荐
1.Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。 2.Netty 是一个 异步的、 基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。
Netty基础,用于学习Netty,参考黑马程序员的netty教程
这个“自动Netty笔记111”可能是某个开发者或学习者记录的一系列关于Netty学习过程中的关键点和理解。下面将详细阐述Netty的相关知识点。 1. **异步事件驱动模型**: Netty采用了非阻塞I/O模型,基于Java NIO(Non...
### Netty开发代理服务的关键知识点 #### 一、Netty框架概述 Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器与客户端。Netty提供了一种灵活的方式来处理各种网络操作...
Netty笔记二主要聚焦在如何使用Netty框架在服务端和客户端之间发送对象。Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。这篇博客提供了可运行的源码,方便读者...
这个“Netty学习资料.zip”压缩包包含了韩顺平老师关于 Netty 的一系列教学资源,包括资料、笔记、课件、代码和软件,这些都是深入理解和实践 Netty 技术的重要参考资料。 首先,资料部分可能包含了一些关于 Netty ...
本资源包包含 Netty 的全方位学习材料,包括源码、笔记和学习文档,旨在帮助开发者深入理解和掌握 Netty。 一、Netty 源码解析 Netty 的源码是理解其工作原理的关键。通过阅读源码,我们可以了解到 Netty 如何实现...
本笔记和Demo集合旨在帮助读者从入门到精通地理解并掌握Netty。 首先,从标题和描述我们可以看出,笔记内容涵盖了Netty的基础知识到进阶应用,包括NIO(非阻塞I/O)的理解、Netty的启动过程、TCP粘包和拆包问题、...
对于学习netty做的个人笔记,基本上涵盖了netty的基本结构,原理,以及重要的组件知识。
### Netty学习笔记知识点概述 #### 一、Netty简介 Netty是一个广泛使用的高性能、异步事件驱动的网络应用程序框架,它简化了网络编程的复杂性,使得开发者能够更轻松地开发高性能、高可靠性的网络服务器和客户端。...
Netty学习笔记_Springboot实现自定义协议 本文主要介绍了使用Netty框架在Springboot项目中实现自定义协议的方法。自定义协议是指在网络通信中,使用特定的数据格式来传输数据,以满足特定的业务需求。在本文中,...
《基于Netty网络编程项目实战笔记》是一份深入探讨Netty框架在实际网络编程中的应用文档。Netty,作为一款高性能、异步事件驱动的网络应用程序框架,广泛应用于各种网络应用开发,包括服务器和客户端的实现。这份...
NETTY教程笔记啊啊
本篇阅读笔记主要围绕Netty的核心组件和原理进行详细分析。 首先,ChannelBuffer是Netty中用于网络数据交换的字节容器。在Netty中,所有的网络数据都是通过ChannelBuffer进行读写的。它的作用类似于Java NIO中的...
在本篇Netty4.0学习笔记中,我们将聚焦于如何在实际应用中混合使用`coder`和`handler`,这是Netty框架中非常关键的一部分,对于构建高性能、低延迟的网络应用程序至关重要。Netty是一个用Java编写的异步事件驱动的...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写,用于简化高效网络服务的构建。Netty 提供了丰富的组件和设计模式,如责任链模式的编码和解码功能,用于处理各种信息格式,如Protocol ...
在本篇Netty4.0学习笔记系列之六中,我们将深入探讨Netty框架如何支持多种通讯协议,以及它在实现高效、灵活的网络通信中的关键特性。Netty是一个高性能、异步事件驱动的网络应用框架,适用于开发服务器和客户端的...
这本书《Netty源码阅读笔记》作者AsiaLee通过一系列的文章深入剖析了Netty的内部机制,旨在帮助读者理解并掌握Netty的核心功能和设计思想。 1. **Netty源码分析系列文章**:这部分内容可能涵盖了Netty的整体架构、...
读书笔记:Netty 权威指南读书笔记