- 博客(80)
- 收藏
- 关注
原创 java并发编程
一.CountDownLatch用法CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。public class Test { public static void main(String[] ...
2016-01-20 18:17:31
154
原创 上传文件校验
为了防止一些用户将一些病毒文件上传到服务器,我们一般需要对上传的文件做合法性校验, 当时有时候简单的后缀和contentType校验任然还有风险,下面我们一起来讨论一下上传的文件需要做哪些合法性校验。 1、文件后缀校验这层校验应该说是最基本的校验了,我们不能允许用户上传一些exe、jsp、php、asp、html等可执行的文件。 2、contentType校验conte...
2015-10-12 17:18:01
1144
原创 命令行查看jvm使用情况
1、jpsjps -v //查询java进程pid 2、jstatjstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。 jstat -class pid:显示加载class的数量,及所占空间等信息。 jstat -compiler pid:显示VM实时编译的数量等信息。...
2015-01-13 17:48:16
432
原创 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
160
原创 24、访问者模式
访问者模式 1、定义封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 2、结构图 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。...
2014-09-05 09:48:37
139
原创 23、模板方法模式
模板方法模式 1、定义定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤 2、结构图 AbstractSort是一个抽象类,将sort方法抽象,showSortResult实现。ConcreteSort是对AbstractSort的实现,并实现sort方法3、代码(1)Abstract...
2014-09-04 14:58:43
107
原创 22、状态模式
状态模式 1、定义许一个对象的内部状态改变时改变它的行为。 2、结构图 Light :环境,也称为上下文,用来定义客户感兴趣的接口,同时维护一个具体处理当前状态的实例对象。LightState:状态接口,用来封装与上下文的一个特定状态所对应的行为。On/OffState:具体实现状态的处理类,每个实现一个跟上下文相关联的状态的具体处理。 3、代码...
2014-09-04 14:25:55
121
原创 21、备忘录模式
备忘录模式 1、定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 2、结构图 Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。Mement...
2014-08-29 11:17:50
103
原创 20、迭代器模式
迭代器模式 1、定义提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 2、结构图 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set...
2014-08-29 10:29:34
114
原创 19、解释器模式
解释器模式 1、定义给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 2、结构图 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释器TerminalExpression和非终结符解释...
2014-08-27 17:37:10
96
原创 18、中介者模式
中介者模式 1、定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 2、结构图 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类...
2014-08-27 16:33:13
158
原创 17、命令模式
命令模式 1、定义将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作 2、结构图 ● 客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。 ● 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。 ● 具体命令(ConcreteC...
2014-08-27 15:00:29
92
原创 16、责任链模式
责任量模式 1、定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 2、结构图 3、代码(1)过滤器接口filterpubl...
2014-08-26 17:21:38
121
原创 15、抽象工厂模式
抽象工厂模式 1、定义多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。 2、结构图产品类接口:ProductA、ProductB定义两个产品接口产品实现:ProductA1、ProductA2、ProductB1、ProductB2抽象工厂接口:AbstractFactory工...
2014-08-26 15:57:53
121
原创 14、建造者模式
建造者模式 1、定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2、结构部 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象...
2014-08-26 15:05:14
132
原创 jmx 监控hibernate 和c3p0
<beanid="jmxExporter"class="org.springframework.jmx.export.MBeanExporter"><propertyname="beans"><map><entrykey="Hibernate:name=statistics"><ref
2014-08-21 11:32:26
467
原创 设计模式六大设计原则之开闭原则
开闭原则 1、定义一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 2、问题由来在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 3、解决方案当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变...
2014-08-21 11:28:42
136
原创 设计模式六大设计原则之迪米特法则
迪米特法则 1、定义一个对象应该对其他对象保持最少的了解。 2、问题由来类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 3、解决方案尽量降低类与类之间的耦合。 4、详解 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低...
2014-08-21 11:20:37
137
原创 设计模式六大设计原则之接口隔离原则
接口隔离原则 1、定义客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 2、问题由来类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 3、问题由来将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。...
2014-08-21 10:50:24
107
原创 设计模式六大设计原则之依赖倒置原则
依赖倒置原则 1、定义高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 2、问题由来 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 3、解决方案...
2014-08-21 10:37:10
135
原创 设计模式六大设计原则之里氏替换原则
里氏替换原则肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 1、定义如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T...
2014-08-19 18:26:24
122
原创 设计模式六大设计原则之单一职责原则
单一职责原则1、定义不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 2、问题由来类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 3、解决方案遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,...
2014-08-19 17:53:59
103
原创 13、享元模式
享元模式1、定义享元模式(FlyWeight),运用共享技术有效的支持大量细粒度的对象。 2、结构图 单纯享元模式所涉及到的角色如下: ● 抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法。 ● 具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。如果有内蕴状态的话,必须负责...
2014-08-18 15:37:06
124
原创 12、门面模式(facade)
门面模式(facade)1、门面模式门面模式是对象的结构模式,是通过一个代理一些复杂而又繁琐的操作,客户端只需调用改类中的方法,不必关心后台复杂的操作。 2、结构 在结构图中包含两种角色‘门面角色:客户端可以通过门面角色与各个子系统进行通信。子系统角色:可以同时有一个或者多个 3、代码(1)电灯类public class Light { publ...
2014-08-15 15:03:20
91
原创 11、观察者模式
观察者模式1、定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2、结构 3、代码(1)主题接口 public interface ISubject { public ISubject registerObserver(IObserver obs...
2014-08-14 15:05:44
84
原创 根据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
133
原创 Maven依赖jar包的查询
1、查询地址1 http://search.maven.org/#browse2、查询地址2 http://mvnrepository.com/
2014-08-14 10:16:18
95
原创 10、策略模式
策略模式1、定义策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2、结构图 3、代码(1)策略接口public interface IStrategy { public int calculate(int a, int b); }(2)加法算法实现IStrategy ...
2014-08-12 17:03:45
97
原创 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
716
原创 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
161
原创 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
212
原创 JVM系列三:JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置...
2013-07-25 11:29:30
81
原创 java.net.SocketException: Software caused connection abort: socket write error解决
这个异常(com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure Last packet sent to the server was X ms ago),是由于MySQL服务在长时间不连接之后断开了,断开之后的首次请求会抛出这个异常。那么既然是连接超时的问题,就要去MySQL...
2013-07-22 14:20:57
2081
1
原创 9、装饰模式
装饰模式1、装饰模式装饰模式(Decorator)又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,可以在不创造更多的子类的模式下,将对象的功能加以扩展。 2、结构 装饰模式中的各个角色有:(1)抽象构件角色:给出一个抽象接口,(2)具体构件角色:对抽象构件角色的具体实现(3)装饰角色:持有一个构件对象的实例...
2013-07-16 14:43:38
121
原创 8、组合模式
组合模式1、组合模式组合模式属于对象中的结构模式,有时又叫做部分-整体模式。合成模式是将部分和整体的关系用树结构表示出来。2、结构 以上类图结构涉及三种角色:抽象构件角色:这是一个抽象角色,它给参加组合的对象规定一个接口,这个角色给出共有的接口和默认行为。树叶构件角色:代表参加组合的树叶对象。树枝构件角色:代表参加组合的有子对象的对象,并给出树枝构件对象...
2013-07-11 14:32:42
152
原创 7、桥梁模式
桥梁模式(bridge pattern)1、桥梁模式桥梁模式的用意是“使抽象化和实现化解耦,使得两者可以独立的变化”。 抽象化存在于多个实例之间共同的概念性联系,就是抽象化。 实现化抽象化给出的具体实现就是实现化。 解耦所谓耦合就是两个实体之间的某种强关联,将他们之间的强关联去掉就是解耦,一般情况下通过聚合代替继承实现解耦。 2、结构图...
2013-07-11 09:50:58
102
原创 6、适配器模式
设配器模式1、结构适配器模式就是将一个接口转换为另一种接口以便使用。例如实例中需要将ps2port设备转换为usbport设备以便computer使用这时就需要一个转换器(适配器)PS2PortToUsbPort实现UsbPort接口 2、代码(1)适合电脑使用的use接口public interface UsbPort { public void exe()...
2013-07-10 12:57:22
70
原创 4、原型模式
原型模式1、结构原型类必须实现一个标示接口Cloneable,表示这个类支持复制,否则调用clone方法会报CloneNotSupportException异常。 2、浅克隆和深克隆(1)浅克隆被复制对象的所有变量都与原来的对象相同,而所有对其他对象的引用都指向原来的对象。(2)深克隆深克隆不仅被复制的所有变量与原理啊对象相同,而且其他对象的引用也会被创建一个新...
2013-07-10 12:33:57
90
原创 3、单例模式
单例模式1、三大要点(1)只能有一个实例(2)自己创建实例(3)必须自行向整个系统中提供这个实例因此单例类中的构造方法必须是私有方法 2、饿汉式单例类/** * 饿汉式单例 * @author Administrator * */public class Singeton { /** * 加载对象时创建Singeton类 */...
2013-07-09 10:14:30
74
原创 2、工厂方法模式
工厂方法模式工厂方法模式是类的创建模式,又叫虚拟构造子方法或者多态工厂模式。1、结构图 核心的工厂类不在负责产品的创建,而具体创建的工作交给子类去做。 ...
2013-07-08 13:53:00
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人