个人简介

Echo Blog


江湖无名 安心练剑
  • Netty-13-单元测试
    单元测试的必要性 ChannelHandler 是 Netty 应用程序的关键元素,所以彻底地测试它们应该是你的开发过程的一个标准部分。 最佳实践要求你的测试不仅要能够证明你的实现是正确的,而且还要能够很容易地隔离那些因修改代码而突然出现的问题。这种类型的测试叫作单元测试。 虽然单元测试没有统一的定义,但是大多数的从业者都有基本的共识。其基本思想是,以尽可能小的区块测试你的代码,并且尽...
    2017-11-16 11:23:06 | Netty
  • Netty-12-关闭
    关闭 引导使你的应用程序启动并且运行起来,但是迟早你都需要优雅地将它关闭。 当然,你也可以让JVM 在退出时处理好一切,但是这不符合优雅的定义,优雅是指干净地释放资源。 关闭Netty应用程序并没有太多的魔法,但是还是有些事情需要记在心上。 最重要的是,你需要关闭EventLoopGroup,它将处理任何挂起的事件和任务,并且随后释放所有活动的线程。 这就是调用 EventLoop...
    2017-11-16 11:23:06 | Netty
  • Netty-12-ServerBoostrap 服务端
    引导服务器 我们将从ServerBootstrap API 的概要视图开始我们对服务器引导过程的概述。 然后,我们将会探讨引导服务器过程中所涉及的几个步骤,以及几个相关的主题,包含从一个ServerChannel 的子Channel 中引导一个客户端这样的特殊情况。 ServerBoostrap 类 名 称 描 述 group 设置ServerBootstrap 要用...
    2017-11-16 11:23:06 | Netty
  • Netty-12-DatagramChannel UDP 无连接协议
    引导 DatagramChannel 前面的引导代码示例使用的都是基于TCP 协议的SocketChannel,但是Bootstrap 类也可以被用于无连接的协议。 为此,Netty 提供了各种 DatagramChannel 的实现。 唯一区别就是,不再调用 connect() 方法,而是只调用 bind() 方法, 代码示例 如代码清单8-8 所示。 import io.ne...
    2017-11-16 11:23:06 | Netty
  • Netty-12-ChannelOption
    使用 Netty 的 ChannelOption 和属性 在每个 Channel 创建时都手动配置它可能会变得相当乏味。 幸运的是,你不必这样做。相反,你可以使用 option() 方法来将 ChannelOption 应用到引导。 你所提供的值将会被自动应用到引导所创建的所有 Channel。 可用的 ChannelOption 包括了底层连接的详细信息,如 keep-alive ...
    2017-11-16 11:23:06 | Netty
  • Netty-12-ChannelInitializer 引导添加多个 handler
    场景 在所有我们展示过的代码示例中,我们都在引导的过程中调用了handler()或者childHandler()方法来添加单个的ChannelHandler。 这对于简单的应用程序来说可能已经足够了,但是它不能满足更加复杂的需求。 例如,一个必须要支持多种协议的应用程序将会有很多的ChannelHandler,而不会是一个庞大而又笨重的类。 正如你经常所看到的一样,你可以根据需要,通...
    2017-11-16 11:23:06 | Netty
  • Netty-12-Boostrap 客户端
    引导客户端和无连接协议 Bootstrap 类被用于客户端或者使用了无连接协议的应用程序中。 表8-1 提供了该类的一个概览,其中许多方法都继承自AbstractBootstrap 类。 方法概览 Bootstrap group(EventLoopGroup) 设置用于处理Channel 所有事件的EventLoopGroup Bootstrap channel(Class&...
    2017-11-16 11:23:06 | Netty
  • Netty-12-Boostrap 引导类 api
    前言 算法=控制+逻辑 如果将控制可逻辑分开,那么代码的可维护性就会大幅度提升。 同理如果可以将配置与组件之间分开,就像汽车在生产的时候各个组件分开,最后统一组装,那么灵活性也会大幅度提升。 结构化 在深入地学习了ChannelPipeline、ChannelHandler 和EventLoop 之后,你接下来的问题可能是: “如何将这些部分组织起来,成为一个可实际运行的应用程...
    2017-11-16 11:23:06 | Netty