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

经典微网站网站服务器用哪个好

经典微网站,网站服务器用哪个好,wordpress怎么做分页,著名设计师网站设计模式也是面试中的热门考题#xff0c;基本这个部分都是问问你知不知道XXX设计模式#xff0c;有什么用#xff0c;优缺点#xff0c;然后再现场手写一个demo。很多时候是和spring一起考的#xff0c;问问你知不知道spring框架用了哪些设计模式。今天我们来先看看单例模…设计模式也是面试中的热门考题基本这个部分都是问问你知不知道XXX设计模式有什么用优缺点然后再现场手写一个demo。很多时候是和spring一起考的问问你知不知道spring框架用了哪些设计模式。今天我们来先看看单例模式。 什么是单例模式 单例模式是一种设计模式用于确保类在应用程序中只有一个实例并提供一个全局访问点来访问该实例。单例模式通常用于那些需要全局状态或共享资源的情况以确保整个应用程序中只有一个实例存在从而避免不必要的资源消耗和冲突。例子一个应用的日志记录器Logger。全局一个日志器记录即可不需要多个。 单例模式的特点包括 私有构造函数单例类的构造函数被设为私有以防止外部直接创建对象实例。 静态方法或静态变量提供一个静态方法或静态变量来访问该类的唯一实例。 延迟实例化有时单例对象不会在应用程序启动时立即创建而是在第一次被请求时才进行实例化。 线程安全性在多线程环境中需要考虑单例对象的线程安全性确保在并发情况下也能正确地返回唯一实例。 使用单例模式的优点包括 节省资源由于只有一个实例存在可以避免创建多个对象所带来的资源浪费。提供全局访问点可以通过单例对象的全局访问点方便地获取到该实例使得全局状态或共享资源的管理更加简单。确保一致性由于只有一个实例存在可以确保整个应用程序中对该实例的状态保持一致。 然而使用单例模式也可能带来一些缺点如增加了代码的耦合性、对单例对象的依赖性过强等。因此在使用单例模式时需要权衡利弊并根据实际情况慎重考虑。 手写单例 可能这会需要你手写一个单例模式单例模式有很多种写法懒汉模式饿汉模式双重检查模式等。 懒汉模式 懒汉模式的懒就在于就是用的时候再去创建对象否则什么都不做 public class LazySingleton {// 私有静态变量用于保存唯一的实例private static LazySingleton instance;// 私有构造函数防止外部直接创建对象实例private LazySingleton() {// 初始化操作}// 公共静态方法用于获取唯一的实例public static LazySingleton getInstance() {// 延迟实例化只有在第一次调用时才创建实例if (instance null) {instance new LazySingleton();}return instance;}// 其他方法public void doSomething() {// 执行其他操作} } 懒汉式单例模式的写法由于new和赋值操作的非原子性所以该写法非线程安全. 饿汉模式 饿汉模式就是提前就已经加载好的静态static 对象 public class EagerSingleton {// 私有静态变量用于保存唯一的实例并在类加载时就进行初始化private static final EagerSingleton instance new EagerSingleton();// 私有构造函数防止外部直接创建对象实例private EagerSingleton() {// 初始化操作}// 公共静态方法用于获取唯一的实例public static EagerSingleton getInstance() {return instance;}// 其他方法public void doSomething() {// 执行其他操作} } 饿汉式单例模式的写法线程安全但饿汉模式的主要缺点是如果该单例对象在应用程序中没有被使用到那么可能会造成资源的浪费。因为在类加载时就创建了实例即使在后续没有被使用到该实例也会一直存在于内存中。 双重检查模式 双重检查模式就是两次检查避免多线程造成创建了多个对象。也是一种在懒汉模式的基础上改进的线程安全的单例模式。它通过双重检查锁定来确保在多线程环境下只创建一个实例。 public class DoubleCheckedSingleton {// 使用 volatile 关键字确保 instance 变量的可见性private static volatile DoubleCheckedSingleton instance;// 私有构造函数防止外部直接创建对象实例private DoubleCheckedSingleton() {// 初始化操作}// 公共静态方法用于获取唯一的实例public static DoubleCheckedSingleton getInstance() {// 双重检查锁定确保在多线程环境下只有一个实例被创建if (instance null) {synchronized (DoubleCheckedSingleton.class) {if (instance null) {instance new DoubleCheckedSingleton();}}}return instance;}// 其他方法public void doSomething() {// 执行其他操作} } 这里面试官可能问你可不可以去掉这个volatile关键字答案是不可以volatile 关键字的作用是确保变量的可见性和禁止指令重排序否则可能会出现线程安全问题。 所以双检锁单例模式的写法线程安全。 这就结束了吗 等等加了volatile的双重检查看似没问题难道这就一定可靠吗使用 Java 的反射机制可以破坏传统的单例模式实现。通过反射可以访问类的私有构造函数并强制创建多个对象实例从而违反了单例模式的原则。 import java.lang.reflect.Constructor;public class Singleton {private static volatile Singleton instance;private Singleton() {// 私有构造函数}public static Singleton getInstance() {if (instance null) {synchronized (Singleton.class) {if (instance null) {instance new Singleton();}}}return instance;}public static void main(String[] args) {Singleton singleton1 Singleton.getInstance();Singleton singleton2 null;try {// 使用反射获取私有构造函数ConstructorSingleton constructor Singleton.class.getDeclaredConstructor();// 设置可访问私有构造函数constructor.setAccessible(true);// 强制创建多个实例singleton2 constructor.newInstance();} catch (Exception e) {e.printStackTrace();}System.out.println(singleton1: singleton1.hashCode());System.out.println(singleton2: singleton2.hashCode());System.out.println(Are they the same instance? (singleton1 singleton2));} } 那要怎么办 《Effective Java》中曾经提到过枚举单例是一种线程安全且简洁的单例模式实现方式它基于枚举类型的特性在Java中保证了单例实例的唯一性。枚举类型的每个枚举常量都是单例对象且在枚举类型被加载时就被初始化。 public enum EnumSingleton {INSTANCE; // 唯一的枚举常量// 可以添加其他成员变量和方法private int data;public int getData() {return data;}public void setData(int data) {this.data data;}// 可以在枚举类中添加构造函数但必须是私有的private EnumSingleton() {this.data 0;} }在上面的示例中EnumSingleton 是一个枚举类型其中只有一个枚举常量 INSTANCE。由于枚举类型的特性在类加载时INSTANCE 常量就会被初始化为单例对象因此无需担心多线程下的并发问题。 通过调用 EnumSingleton.INSTANCE 就可以获取到该单例对象例如 EnumSingleton singleton EnumSingleton.INSTANCE;这样就可以确保在整个应用程序中只存在一个 EnumSingleton 实例。 枚举单例的优点包括 线程安全枚举类的实例在类加载时就被创建保证了线程安全性。简洁使用枚举类型实现单例模式非常简洁不需要手动编写单例模式的代码。 因此如果在Java中实现单例模式推荐使用枚举类型来实现。 总结 以上就是单例模式的全部内容了希望能帮助到大家。
http://www.zqtcl.cn/news/907763/

相关文章:

  • wordpress更新网站内容公众号制作教程
  • 复兴区建设局网站怎么解压wordpress
  • 资源网站哪个好淄博网站设计
  • 网站建设林晓东网站数据库一般多大
  • 织梦网站后台默认登陆路径网站建设简介淄博
  • 重庆住房建设部网站东莞网站制作多少钱
  • 做胎儿羊水鉴定网站网站管理主要包括哪些内容
  • 公司网站建设应注意网店推广有哪些方法
  • 新网$网站优化企业资源管理软件
  • 甘肃营销型网站制作网页设计流程的图片
  • 厦门成交型网站建设公司今科云平台网站建设
  • 网站推广效果怎样学电商赚钱
  • 企业网站的一般要素包括哪些公司网站建设是什么费用
  • 网站收录说明长沙知名的营销公司
  • 网站开发 业务流程图天津网站排名方案
  • 风雨同舟网站建设小说网站如何做书源
  • h5手机网站建设哪家好广州有什么好玩的地方和风景好
  • 北京哪个网站建设最好怀化网站建设公司
  • 做类似猪八戒网的网站注册一个商标多少钱
  • 怎么提高网站访问速度wordpress怎么备份按在
  • 淘宝网站是谁做的好处wordpress商业授权
  • 淘宝客网站怎么批量采集淘宝商品方维采集淘宝数据思路珠宝类网站建设
  • 重庆网站关键字优化雅布设计中国分公司在哪里
  • 山西做网站费用温州做网站制作
  • 购买域名后 可以做网站么苏州市建设厅网站
  • 网站域名如何查询win7优化配置的方法
  • 免费建网站的服务器佛山城市建设工程有限公司
  • 安溪人做的网站wordpress 单页面 主题
  • 品牌型网站设计创意 国外 网站
  • o2o网站建设包括哪些平面设计作品欣赏