自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

恶性佛

宏观经济环境是影响个人命运的最大变量

  • 博客(20)
  • 问答 (1)
  • 收藏
  • 关注

原创 设计模式(4)-行为型-模版模式(Template Method)

> 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。> 个人理解: 1. 模版模式与桥接模式的不同在于使用目的:桥接模式是解决类的多维度变化的。模版模式是分离行为的可变和不变部分去满足顶级逻辑的不同执行。 2. **子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。顶级逻辑

2016-07-15 02:10:27 387

原创 设计模式(4)-行为型-策略模式(Strategy)

> 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。> 适用性: 1. 多个类只区别在表现行为不同,可以使用策略模式,在运行时动态选择具体要执行的行为. 2. 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现. 3. 对客户隐藏具体策略(算法)的实现细节,彼此完全独立.简单代码,便于理解:```//抽

2016-07-15 00:53:44 372

原创 设计模式(1)-创建模式、结构模式、行为模式的区别

创建模式创建型模式,就是创建对象的模式,抽象了实例化的过程。 它帮助一个系统独立于如何创建、组合和表示它的那些对象。 关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑 结构模式结构型模式是为解决怎样组装现有的类,设计他们的交互方式,从而达到实现一定的功能的目的。 结构型模式包

2016-07-15 00:14:40 5001 2

原创 设计模式(2)-创建型-原型模式(Prototype)

意图:用原型实例指定创建对象的种类,当需要重复地创建相似对象时,通过拷贝这些原型创建新的对象。 个人理解:原型模式主要用于对象的复制,它的核心是就是原型类Prototype:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,

2016-07-13 05:14:35 339

原创 设计模式(2)-创建型-单例模式(Singleton)

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 个人理解:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。单例模式最常使用的场景是对系统资源的控制。 适用性:当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 单例模式的3

2016-07-13 05:05:53 246

原创 设计模式(2)-创建型-建造者模式(Builder)

> 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。> 个人理解 1. 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。 2. 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的

2016-07-13 04:40:31 271

原创 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)

简单工厂模式(不属于设计模式) 意图:由一个工厂类根据传入的参量决定创建出哪一种产品类的实例 个人理解:包含了必要的逻辑判断,根据给定信息或参量,决定究竟应该创建哪个类的对象。违反了设计模式原则 适用性:当一个类不会有太多变化的时候。 简单代码,便于理解:工厂模式 意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到

2016-07-13 03:39:34 262

原创 设计模式(1)-面向对象的设计原则

设计模式要解决什么问题?--------> 设计模式要解决的问题核心为软件的:**可维护性、可复用性**。 - 在原有的模块上,很难加入新功能,因为加入新功能会影响到其他很多模块。 - 很难修改,因为修改也会影响到其他很多模块。 - 重复代码很多,复用率低,无法维护。 - 粘合度过高,导致类依赖的是实现本身而不是接口,无法替换原有设计。PS:影响到替他模块时就将对软件原有代码进行修改,此时可能会给

2016-07-12 09:08:22 303

原创 设计模式(3)-结构型-享元模式(Flyweight)

意图:运用共享技术有效地支持大量细粒度的对象。 个人理解:享元模式主要作用是实现对象的共享,即使用共享池,从而减少内存分配的开销。 实现享元的核心是工厂方法,在工厂方法中使用集合(通常是HashTable)来存取已经存在的对象。 可以参考各种连接池的设计,或者spring容器。 适用性:一个应用程序使用了大量的对象。完全由于使用大量的对象,造成很大的存储开销。对象的大多数状态都可

2016-07-09 05:28:50 361

原创 设计模式(3)-结构型-外观模式(Facade)

意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 个人理解:外观模式就很好理解了。他就是一个放了很多接口的类,而且这些接口已经被其他类实现过了,把这些我需要的接口放在一起,让这个接口更加容易使用。否则每次都将引用大量的接口实现。 适用性:当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模

2016-07-09 04:30:26 312

原创 设计模式(3)-结构型-装饰模式(Decorator)

意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。 个人理解:结合代码注释理解。 适用性:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。处理那些可以撤消的职责。当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类

2016-07-09 03:55:51 282

原创 设计模式(3)-结构型-组合模式(Composite)

意图: 将对象组合成树形结构以表示“部分-整体”的层次结构。C o m p o s i t e 使得用户对单个对象和组合对象的使用具有一致性。 个人理解:适用性: - 你想表示对象的部分-整体层次结构。 - 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。简单代码,便于理解://店面类,抽象出来的店面部件,不管是枝干部分还是节点部分,都要

2016-07-09 01:41:46 292

原创 设计模式(3)-结构型-桥接模式(Bridge)

意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。个人理解:桥接模式是用来应对类的多维度变化的。主要理解使用场景。使用场景:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 理

2016-07-08 16:30:05 294

原创 设计模式(3)-结构型-适配器模式(Adapter)

意图:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。个人理解:实际上就是接口(客户端期待的接口)的实现类(适配器)中注入其他类(需要适配的类),这样便可以使用其他类方法去替换实现类方法或者在实现类方法的基础上加上其他类方法。相当于实现类方法就只是一个壳,这样就改变了实现类方法的操作,来达到适配的目的。使用场景:你想使用一个已经存

2016-07-06 15:59:58 385

原创 设计模式(3)-结构型-代理模式(proxy)以及java动态代理的两种方式

代理与动态代理这里只阐述自己对代理与动态代理使用场景的理解,其他的信息自行百度。代理的使用场景?例子:事务 在项目中,我的service只想处理与业务相关的逻辑。我并不想在service中显示的嵌入代码去处理事务方面的问题,这样事务就和业务耦合在一起了。但是事务的处理是必不可少的,这个时候就可以使用代理模式,将事务的处理放在代理中,代理处理事务的问题,service处理业务的问题。当程序调用代理的时候,既

2016-07-05 08:24:05 329

转载 Redis学习笔记(7)-info命令详解

info的输出结果是分几块的,有Servers、Clients、Memory等等,通过info后面接这些参数,可以指定输出某一块数据。# 参考:http://redis.io/commands/info### Serverredis_version:2.6.9redis_git_sha1:00000000 redis_git_dirty:0redis_mode:standaloneos:Linux

2016-07-04 09:20:03 535

转载 Redis学习笔记(6)-redis.conf配置文件详解

配置文件详解Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize no当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口

2016-07-04 09:01:43 848

原创 Redis学习笔记(3)-Redis事务,过期时间,队列

事务MULTI表示开启事务 然后执行了2个语句 在执行的过程中,他们并没有真正执行,而是挂起。 等到输入EXEC的时候才会真正的执行。 这样保证了事务的特性,要么都执行,要么都不执行。 请注意,Redis的事务并没有事务回滚功能。 若第一行语句成功,第二行语句出错失败,第一行语句的结果任然是执行了的。过期时间过期时间的设置能够让Redis将已经存储的数据,到了过期时间后自动删除。设置k

2016-07-03 08:12:34 5089

原创 Redis学习笔记(2)-Redis数据类型

注意不同的平台有不同的客户端,如java的Jredis,PHP的Predis和官方的客户端redis-cli。 本例子使用的命令都是运行在redis-cli客户端下的命令。 Redis不支持类型嵌套,比如散列类型的值不能是集合类型,等。 所有类型的值只能是字符串。基础命令KEYS key获得键列表key支持通配符: ? 匹配一个字符 * 匹配任意字符 [] 匹配括号间的字符 \? 转义

2016-07-03 07:59:10 619

原创 Redis学习笔记(5)-SpringDataRedis的使用

与Spring集成如何建立与redis数据库的连接?beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/s

2016-07-03 07:05:01 17261

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除