单例模式SINGLETON PATTERN

本文深入解析单例模式的实现原理,包括懒汉模式、饿汉式、双重检查锁DCL及枚举法四种常见实现方式,探讨其在多线程环境下的应用与优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式

规则:一个类只有一个实例

方法:

    不能被外部创建
    限制外部访问方式
    内部保证实例唯一

懒汉模式

    第一次调用的时候实例化,使用静态属性,存储单例
    设置私有构造器来限制外部访问
    使用静态方法获取单例
public class Singleton {

	/**
	 * 懒汉模式
	 */
	//静态属性,存储单例
	private static Singleton lazy=null;
	//设置私有构造器,限制外部无法通过构造器创建实例
	private Singleton() {}
	//静态方法获取单例
	public static Singleton getLazy() {
		if(lazy==null) {
			lazy=new Singleton();
		}
		return lazy;
		
	}
}

饿汉式

    初始化时自行实例化
    静态方法返回
public class SingleHurry {

	private static SingleHurry sh=new SingleHurry();
	private SingleHurry() {}
	public static SingleHurry getSh() {
		return sh;
	}
}

双重检查锁 DCL

    两次检查作用不同
    第一次检查是否为空,不为空不创建
    第二次检查保证单例
public class SingleDoubleChecking {

	private static SingleDoubleChecking sdc;
	private SingleDoubleChecking() {}
	private static SingleDoubleChecking getSdc() {
		//检查是否为空,不为空时不创建,节省性能消耗;为空时可能有并发问题
		if(sdc==null) {
			//同步代码块,保证不会被并发获取
			synchronized(SingleDoubleChecking.class) {
				//保证单例,再次判断,若不为空不建立实例
				if(sdc==null) {
					sdc=new SingleDoubleChecking();
				}
			}
		}
		return sdc;
	}
}

枚举法

   避免多线程同步问题
   防止反序列化重新创建新的对象
   使用enum
public enum SingleSe {

   //唯一实例,默认public static final的
	INSTANCE;
	public String name;
	public void doSomething() {
		System.out.println("doSomething");
	}
	public static void main(String[] args) {
		SingleSe.INSTANCE.doSomething();
	}
}
基于Swin Transformer与ASPP模块的图像分类系统设计与实现 本文介绍了一种结合Swin Transformer与空洞空间金字塔池化(ASPP)模块的高效图像分类系统。该系统通过融合Transformer的全局建模能力和ASPP的多尺度特征提取优势,显著提升了模型在复杂场景下的分类性能。 模型架构创新 系统核心采用Swin Transformer作为骨干网络,其层次化窗口注意力机制能高效捕获长距离依赖关系。在特征提取阶段,创新性地引入ASPP模块,通过并行空洞卷积(膨胀率6/12/18)和全局平均池化分支,实现多尺度上下文信息融合。ASPP输出经1x1卷积降维后与原始特征拼接,有效增强了模型对物体尺寸变化的鲁棒性。 训练优化策略 训练流程采用Adam优化器(学习率0.0001)和交叉熵损失函数,支持多GPU并行训练。系统实现了完整的评估指标体系,包括准确率、精确率、召回率、特异度和F1分数等6项指标,并通过动态曲线可视化模块实时监控训练过程。采用早停机制保存最佳模型,验证集准确率提升可达3.2%。 工程实现亮点 1. 模块化设计:分离数据加载、模型构建和训练流程,支持快速迭代 2. 自动化评估:每轮训练自动生成指标报告和可视化曲线 3. 设备自适应:智能检测CUDA可用性,无缝切换训练设备 4. 中文支持:优化可视化界面的中文显示与负号渲染 实验表明,该系统在224×224分辨率图像分类任务中,仅需2个epoch即可达到92%以上的验证准确率。ASPP模块的引入使小目标识别准确率提升15%,特别适用于医疗影像等需要细粒度分类的场景。未来可通过轻量化改造进一步优化推理速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值