`
zhangwei_david
  • 浏览: 477083 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
    享元模式(Flyweight Pattern)是对象的结构模式。享元模式以共享的方式高效地支持大量细粒度对象的创建。    享元对象能够做到共享的关键是区分内蕴状态和外蕴状态;内蕴状态就是指不随环境的改变而改变、可以共享的状态,外蕴状态是随环境的改变而改变,不可以共享的状态;因为外蕴状态不可以共享所以外蕴状态的保存时由客户端进行保存的,在需要的时候再传入到享元对象内部。    在日常的编辑器中,字体的大小样式都是可以改变的,但是字符是的值是一直不变的;输入的A,不管是斜体的还是黑体的它永远都是A。由此可以发现A的值是一个内蕴状态,而A的字体样式是一个外蕴状态。 /** * ...
   状态模式(State Pattern)是对象行为模式的一种;它的意图是:允许一个对象在其内部状态改变的时改变它的行为。     主要角色有:       context(环境),State(抽象的状态角色),ConcreteState(真实的状态角色)  状态模式使用的场景:   一个对象的行为依赖于它所处于的状态,对象的行为必须随着其状态的改变而改变 对象在某个方法中依赖于一重或多重的条件转移语句,其中有大量的代码。状态模式把条件转移语句你的每一个分支都包装到一个独立的类中。使得这些条件转移语句能够以类的形式独立的存在和演进。   交通灯的状态有:红灯,黄灯和绿灯。 ...
    建造者模式(Builder Pattern)是属于创建型模式,它的意图是:将一个复杂的对象的创建和表示分离,是的同样的构建过程可以创建不同的表示。    如果有一个类Test有1个属性 name,不管我们如何穿件这个对象的实例都不会很麻烦。 public class Test { private String name; public Test(String name) { super(); this.name = name; } public Test() { super() ...
   在设计模式一书中是这样描述抽象工厂的意图的: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的实现类。   使用场景:一个系统要独立于它的产品创建、组合和表示时,且一个该系统提供多个产品系列,系统每次仅消费其中一个系类时可以使用抽象工厂模式。       假设现在手机厂商在生产手机(phone)的同时也生产平板(Pad)(这两个产品是一个系列,都是移动端产品),简单的定义两个产品接口   /** * * @author zhangwei_david * @version $Id: Pad.java, v 0.1 2015年2月28日 下午4:54:33 ...
   在Spring 中集成iBatis的配置是很简单了,下面是一个简单的配置示例:   Spring 的配置文件     <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.or ...
      使用JMS PTP消息和pub/sub可以将两个应用系统集成在一起,在Spring中还提供了基于JMS的RPC方案。Spring 提供的方案有一个缺点就是只能使用点对点消息。 导出基于JMS的服务 JmsInvokerServiceExporter是Spring 提供的基于JMS服务导出的工厂类   <!-- --> <bean id="jmsServiceExporter" class="org.springframework.jms.remoting.JmsInvokerServiceExporter" ...
    在调用JMS消息消费者的receive()方法接收消息时,调用线程在消息可用之前一直阻塞。该线程出了等待还是等待,无所事事。这样的消息接收是同步消息接收,因为只用等到消息到达才能接收线程的工作。      有同步的消息接收就有异步的消息接收,异步的消息接收就是注册一个消息监听器,该消息监听器必须实现javax.jms.MessageListener接口,当消息到达时将调用onMessage()方法,以消息作为方法的参数。       原生的接口是javax.jms.MessageListener,除了这个原生的接口外,Spring 还提供了 SessionAwareMessag ...
     JMS 简介:           JMS的全称是Java Message Service,即Java消息服务。是JAVA平台中关于面向消息中间件的API.JMS提供了应用之间的异步通信机制。    JMS优点: 异步通信;当使用JMS发送消息时,客户端不必等待消息被处理;客户端只需要将消息发送给消息代理,就可以确保消息会被发送给相应的目的地。 面向消息和解耦;使用JMS进行异步通信,客户端不要要知道目的地的地址。 确保投递 消息的传递方式有: 点对点 (Point-to-Point PTP ):一条消息只能传递给一个客户端,也就是说只要有一个客户端消费了该条消 ...
    JMX 是Java 管理扩展(Java Management Extensions);JMX是一种管理和监控系统资源的技术。这种规范为运行管理系统体统了强大的功能。这些资源有托管Bean(managed beans,MBeans)表示。Spring 可以将任何Spring 管理的Bean输出为Mbean,而不需要在该Bean中定义任何JMX特有的属性。可以简单地通过声明一个MbeanExporter实例来完成将普通Bean 导出为Mbean.        如果Bean实现了任意一个JMX的管理接口 MBeanExporter可以简单地通过自动检测过程注册服务器的MBean   ...
      在java web 项目中对频繁读取且相对稳定的数据一般都是用了缓存,这样可以极大地减少数据库的压力且提高的响应的速度。 一般都是,通过key 从缓存中读取value 如果value 为空则读取DB,将DB读取的数据再放入缓存这样的 ...
    合成模式(Composite)是一组对象的组合,这些对象可以是容器对象,表现为组的概念;另外一些对象则代表了单个对象,称为叶子对象。     组对象可以包含叶子对象也可以包含其他组对象。组对象和叶子对象定义相同的行为。     合成模式(Composite)的意图就是为了保证客户端调用单对象和调用组合对象的一致性,也就需要组合对象和单个对象需要共享同一个接口。   在对组合对象建模时,为了防止死循环,可以确保组合对象都是树形结构。      有一个对象模型需要校验,是用合成模式的校验的结果是:      Java代码 /**   *   * @author  ...
  ThreadPoolExecutor.AbortPolicy()抛出java.util.concurrent.RejectedExecutionException异常 终止策略是默认的饱和策略; ThreadPoolExecutor.CallerRunsPolicy()当抛出RejectedExecutionException异常时,会调rejectedExecution方法 调用者运行策略实现了一种调节机制,该策略既不会抛弃任务也不会爆出异常,而是将任务退回给调用者,从而降低新任务的流量 ThreadPoolExecutor.DiscardOldestPolicy() ...

Java 之 enum

    博客分类:
  • Java
    关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序的组件使用。这是一种非常有用的功能。创建一个enum时,编译器会生成一个相关的类该类继承自 java.lang.Enum.通过Enum 这个类的源码可以看到有这样几个方法 name(),ordinal()等方法     public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { private final ...
      在学习Spring AOP 的时候我们知道Spring AOP 的实现方式是通过JDK 的动态代理和CGLIB的动态代理实现的,那么什么是CGLIB呢?        CGLIB其实就是封装了ASM(Java字节码操控框架)了的功能强大,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。     我们常见的就是Enhancer类。它可以动态生成一个子类使方法可以被拦截;处理实现接口,该类还额可以动态生成父类中非final方法的子类,并提供回调用户自定义拦截器的钩子。原生的和普遍被使用的回调类型是MethodInterceptor ,它在AOP方 ...
         ThreadPoolExecutor 为一些Executor提供了基本实现,这些Executor是由Executors中的工厂方法创建的;如:newCachedThreadPool,newScheduledThreadPool,newFixedThreadPool 。ThreadPoolExecutor是一个灵活的、稳定的线程池,允许各种定制。    ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue< ...
Global site tag (gtag.js) - Google Analytics