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

ASP网站建设实训报告总结如何修改asp网站栏目

ASP网站建设实训报告总结,如何修改asp网站栏目,网站运营外包公司,建立网站的模板目录 单例模式的定义#xff1a; 饿汉式--单例模式 定义#xff1a; 案例#xff1a; 优缺点#xff1a; 懒汉式--单例模式#xff1a; 定义#xff1a; 1#xff09;懒汉式单例模式#xff08;非线程安全#xff09; 2#xff09;线程安全的懒汉式单例模…目录 单例模式的定义 饿汉式--单例模式 定义 案例  优缺点  懒汉式--单例模式 定义 1懒汉式单例模式非线程安全  2线程安全的懒汉式单例模式 synchronized 3双重检查锁定的懒汉式单例模式线程安全  单例模式的定义 单例模式是一种设计模式它确保一个类只有一个实例并提供一个全局访问点来访问这个实例。就好像在一个软件系统中对于某些特定的资源或者对象只需要一个就足够了例如数据库连接池、配置文件管理器等。通过单例模式可以更好地控制这些对象的创建和访问避免创建多个实例导致资源浪费或者数据不一致等问题。 单例模式能保证某个类在程序中只存在唯⼀⼀份实例,⽽不会创建出多个实例.  要实现单例模式通常需要做到以下几点 私有化构造函数防止外部通过new关键字创建实例。提供一个静态的私有变量来保存类的唯一实例。提供一个公共的静态方法来获取类的唯一实例如果实例不存在则创建它。 单例模式具体的实现⽅式有很多.最常⻅的是饿汉和懒汉两种. 饿汉式--单例模式 定义 在饿汉式单例模式中“饿” 体现的是一种急切的状态。就好像一个很饿的人在看到食物这里类比于单例对象的时候会迫不及待地先把食物拿到手创建单例对象。在这个模式下单例对象在类加载阶段就被创建出来而不是等到真正需要使用这个对象的时候才去创建。这种方式比较急切所以被称为 “饿汉模式”。 案例  class Singleton {// 私有静态成员变量在类加载时就初始化实例private static Singleton instance new Singleton();// 私有构造函数防止外部通过new关键字创建实例private Singleton() {}// 公共静态方法用于获取单例实例public static Singleton getInstance() {return instance;} } - ** 类加载过程中的创建**      - 在Java中类加载是由类加载器ClassLoader完成的一个过程。当一个类被首次主动使用例如创建这个类的实例、访问这个类的静态成员等情况时这个类就会被加载。对于上述的Singleton类当Singleton类被加载时private static Singleton instance new Singleton();这行代码就会被执行。 因为类加载机制保证了一个类在一个Java程序中只会被加载一次在正常情况下所以instance对象也只会被创建一次。    - **访问控制保证单例性**      - 构造函数private Singleton()是私有的。这是非常关键的一点它防止了外部类通过new关键字来创建Singleton类的新实例。外部类只能通过public static Singleton getInstance()方法来获取单例对象而这个方法每次返回的都是在类加载阶段就已经创建好的instance对象从而保证了整个系统中 只有一个Singleton类的实例存在。 优缺点  **优点**    1 **线程安全**      - 由于单例对象是在类加载阶段就创建好的而类加载过程在Java中是线程安全的由Java虚拟机来保证。所以在多线程环境下这种方式可以保证多个线程访问getInstance方法时获取到的都是同一个单例对象不会出现多个线程创建多个实例的情况。    2- **实现简单**      - 从代码量和逻辑复杂度来看饿汉式单例模式是比较简单的。只需要在类中定义一个私有静态变量并初始化再提供一个公共静态方法来返回这个变量即可。这种简单的实现方式使得代码易于理解和维护。**缺点**    - **可能会造成资源浪费**      - 如果单例对象的创建过程比较复杂例如需要进行大量的初始化操作如加载配置文件、建立网络连接等并且这个单例对象在程序运行初期可能并不一定需要被使用。那么在类加载阶段就创建这个单例对象可能会导致资源的浪费。就好像提前准备了一顿丰盛的大餐单例对象但可能很长时间都没有人来吃使用单例对象而准备这顿大餐创建单例对象的过程又耗费了很多资源。 懒汉式--单例模式 定义 在懒汉模式下实例在第一次使用时才进行创建因此称为“懒汉”在需要被用的时候被创建突出一个字“懒” 1懒汉式单例模式非线程安全  public class LazySingleton {// 私有静态变量用于存储单例对象private static LazySingleton instance;// 私有构造函数防止外部通过new关键字创建新的实例private LazySingleton() {}// 公共的静态方法用于获取单例对象public static LazySingleton getInstance() {if (instance null) {// 如果实例还未创建则创建一个新的实例instance new LazySingleton();}return instance;} } 这种实现方式在单线程环境下是可以正常工作的。当第一次调用getInstance方法时会检查instance是否为null。如果是null就会创建一个LazySingleton类的实例并赋值给instance然后返回这个实例。之后再调用getInstance方法时因为instance已经不是null了所以会直接返回已创建的实例。 存在的问题 在多线程环境下这种实现方式是不安全的。假设两个线程同时调用getInstance方法并且此时instance为null。这两个线程都会执行instance new LazySingleton();这一行代码从而创建出两个不同的LazySingleton实例这就违背了单例模式的初衷。 2线程安全的懒汉式单例模式 synchronized public class ThreadSafeLazySingleton {private static ThreadSafeLazySingleton instance;private ThreadSafeLazySingleton() {}// 使用synchronized关键字修饰方法保证在多线程环境下的线程安全public static synchronized ThreadSafeLazySingleton getInstance() {if (instance null) {instance new ThreadSafeLazySingleton();}return instance;} } 通过在getInstance方法上添加synchronized关键字保证了在多线程环境下同一时刻只有一个线程能够进入这个方法。当一个线程进入getInstance方法并发现instance为null时它会创建一个新的实例。其他线程如果在这个时候也尝试调用getInstance方法就会被阻塞直到第一个线程完成实例的创建并返回。 存在的问题 这种方式虽然保证了线程安全但是性能较差。因为每次调用getInstance方法都需要获取锁即使实例已经创建完成这种不必要的同步操作会在高并发场景下成为性能瓶颈。 3双重检查锁定的懒汉式单例模式线程安全  public class DoubleCheckedLockingSingleton {// 使用volatile关键字保证变量的可见性和禁止指令重排序private static volatile DoubleCheckedLockingSingleton instance;private DoubleCheckedLockingSingleton() {}public static DoubleCheckedLockingSingleton getInstance() {if (instance null) {// 第一次检查提高性能避免不必要的同步操作synchronized (DoubleCheckedLockingSingleton.class) {if (instance null) {// 第二次检查确保在同步块内也不会创建多个实例instance new DoubleCheckedLockingSingleton();}}}return instance;} } 首先if (instance null)这一检查在同步块外进行这是第一次检查。如果instance已经不是null就可以直接返回实例避免了进入同步块从而提高了性能。当第一次检查instance为null时线程会进入同步块。在同步块内又进行了一次if (instance null)检查这是第二次检查。这是为了防止在多个线程同时通过第一次检查后只有一个线程能够进入同步块创建实例其他线程在等待这个线程完成创建后直接获取已创建的实例而不会再次创建。使用volatile关键字是非常关键的。在 Java 中指令重排序可能会导致instance变量在没有完全初始化的情况下就被其他线程看到。volatile关键字可以保证变量的可见性并且禁止指令重排序确保了单例模式的正确性。 结语 写博客不仅仅是为了分享学习经历同时这也有利于我巩固知识点总结该知识点由于作者水平有限对文章有任何问题的还请指出接受大家的批评让我改进。同时也希望读者们不吝啬你们的点赞收藏关注你们的鼓励是我创作的最大动力
http://www.dnsts.com.cn/news/255483.html

相关文章:

  • 万网云服务器怎么上传网站吗高清装饰画图片素材网
  • 工业设计网站设计深圳网站建设公司fantodo
  • 湖南建设信誉查询网站国内网站建设需要多少钱
  • 商城网站建设公司哪家好建站的步骤
  • 建设网站的必要与可行性做网站之前需要准备什么条件
  • 关于小学网站建设的论文对网站建设好学吗
  • 四川省城乡建设信息网站证件查询wordpress 直播
  • 淘宝客静态网站怎么开网店拼多多
  • asp.net网站开发期末复习题wordpress主题取消
  • 盐城网站优化推广服务网站积分解决方案
  • 微信网站开发源代码网站建设学生选课课程设计报告
  • h5作品网站广西网站建设工具
  • 网站怎样才能在百度被搜索到网站用cms
  • 网站建设分几种类型设计深圳网站制作
  • 新绛做网站中国互联网数据平台
  • 各大网站热搜榜排名wordpress影视站主题
  • 方圆网通网站建设wordpress排版错误
  • 做网站的常识wordpress中文开发文档
  • 广西建设工会网站广东微信网站制作价格
  • 大学网站建设课程课综公司邮箱签名模板
  • 企业网站 的网络营销方法有做网站公司的年终总结
  • wordpress视频解析主题seo方式包括
  • 班级网站怎么做网页制作wordpress在线安装主题
  • 做网站买空间用共享ip培训机构老师何去何从
  • 网站策划案内容安徽安庆属于南方还是北方
  • 建网站需要什么资料产品设计排名
  • 专业的网站建设设计价格php做网站登录界面
  • 想做个网站推广网站建设计入什么科目
  • 哈尔滨网站建设效果好网站导航怎么做
  • 视频解析网站是怎么做的网站开发的最初阶段包括