200 做京剧主题的专业小说网站学电商哪个培训学校好

张小明 2026/1/10 12:10:24
200 做京剧主题的专业小说网站,学电商哪个培训学校好,wordpress gallery 尺寸,西安网站托管哪家好0.个人感悟 单例是老生常谈的模式。工作中也用的很多#xff0c;比如各种全局管理类、工厂类。结合场景#xff0c;选择合适的实现方式它核心思路是想办法让类只有一个实例#xff0c;对外只提供一个获取实例的方法(封装)#xff0c;然后是安全和效率考虑 自己实现 提前将…0.个人感悟单例是老生常谈的模式。工作中也用的很多比如各种全局管理类、工厂类。结合场景选择合适的实现方式它核心思路是想办法让类只有一个实例对外只提供一个获取实例的方法(封装)然后是安全和效率考虑自己实现提前将实例准备好-饿汉静态常量 静态代码块 效率低使用时再创建实例-懒汉初版实现 不安全进阶版-同步方法 效率低终级版-双重检查 兼顾安全和效率 推荐JVM机制静态内部类 推荐枚举 推荐扩展知识点。在代码示例后面罗列了扩展知识点(比如类加载等)和了解这些知识点的书籍推荐感兴趣可以引申学习下我也留些坑后续记录相关知识点时链接过去1.概念Intent: Ensure a class only has one instance, and provide a global point of access to it. – 《Design Patterns: Elements of Reusable Object-Oriented Software》翻译:意图保证一个类仅有一个实例并提供一个访问它的全局访问点理解:采取一定的方法使得某个类在整个系统中有且仅有一个实例2.适配场景与定义适配某个类没有状态的概念仅需要有一个全局唯一的实例比如各种工厂类、管理类等3.实现方法实例静态化与class绑定私有化构造方法对外提供唯一静态方法3.1 饿汉式3.1.1 实现饿汉顾名思义很饿想提供者赶紧做好写法1静态常量写法/** * Description 单例示例 饿汉-静态常量 * Author bigHao * Date 2025/12/17 */publicclassSingleton{// 2.静态常量类加载时便创建privatestaticfinalSingletoninstancenewSingleton();// 1.构造方法私有privateSingleton(){}// 3.只暴露一个公共静态方法返回实例/** * return Singleton 单例 * description 获取单例 * author bigHao * date 2025/12/17 **/publicstaticSingletongetInstance(){returninstance;}}写法2静态代码块写法/** * Description 单例示例 饿汉-静态代码块 * Author bigHao * Date 2025/12/17 */publicclassSingleton{privatestaticfinalSingletoninstance;// 静态常量静态块加载static{instancenewSingleton();}privateSingleton(){}/** * return Singleton 单例 * description 获取单例 * author bigHao * date 2025/12/17 **/publicstaticSingletongetInstance(){returninstance;}}调用方式都是通过Class.获取实例方法publicclassTest{staticvoidmain(){// 调用方只能通过暴露的方法调用无法new的方式创建实例SingletoninstanceSingleton.getInstance();}}3.1.2 优缺点优点写法简单JVM加载类时创建对象避免线程安全问题缺点内存浪费。未实现懒加载(lazy loding)3.1.3 涉及知识点类的加载机制和生命周期推荐书籍《深入理解Java虚拟机》3.2 懒汉式-线程不安全3.2.1 实现方法需要的时候再创建实例/** * 单例示例 懒汉-线程不安全 */publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}/** * return Singleton 单例 * description 获取单例-线程不安全 * author bigHao * date 2025/12/17 **/publicstaticSingletongetInstance(){// 非原子操作多线程场景会有多个线程进入到if内从而创建多个实例if(instancenull){instancenewSingleton();}returninstance;}}多线程场景可能会有多个线程同时执行if中的代码创建多个实例测试/** * Description 测试单例-懒汉-线程不安全 * Author bigHao * Date 2025/12/17 */publicclassTest{staticvoidmain(){// 测试线程不安全SetStringinstanceSetnewHashSet(100);// 多线程获取100次实例for(inti0;i100;i){newThread(()-{instanceSet.add(Singleton.getInstance().toString());}).start();}// 因为set会去重这里如果size不为1意味着线程不安全多个实例System.out.println(STR.instance size \{instanceSet.size()} 线程是否安全: \{1 instanceSet.size()} );// false}}3.2.2 优缺点优点实现了懒加载节约空间缺点线程不安全3.2.3 涉及知识点3.3 懒汉式-同步方法3.3.1 实现方法静态方法加锁/** * Description 单例示例 懒汉-同步方法 * Author bigHao * Date 2025/12/17 */publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}/** * return Singleton 单例 * description 获取单例-同步方法 * author bigHao * date 2025/12/17 **/publicstaticsynchronizedSingletongetInstance(){// 只实例化一次if(instancenull){instancenewSingleton();}returninstance;}}3.3.2 优缺点优点实现了懒加载线程安全缺点效率低。所有线程都需要进行同步3.4 懒汉式-双重检查3.4.1 实现方法双重检查第一次检查可以过滤掉一些线程直接获取创建好的实例第二次检查加锁只有一个线程进行对象创建使用volatile关键字禁止指令重排保证创建操作的原子性/** * Description 单例示例 双重检查禁止指令重排 * Author bigHao * Date 2025/12/17 */publicclassSingleton{// volatile 禁止JVM对这个对象涉及到的代码重排序privatestaticvolatileSingletoninstance;privateSingleton(){}/** * return Singleton 单例 * description 获取单例-双重检查 * author bigHao * date 2025/12/17 **/publicstaticSingletongetInstance(){// 第一次判断示例是否存在多线程场景下会放过一些线程if(instancenull){// 再次判断针对被放过的线程这里加锁进行等待synchronized(Singleton.class){if(instancenull){instancenewSingleton();}}}returninstance;}}3.4.2 优缺点优点实现了懒加载线程安全双重检查效率高3.4.3 涉及知识点指令重排JVM创建实例时一般分为以下几步:开辟内存空间初始化对象实例的引用指向第1步中的空间地址JVM优化代码过程中可能对步骤进行了优化变成132这样就有很多意想不到的问题。推荐书籍:《Java并发编程实战》3.5 静态内部类3.5.1 实现方法利用静态内部类的机制JVM帮助实现:静态内部类在需要的时候才被实例化加载的时候只有一个线程/** * Description 单例示例 静态内部类 * Author bigHao * Date 2025/12/17 */publicclassSingleton{privateSingleton(){}// 静态内部类privatestaticclassSingletonInstance{privatestaticfinalSingletonINSTANCEnewSingleton();}/** * return Singleton 单例 * description 获取单例-静态内部类 * author bigHao * date 2025/12/17 **/publicstaticSingletongetInstance(){returnSingletonInstance.INSTANCE;}}3.5.2 优缺点优点实现了懒加载线程安全只初始一次效率高3.5.3 涉及知识点静态内部类的加载机制和生命周期推荐书籍《深入理解Java虚拟机》3.6 枚举利用枚举机制JVM帮助实现:加载的时候只有一个线程防止被反射的方式创建新的对象3.6.1 实现方法/** * Description 单例示例 枚举 * Author bigHao * Date 2025/12/17 */publicenumSingleton{INSTANCE;publicvoidmockMethod(){System.out.println(use success.);}}调用/** * Description 单例测试 枚举 * Author bigHao * Date 2025/12/17 */publicclassTest{staticvoidmain(){SingletoninstanceSingleton.INSTANCE;instance.mockMethod();}}3.6.2 优缺点优点线程安全防止被反射的方式创建新对象3.6.3 涉及知识点枚举类的加载机制和生命周期推荐书籍《深入理解Java虚拟机》4.源码体现jdk中Runtime类使用的就是经典的单例模式(饿汉式)韩顺平 Java设计模式H_D 【Java】单例模式双重检查锁double-checked locking
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

安徽建网站公司seo网站搭建是什么

滑坡作为一种严重的地质灾害,对人民生命财产安全和基础设施稳定构成巨大威胁。滑坡体的稳定性与内部渗流情况密切相关,其中孔隙水压力是反映渗流状态的关键参数。为有效监测滑坡体渗流,及时掌握其稳定性变化,特制定滑坡体多层渗流…

张小明 2026/1/10 7:07:01 网站建设

广州网站建设鞍山山西网站开发二次开发

在移动互联网高速发展的今天,移动端应用已成为人们日常生活和商业活动的核心载体。然而,随着应用复杂度的提升,传统的测试方法往往难以覆盖所有边界场景,尤其是用户交互的随机性和不可预测性。Monkey随机测试作为一种高效的自动化…

张小明 2026/1/8 19:55:24 网站建设

站长查询站长工具合肥最好的网站建设公司排名

信息生产者的角色演变 在GEO驱动的未来信息生态中,各类信息生产者的角色和定位将发生深刻变化。 传统媒体需要从“新闻生产者”转型为“权威信息验证者”。当AI能够快速生成事实性内容摘要时,媒体的核心价值不再是第一时间报道,而是提供深度…

张小明 2026/1/9 2:57:27 网站建设

牛牛襄阳做网站上海专业网站制作设计公司哪家好

Navicat Mac版试用期重置技术解析与实践指南 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 问题诊断:试用期限制的技术本质 Navicat作为专业的数据库管理工具&…

张小明 2026/1/8 13:23:24 网站建设

北京网站建设迈程网络创建一个公司需要什么

MediaPipe模型性能调优实战:三大指标深度解析与场景适配 【免费下载链接】mediapipe Cross-platform, customizable ML solutions for live and streaming media. 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe 在构建基于MediaPipe的计算机视觉应…

张小明 2026/1/9 4:14:11 网站建设

网站用户体验评价方案中企动力公司官网

在气候变化与能源转型的全球共识下,ESG(环境、社会和公司治理)已成为汽车产业新一轮竞争的“隐形赛道”。本文将聚焦特斯拉、华为、大众、宝马、奔驰、丰田、福特、比亚迪及小米等主流车企,深度剖析其ESG战略规划、供应链转型及材…

张小明 2026/1/8 22:08:40 网站建设