netty in action
文章平均质量分 89
北堂飘霜
如果不去争取,你想要的东西永远都不是你的!
展开
-
Read book Netty in action(Chapter XI)--Encoder and decoder
每个网络应用程序都必须定义如何解析在两个节点之间来回传输的原始字节,以及如何将其和目标应用程序的数据格式做相互转换。这种转换逻辑由编解码器处理,编解码器由编码器和解码器组成,它们每种都可以将字节流从一种格式转换为另一种格式。那么它们的区别是什么呢?如果将消息看作是对于特定的应用程序具有具体含义的结构化的字节序列—它的数据。那么编码器是将消息转换为适合于传输的格式(最有可能的就是字节流);而对应的解码器则是将网络字节流转换回应用程序的消息格式。因此,编码器操作出站数据,而解码器处理入站数据。原创 2023-03-10 14:48:07 · 328 阅读 · 0 评论 -
Read book Netty in action(Chapter X)--Unit Testing
Netty 提供了它所谓的Embedded 传输,用于测试ChannelHandler。这个传输是一种特殊的Channel 实现—EmbeddedChannel—的功能,这个实现提供了通过ChannelPipeline传播事件的简便方法。这个想法是直截了当的:将入站数据或者出站数据写入到EmbeddedChannel 中,然后检查是否有任何东西到达了ChannelPipeline 的尾端。以这种方式,你便可以确定消息是否已经被编码或者被解码过了,以及是否触发了任何的ChannelHandler 动作。原创 2023-03-07 13:50:10 · 361 阅读 · 0 评论 -
Read book Netty in action(Chapter IX)--Bootstrapping
幸运的是,你不必这样做。引导类的层次结构包括一个抽象的父类和两个具体的引导子类,这个层次在任何一款高性能高可用高稳定框架都是常见的,一个Abstractxxx,加上几个实现类,非常常见的。handler()方法和childHandler()方法之间的区别是:前者所添加的ChannelHandler 由接受子Channel 的ServerChannel 处理,而childHandler()方法所添加的ChannelHandler 将由已被接受的子Channel处理,其代表一个绑定到远程节点的套接字。原创 2023-03-06 17:13:17 · 339 阅读 · 0 评论 -
Read book Netty in action(Chapter VIII)--EventLoop and thread model
简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。显而易见地,如何以及何时创建线程将对应用程序代码的执行产生显著的影响,因此开发人员需要理解与不同模型相关的权衡。无论是他们自己选择模型,还是通过采用某种编程语言或者框架隐式地获得它,这都是真实的。在这次,我们将会学习线程模型的概念。它强大但又易用,并且和Netty 的一贯宗旨一样,旨在简化你的应用程序代码,同时最大限度地提高性能和可维护性。我们还将讨论致使选择当前线程模型的经验。原创 2023-03-01 13:33:43 · 337 阅读 · 0 评论 -
Read book Netty in action(Chapter VII)--ChannelHandler和ChannelPipeline
这项关联是永久性的;另一种高级的用法是缓存到ChannelHandlerContext 的引用以供稍后使用,这可能会发生在任何的ChannelHandler 方法之外,甚至来自于不同的线程。在ChannelInboundHandlerAdapter 和ChannelOutboundHandlerAdapter 中所提供的方法体调用了其相关联的ChannelHandlerContext 上的等效方法,从而将事件转发到了ChannelPipeline 中的下一个ChannelHandler 中。原创 2023-02-28 18:10:06 · 482 阅读 · 0 评论 -
Read book Netty in action(Chapter VI)--ByteBuf
这段代码的意思是:如果真实计数是1,回到tryFinalRelease0,返回true,如果真实计数大于1,那么减1,就不能释放,如果小于1,就报错。有时候,你无法获得一个ByteBufAllocator的引用,那么,Netty给我们提供了一个小工具类叫做:Unpooled,它提供了静态的辅助方法,来获取没有池化的ByteByf实例。新分配的,包装的或者复制的缓冲区的默认readerIndex值为0.任何名称以read或者skip开头的操作都将检索或者跳过当前可读索引,并且增加已读索引。原创 2023-02-23 17:15:29 · 316 阅读 · 0 评论 -
Read book Netty in action(Chapter V)--Transmission
在完全不熟悉的领域,先掌握高层用法,在去看源码,是非常好的学习方式,相反,如果在了解的领域(如juc),如果你掌握了源码,再去看高级,例如什么读写锁,什么未来任务,你几乎都能融会贯通。如果是程序使用阻塞代码库,OIO,非阻塞代码库或者常规程序,用NIO,或者在linux上使用epoll,在同一个JVM上,使用Local(客户端,服务端都在一个JVM),如果测试ChannelHandler实现,不妨使用Embedded。这是oio的,很显然,已经被弃用了,已经不推荐使用了,那么我们用NIO试一下。原创 2023-02-21 17:47:50 · 264 阅读 · 0 评论 -
Read book Netty in action(Chapter Chapter IV)--Netty‘s components and design
因为它的方法是由网络事件触发的。之前曾经写过一个demo for netty,但是很显然,并没有将netty融汇贯通,所以需要学习其设计和组件来更进一步,最后再去阅读其源码以至完全吸收netty并化为自己实力的一部分。Netty的引导类为应用程序的网络层配置提供了容器,这将涉及将一个进程绑定到某个指定的端口,或者将一个进程连接到另一个正在运行的主机端口进行绑定。这次主要看的是Netty的一些组件和设计,我们到现在应该可以简单的运用netty并且知道如何去用了,后面将会更加深入的了解Netty。原创 2023-02-20 15:23:41 · 330 阅读 · 0 评论 -
Read book Netty in action(Chapter III)--My first Netty application
因为Echo服务器会响应传入的消息,所以他至少需要实现ChannelInboundHandler接口,用于定义响应入站的事件的方法。很简单,我们第一个先是服务器开启的时候,调用了exceptionCaught方法,每当接受数据的时候,调用了channelRead0方法,当发生异常的时候,调用了exceptionCaught方法,此时,channel被关闭,连接断掉了。一个如此简单的例子,让我对netty有了基本的认识,但是我还是不能很好的运用它,接下来的日子,我会学习更多的关于netty的知识。原创 2023-02-16 11:41:49 · 299 阅读 · 0 评论 -
Read book Netty in action (Chapter II) (Netty Introduction)
支持15W的并发客户端,我们应该视为理所当然的事情,很多公司甚至能够支撑更多,例如我们熟知的 BAT,当几年前双十一的夜晚,并发量是不可估计的。还有春节的时候购票的时候的并发。作为一个优秀的开发人员,我们要把自己的期望提高,例如:老板说要支持15W,你最少要做到20W甚至30W。因为总会有更高的吞吐量和可扩展性的要求,在漫长的历史长河中,直接使用底层的API是很复杂的,所以有了Spring,Mybatis等史诗级框架。对于我们技术人员而言,他们已经不可或缺了。原创 2023-02-10 16:25:36 · 416 阅读 · 0 评论 -
Read book Netty in action (Chapter I)
我是一名有着三年以上经验的java工程师,一开始的学习新技术的方式是 watch videos,like bilibili .但是后面发现视频虽好,但是会很快遗忘,并且很难有收获,后面尝试去读书,读了我的第一本书(郝老师的spring源码解读),这次体验让我突飞猛进,且spring的魅力刻入了我的dna中,我极力效仿大神们,去做一些有美感的东西。让这样的程序去支持150000请求,首先你得斥巨资去购买一台合格的服务器,然后再去买一台,我相信如果在这种场景下,你离被解雇也不远了。向netty 开炮!原创 2023-02-10 15:10:02 · 63 阅读 · 0 评论