java单例模式
单例模式单例模式是一种常见的设计模式,
单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。
单例模式有一下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
一、懒汉式单例在类被加载的时候,唯一实例已经被创建。这个设计模式在Java中容易实现,在别的语言中难以实现。
单例模式-懒汉式单例
public class LazySingleton {
/*** 私有静态对象,加载时候不做初始化 */
private static LazySingleton m_intance=null;
/*** 私有构造方法,避免外部创建实例 */
private LazySingleton(){}
/*** 静态工厂方法,返回此类的唯一实例.* 当发现实例没有初始化的时候,才初始化. * @return LazySingleton */
synchronized public static LazySingleton getInstance(){
if(m_intance==null){
m_intance=new LazySingleton();
}
return m_intance;
}
}
//测试一下单例模式
LazySingleton lazySingleton = LazySingleton.getInstance();
LazySingleton lazySingleton1 = LazySingleton.getInstance();
if(lazySingleton==lazySingleton1)){
System.out.println("同一个对象实例");
}else{
System.out.println("不是同一个对象实例");
}
二、饿汉式单例在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。
/***单例模式-饿汉式单例*/
public class EagerSingleton {
/**私有的(private)唯一(static final)实例成员,在类加载的时候就创建好了单例对象*/
private static final EagerSingleton m_instance = new EagerSingleton();
/*** 私有构造方法,避免外部创建实例 */
private EagerSingleton() {} //提供了一个空的构造方法
/*** 静态工厂方法,返回此类的唯一实例.* @return EagerSingleton */
public static EagerSingleton getInstance() {
return m_instance;
}
}
//下面来判断一下有没有达到单例效果(系统运行的时候只出来一个空例)
EagerSingleton eagerSingleton = EagerSingleton.getInstance();
EagerSingleton eagerSingleton1 = EagerSingle
相关文档:
最近看到一个有意思的树形结构,为每个节点添加了lft和rgt两个属性。这样查找该节点的子节点、查找该节点所有父节点,就不用去递归查询,只需要用between、and语句就可以实现。下面以创建一个栏目树为例,以下是我的理解。
一般来讲,我们创建栏目树的时候,大多只需要一个外键parentid来区分该节点属于哪个父节点。数 ......
经过了一周的努力,成功签下了上海宝信软件西安分公司。
在这里,简单分享一下这次的经历。
首先简单陈述下个人的一些基本信息,正规统招本科非计算机专业,2008-2009年8月接受东方标准软件工程师培训,完成了一些比较完整的项目,掌握了基本的J2EE开发的核心技术。培训结束了,参加了一些知名企业的校园 ......
项目中有的文件夹原来是svn版本控制的,现在不想控制了,就像把这个文件夹传给别人或者自己备份,但是看到那么多.svn文件夹实在不舒服,写了下面的简单程序用来删除这些文件,以后需要删除的话,设置好文件夹路径和要删除的文件夹名字跑一下就行了。
import java.io.File;
/*
* To change this template, choose Tools ......
web.xml文件对于配置任何Java Web应用都必需的。
(1)配置Struts的ActionServlet
<servlet><!--元素来声明ActionServlet-->
<servlet-name><!--元素:用来定义Servlet的名称-->
<servlet-class><!--元素:用来指定Servlet的完整类名-->
<servlet>
<servlet-name& ......
sqlite数据库第三方java扩展包下载地址:http://www.zentus.com/sqlitejdbc/
有2个包,一个是nested(嵌入式的),一个是native(本地的)。
区别在于:nested 不需要额外的dll文件,但是速度慢。native需要一个额外的dll文件,速度很快。
1.使用nested包:sqlitejdbc-v037-nested.jar
java代码:
java 代码
packa ......