携手共进——《Netty IN ACTION》中文版《Netty实战》答疑解惑

引子

所谓一千个人的眼中,就会有一千个哈姆雷特,每位读者对于一本书中的意境的理解都是不一样的,当然这也包括技术类书籍。可是对于技术书籍来说,最重要的就是准确性,这种准确性是要求100%的,不能说“千人千面”。作为书籍的作者和译者,自然在表达的时候可能有所纰漏,不能做到面面俱到,所以也就有了这篇小文,用来收集以及解答译者收到的读者的一些反馈和疑问,希望能够帮助到大家。

共进

  • 书中说的每一个Channel都具有唯一的id是什么意思呢,如果返回相同的hashCode就会报错?

解惑:书中对于这一块儿的描述其实不是特别的详细,只是给出了结论,但是并没有给出为何。首先id的意思是identity,即唯一标识,类似于我们的身份证。那么为何Channel的唯一标识必须是唯一的呢?这是因为一个网络连接(这里不指面向连接、或者无连接的协议)总是由一个(SourceIP,SourcePORT,TargetIP,targetPORT )唯一确定的,这个四元组是不会重复的吧,这里排除(IP和端口)复用的情况。所以这就是为何设计成每个Channel的id都是唯一确定的。具体的可以查看io.netty.channel.AbstractChannel#compareTo的代码。那么有什么时候报错呢,如上面的代码,即调用compareTo的时候。一个很常见的场景便是通过调用ChannelGroupadd(Channel)方法,将一个Channel添加到ChannelGroup时,其中ChannelGroup的内部使用了由ConcurrentHasmMap实现的ConcurrentHashSet,说到这里,读者应该明白了吧,因为后面的逻辑,compareTo的调用已经是HashMap的逻辑了。

  • 书中说的当一个Channel被标记为@Shareable的时候才可以被同时添加到多个ChannelPipeline中,否则的话就会报错,这是为何呢?

解惑:书中并没有提到源码层面是如何实现的,实际上,在 Netty 目前基于 EventLoop 的线程模型中,Netty 是要求用户的ChannelHandler的实现必须要是线程安全的。这样,其便可以在不同的ChannelChannelPipeline中安全的共享。所以,设计上为了避免非线程安全的ChannelHandler被错误地共享,所以 Netty 要求你标注一个ChannelHandler@Shareable来指示它的线程安全性。在内部,每一个ChannelHandler都有一个isAdded字段,这个字段在ChannelPipelineadd/set*(ChannelHandler)被调用的时候将会读取。源码见:io.netty.channel.ChannelHandlerAdapter#addedio.netty.channel.DefaultChannelPipeline#checkMultiplicity

如果大家还有什么不明白,可以在下面留言、

时间: 2024-11-02 23:09:18

携手共进——《Netty IN ACTION》中文版《Netty实战》答疑解惑的相关文章

《Netty实战》Netty In Action中文版——文前内容

<Netty实战>样章由人民邮电出版社授权并发编程网发布,本书的中文版已经由人民邮电出版社引进并出版. 京东预售链接(优先发货):<Netty实战>([美]诺曼·毛瑞尔(Norman Maurer),马文·艾伦·沃尔夫泰尔(Marvin Allen Wolfthal))   内容提要 本书是为想要或者正在使用Java从事高性能网络编程的人而写的,循序渐进地介绍了Netty各个方面的内容. 本书共分为4个部分:第一部分详细地介绍Netty的相关概念以及核心组件,第二部分介绍自定义协议

《Netty 实战》Netty In Action中文版 第2章——你的第一款Netty应用程序(一)

第2章 你的第一款Netty应用程序 本章主要内容 设置开发环境 编写Echo服务器和客户端 构建并测试应用程序 在本章中,我们将展示如何构建一个基于Netty的客户端和服务器.应用程序很简单:客户端将消息发送给服务器,而服务器再将消息回送给客户端.但是这个练习很重要,原因有两个. 首先,它会提供一个测试台,用于设置和验证你的开发工具和环境,如果你打算通过对本书的示例代码的练习来为自己将来的开发工作做准备,那么它将是必不可少的. 其次,你将获得关于Netty的一个关键方面的实践经验,即在前一章中

《Netty实战》Netty In Action中文版 第1章——Netty——异步和事件驱动(一)

<Netty实战>样章由人民邮电出版社授权并发编程网发布,本书的中文版已经由人民邮电出版社引进并出版. 京东预售链接(优先发货):<Netty实战>([美]诺曼·毛瑞尔(Norman Maurer),马文·艾伦·沃尔夫泰尔(Marvin Allen Wolfthal)) 第一部分 Netty的概念及体系结构 Netty是一款用于创建高性能网络应用程序的高级框架.在第一部分,我们将深入地探究它的能力,并且在3个主要的方面进行示例: 使用Netty构建应用程序,你不必是一名网络编程专家

携手共进——再答丁又专老师

丁又专老师是我通过网络结交的又一位在教育中倾力投入的老师.能够认识有共同话语的同行,很舒服的一件事.他要也开始在博客中交作业的尝试,我将新近录用的一篇相关论文提供给他,而他给我发来了交流信件.按迂者规矩,也部分公开信件吧.在昨天,又发现了另外一名自称"明哥"的老师,他也在带着学生在CSDN安营扎寨了,前行路上,可以不孤单. [来信] 贺老师: 您好!一口气看完您的文章,感觉非常舒服与实在. 在家庭.学习.创业.教学.科研经历中,自己有很多的体会,以及一些深刻的教训,走过了很多的弯路.虽

WebLoad与哲想软件携手共进

  我们提供有效率的性能测试解决方案,适用于各种技术.打包应用程序和行业,每项新技术和平台都有自己的优势,同时也有自己的测试困难. WebLOAD的设计理念就是从最基本的层面开始测试网站,精确的找到瓶颈处并解决问题,有着很高的灵活性和扩展性,结合HTTP/S记录和脚本迅速建立测试,从预设置的机器和云端生成负载测试. 性能简介: 测试创建: WebLOAD的测试开发环境将便捷记录和JavaScript的强大力量结合起来,这样你就可以处理最复杂的测试难题.开始只需要简单的用网络浏览器或者移动设备导航

SDN、NFV和SD-WAN携手共进

网络是一种由大量的协同行为聚集的集合,因此我们所面对的关键网络技术"革命"间存在关联关系也就不足为奇了.然而这些关键网络技术之间的关系却不怎么明朗.软件定义网络(SDN).网络功能虚拟化(NFV)以及软件定义广域网(SD-WAN),它们共享着一些技术元素,并且它们也可能存在相关联的商机.实际上这些关联关系可能很关键,因此我们需要进一步对其进行深入考虑. SDN,如果我们采纳纯概念的受OpenFlow协议控制的白盒交换机或虚拟交换机,则是真正意义上的使用集中控制器定义网络中的路由.每个设

阿里聚安全正式开启渠道销售战略!期待与您携手共进!

 2016年08月02日 16:25  2754 阿里聚安全是阿里巴巴集团整合自身安全能力对外输出的安全开放平台,依托国际领先的风险扫描引擎.立体式安全防护技术.庞大的数据库体系和计算能力,为企业级应用和移动应用开发者提供多维度的全周期安全解决方案,集成方式简单快捷,帮助企业与开发者快速定位并解决互联网应用中存在的风险,与行业共享阿里巴巴集团十几年来在互联网安全领域实战的积累. 自上线半年时间已服务超过1000个移动应用和10000个互联网站点,总体覆盖超过5亿个终端.面对庞大的移动安全市场需求

《Netty IN ACTION》中文版《Netty实战》翻译手记——不负好时光

不负好时光--<Netty in Action>中文版<Netty实战>翻译手记 引子 "书中自有黄金屋,书中自有颜如玉",这句话从小我老爸就给我讲,当然那个时候真的以为书中真的会有黄金做的屋子和很多玉件.后来慢慢长大了,也渐渐懂得了这句话背后的真正含义.当然,他还给我说过"书山有路勤为径,学海无涯苦作舟"和"少壮不努力,老大徒伤悲".怎么说呢,虽然我父亲的文化程度并不是特别高,但是他教会了我踏实和努力,并教会我"

Netty In Action

fxjwind Netty In Action 1 introduction 1.2 Asynchronous by design two most common ways to work with or implement an asynchronous API, 1.2.1 Callbacks 回调函数,本质, move the execution of these methods from the "caller" thread to some other thread.  Th