`
donald3003a
  • 浏览: 64006 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • 淼淼E馒头: 这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念 ...
    合成模式
文章列表
1、Boolean.getBoolean(String a) 如果String a = "true";该方法依然返回false 该方法的意义是访问一个系统含的key 比如 System.setProperty("test","a"); Boolean.getBoolean("test"); 这样改方法返回true; 2、加密相关的生成随即数 new SecureRandom(key.getBytes())这个方法在windows能够正常一个固定的随即数,但是在linux下面却生成不同的随即数,原因是在linux下面算 ...
1、SIC_INNER_SHOULD_BE_STATIC, Priority: Low BUG描述:This class is an inner class, but does not use its embedded reference to the object which created it.  This reference makes the instances of the class larger, and may keep the reference to the creator object alive longer than necessary.  If possible, ...
1、HTTP返回对象使用 out = response.getOutputStream(); out.write(date.getBytes()); 可以将文件访问到客户端,但是如果加上 out.flush() 方法 那么返回的将是chunked模式。这样的话接收端将会有所不同
1、ThreadLocal 简单介绍 ThreadLocal 可以允许用户在一个线程中共享变量 ThreadLocal 为解决多线程程序的并发问题提供了一种新的思路 它的具体实现是每一个线程都新建一个ThreadLocalMap对象,KEY为线程,VALUE为需要共享的值。而不是共享一个静态MAP对象来实现,这样的好处方便GC回收。 2、ThreadPoolExecutor 简单介绍 public ThreadPoolExecutor(int corePoolSize,                            int maximumPoolSize,              ...
原型模式就是通过clone来实现生成新对象的方法。 好处就是可以减少构造函数的重新生成,而且可以复制另外一个类的方案 下面用代码说明下 1、CAT public class Cat implements Cloneable { public int legs; public Name name; public int getLegs() { return legs; } public void setLegs(int legs) { this.legs = legs; } @Override public Cat clone() ...
一、Future模式 如果在Client远程调用的时候,Server端需要大量的时间去处理,这时候Server段先返回一个mock的对象让访问完成,Client端并不处理这个数据,而且去执行其他的程序,直到请求返回。 代码如下 1、Main方法 public class Mai ...
一、引用类型 java中存在4中引用类型,强引用,软引用,弱引用,虚引用。 1、强引用FinalReference。 这个关系是我们经常使用的赋值。特点是可以直接访问目标,jvm不会主动释放,可能会导致内存泄露。 2、软引用 第2强的引用类型,只有在jvm中堵使用率接近阙值的时候才会回收。如果内存足够,将一直使用。可以来实现对内存敏感的cache 3、弱引用 系统GC时,发现弱引用直接就回收。但是由于GC线程优先级低,不一定会立刻发现弱引用,所以这样弱应用也会持续一段时间。 软引用与弱引用很适合做可有可无的缓存数据,这样不会引起内存泄露。 4、虚引用 虚引用等于没有引用,开发用处不大。。 5、W ...
1、Value Object模式 当需要多次远程调用对象的时候,可以不存在逻辑关系,可以把远程对象封装成一个对象,这样只会调用一次,可以大大减少远程访问量。 2、业务代理模式 如果Service层需要多次远程调用对象,可以封装一个类,这样在调用的时候可以缓存一下已经取到的对象,可以大大提高效率 3、缓冲类(Buffer) 在进行IO操作的时候务必使用BufferedWriter或者BufferedOutputStream来进行包装,这样可以大大提高性能 4、String subString()方法可能引起内存泄露 subString()方法由于是自动扩展内部的char[]常用空间换时间的加速策略 ...
1、单例模式: 单例模式A public class Singleton { private Singleton() { } private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } } 效率最快开始加载的时候就优化。缺点就是没办法延迟加载 单例模式B public class LazySingleton { private LazySingleton() { } ...
抽象工厂模式就是用来实现创建一系列的产品解决方案的模式。跟工厂方法不同,工厂方法是争对单一产品的创建,比如以前例子中的手机,都是创建这个产品,而抽象工厂不但要创建手机,而且还要创建对应的耳机,而且要去创建的2个或者多个对象是有联系的。 下面看例子: 1、抽象工厂A 对一系统产品创建的接口 public interface AbstractFactory { public CPU createCPU(); public MainBoard createMainBoard(); } 2、具体的2个方案 public class SchemaA implements Abst ...
工厂方法模式就是父类不知道具体子类的情况下实现自己的功能。 这个模式跟IOC有异曲同工之处。IOC的接口也是不知道其实现,然后直接使用其功能。IOC的子类是通过反射来获取的。而且工厂方法子类是后面NEW出来的的。 先看具体的实现 1、接口 public interface Phone { public void call(); } 2、3个实现 public class Nokia implements Phone { @Override public void call() { System.out.println("This is n ...
这里介绍下aop最简单的两种实现方式。 1、动态代理 2、cglib 首先看动态代理。 动态代理大家都知道是必须基于接口的实现 1、接口 import com.xxx.aop.User; public interface IUserbean { public void addUser(User user); public User getUser(int id); ...
简单工厂模式: 很容易理解的设计模式 首先看代码 1、要生产的接口 public interface Phone { public void call(); } 2、生产东西的实现A public class Iphone implements Phone { @Override public void call() { System.out.println("This is iphone"); } } 3、生产东西的实现B public class Nokia implements Phone { @Overri ...
一直以来觉得容器都是一个很神秘的东西,一般开发的时候不会关心容器到底是怎么实现的。现在看了《How Tomcat Works》这本书后大概知道容器的实现,写出来自己巩固下 java 基础里面有章是关于Socket的,这个对象是通过http协议来发送消息的。tomcat既然是通过JAVA来实现他的底层也是通过Socket来实现。 首先实现一个Servlet容器。它的功能是可以加载serlvet对象以及访问静态文件。 1、Server端 import java.io.File; import java.io.IOException; import java.io.InputStream; ...
虽然从入门的时候就知道 final字段是不可能变字段 static字段是静态字段所有实例都共享这一个字段的值 但是有一个事情一直没搞清,就是既然 final的值不可变,那所有的实例对final字段的获取都是一样,那为什么还有必要用static final 这样重复的关键字 直到后面看见以下定义 public final double d = Math.random(); 这样的定义类在加载的时候会初始化d字段,但是由于使用随机数,我们可以很清楚的看见生成的2个实现中每一个d的值都不一样。 所以这时候使用 public final static double fs = Math.ran ...
Global site tag (gtag.js) - Google Analytics