当前位置: 首页 > wzjs >正文

房管局网上查询系统优化网站关键词排名

房管局网上查询系统,优化网站关键词排名,a标签优化网站,华为企业官网首页单例模式详解 一、单例模式概述 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。 核心特点 唯一实例:保证一个类只有一个实例存在全局访问:提供统一的访问入…

单例模式详解

一、单例模式概述

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。

核心特点

  • 唯一实例:保证一个类只有一个实例存在
  • 全局访问:提供统一的访问入口
  • 延迟初始化:通常采用懒加载方式创建实例
  • 线程安全:需要考虑多线程环境下的安全性

二、单例模式的实现方式

1. 懒汉式(线程不安全)

public class Singleton {private static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}

缺点:多线程环境下可能创建多个实例

2. 懒汉式(线程安全)

public class Singleton {private static Singleton instance;private Singleton() {}public static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}

缺点:每次获取实例都要同步,性能较差

3. 双重检查锁定(DCL)

public class Singleton {private volatile static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}

特点

  • volatile关键字防止指令重排序
  • 第一次检查避免不必要的同步
  • 第二次检查确保只创建一个实例

4. 静态内部类实现

public class Singleton {private Singleton() {}private static class SingletonHolder {private static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance() {return SingletonHolder.INSTANCE;}
}

优点

  • 线程安全
  • 延迟加载
  • 实现简单

5. 枚举实现(推荐)

public enum Singleton {INSTANCE;public void doSomething() {// 业务方法}
}

优势

  • 绝对防止多次实例化
  • 自动支持序列化机制
  • 线程安全
  • 代码简洁

三、单例模式的应用场景

1. 配置管理类

public class AppConfig {private static AppConfig instance;private Properties configs;private AppConfig() {// 初始化加载配置configs = new Properties();try (InputStream is = getClass().getResourceAsStream("/config.properties")) {configs.load(is);} catch (IOException e) {throw new RuntimeException("加载配置文件失败", e);}}public static synchronized AppConfig getInstance() {if (instance == null) {instance = new AppConfig();}return instance;}public String getConfig(String key) {return configs.getProperty(key);}
}

使用场景

  • 全局配置信息管理
  • 避免重复加载配置文件
  • 统一配置访问入口

2. 数据库连接池

public class ConnectionPool {private static ConnectionPool instance;private List<Connection> pool;private ConnectionPool() {// 初始化连接池pool = new ArrayList<>();for (int i = 0; i < 10; i++) {pool.add(createConnection());}}public static ConnectionPool getInstance() {if (instance == null) {synchronized (ConnectionPool.class) {if (instance == null) {instance = new ConnectionPool();}}}return instance;}public Connection getConnection() {// 从池中获取连接}public void releaseConnection(Connection conn) {// 释放连接回池}
}

优势

  • 避免频繁创建连接开销
  • 统一管理数据库连接
  • 控制连接数量

四、单例模式的注意事项

  1. 序列化问题

    • 实现Serializable接口时需要添加readResolve()方法

    • 防止反序列化时创建新实例

      private Object readResolve() {
      return getInstance();
      }

  2. 反射攻击防护

    • 防止通过反射调用私有构造方法

    • 可以在构造方法中添加检查

      private Singleton() {
      if (instance != null) {
      throw new IllegalStateException(“单例实例已存在”);
      }
      }

五、总结

单例模式是最常用的设计模式之一,适用于需要全局唯一访问点的场景。在选择实现方式时:

  • Java 5+环境:优先使用枚举实现
  • 需要延迟加载:考虑静态内部类方式
  • 性能敏感场景:使用双重检查锁定
  • 简单场景:可以使用同步方法实现

正确使用单例模式可以:

  • 减少系统资源消耗
  • 提供一致的访问入口
  • 简化对象管理
  • 避免状态不一致问题

文章转载自:

http://q2PMQoqV.gqryh.cn
http://YOOrZhOi.gqryh.cn
http://WvPd0eYm.gqryh.cn
http://2QbXaAMI.gqryh.cn
http://3wQNwJr3.gqryh.cn
http://zUR3RytW.gqryh.cn
http://vXY8iL5t.gqryh.cn
http://3aNROShF.gqryh.cn
http://kXr7gy4n.gqryh.cn
http://THQJItpd.gqryh.cn
http://OEOUCzLE.gqryh.cn
http://PyWLRKV0.gqryh.cn
http://ISeLpTxd.gqryh.cn
http://exZs2OtE.gqryh.cn
http://drhpToc6.gqryh.cn
http://tItE0YQ4.gqryh.cn
http://AXFKbzqz.gqryh.cn
http://Z3EiOHZF.gqryh.cn
http://HRGJryR4.gqryh.cn
http://3e2x4Nt3.gqryh.cn
http://Mq2rhXPk.gqryh.cn
http://sK9rTcG4.gqryh.cn
http://QkM8ZNZg.gqryh.cn
http://kkEiy50u.gqryh.cn
http://9eFxyatf.gqryh.cn
http://rOGfZmzU.gqryh.cn
http://wFulSsIK.gqryh.cn
http://J8m7bArW.gqryh.cn
http://JtPKmN28.gqryh.cn
http://7KSFcWQw.gqryh.cn
http://www.dtcms.com/wzjs/691046.html

相关文章:

  • iis 没有新建网站美食网站开发的原则
  • dw做网站怎么换图片上海市建设市场服务平台官网
  • wordpress没有底部台州网站建设优化案例
  • 网站建设提供的网站资料齐鲁人才网泰安招聘
  • 电子商务网站建设与管理习题答案五种销售渠道
  • 网站建设网站推广优化向国旗致敬做时代新人网站
  • 百度开户做网站2400慈溪做无痛同济 网站
  • 建设什么网站可以上传视频葫芦岛市网站建设
  • 连云港网站建设公司在线制作网站的平台
  • 代做网站转账截图四川建设行业网站有哪些
  • 如何选择网站域名贵州省城乡建设厅网站首页
  • 公司内部网站建设网站建设公司墨子网络
  • 企业定制网站价格表阳西县住房和城乡建设部网站
  • 优惠券网站要怎么做推广南昌网站开发商哪家强
  • wordpress怎么改变文章的域名济南网站优化培训
  • 房地产设计方案视频优化是什么意思
  • 公司网站源码 带wap手机站个人网页代码模板
  • 怎么做营销型网站设计isapi_rewrite wordpress
  • 织梦网站后台进不去深圳网站建设公司麦
  • 嘉兴网站开发与制作网站建设费用进会计什么科目
  • 您网站建设ps做网站字号大小
  • 宁波市环境建设保护局网站全球旅游网站排名
  • 响应式网站的宽度微信推广平台
  • 两个域名同一个网站做优化泉州网站建设多少钱
  • 营销型网站建设域名wordpress保存php失败
  • 帝国网站认证码免费下载app并安装
  • 网站怎么做需要花钱吗十大传媒公司排名
  • 建站平台 在线提交表格功能门户网站建设工具
  • seo优化网站快速排名建站快车管理
  • 建设储蓄卡网站怎么建立自己的网站域名