自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

转载 行为型模式(11)——访问者模式

定义将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。优点:扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。 复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系...

2019-09-08 16:19:39 174

原创 行为型模式(10)——策略模式

定义该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。一个类中的一些行为,可能会随着系统的迭代而发生变化。为了使得该类满足开放-封闭原则(即:具备可扩展性 或 弹性),我们需要将这些未来会发生动态变化的行为从该类中剥...

2019-09-08 16:08:14 244

原创 行为型模式(9)——责任链模式

定义为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链,使得多个对象都有机会处理请求;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式也叫职责链模式。优点:降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。 增强了系统的可...

2019-09-08 15:51:25 152

原创 行为型模式(8)——状态模式

定义对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。一个函数原本有很多判断语句,现在把判断语句中的每一种状态封装成一个类,每一个状态类中均有一个handle()函数,该函数能对当前状态做出处理,并且能指明不能处理时的下一个状态类。优点:状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一...

2019-09-08 15:40:05 153

原创 行为型模式(7)——解释器模式

定义给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。解释器模式是一种类行为型模式。优点:扩展性好。由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。 容易实现。在语法树中的每个表达式节点类都是相似的,所以...

2019-09-08 14:55:38 250

原创 行为型模式(6)——备忘录模式

定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。一个对象中一般都封装了很多属性,这些属性的值会随着程序的运行而变化。当我们需要保存某一时刻对象的某些值的时候,我们就再创建一个对象,将当前对象中的一些属性保存到新的对象中,当我们需要恢复的时候再从新的对象中取出属性值即可。这种想法就是备忘录模式...

2019-09-08 14:45:01 119

原创 行为型模式(5)——中介者模式

定义定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。优点:降低了对象之间的耦合性,使得对象易于独立地被复用。 将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。缺点:当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。...

2019-09-08 13:55:33 105

原创 行为型模式(4)——观察者模式

定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。适用场景:如果存在一系列类,他们都需要向指定类获取指定的数据,当获取到数据后需要触发相应的业务逻辑。这种场景就可以用观察者模式来实现。优点:降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。 ...

2019-09-07 22:18:39 87

原创 行为型模式(3)——迭代器模式

定义提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式。优点:访问一个聚合对象的内容而无须暴露它的内部表示。 遍历任务交由迭代器完成,这简化了聚合类。 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。 增加新的聚合类和迭代器类都很方便,无须修改原有代码,体现“开放-封闭原则”。 封装性良好,为遍历不同...

2019-09-07 22:02:15 96

原创 行为型模式(2)——命令模式

定义将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。假设现在有一个请求处理类(低层类/第三方类),如果客户端拿到这个类之后直接调用它,那么客户端和这个请求处理类之间的藕合度过高。这时候我们在客户端的请求发送类和请求处理类之间增加一个Invoker类,再将请求发送类发送的所有请求封装成对象...

2019-09-07 21:06:53 86

原创 行为型模式(1)——模板方法模式

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。行为型模式包含以下 11...

2019-09-07 20:39:54 228

原创 结构型模式(7)——代理模式

定义由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。优点:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;缺点:在客户端和目标对象之间增加一个代理对象,会造成...

2019-09-06 16:36:55 93

原创 结构型模式(6)——享元模式

定义运用共享技术来有効地支持大量细粒度对象的复用。一个类它可能生成好多对象,但这些对象根据属性值的不同一共分成N类,每种类型中属性值都是一样的。在这种情况下,如果创建好多对象,那么这些对象中很多属性值都是重复的,从而造成了大量的内存浪费。而享元模式能够解决重复对象的内存浪费的问题。享元模式使用一个工厂类,在工厂类中为每种类型创建一个对象,而且每种类型的对象只有一个。当客户端需要某种类型...

2019-09-06 16:21:33 88

原创 结构型模式(5)——外观模式

定义是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观(Facade)模式是“迪米特法则”的典型应用。优点:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。 对客户屏蔽了子系统组件,减少了客户处...

2019-09-06 16:02:38 79

转载 结构型模式(4)——组合模式

定义有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。优点:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码; 更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”;缺点:设计较复杂...

2019-09-06 15:54:27 98

原创 结构型模式(3)——装饰模式

定义指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。优点:装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。继承通过覆盖的方式重写需要扩展的函数,当然也可以通过super.xxx()获取原本的功能,然后在该功能基础上扩展新功能,但它只能增加某一项功能;如果要通过继承实现增加多种功能,那么需要多层继承多个类来实现;而装...

2019-09-06 15:45:36 139

原创 结构型模式(2)——桥接模式

定义将抽象与实现分离,使它们可以独立变化。它是用组合(或聚合)关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。优点:由于抽象与实现分离,所以扩展能力强; 其实现细节对客户透明。缺点:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。模式结构:抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象...

2019-09-06 15:25:48 101

原创 结构型模式(1)——适配器模式

结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。结构型模式分为以下 7 种:代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该...

2019-09-05 21:57:05 191

原创 创建型模式(5)——原型模式

1定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。现在有一个类,它要产生大量的对象,而且这些对象中的属性值大部分都相同;如果我们要获取这样一个对象的时候每次都通过new,然后再set每一个属性值,那么这样就太麻烦了。这种情况下使用原型模式非常便捷:我们让这个类去实现Prototype接口,并且实现该接口的clone()函数,在clone函数中让当前对象进行一次浅拷...

2019-09-05 21:34:55 112

原创 储备知识——UML六种关系

耦合度大小关系泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖依赖(Dependency) 是一种使用的关系,即一个类的实现需要另一个类的协助。 Bird类中有一个setFly方法,它需要使用者用到IFly接口的实现,那么这种关系就是依赖关系。 依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。关联(Assoc...

2019-09-05 16:21:57 188

转载 创建型模式(4)——建造者模式

“建造者模式”生活中的例子:肯德基做汉堡的过程都是有严格的规范的,不管是麦香鸡腿堡还是新奥尔良烤鸡腿堡,他们的制作步骤都是有严格规定,做汉堡的人既不能多做一步,也不能少做一步。对于不同的汉堡来说,虽然每一步加的料所有不同,但做汉堡的步骤都是一样的。因为有了对做汉堡过程的严格控制,因而全国所有的肯德基店做出来的汉堡味道都是一样的。这些汉堡就是一个个对象,刚被创建出来的时候它就是两片面包片,没...

2019-09-05 16:13:35 67

转载 创建型模式(3)——抽象工厂模式

1 实际问题使用工厂模式写一个程序,既能使用SqlServer访问User表,又能使用Access访问User表。1.创建对User表进行访问的接口UserDao,该接口中包含了所有对User类处理的函数。2.由于Access和Oracle数据库中都含有User表,但不同的数据库对User表实现相同操作的实现是不一样的,因此创建两个UserDao的实现类,分别用户处理Oracle和...

2019-09-05 15:57:27 106

原创 创建型模式(2)——工厂方法模式

1定义工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它的缺点是增加新产品时会违背“开闭原则”。例如:工厂方法模...

2019-09-05 15:41:24 112

原创 创建型模式(1)——单例模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。创建型模式分为以下几种:单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而...

2019-09-05 15:19:22 93

原创 设计模式——七个设计原则

1概述面向对象编程有七大原则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。(图片来源:https://www.jianshu.com/p/8a293e4a888e)2七个设计原则2.1单一职责原则(SRP)Single Responsibility Principle,定义是一个类,应该只有一个引起它变化的原因。类变化的原因就是职责,如...

2019-09-05 14:02:54 726

原创 电子商城——将工程改造为SOA架构(4)

目录1分析2工程改造2.1拆分工程2.2服务层工程2.3表现层工程3工程测试1分析由于电子商城是基于soa的架构,表现层和服务层是不同的工程。所以要实现类似于商品列表查询这样的功能,需要两个系统之间进行通信。如何实现远程通信?1、Webservice:效率不高基于soap协议。项目中不推荐使用。2、使用restful形式的服务:http+j...

2019-09-01 14:18:51 124

原创 注册中心Zookeeper

1Zookeeper介绍注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用。...

2019-09-01 13:43:02 244

原创 服务中间件Dubbo

1什么是Dubbo随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构成为趋势,亟需一个治理系统确保架构有条不紊的演进。单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 垂直应用架构 当访问量逐渐增大,单一...

2019-09-01 13:23:59 331

转载 Java并发编程的艺术(十三)——锁优化

自旋锁背景:互斥同步对性能最大的影响是阻塞,挂起和恢复线程都需要转入内核态中完成;并且通常情况下,共享数据的锁定状态只持续很短的一段时间,为了这很短的一段时间进行上下文切换并不值得。 原理:当一条线程需要请求一把已经被占用的锁时,并不会进入阻塞状态,而是继续持有CPU执行权等待一段时间,该过程称为『自旋』。 优点:由于自旋等待锁的过程线程并不会引起上下文切换,因此比较高效; 缺点:自旋等...

2019-09-01 12:36:07 71

原创 F:\bigdata\Javapro\Project\...\web-resources\META-INF\MANIF(系统找不到指定的路径。)

F:\bigdata\Javapro\Project\e3-manager\e3-manager-service\target\m2e-wtp\web-resources\META-INF\MANIFEST.MF (系统找不到指定的路径。)点击eclipse的project菜单,选择clean...选项,选择Clean all projects...

2019-08-30 02:26:54 228

原创 Spring配置文件报错

Maven项目中,spring配置文件集体报错,时好时坏。随便贴上一处错误:Multiple annotations found at this line: - cvc-elt.1: Cannot find the declaration of element 'beans'. - schema_reference.4: Failed to read schema document 'h...

2019-08-30 01:40:53 326

原创 警告:Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClassLoader

在Maven工程中,使用pagehelper分页工具的时候遇到以上问题:原因:service层依赖由pagehelper工具生成的pagehelper包,而web层没依赖。但page类本质是list,所以web层得到page时向父类list转换,所以只出现警告而不影响使用。解决方法:在web层pom中添加依赖如下:<dependency><groupId&gt...

2019-08-29 18:12:55 2827 1

原创 启动zookeeper成功,但查看status显示Error contacting service. It is probably not running.

zkServer.sh start启动后显示如下:JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED查看zkServer.sh status状态后显示如下:JMX enabled by d...

2019-08-29 16:49:34 907

原创 电子商城——SSM框架整合(3)

目录1数据导入数据库2Mybatis逆向工程3整合思路4Dao整合4.1创建SqlMapConfig.xml配置文件4.2Spring整合mybatis5Service整合5.1管理Service5.2管理事务6表现层整合6.1Springmvc.xml6.2Web.xml7整合测试7.1准备7.2解决map...

2019-08-29 04:40:18 539

原创 Maven项目启动——Failed to clean project问题

报错:Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project e3-manager-web: Failed to clean project: Failed to delete F:\bigdata\Javapro\Project\e3-manag...

2019-08-29 04:37:47 2627

原创 电子商城——使用maven搭建工程(2)

目录1后台工程搭建分析2 工程搭建2.1e3-parent2.2e3-common2.3e3-manager2.4e3-manager-pojo2.5e3-manager-dao2.6e3-manager-interface2.7e3-manager-service2.8e3-manager-web2.9补全目录结构2.10添...

2019-08-29 03:59:12 151

原创 电子商城——项目介绍(1)

目录1商城介绍1.1相关知识1.1.1 电商行业技术特点1.1.2电商模式1.2宜立方商城介绍2商城架构2.1功能列表2.2系统架构1商城介绍1.1相关知识1.1.1 电商行业技术特点技术新 技术范围广 分布式 高并发、集群、负载均衡、高可用 海量数据 业务复杂 系统安全1.1.2电商模式B2B:商家到商家。阿里...

2019-08-29 03:05:56 2266

原创 系统架构

1传统架构三层架构:三个层的叫法很多,意思都一样,“数据访问层”、“业务逻辑层”、“表示层”。数据访问层(持久层):数据访问层在作业过程中访问数据系统中的文件,实现对数据库中数据的读取保存操作。表示层(表现层):主要功能是显示数据和接受传输用户的数据,可以在为网站的系统运行提供交互式操作界面,表示层的应用方式比较常见,例如Windows窗体和Web页面。业务逻辑层(业务层):...

2019-08-29 02:56:44 615

原创 Maven安装与配置

目录1 Maven简介1.1 依赖管理1.2 项目一键构建2Maven的安装配置2.1环境变量配置2.2Maven仓库3演示入门程序3.1目录结构3.2Maven的常用命令4项目构建4.1 Maven在eclipse的配置4.2 项目构建1 Maven简介Maven是apache下的一个纯java开发的开源项目,用来管理java...

2019-08-25 19:43:25 184

原创 Java数据库连接问题--版本匹配

环境配置:MySql8.0、JDK7、Tomcat7、mysql-connector-java-8.0.15.jar报错:七月 28, 2019 7:33:32 下午 com.mchange.v2.c3p0.C3P0Registry bannerINFO: Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? tru...

2019-07-28 22:45:55 699

yale人脸数据库

用于图像处理、人脸识别的数据库。由耶鲁大学计算视觉与控制中心创建,包含15位志愿者的165张图片,包含光照,表情和姿态的变化。 Yale人脸数据库中一个采集志愿者的10张样本,相比较ORL人脸数据库Yale库中每个对象采集的样本包含更明显的光照、表情和姿态以及遮挡变化。

2018-04-03

空空如也

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

TA关注的人

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