摘要: java里的动态代理一般有jdk的动态代理和cglib实现的动态代理两种,用起来也蛮好用的,也一直没有深究实现原理,今天心血来潮就看看他们的实现。 jdk的动态代理类需要实现InvocationHandler这个接口,然后在invoke方法里调用被代理类的方法,方法前后可以做任何你想做的操作。调用时 阅读全文
posted @ 2019-05-14 22:14 fengshenjingjun 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 现在缓存系统应用广泛,设计一个缓存系统,需要考虑以下问题:缓存穿透,缓存击穿和雪崩效应。 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB 阅读全文
posted @ 2019-05-11 10:48 fengshenjingjun 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 装饰器模式,顾名思义起的是装饰的作用,就是在一个类上增加功能。如果通过继承来增加功能,在不修改代码的情况下,如果增加功能多的话,会使类的数量爆炸式增长,为管理带来巨大的麻烦。装饰器模式就比较好地解决了这一点。 以上为装饰器模式的通用类图: Component,一般是接口或者抽象类,定义了最简单的方法 阅读全文
posted @ 2018-01-24 21:33 fengshenjingjun 阅读(1946) 评论(0) 推荐(0) 编辑
摘要: ArrayList无疑是java集合类中的一个巨头,而且或许是使用最多的集合类。ArrayList继承自AbstractList抽象类,实现了List<E>, RandomAccess, Cloneable, java.io.Serializable这些接口,这意味着ArrayList可以随机取数据 阅读全文
posted @ 2018-01-08 14:43 fengshenjingjun 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 我们查看Collection接口的hierarchy时候,可以看到AbstractCollection<E>这样一个抽象类,它实现了Collection接口的部分方法,Collection集合系列的各个集合类都继承于该抽象类。我们来看看这个类: 从它的代码里我们可以看到,它有一个最大长度,是Inte 阅读全文
posted @ 2018-01-05 15:12 fengshenjingjun 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 现在有三个商店,一个商店只卖可乐,一个商店只卖雪碧,一个商店只卖果汁,而且三个商店相隔的路还不近,这样你如果想喝雪碧兑果汁或者就是想喝不同口味的饮料,就需要跑去买完一个再跑到另一个店去买另一种饮料。这个时候你肯定觉得自动贩卖机是个很棒的东西,你只要到贩卖机前对应按下按钮就可以买到想要的饮料了。命令模 阅读全文
posted @ 2018-01-04 17:08 fengshenjingjun 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 对于java的集合类,首先看张图 这张图大致描绘出了java集合类的总览,两个体系,一个Collection集合体系一个Map集合体系。在说集合类之前,先说说Iterable这个接口,这个接口在jdk1.8之前,里面只有一个方法Iterator<T> iterator(),即返回一个T类型的迭代器, 阅读全文
posted @ 2018-01-03 22:23 fengshenjingjun 阅读(1322) 评论(0) 推荐(0) 编辑
摘要: 在设计代码结构的时候,我们经常会遇到这样的情况,按照需求我们有多个类要实现,而这多个类之间互相存在着业务关系。如果我们不假思索地直接把这些类实现的话,那么不但代码逻辑显得很混乱,而且耦合性很高,牵一发而动全身,很可能一处的代码需要修改就导致各个类中的代码都需要修改,这种“连坐”是我们需要尽力避免,中 阅读全文
posted @ 2018-01-03 14:30 fengshenjingjun 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 原型模式与构造器模式、单例模式、工厂方法模式、抽象工厂模式一样,都属于创建型模式。它用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。当需要创建多个实例,而new一个对象需要非常繁琐的数据准备和访问权限时,用原型模式就再合适不过了。原型模式主要用于对象的复制,它的核心是就是类图中的原型类 阅读全文
posted @ 2017-12-28 14:22 fengshenjingjun 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 代理模式也叫做委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在特殊场合使用了代理模式。代理这个词的意思,就是让别人干自己原本需要做的事情,代理模式也是这么回事。一说到代理,我马上就想到两个东西,代理服务器和游戏代理,那么以游戏代理来写这个模式吧。先例行盗图一 阅读全文
posted @ 2017-12-26 17:41 fengshenjingjun 阅读(184) 评论(0) 推荐(0) 编辑