- 博客(10)
- 资源 (21)
- 收藏
- 关注
原创 Redis高性能IO和多线程
1.Redis是单线程还是多线程?我们在学习 Redis 时听得最多的就是 Redis 是单线程的,其实这种说法并不严谨。严格来说 Redis 单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程,包括Socket读,解析,执行,Socket写等。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。2.Redis为什么用单线程?首先,我们Redi...
2022-04-21 20:14:50 941
原创 桥接模式
桥接模式是一种结构型设计模式,英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中,桥接模式是这么定义的:Decouple an abstraction from its implementation so that the two can vary independently。翻译成中文就是:将抽象和实现解耦,让它们可以独立变化。单从官方概念来理解,相当晦涩,通常对抽象与实现的第一反应就是接口(或抽象类)与实现类的继承关系,接口和实现独立变化就更加让人难以理解。关于桥接
2020-12-17 14:20:33 236
原创 模板方法模式
模板方法模式是一种行为型设计模式,模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。定义中的算法是指业务逻辑,并不特指数据结构和算法中的算法。原理很简单,代码实现就更加简单,接下来我们通过电商业务中创建促销活动的例子来介绍模板方式模式,促销活动包括满减,折扣,优惠券等。// 创建活动接口interface ActCreateService { // 创建活动 void create
2020-10-18 17:51:38 273 2
原创 策略模式
策略模式是一种结构型设计模式,定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端。策略类的定义比较简单,包含一个策略接口和一组实现这个接口的策略类。因为所有的策略类都实现相同的接口,所以客户端代码基于接口而非实现编程,可以灵活地替换不同的策略。假如有如下需求:根据客户端的不同请求类型,服务端则执行不同的算法计算相应的结果,通常会按以下代码进行实现。public class AlgorithmService { public dou
2020-10-18 17:05:54 116
原创 适配器模式
适配器式是一种结构型设计模式,通过增加一个新的适配器类,将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以协同工作。适配器模式有两种实现方式:类适配器和对象适配器。其中,类适配器使用继承关系来实现,对象适配器使用组合关系来实现。Target 表示客户端所需接口,可以是一个抽象类或接口;Adaptee定义了一组已存在的接口,但是不兼容 Target的接口定义;Adaptor对Adaptee和Target进行适配,作为一个转换器将 Adaptee 转换成一组符合Target..
2020-10-18 16:24:24 211 1
原创 装饰器模式
装饰器模式是一种结构型设计模式,在不改变原始类接口的前提下,创建了一个装饰类,装饰类和原始类实现相同的接口,然后通过组合将装饰类包装原始类,在保持类方法签名完整性的前提下,提供了额外的功能。接下来,我们通过装饰器模式的经典运用,Java I/O类库,来介绍装饰器模式。当我们要读取一个文档的时候,通常会采用下面的写法。public class App { public static void main(String[] args) throws Exception { I
2020-09-20 17:14:17 83
原创 代理模式
代理模式是一种结构型设计模式,在不改变原始类接口的前提下,为原始类定义一个代理类,通过代理类对原始类进行控制访问和非功能性需求的增强,实现在不改变原始类的情况下,通过新增的方式对原始类进行扩展非功能性需求,实现业务代码和非功能性代码解耦。按代理类创建时期可以将代理分为静态代理和动态代理,静态代码是在编译期进行创建的,动态代理是在运行期通过反射机制动态创建的。接下来我们以这样一个场景来介绍代理模式:用户调用一个根据ID查询详情接口,我们通过代理来记录接口的响应时间。一、静态代理// 接口i
2020-09-20 15:25:48 113
原创 建造者模式
建造者模式是一种创建型设计模式,当一个类的构造器有多个参数,特别当大多数参数是可选的,建造者模式就是种不错的选择。接下来我们通过创建一个重试器来具体介绍建造者模式:重试器是指对执行某一业务逻辑失败后进行重试,创建重试器需要指定名称,重试次数,每次重试后休眠时间,其中重试次数和每次重试后休眠时间两个参数是非必填的。对于这样的类,首先想到的是使用重叠构造方法,提供一个只有必填参数的构造器,第二个构造器有一个可选参数,依次类推,最后一个构造器包含所有参数。@Slf4jpublic class Re
2020-09-12 20:03:16 100
原创 工厂模式
我们在进行面向对象开发的,创建一个对象最常用的方式就是通过new操作符。但这种创建方式把对象的创建和使用耦合在一起,有时候当创建逻辑比较复杂,或者需要根据参数动态创建具体对象的时候,我们就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用分离。一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。抽象工厂的使用场景比较特殊,并不常用,所以本文不再介绍。接下来我们通过这样一个业务场景:当用户执行一个操作的时候,根据相应的类型给相关人发送消息通知,消息类型包括邮件,站内信,短信
2020-09-12 17:54:00 212
原创 单例模式
单例模式是一种创建型设计模式,一个类只能创建一个对象,所以称为单例模式。那么该如何实现一个单例呢?首先需要将构造函数私有化,禁止在类外部实例化对象 其次在类内部定义创建唯一对象的方法,并使用private static final修饰 最后定义一个publicstatic静态方法提供访问单例对象的入口实现一:饿汉式...
2020-09-11 20:32:44 164
axis2-eclipse-service-plugin-1.6.2.zip
2015-08-04
axis2-eclipse-codegen-plugin-1.6.2.zip
2015-08-04
Extjs4.1.1(修改后的sdk.jsb3)
2014-04-03
lucene_4.2.1.CHM
2014-01-20
putty0.62.0.0.exe
2012-10-26
SSHSecureShellClient3.2.9
2012-10-26
cx_OracleTools
2012-07-13
pywin32-217.win32-py2.6.exe
2012-07-05
pywin32-215.win32-py2.7.exe
2012-07-05
MySQL-python-1.2.3.win32-py2.7.exe
2012-07-03
boa-constructor-0.6.1.bin.setup.exe
2012-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人