自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 19.命令模式

命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作import java.util.ArrayList;import java.util.List; /*** 命令模式:* 关键:* 命令Command接口,定义执行方法* 具体命令Command类,实现接口,并接收Executor,去执行定义方...

2018-12-07 16:26:01 118

原创 18.桥接模式

桥接模式:实现系统可能有多角度分类,每一种分类都有可能变化,那么把这多种角度分离出来让他们独立变化,减少他们之间的耦合优先使用合成/聚合复用原则,而不是类继承 (合成/聚合:引用对方的接口,对方传递进来)/*** 桥接模式* 关键:* 例子:手机软件 和 手机厂商,他们的关系是聚合关系,分别是一个抽象类,手机厂商拥有手机软件的引用* @author zbl**/...

2018-12-07 15:11:02 117

原创 17.单例模式

/** * 单例模式: * 关键: * 获取对象只有一个实例,创建单例有两种方法:一种饿汉式(一开始就创建),一种懒汉式(获取对象时创建) * @author zbl * */public class SingleCustomer {    public static void main(String[] args) {        Single1 single1 = Sing...

2018-12-07 10:42:29 110

原创 16.迭代器模式

import java.util.ArrayList;import java.util.List; /*** 迭代器模式* 关键:* Iterator接口:定义获取开始,下一个,上一个,结尾等等对像方法* ConcreateIterator类:实现Iterator接口* @author zbl**/public class IteratorCustome...

2018-12-03 17:07:38 86

原创 15.组合模式

组合模式:可以使用统一结构一直组合下去总公司---分公司1    ---分公司1财务部    ---分公司1人事部---分公司2    ---分公司2财务部     ---分公司2人事部import java.util.ArrayList;import java.util.List; /*** 组合模式:* 关键:* Component组...

2018-12-03 16:00:18 84

原创 14.备忘录模式

 /*** 备忘录模式* 关键:* “白箱”:(备忘录是单独一个类)* 发起人Originator类:定义角色状态等多个属性,并定义方法创建备忘录对象,和还原备忘录所记载的状态* 备忘录Memento类:记录Originator类中定义的属性* 负责人Caretaker类:负责保存备忘录对象和还原备忘录对象* “黑箱”:(定义一个备忘录标识接口,备忘录类是发起人...

2018-11-29 17:41:44 128

原创 13.适配器模式

适配器模式:适配器模式使得原本接口不兼容而不能一起工作的类可以一起工作,例子:接口A,实现A1,实现A2,类B,适配器封装类B,且实现接口A并实际调用类B方法/*** 适配器模式:* 关键:* Target(类/接口/抽象类):定义目标方法* Adaptee:要适配的对象* Adapter类:内部封装一个要适配的对象,重写目标方法,方法实则调用要适配对象中的方法...

2018-11-29 10:50:31 116

原创 12.状态模式

状态模式:把相关的行为局部化,将不同的状态行为分割开来,例如根据每小时判断一些情况(Context类),这样可以定义一个接口,并传入这个情况(传入Context类),可以把不同的条件分别实现这个接口,并分别根据这个传入的情况判断(此模式适合判断条件复杂情况)/*** 状态模式* 关键* State接口:定义接口,来封装与Context类相关的行为* Context类(拥有一...

2018-11-29 10:48:59 157 1

原创 11_1.反射+抽象工厂

import java.util.ResourceBundle;/*** 反射 + 抽象工厂* 关键:* DataAccess(数据访问类):通过读取配置文件,获取具体工厂类名,* 通过反射获取具体工厂实例,调用具体工厂方法返回相应实例* @author zbl**/public class ReflectCustomer {public static vo...

2018-11-29 10:48:29 233

原创 11.抽象工厂

抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类/*** 抽象工厂:* 关键:* IFactory:抽象工厂* ConcreteFactory:具体工厂* @author zbl**/public class AbstractFactoryCustomer {} interface IFactroy{public vo...

2018-11-26 17:12:09 92

原创 10_1.事件委托

事件委托:把事情交给委托类去办,需要传递要委托的对象,要委托的方法还有及其参数(定义一个类封装好这些属性,并保存在数据结构中,下面就是很好的列子),最后通过反射调用获取实例,并调用其方法import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Arr...

2018-11-26 14:33:07 108

原创 10.观察者模式

观察者模式:定义一种一对多的依赖关系,让多个观察者对象同事监听一个主题对象,当主题对象变化是,会通知所有观察者对象,使他们能更新自己import java.util.ArrayList;import java.util.List;/*** 观察者模式:* 关键:* subject接口: 主题或抽象通知,定义添加方法 删除方法 通知方法* 具体Subject: 实现s...

2018-11-23 16:36:18 139

原创 9.建造者模式

建造者模式:主要用于创建一些复杂的对象,这些对象内部构建间的构造顺序通常是稳定的,但对象内部的构建通常面临复杂变化import java.util.ArrayList;import java.util.List;/*** 建造者模式:* 关键:* 指挥类(Dircetor):传入建造者类,并定义按顺序执行建造者中的方法* 建造者接口:定义执行的方法* 具体建造者...

2018-11-23 11:57:39 93

原创 8.外观模式

外观模式:为了系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用例子:大型系统很复杂,难以扩展和维护,可以开发一个外观Facade类,把提供设计粗糙或者高度复杂的遗留代码一个清晰简单的接口/*** 外观模式:* 关键:* 使用一个类包装各种子系统类,使得客户端调用这个类即可完成子系统中的各种协同功能,* 并且不需要知道内部的逻辑...

2018-11-16 16:24:05 115 1

原创 7.模板方法模式

模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使子类可以不改变一个算法的结构即可以从定义该算法的某些特定步骤/*** 模版方法模式:* 关键:* 父类定义做操中的骨架,而将一些步骤延迟到子类中* @author zbl**/public class TemplateCustomer {public static void main...

2018-11-16 10:35:45 81

原创 6.原型模式

原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 /*** 原型模式* 关键:* (java):实现Cloneable 接口,并重写Clone方法* 浅复制:复制对象,把对象中的数值类型进行复制,复制引用但不复制引用的对象* 深复制:复制对像,把对象中的数值类型进行复制,并且复制引用的对象(需要自己重写clone方法,例子如下)* @au...

2018-11-15 17:26:36 99

原创 5.工厂模式

工厂模式:工厂方法把简单工厂的内部逻辑判断移动客户端代码来进行,需要添加功能,本来需要改工厂类,现在变为改客户端/*** 工厂模式:* 关键* 在简单工厂的基础上再抽象一层,工厂也抽象化* AbstractFactory接口:方法* ConcreteFacotry类:实现AbstractFactory接口,返回对应的具体类* @author zbl**/...

2018-11-15 14:42:09 75

原创 4.代理者模式

代理模式:代理模式和装饰器模式结构很像,装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。但当我们使用装饰器模式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器重点:代理模式重在于对方法的...

2018-11-15 14:07:36 128

原创 3.装饰器模式

装饰器模式:有效地把类的核心职责和装饰功能区分开/** * 装饰模式 * 关键: * Component接口:定义方法 * ConcreteComponent:接口实现类,实现具体方法 * Decorator:装饰器接口,实现Component接口,定义protected Component component; *             并定义传入component的方法;...

2018-11-15 10:05:24 122

原创 2-1 策略与简单工厂结合

/** * 关键: * 策略简单工厂:根据传入的类型,加载相应的策略类 * 策略对象(抽象):定义了算法家族 * 具体实现对象:实现了策略对象 *  * 策略简单工厂与简单工厂对比: * 策略简单工厂需要让客户端使用一个类:一个ContextStrategy(管理策略对象的类) * 简单工厂需要让客户端使用两个类: 一个工厂类,一个定义类 * @author zbl * */...

2018-11-12 17:18:29 90

原创 2.策略模式

策略模式:一种定义一系列算法的方法,他可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。例子:客户端调用一个新的方法           简单工厂:新建一个子类,并且简单工厂类中添加返回子类方法            策略模式:新建一个子类即可/** * 关键: * context类:维护一个策略对象的引用,通过本类中方法去调用策略对象的方法 * 策...

2018-11-12 16:19:19 81

原创 1.简单工厂模式

简单工厂模式:由工厂创建并返回实例,封装了创建细节 /**关键: * 简单工厂模式   (父类  继承的父类的多个子类  工厂判断返回哪个子类) * 面向对象三大特性 1.封装  2.继承  3.多态【重点】   * 代码复用 * 业务封装 * 松耦合  * @author zbl *///简单计算器 的 简单工厂模式  (面向对象三大特性 1.封装  2.继承  ...

2018-11-12 10:57:57 64

原创 阿里发送短信

1,首先按照顺序先设置

2017-10-23 15:32:28 218

转载 阿里发送邮箱

1,首先按顺序先设置2,用阿里java sdk  (https://help.aliyun.com/document_detail/29459.html)1,添加 maven 库 sonatype-nexus-staging Sonatype Nexus Staging https://oss

2017-10-23 15:06:15 788

转载 Mybatis优化

我们在使用mybatis的时候,需要注意mybatis的性能,怎么才能快速提高查询,在编写实体Bean 需要生成getXXX 和setXXX方法 ,在设置settings也需要注意一些选项:需要在实体Bean里面添加getXXX 和setXXX方法:比如:UserInfo.javapublic class UserInfo {

2017-06-29 17:07:56 299

原创 SpringMVC专题——SpringMVC的流程(个人理解)

SpringMVC处理请求:——》访问URL首先被DispatcherServlet截获——》DispatcherServlet通过handlerMapping【定位controller,本质map】获得HandlerExecutionChain——》然后获得HandlerAdapter【定位方法】(Spring容器注入argumentResolvers(List中都实现了Handle

2017-06-26 14:53:25 269

转载 SpringMVC关于json、xml自动转换的原理研究[附带源码分析]

现象本文使用的demo基于maven,是根据入门blog的例子继续写下去的。我们先来看一看对应的现象。 我们这里的配置文件 *-dispatcher.xml中的关键配置如下(其他常规的配置文件不在讲解,可参考本文一开始提到的入门blog):(视图配置省略)mvc:resources location="/static/" mapping="/static/**"/>m

2017-06-26 14:18:55 382

转载 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.htmlSpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,Serv

2017-06-26 13:04:22 690

转载 SpringMVC源码剖析-消息转换器HttpMessageConverter

摘要: SpringMVC使用消息转换器实现请求报文和对象、对象和响应报文之间的自动转换概述在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。Http请求的抽象还是回到

2017-06-26 11:37:57 203

转载 Java中的Filter过滤器

Filter简介Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpSe

2017-06-25 20:48:55 170

转载 spring项目中监听器作用-ContextLoaderListener(项目启动时,加载一些东西到缓存中)

作用:在启动Web容器时,自动装配spring applicationContext.xml的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成 pri

2017-06-25 20:42:09 1139

转载 <context-param>与<init-param>的区别与作用

的作用:web.xml的配置中配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.3.容器将转化为键值对,并交给ServletContext.4.容器创建中的类实例,即创建监听.5.在监听中会有conte

2017-06-25 20:34:58 173

转载 Hibernate专题6——注解配置

(1)简介:在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准。它非常强大、灵活,而且具备了优异的性能。在本文中,我们将了解如何使用Java 5 注释来简化Hibernate代码,并使持久层的编码过程变得更为轻松。传统上,Hibernate的配置依赖于外部 XML 文件:数据库映射被定义为一组 XML 映射文件,并且在启动时进行加载。    在最近发布

2017-06-25 16:39:29 206

转载 Hibernate主题5——缓存机制与可能遇到的问题

一、一级缓存(session级别)概念我们来看看hibernate提供的一级缓存:/**       * 此时会发出一条sql,将所有学生全部查询出来,并放到session的一级缓存当中       * 当再次查询学生信息时,会首先去缓存中看是否存在,如果不存在,再去数据库中查询       * 这就是hibernate的一级缓存(session

2017-06-25 16:02:16 255

转载 Hibernate主题4——缓存机制

Hibernate缓存机制一、why(为什么要用Hibernate缓存?)Hibernate是一个持久层框架,经常访问物理数据库。为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。

2017-06-25 15:20:35 205

转载 Hibernate专题3——Hibernate源码中包的作用

net.sf.hibernate.*  该包的类基本上都是接口类和异常类   net.sf.hibernate.cache.*  JCS的实现类   net.sf.hibernate.cfg.*  配置文件读取类   net.sf.hibernate.collection.*  Hibernate集合接口实现类,例如List,Set,Bag等等,Hibernate之所以要自行编写集合接

2017-06-25 12:49:32 263

转载 Hibernate专题2——hibernate主键介绍

Hibernate主键介绍   Assigned   Assigned方式由程序生成主键值,并且要在save()之前指定否则会抛出异常   特点:主键的生成值完全由用户决定,与底层数据库无关。用户需要维护主键值,在调用session.save()之前要指定主键值。       Hilo   Hilo使用高低位算法生成主键,高低位算法使用一个高位值和一个低位值,然后把算法

2017-06-25 12:38:38 225

转载 Hiberante专题1——Hibernate的并发机制及事务处理

数据库事务的定义数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。● 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行● 一致性(consistent),事务在完成时,必须使所有的数据都保持一致状态。●

2017-06-25 12:04:44 732

空空如也

空空如也

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

TA关注的人

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