自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你好,开发者

请移步公众号「开发者如是说」

  • 博客(22)
  • 收藏
  • 关注

原创 You need tcl 8.5 or newer in order to run the Redis test

说明Redis需要改软件,而且不低于8.5解决办法:安装软件 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz // 直接下载,或者到官网下载之后解压 sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/ cd /usr/local/tcl8.6.1/

2017-11-23 14:06:11 1103

原创 cannot create regular file `XXX': Permission denied

今天在安装Redis的时候遇到这个问题,解决办法是:使用sudo因为,sudo暂时性的提升你的等级去创建文件在系统目录下。

2017-11-23 14:03:52 28175

原创 Ubuntu安装时:downloading language packs

ubuntu 安装时显示downloading language packs,并需要等待很长世间问题:downloading language packs 如果网络不好,持续能达到几个小时解决办法:切断网络连接,安装完后,还可以再安装

2017-11-23 13:28:00 8183

原创 设计模式--装饰器模式

装时者模式你可以将装饰者模式理解成“添加一点佐料”的意思,这里的“佐料”就是装饰的意思。“添加一点佐料”即在原始的对象的基础之上对其方法进行一些修改。它的UML建模如如下所示:它所要达到的装饰目的就是,对一个对象的方法进行修改,但是不会影响该方法的如何被调用。这就需要继承原来对象的类,并实现其中的方法,然后将装饰后的对象赋值给原来的对象。如:public abstract class Decorat

2017-11-22 17:29:44 738

原创 设计模式--代理模式

代理模式代理模式为一个对象提供一个替身或占位符以控制这个对象的访问。如图所示,这里的ISubject是一个借口,它有一个实现RealSubject. 这里的代理类是RealSubjectProxy,它内部维护了一个ISubject的实例,同时实现了ISubject接口的方法。在RealSubjectProxy内部将每个方法的逻辑委托给RealSubject来实现。代理模式的好处是,如果我们想要对一个

2017-11-22 17:28:54 720

原创 设计模式--适配器模式、外观模式

适配器模式和外观模式适配器模式将一个类的接口。转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。所谓适配器,你可以将其理解成将一种数据类型通过适配器让其适用于另一种类型。以上面的图为例。加入Client需要一个Targe类型(目标类型)的实体,但是我们只有一个Adaptee(被适配者)类型。这时候我们可以通过一个中间的适配器Adapter来完成。它的操作一点也不神秘,仅仅是让Ada

2017-11-22 17:28:22 740

原创 设计模式-模板模式

模板模式模板模式是一种非常实用的设计模式,它可以为我们节省大量的重复代码。甚至可以说,如果不了解模板设计模式就没有充分利用面向对象的好处。所谓模板就是为业务逻辑提供一种模板框架,而至于这些模板的每个模块该如何实现,我们将其交给子类。也就是说,我们在顶层基类中定义一个业务逻辑模板,子类需要根据自己的需求实现该模板中的一些方法。这里先给两个在实际应用中的例子,然后对模板模式的一些技巧进行总结。第一种示例

2017-11-22 17:27:54 737

原创 设计模式-策略模式

策略模式定义了算法簇,分别封装起来,让它们之间可以相互替换,此种模式让算法的变化独立于使用算法的客户。以上图为例,如果某部分逻辑比较容易变动,我们可以将其定义成一个接口(IA)。然后根据情景的需求,对该接口采取不同的实现策略(A1, A2)。在实际使用中,我们只定义该接口的实例(即使用IA定义a),即所谓的“针对接口编程0”的策略,然后根据要求实例化一个需要的类型传入即可(将实例化的A1或者A2作为

2017-11-22 17:27:21 713

原创 设计模式--状态模式

状态模式状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。以上是状态模式的类图。它包含了的类主要可以分成三种类型:上下文(Context): 定义了一个客户接口,就是整个状态模式所维护的一个对象。抽象状态类(State): 定义了所有状态的顶层的类,它内部定义的方法是实际操作中需要用到的方法。具体状态类(ConcreteState): 具体的状态实现,它实现了State

2017-11-22 17:26:42 750

原创 设计模式-工厂模式和抽象工厂

工厂模式工厂模式的类型还是比较多,相互之间有些细微的区别,不过都是用来创建新的对象了。所谓的工厂的含义就是用来生产对象的意思。使用它的好处是,我们可以将获取一个类的实例的操作封装到一个方法中。这样我们需要修改获取类的实例的逻辑的时候只要对该方法进行修改就可以了。我们这里可以将其分成三种类型。简单工厂模式以上就是简单工厂,它不属于23种里的一种,简单来理解就是创建一个工厂类用来根据条件返回不同类型的实

2017-11-22 17:26:04 690

原创 设计模式-观察者模式

观察者模式1.接口回调如果你理解接口回调的一些原理的话,理解观察者模式还是比较容易的。所谓接口回调一般应用的场合是“你不知道这个方法什么时候回返回”。比如,一个方法中定义了一个局部变量i,随后开启了一个线程,并在线程内部修改了i,我们希望i的修改的结果最终能够被我们获取到。那么我们该怎么做?使用return肯定不行,因为方法结束时,线程可能还没有结束,那么修改的内容我们可能获取不到。public i

2017-11-22 17:25:32 700

原创 设计模式-构建者模式

构建者模式当一个类中包含的字段比较少的时候,我们直接在构造器中要求调用者在创建类的实例的时候传入各个字段就可以了。但是当类中包含的字段比较多的时候情况就会麻烦一些。在类中参数比较多的时候,通常有以下几种处理方法:重叠构造器使用Setter和getter在创建实例之后为每个字段赋值使用构建者模式1.重叠构造器在这种方式中,我们需要提供多个构造器:第一个是只有必要参数的构造器,第二个是包含两个参

2017-11-22 17:24:50 725

原创 设计模式-4:单例模式

单例模式确保一个类只有一个实例,并提供一个全局访问点。在所有的设计模式中,单例模式是最简单也是最常用的一种设计模式,它只为一个实例提供一个全局对象,内次尝试去获取一个类的实例的时候,保证获取到的都是这一个对象。这里我们给出它在Java当中的几种写法.....

2017-11-22 17:23:42 1318

原创 Java 解惑:equals 与 == 的区别

1. 当参与==比较的两个元素中有一个是值类型的,那么就按照值类型来比较。而引用类型按照值来比较的时候使用的是它们的hashCode的返回结果。只有当参与比较的两个元素都是引用类型的,那么才按照引用类型来比较,即比较它们的hashCode的返回结果。2. 当使用equals方法进行比较的时候,实际的比较结果取决于equals方法的具体实现,在Object的默认实现中,是使用==来实现的。也就是说使用了按引用来比较的

2017-11-21 12:18:40 893

原创 设计模式--面向对象设计原则、UML

基础1、一些常用的UML标记用 实线加> 来表示某个类中包含另一个类的实例的意思用 实线加△ 来表示某个类继承了另一个类的意思用 虚线加△ 来表示某个类实现了某个接口的意思1.1 实体类的表示上图就是UML图中实体类的表示方法,类图分成三层:第一层是类名,如果类是抽象的,就用斜体表示;第二层是字段和属性;第三层是操作方法。如果方法或者属性是public的就在前面加’+’,private的加’

2017-11-20 22:16:06 808

原创 设计模式-中介者模式

中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。中介者模式主要用来解决对象与对象之间存在大量的关联关系时,导致系统非常复杂的问题,尤其是当多个类之间构成了网状的关系的时候。中介者模式通过将网状的结构,分离成为形状的结构来解决复杂的对象关联。具

2017-11-20 22:15:40 698

原创 设计模式-责任链模式

责任链模式责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。责任链模式涉及到的角色如下所示:抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定

2017-11-20 22:14:58 648

原创 设计模式--命令模式

命令模式命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也可支持撤销的操作。以下是一个典型的命令模式的类图:1.命令模式的组成命令模式由以下角色组成:命令角色(Command):为所有的 命令声明了一个接口,调用命令对象的execute()方法,就可以让接收者进行相关的动作。这个接口也可以定义一个undo()方法,用于撤销命令。具体命令角色(Concret

2017-11-20 22:14:32 674

原创 Java 基础回顾-5:容器类

容器数组的效率比容器高,但是我们应该“优先选择容器而不是数组”,只有在已证明性能成为问题时,才应该将程序重构为使用数组

2017-11-20 22:14:03 756

原创 Java 基础回顾-7:IO 体系

Java IO流体系

2017-11-20 22:05:53 1262

原创 Java基础知识梳理--线程

Java的线程部分知识梳理,线程池、同步、ThreadLocal原理

2017-11-20 22:04:49 816

原创 MySQL基础知识(全)

MySQL基础知识梳理,常用的SQL等

2017-11-20 22:02:53 867

空空如也

空空如也

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

TA关注的人

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