<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangmuduxingxia2的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangmuduxingxia2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangmuduxingxia2]]></copyright><item><title><![CDATA[java并发编程]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84762429</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84762429</guid><author>wangmuduxingxia2</author><pubDate>Wed, 20 Jan 2016 18:17:31 +0800</pubDate><description><![CDATA[
一.CountDownLatch用法
CountDownLatch类位于java.util.concurrent包下，利用它可以实现类似计数器的功能。比如有一个任务A，它要等待其他4个任务执行完毕之后才能执行，此时就可以利用CountDownLatch来实现这种功能了。
public class Test {

     public static void main(String[] ...]]></description><category></category></item><item><title><![CDATA[上传文件校验]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84744509</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84744509</guid><author>wangmuduxingxia2</author><pubDate>Mon, 12 Oct 2015 17:18:01 +0800</pubDate><description><![CDATA[
为了防止一些用户将一些病毒文件上传到服务器，我们一般需要对上传的文件做合法性校验， 当时有时候简单的后缀和contentType校验任然还有风险，下面我们一起来讨论一下上传的文件需要做哪些合法性校验。
 
1、文件后缀校验
这层校验应该说是最基本的校验了，我们不能允许用户上传一些exe、jsp、php、asp、html等可执行的文件。
 
2、contentType校验
conte...]]></description><category></category></item><item><title><![CDATA[命令行查看jvm使用情况]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84695964</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84695964</guid><author>wangmuduxingxia2</author><pubDate>Tue, 13 Jan 2015 17:48:16 +0800</pubDate><description><![CDATA[
1、jps
jps -v //查询java进程pid
 
2、jstat
jstat工具特别强大，有众多的可选项，详细查看堆内各个部分的使用量，以及加载类的数量。使用时，需加上查看进程的进程id，和所选参数。以下详细介绍各个参数的意义。 jstat -class pid:显示加载class的数量，及所占空间等信息。 jstat -compiler pid:显示VM实时编译的数量等信息。...]]></description><category></category></item><item><title><![CDATA[mybatis打印sql语句]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84662277</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84662277</guid><author>wangmuduxingxia2</author><pubDate>Sat, 11 Oct 2014 17:42:19 +0800</pubDate><description><![CDATA[
 logbak 配置
&amp;lt;logger name=&quot;com.mybatis&quot; level=&quot;DEBUG&quot; /&amp;gt;    
&amp;lt;logger name=&quot;org.apache.ibatis&quot; level=&quot;DEBUG&quot; /&amp;gt;    
&amp;lt;logger name=&quot;java.sql.Connection&quot; level=&quot;DEBUG&]]></description><category></category></item><item><title><![CDATA[24、访问者模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84632461</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84632461</guid><author>wangmuduxingxia2</author><pubDate>Fri, 05 Sep 2014 09:48:37 +0800</pubDate><description><![CDATA[
访问者模式
 
1、定义
封装某些作用于某种数据结构中各元素的操作，它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
 
2、结构图
 
 


 抽象访问者：抽象类或者接口，声明访问者可以访问哪些元素，具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。

访问者：实现抽象访问者所声明的方法，它影响到访问者访问到一个类后该干什么，要做什么事情。

...]]></description><category></category></item><item><title><![CDATA[23、模板方法模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84632183</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84632183</guid><author>wangmuduxingxia2</author><pubDate>Thu, 04 Sep 2014 14:58:43 +0800</pubDate><description><![CDATA[
模板方法模式
 
1、定义
定义一个操作中算法的框架，而将一些步骤延迟到子类中，使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤
 
2、结构图
 
 

AbstractSort是一个抽象类，将sort方法抽象，showSortResult实现。
ConcreteSort是对AbstractSort的实现，并实现sort方法

3、代码
（1）Abstract...]]></description><category></category></item><item><title><![CDATA[22、状态模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84632166</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84632166</guid><author>wangmuduxingxia2</author><pubDate>Thu, 04 Sep 2014 14:25:55 +0800</pubDate><description><![CDATA[
状态模式
 
1、定义
许一个对象的内部状态改变时改变它的行为。
 
2、结构图
 

Light ：环境，也称为上下文，用来定义客户感兴趣的接口，同时维护一个具体处理当前状态的实例对象。

LightState：状态接口，用来封装与上下文的一个特定状态所对应的行为。

On/OffState：具体实现状态的处理类，每个实现一个跟上下文相关联的状态的具体处理。
 
3、代码...]]></description><category></category></item><item><title><![CDATA[21、备忘录模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84630041</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84630041</guid><author>wangmuduxingxia2</author><pubDate>Fri, 29 Aug 2014 11:17:50 +0800</pubDate><description><![CDATA[
备忘录模式
 
1、定义
在不破坏封闭的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
 
2、结构图
 

Originator(发起人)：负责创建一个备忘录Memento，用以记录当前时刻自身的内部状态，并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。
Mement...]]></description><category></category></item><item><title><![CDATA[20、迭代器模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629997</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629997</guid><author>wangmuduxingxia2</author><pubDate>Fri, 29 Aug 2014 10:29:34 +0800</pubDate><description><![CDATA[
迭代器模式
 
1、定义
提供一种方法访问一个容器对象中各个元素，而又不暴露该对象的内部细节。
 
2、结构图
 

抽象容器：一般是一个接口，提供一个iterator()方法，例如java中的Collection接口，List接口，Set接口等。
具体容器：就是抽象容器的具体实现类，比如List接口的有序列表实现ArrayList，List接口的链表实现LinkList，Set...]]></description><category></category></item><item><title><![CDATA[19、解释器模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629448</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629448</guid><author>wangmuduxingxia2</author><pubDate>Wed, 27 Aug 2014 17:37:10 +0800</pubDate><description><![CDATA[
解释器模式
 
1、定义
给定一种语言，定义他的文法的一种表示，并定义一个解释器，该解释器使用该表示来解释语言中句子。
 
2、结构图
 

抽象解释器：声明一个所有具体表达式都要实现的抽象接口（或者抽象类），接口中主要是一个interpret()方法，称为解释操作。具体解释任务由它的各个实现类来完成，具体的解释器分别由终结符解释器TerminalExpression和非终结符解释...]]></description><category></category></item><item><title><![CDATA[18、中介者模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629400</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629400</guid><author>wangmuduxingxia2</author><pubDate>Wed, 27 Aug 2014 16:33:13 +0800</pubDate><description><![CDATA[
中介者模式
 
1、定义
用一个中介者对象封装一系列的对象交互，中介者使各对象不需要显示地相互作用，从而使耦合松散，而且可以独立地改变它们之间的交互。
 
2、结构图
 

 抽象中介者：定义好同事类对象到中介者对象的接口，用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法，并由子类去实现。
中介者实现类：从抽象中介者继承而来，实现抽象中介者中定义的事件方法。从一个同事类...]]></description><category></category></item><item><title><![CDATA[17、命令模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629319</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84629319</guid><author>wangmuduxingxia2</author><pubDate>Wed, 27 Aug 2014 15:00:29 +0800</pubDate><description><![CDATA[
命令模式
 
1、定义
将一个请求封装为一个对象，从而可用不同的请求对客户进行参数化；对请求排队或记录日志，以及支持可撤销的操作
 
 2、结构图
 
　　●　　客户端(Client)角色：创建一个具体命令(ConcreteCommand)对象并确定其接收者。
　　●　　命令(Command)角色：声明了一个给所有具体命令类的抽象接口。
　　●　　具体命令(ConcreteC...]]></description><category></category></item><item><title><![CDATA[16、责任链模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84628982</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84628982</guid><author>wangmuduxingxia2</author><pubDate>Tue, 26 Aug 2014 17:21:38 +0800</pubDate><description><![CDATA[
责任量模式
 
1、定义
责任链模式是一种对象的行为模式。在责任链模式里，很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求，这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
 
2、结构图
 
3、代码
（1）过滤器接口filter
publ...]]></description><category></category></item><item><title><![CDATA[15、抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84628936</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84628936</guid><author>wangmuduxingxia2</author><pubDate>Tue, 26 Aug 2014 15:57:53 +0800</pubDate><description><![CDATA[
抽象工厂模式
 
1、定义
多个抽象产品类，派生出多个具体产品类；一个抽象工厂类，派生出多个具体工厂类；每个具体工厂类可创建多个具体产品类的实例。
 
2、结构图



产品类接口：ProductA、ProductB定义两个产品接口

产品实现：ProductA1、ProductA2、ProductB1、ProductB2

抽象工厂接口：AbstractFactory

工...]]></description><category></category></item><item><title><![CDATA[14、建造者模式]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84628912</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84628912</guid><author>wangmuduxingxia2</author><pubDate>Tue, 26 Aug 2014 15:05:14 +0800</pubDate><description><![CDATA[
建造者模式
 
1、定义
将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。
 
2、结构部
  


产品类：一般是一个较为复杂的对象，也就是说创建对象的过程比较复杂，一般会有比较多的代码量。在本类图中，产品类是一个具体的类，而非抽象类。实际编程中，产品类可以是由一个抽象类与它的不同实现组成，也可以是由多个抽象类与他们的实现组成。

抽象建造者：引入抽象...]]></description><category></category></item><item><title><![CDATA[jmx  监控hibernate 和c3p0]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627532</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627532</guid><author>wangmuduxingxia2</author><pubDate>Thu, 21 Aug 2014 11:32:26 +0800</pubDate><description><![CDATA[
&amp;lt;beanid=&quot;jmxExporter&quot;class=&quot;org.springframework.jmx.export.MBeanExporter&quot;&amp;gt;
&amp;lt;propertyname=&quot;beans&quot;&amp;gt;
&amp;lt;map&amp;gt;
&amp;lt;entrykey=&quot;Hibernate:name=statistics&quot;&amp;gt;
&amp;lt;ref]]></description><category></category></item><item><title><![CDATA[设计模式六大设计原则之开闭原则]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627529</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627529</guid><author>wangmuduxingxia2</author><pubDate>Thu, 21 Aug 2014 11:28:42 +0800</pubDate><description><![CDATA[
开闭原则
 
1、定义
一个软件实体如类、模块和函数应该对扩展开放，对修改关闭。
 
2、问题由来
在软件的生命周期内，因为变化、升级和维护等原因需要对软件原有代码进行修改时，可能会给旧代码中引入错误，也可能会使我们不得不对整个功能进行重构，并且需要原有代码经过重新测试。
 
3、解决方案
当软件需要变化时，尽量通过扩展软件实体的行为来实现变化，而不是通过修改已有的代码来实现变...]]></description><category></category></item><item><title><![CDATA[设计模式六大设计原则之迪米特法则]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627525</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627525</guid><author>wangmuduxingxia2</author><pubDate>Thu, 21 Aug 2014 11:20:37 +0800</pubDate><description><![CDATA[
迪米特法则
 
1、定义
一个对象应该对其他对象保持最少的了解。
 
2、问题由来
类与类之间的关系越密切，耦合度越大，当一个类发生改变时，对另一个类的影响也越大。
 
3、解决方案
尽量降低类与类之间的耦合。
 
4、详解
       自从我们接触编程开始，就知道了软件编程的总的原则：低耦合，高内聚。无论是面向过程编程还是面向对象编程，只有使各个模块之间的耦合尽量的低...]]></description><category></category></item><item><title><![CDATA[设计模式六大设计原则之接口隔离原则]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627500</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627500</guid><author>wangmuduxingxia2</author><pubDate>Thu, 21 Aug 2014 10:50:24 +0800</pubDate><description><![CDATA[
接口隔离原则
 
1、定义
客户端不应该依赖它不需要的接口；一个类对另一个类的依赖应该建立在最小的接口上。
 
2、问题由来
类A通过接口I依赖类B，类C通过接口I依赖类D，如果接口I对于类A和类B来说不是最小接口，则类B和类D必须去实现他们不需要的方法。
 
3、问题由来
将臃肿的接口I拆分为独立的几个接口，类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。...]]></description><category></category></item><item><title><![CDATA[设计模式六大设计原则之依赖倒置原则]]></title><link>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627491</link><guid>https://blog.youkuaiyun.com/wangmuduxingxia2/article/details/84627491</guid><author>wangmuduxingxia2</author><pubDate>Thu, 21 Aug 2014 10:37:10 +0800</pubDate><description><![CDATA[
依赖倒置原则
 
1、定义
高层模块不应该依赖低层模块，二者都应该依赖其抽象；抽象不应该依赖细节；细节应该依赖抽象。
 
2、问题由来
       类A直接依赖类B，假如要将类A改为依赖类C，则必须通过修改类A的代码来达成。这种场景下，类A一般是高层模块，负责复杂的业务逻辑；类B和类C是低层模块，负责基本的原子操作；假如修改类A，会给程序带来不必要的风险。
 
3、解决方案...]]></description><category></category></item></channel></rss>