首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    「高并发通信框架Netty4 源码解读(七)」NIO通道之Selector选择器

    想象一下,一个有三个传送通道的银行。在传统的(非选择器)的场景里,想象一下每个银行的传送通道都有一个气动导管,传送到银行里它对应的出纳员的窗口,并且每一个窗口与其他窗口是用墙壁分隔开的。这意味着每个导管(通道)需要一个专门的出纳员(工作线程)。这种方式不易于扩展,而且也是十分浪费的。对于每个新增加的导管(通道),都需要一个新的出纳员,以及其他相关的经费,如表格、椅子、纸张的夹子(内存、 CPU 周期、上下文切换)等等。并且当事情变慢下来时,这些资源(以及相关的花费)大多数时候是闲置的。

    03

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。

    02
    领券