![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 68
wangmuduxingxia2
这个作者很懒,什么都没留下…
展开
-
23种设计模式
1、六大设计原则(1)单一职责原则(2)里氏替换原则(3)依赖倒置原则(4)接口隔离原则(5)迪米特法则(6)开闭原则 2、按照目的来分,23中设计模式可以分为创建型、结构型、行为型。 (1)创建型模式用来处理对象的创建过程 工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Patte...原创 2010-10-30 11:41:56 · 84 阅读 · 0 评论 -
14、建造者模式
建造者模式 1、定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2、结构部 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象...原创 2014-08-26 15:05:14 · 104 阅读 · 0 评论 -
15、抽象工厂模式
抽象工厂模式 1、定义多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。 2、结构图产品类接口:ProductA、ProductB定义两个产品接口产品实现:ProductA1、ProductA2、ProductB1、ProductB2抽象工厂接口:AbstractFactory工...原创 2014-08-26 15:57:53 · 95 阅读 · 0 评论 -
16、责任链模式
责任量模式 1、定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 2、结构图 3、代码(1)过滤器接口filterpubl...原创 2014-08-26 17:21:38 · 93 阅读 · 0 评论 -
17、命令模式
命令模式 1、定义将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作 2、结构图 ● 客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。 ● 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。 ● 具体命令(ConcreteC...原创 2014-08-27 15:00:29 · 70 阅读 · 0 评论 -
18、中介者模式
中介者模式 1、定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 2、结构图 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类...原创 2014-08-27 16:33:13 · 133 阅读 · 0 评论 -
19、解释器模式
解释器模式 1、定义给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 2、结构图 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释器TerminalExpression和非终结符解释...原创 2014-08-27 17:37:10 · 70 阅读 · 0 评论 -
20、迭代器模式
迭代器模式 1、定义提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 2、结构图 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set...原创 2014-08-29 10:29:34 · 83 阅读 · 0 评论 -
21、备忘录模式
备忘录模式 1、定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 2、结构图 Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。Mement...原创 2014-08-29 11:17:50 · 80 阅读 · 0 评论 -
22、状态模式
状态模式 1、定义许一个对象的内部状态改变时改变它的行为。 2、结构图 Light :环境,也称为上下文,用来定义客户感兴趣的接口,同时维护一个具体处理当前状态的实例对象。LightState:状态接口,用来封装与上下文的一个特定状态所对应的行为。On/OffState:具体实现状态的处理类,每个实现一个跟上下文相关联的状态的具体处理。 3、代码...原创 2014-09-04 14:25:55 · 92 阅读 · 0 评论 -
23、模板方法模式
模板方法模式 1、定义定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤 2、结构图 AbstractSort是一个抽象类,将sort方法抽象,showSortResult实现。ConcreteSort是对AbstractSort的实现,并实现sort方法3、代码(1)Abstract...原创 2014-09-04 14:58:43 · 83 阅读 · 0 评论 -
24、访问者模式
访问者模式 1、定义封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 2、结构图 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。...原创 2014-09-05 09:48:37 · 116 阅读 · 0 评论 -
mybatis打印sql语句
logbak 配置<logger name="com.mybatis" level="DEBUG" /> <logger name="org.apache.ibatis" level="DEBUG" /> <logger name="java.sql.Connection" level="DEBUG&原创 2014-10-11 17:42:19 · 129 阅读 · 0 评论 -
设计模式六大设计原则之开闭原则
开闭原则 1、定义一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 2、问题由来在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 3、解决方案当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变...原创 2014-08-21 11:28:42 · 102 阅读 · 0 评论 -
设计模式六大设计原则之迪米特法则
迪米特法则 1、定义一个对象应该对其他对象保持最少的了解。 2、问题由来类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 3、解决方案尽量降低类与类之间的耦合。 4、详解 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低...原创 2014-08-21 11:20:37 · 109 阅读 · 0 评论 -
JVM系列三:JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置...原创 2013-07-25 11:29:30 · 55 阅读 · 0 评论 -
tomcat jvm配置与监控
tomcat中jvm配置与监控 1、配置在tomcat中bin\catalina.bat或者catalina.sh文件中配置jvm参数set JAVA_OPTS=-server -Xms768m -Xmx1364m -XX:PermSize=64m -XX:MaxPermSize=172m xms:表示初始化堆栈大小xmx:表示最大堆栈大小XX:PermSize...原创 2013-07-25 12:49:27 · 164 阅读 · 0 评论 -
jconsole监控linux中tomcat内存使用情况
1、修改/etc/sysconfig/network文件中的HOSTNAMEHOSTNAME对应的值必须是/etc/hosts中本地ip对应的其中一个值 2、修改/etc/hosts文件将127.0.01改为局域网ip地址 3、添加jmx访问用户名密码在jdk/jre/lib/management文件中根据jmxremote.password.template创建j...原创 2014-07-02 18:04:29 · 133 阅读 · 0 评论 -
java 命令简单查看jvm内存使用状况
1、jps 虚拟机进程状况工具语法 jsp [option] [hostid]选项作用-q只显示lvmid-m输出虚拟机启用时传入main方法参数-l输出主类全名-v输出jvm参数 注意:如果在linux环境中jps命令不能输出vmid数据(jdk1.6.0.23/24 bug),需要修改catalina.sh文...原创 2014-07-04 10:53:33 · 674 阅读 · 0 评论 -
根据wsdl生成java客户端
1、防止生产客户端程序错误-frontend jaxws21wsdl2java -p client -d stub -frontend jaxws21 -client urlwsdl2java -d d:/ -keep -frontend jaxws21 http://localhost:8888/ms?wsdl原创 2014-08-14 10:19:27 · 110 阅读 · 0 评论 -
11、观察者模式
观察者模式1、定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2、结构 3、代码(1)主题接口 public interface ISubject { public ISubject registerObserver(IObserver obs...原创 2014-08-14 15:05:44 · 61 阅读 · 0 评论 -
12、门面模式(facade)
门面模式(facade)1、门面模式门面模式是对象的结构模式,是通过一个代理一些复杂而又繁琐的操作,客户端只需调用改类中的方法,不必关心后台复杂的操作。 2、结构 在结构图中包含两种角色‘门面角色:客户端可以通过门面角色与各个子系统进行通信。子系统角色:可以同时有一个或者多个 3、代码(1)电灯类public class Light { publ...原创 2014-08-15 15:03:20 · 67 阅读 · 0 评论 -
13、享元模式
享元模式1、定义享元模式(FlyWeight),运用共享技术有效的支持大量细粒度的对象。 2、结构图 单纯享元模式所涉及到的角色如下: ● 抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法。 ● 具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。如果有内蕴状态的话,必须负责...原创 2014-08-18 15:37:06 · 92 阅读 · 0 评论 -
设计模式六大设计原则之单一职责原则
单一职责原则1、定义不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 2、问题由来类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 3、解决方案遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,...原创 2014-08-19 17:53:59 · 70 阅读 · 0 评论 -
设计模式六大设计原则之里氏替换原则
里氏替换原则肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 1、定义如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T...原创 2014-08-19 18:26:24 · 92 阅读 · 0 评论 -
设计模式六大设计原则之依赖倒置原则
依赖倒置原则 1、定义高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 2、问题由来 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 3、解决方案...原创 2014-08-21 10:37:10 · 103 阅读 · 0 评论 -
设计模式六大设计原则之接口隔离原则
接口隔离原则 1、定义客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 2、问题由来类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 3、问题由来将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。...原创 2014-08-21 10:50:24 · 84 阅读 · 0 评论 -
上传文件校验
为了防止一些用户将一些病毒文件上传到服务器,我们一般需要对上传的文件做合法性校验, 当时有时候简单的后缀和contentType校验任然还有风险,下面我们一起来讨论一下上传的文件需要做哪些合法性校验。 1、文件后缀校验这层校验应该说是最基本的校验了,我们不能允许用户上传一些exe、jsp、php、asp、html等可执行的文件。 2、contentType校验conte...原创 2015-10-12 17:18:01 · 1036 阅读 · 0 评论