网站建设 51下拉网站建设政策

张小明 2026/1/12 10:23:25
网站建设 51下拉,网站建设政策,网站建设 全包 制作,wordpress主题生成工具目录 作者有话要说#xff1a; 一#xff0c;什么是单例设计模式#xff1f; 二#xff0c;单例设计模式有什么特点#xff1f; 三#xff0c;什么使用使用单例设计模式#xff1f; 四#xff0c;单例设计模式的实现方式? 1.懒汉式的实现方式 2.饿汉式的实现方…目录作者有话要说一什么是单例设计模式二单例设计模式有什么特点三什么使用使用单例设计模式四单例设计模式的实现方式?1.懒汉式的实现方式2.饿汉式的实现方式3.双锁检查的实现方式作者有话要说单例模式是面试高频考点之一。本文以问答形式解析单例模式的核心要点在问题回答时采用最简洁易懂的方式描述帮助读者快速掌握其精髓为面试提供清晰应答思路。一什么是单例设计模式单例设计模式创建自己的唯一实例并且给外部提供访问唯一对象的方式。例如国家创建自己的唯一首都经济政治等内容都是围绕首都开展开通一个访问通道A其他国家的人想要访问唯一首都只能通过通道A来访问。【注意】创建实例就是Dog aa new Dog();二单例设计模式有什么特点单例设计模式的特点单例类只能有一个实例。只能new一次单例类必须要创建自己的唯一实例。必须 new单例类必须创建一个外部访问自身对象的方式。必须让别人能访问自己单例设计模式的核心私有化构造方法。三什么时候使用单例设计模式单例设计模式适合在需要资源独占型场景需要唯一实例控制资源访问全局共享状态 / 配置场景需要统一的全局数据访问高创建成本的对象避免频繁创建销毁浪费资源控制行为的全局唯一性场景需要统一的逻辑入口的场景下。例如生成唯一序列号资源独占型场景。设计计数器需要统一的逻辑入口。四单例设计模式的实现方式?1.懒汉式的实现方式该实现方式是加入了synchronized关键字实现了线程安全的懒汉式实现。语言描述实现步骤定义一个静态的实例变量将构造方法私有化然后创建外部get访问方法,先判断实例变量是否为空为空就创建唯一实例。public class Singleton { //静态的实例变量 private static Singleton instance; //私有化构造方法 private Singleton (){} //外部访问方法 public static synchronized Singleton getInstance() { //判断实例变量是否为空 if (instance null) { //创建唯一实例 instance new Singleton(); } return instance; } }2.饿汉式的实现方式线程安全的饿汉式实现语言描述先定义静态的实例变量并立即初始化将构造方法私有化创建外部访问的getInstance()方法。public class Singleton { //定义静态的实例变量并立即初始化 private static Singleton instance new Singleton(); //私有化构造方法 private Singleton (){} //创建外部访问的get方法 public static Singleton getInstance() { return instance; } }3.双锁检查的实现方式最常用语言描述定义volatile 修饰的静态实例变量私有化构造方法创建外部访问的getSingleton()方法加入双重检查和细粒度锁。public class Singleton { //定义一个静态的实例变量 private volatile static Singleton singleton; //私有化构造方法 private Singleton (){} //创建访问方式 public static Singleton getSingleton() { //判断是否为空 if (singleton null) { synchronized (Singleton.class) { //再次判断是否为空 if (singleton null) { singleton new Singleton(); } } } return singleton; } }第一步定义volatile 修饰的静态实例变量优化核心额外添加volatile关键字这是 DCL 单例的关键优化点作用是禁止 JVM 对singleton new Singleton()进行指令重排序避免多线程下出现 “半初始化实例” 的问题后文会解释。这里并未立即初始化实例赋值为null保留了懒加载的特性用到时才创建。第二步私有化构造方法单例的核心前提第三步创建外部访问的getSingleton()方法双重检查 细粒度锁这是 DCL 单例的核心逻辑分为三个关键环节解决了同步方法懒汉式的性能问题第一次判空无锁检查如果实例已经创建完成singleton ! null直接返回实例无需进入锁逻辑。这一步避免了后续每次调用方法都触发锁竞争极大提升了高并发场景下的性能。加细粒度同步锁只有当实例未创建时singleton null才对Singleton.class类对象加锁保证同一时间只有一个线程能进入锁代码块。和同步方法相比锁的粒度从 “整个方法” 缩小到 “实例创建的代码块”减少了锁的开销。第二次判空锁内检查进入锁代码块后再次判断实例是否为null。这是因为可能存在多个线程同时通过第一次判空等待锁的情况 ——比如线程 A 拿到锁创建了实例线程 B 随后拿到锁此时如果没有第二次判空线程 B 会再次创建实例破坏单例。补充volatile的关键作用为什么必须加singleton new Singleton()这行代码看似是一步操作实际 JVM 会拆分为三步为singleton分配内存空间执行构造方法初始化singleton对象将singleton引用指向分配的内存地址此时singleton ! null。JVM 为了优化性能可能会将步骤 2 和 3 重排序变成 1→3→2。在多线程下这会导致线程 A 执行了 1→3此时singleton非空但未初始化线程 B 第一次判空时发现singleton ! null直接返回这个 “半初始化的实例”调用时会出现异常。而volatile关键字会禁止这种指令重排序保证步骤 1→2→3 的执行顺序从而避免了 “半初始化实例” 的问题。这是目前生产环境中最常用的懒汉式单例实现方式兼顾了性能和线程安全。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

新浪门户网站是谁做的建立网站容量

第一章:告别手动调参!Open-AutoGLM的革命性意义 在传统大模型应用中,超参数调优长期依赖专家经验与反复试错,不仅耗时耗力,还难以保证最优性能。Open-AutoGLM 的出现彻底改变了这一局面,它作为首个面向生成…

张小明 2026/1/10 16:52:12 网站建设

建站公司哪个好软件ui设计软件

HUSTOJ在线编程竞赛平台:从零搭建编程教学与竞赛系统的完整指南 【免费下载链接】hustoj 项目地址: https://gitcode.com/gh_mirrors/hu/hustoj 在当今数字化教育时代,如何快速搭建一个功能完善的在线编程竞赛平台?HUSTOJ作为一款源自…

张小明 2026/1/10 1:13:49 网站建设

南阳移动端网站制作东营网站制作团队

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商系统日期计算演示项目,展示5个使用DATE_ADD的实际场景:1)计算会员30天有效期 2)设置7天无理由退货截止日 3)促销活动提前3天提醒 4)订单15分钟未…

张小明 2026/1/10 16:58:46 网站建设

专业网站建设专家全网热搜榜

提升AI开发效率:将git下载、pip安装统一指向清华镜像 在人工智能项目开发中,最令人沮丧的体验之一莫过于——明明已经写好了模型代码,却卡在 pip install tensorflow 这一步,进度条以“每秒几KB”的速度艰难爬行。更糟的是&#x…

张小明 2026/1/10 16:52:15 网站建设

做盗版小说网站犯法吗多媒体设计与制作毕业设计

如何用API调用Anything-LLM实现系统集成? 在企业知识管理日益复杂的今天,一个常见的挑战是:大量技术文档、产品手册和FAQ分散在多个系统中,客服或新员工想要快速找到“如何重置用户密码”这类问题的答案,往往需要翻阅十…

张小明 2026/1/10 16:52:17 网站建设

深圳横岗做网站的建设银行流水账网站查询

SenseVoice语音识别革命:70ms极速体验如何重塑实时交互 【免费下载链接】SenseVoice Multilingual Voice Understanding Model 项目地址: https://gitcode.com/gh_mirrors/se/SenseVoice 还在为语音识别响应延迟而烦恼?传统模型动辄数秒的等待时间…

张小明 2026/1/10 16:52:16 网站建设