
Netty in action
文章平均质量分 92
愤怒的可乐
主要研究NLP、深度学习、大模型。
展开
-
Netty in action—Netty简介
引言这是《Netty实战》的读书笔记,可能会有跳跃性,推荐大家去看原作。java的网络编程int portNumber = 8000;try { serverSocket = new ServerSocket(portNumber); Socket clientSocket = serverSocket.accept();//block until a connnection is原创 2017-09-01 13:57:29 · 1056 阅读 · 0 评论 -
Netty in action—codec框架
什么是codec每个网络应用程序必须定义在机器之间传输的原始字节如何被解析然后转换为目标程序的数据格式。该转换逻辑由编解码器(codec,编码解码器,下文中我直接用codec表示)处理,codec由编码器和编码器组成,每个编码器或解码器负责将字节流从一种格式转换到另一种格式。那么该如何区分编码器和解码器呢?将消息视为具有特定含义的字节的结构化序列-数据。 编码器将该消息转换成适合于传输的格式(很可能原创 2017-09-19 14:11:14 · 825 阅读 · 0 评论 -
Netty in action—ChannelHandler和ChannelPipeline
ChannelHandler家族Channel的生命周期Channel接口定义了一个简单但强大的状态模型,它与ChannelInboundHandler API联系紧密。下表显示了Channel的四种状态: 状态 描述 ChannelUnregistered Channel被创建,但还没被注册到EventLoop上 ChannelRegistered Channel已经注册到E原创 2017-09-06 17:36:14 · 753 阅读 · 0 评论 -
Netty in action—单元测试
ChannelHandler是Netty中至关重要的元素,因此完全地测试它们应该是你开发过程中的重要部分。在这篇文章中我们会学习一个特殊的Channel实现-EmbeddedChannel,它是用来测试ChannelHandler的。因为正在测试的代码模块或单元将在正常运行时环境之外执行,您需要一个框架或工具来运行它。在我们的示例中,我们将使用JUnit 4作为测试框架。EmbeddedChanne原创 2017-09-14 22:38:45 · 506 阅读 · 0 评论 -
Netty in action—Bootstraping
启动(bootstrapping)一个应用是配置并运行它的过程。 与其应用架构的方法一致,Netty将通过你的应用与网络层分离的方式(不需要关心网络层的实现细节)来处理启动。 启动类启动类的结构如上图。包含一个抽象父类和两个具体启动子类。与其将这两个具体子类看成server和client的启动类,不如将它们看成是支持的不同应用程序功能。也就是,一个server提供一个父channel来接收客户端原创 2017-09-13 22:18:46 · 928 阅读 · 0 评论 -
Netty in action—Netty中的ByteBuf
正如之前所说,网络传输的基本单位是字节。Java NIO 提供了ByteBuffer作为它的容器,但是这个类使用起来比较复杂和麻烦。Netty提供了一个更好的实现:ByteBuf。ByteBuf的APINetty为数据处理提供的API通过抽象类ByteBuf和接口ByteBufHolder暴露出来。 下面列出ByteBuf API的优点:可扩展到用户定义的buffer类型中通过内置的复合buf原创 2017-09-04 22:27:50 · 11355 阅读 · 0 评论 -
Netty in action—Netty传输服务
前言网络传输中数据通常以一种格式:字节。这些字节要怎样传播主要取决于我们指定的网络传输服务,帮助我们抽象底层的数据传输机制。用户不需要关心实现细节,他们只需要确信他们的字节能被可靠地发送和接收。Netty为它所有的传输服务实现提供了通用的API,使你能很容易的从阻塞传输服务转换到非阻塞传输服务。案例学习:传输服务迁移我们以一个简单的应用案例开始我们的传输服务学习。这个应用接收一个连接,然后写入”Hi原创 2017-09-03 14:52:50 · 1081 阅读 · 0 评论 -
Netty in action—Netty组件和设计
Channel,EventLoop和ChannelFuture这三者可以看作是Netty网络架构的抽象Chennel-SocketsEvnetLoop-流控(Control flow),多线程,并发ChannelFuture - 异步通知Channel接口基本的IO操作(bind(),connect(),read(),write())都是基于底层的网络传输。在Java网络编程中,基础构建是S原创 2017-09-01 17:59:33 · 596 阅读 · 0 评论 -
Netty in action—第一个Netty应用
我们会通过Netty实现一个Echo服务器和客户端,客户端向服务器发送数据,服务器原样返回。 下图展示了这个Echo服务器的样子。 开始编写Echo Server: 所有的Netty 服务器都需要以下2个部分:至少一个ChannelHandler - 实现了服务器处理接收到的数据Bootstrap - 这是能配置服务器的启动代码ChannelHandler和业务逻辑 因为Echo服务器原创 2017-09-01 14:00:40 · 384 阅读 · 0 评论 -
Netty in action—EventLoop和线程模型
线程模型概述在本节中,我们将介绍线程模型,然后讨论Netty过去和现在的线程模型,审查每个模型的优点和局限性。 线程模型指定了代码被执行的方式。因为我们一定要防范并发执行可能的副作用,所以了解使用的模型会产生的影响很重要(也有单线程模型)。因为具有多核或CPU的计算机是常见的,有很多应用程序采用复杂的多线程技术来有效利用 系统资源。相比之下,我们在Java早期的应用多线程方法仅仅是创建和启动新的原创 2017-09-11 18:29:19 · 533 阅读 · 0 评论