摘要: 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。 何时使用 阅读全文
posted @ 2019-10-06 01:31 DGUT_FLY 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 策略模式通常与使用标准模式的Java数据流(stream,Java 8之后有)或者Spark的RDD数据流配合使用,用于改变数据的处理策略,一般用在map和reduce操作。 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if... 阅读全文
posted @ 2019-10-05 11:55 DGUT_FLY 阅读(985) 评论(0) 推荐(0) 编辑
摘要: 建造者模式在程序设计中经常被运用,下面是建造者模式的概述。 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着 阅读全文
posted @ 2019-10-03 11:54 DGUT_FLY 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 标准模式,又叫过滤器模式(Filter Pattern),这个设计模式在我们常用的工具里面会大量体现,尤其是在数据处理方面,但我们却很难发现。 意图:允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。 主要解决:对象运算过程的直觉化。 何时使用:当您想让对象本身进行运 阅读全文
posted @ 2019-10-02 11:42 DGUT_FLY 阅读(955) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章Fun论设计模式之2:代理模式(Proxy Pattern)中,我们知道了代理模式本质上就是对类的访问过程做同样类型的控制。 那里有提到,把不同模块的API也放到代理类中,并给这些API做相同的前置处理,就可以减少日后的工作量。这个处理,也涉及到一个设计模式——外观模式。 搬运runoo 阅读全文
posted @ 2019-10-01 11:56 DGUT_FLY 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 今天学习到了一个新的设计模式:代理模式。介绍借鉴了runoob的: 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的 阅读全文
posted @ 2019-09-28 13:35 DGUT_FLY 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 之前学习了netty和http异步连接池,跟仓颉大神问的结果是netty的http客户端性能比apache的好。 咱今儿就用三种http连接池进行测试。 首先是pom.xml: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs 阅读全文
posted @ 2019-09-20 18:57 DGUT_FLY 阅读(3237) 评论(1) 推荐(1) 编辑
摘要: 进行这项实验之前,先读了xbmchina的简书文章,感谢这位大神提供的关于channelPipeline和channelHandler文章: 【Netty】ChannelPipeline和ChannelHandler(一) 【Netty】ChannelHandler的添加和删除(二) 【Netty】 阅读全文
posted @ 2019-09-17 18:42 DGUT_FLY 阅读(1443) 评论(0) 推荐(0) 编辑
摘要: 在说双亲委派模型之前首先得先了解一下类加载阶段。 类的加载阶段 类加载阶段分为加载、连接、初始化三个阶段,而加载阶段需要通过类的全限定名来获取定义了此类的二进制字节流。 Java特意把这一步抽出来用类加载器来实现。把这一步骤抽离出来使得应用程序可以按需自定义类加载器。并且得益于类加载器,OSGI、热 阅读全文
posted @ 2019-09-12 18:19 DGUT_FLY 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 导致扩容的情况 在了解JDK1.8的ConcurrentHashMap扩容机制之前,要先知道ConcurrentHashMap什么情况会导致扩容。 1.put操作(插入键值对) put函数的操作要通过putVal操作,如果有特殊情况要扩容。 put操作代码: 1 public V put(K key 阅读全文
posted @ 2019-09-10 18:23 DGUT_FLY 阅读(3520) 评论(0) 推荐(0) 编辑