这几天一直在学习设计模式,看到访问者模式有点不太理解,上javaeye搜索到兽王Rjx2008的博客,发现不少好东西。
先看了个常见的单例模式,刚接触设计模式买了本大话设计模式,讲到单例模式时关于多线程,用了双重检查锁DCL,不过在兽王的博客里对其否定了,来看看兽王是怎么讲解的吧。
不容易掌握的单例模式
小知识:单例模式有两种,饱汉、饿汉。顾名思义饿汉是饥不择食,强行创建,而饱汉则会挑挑食。
//饿汉式
Class A{
private static A a=new A();
private A(){}
public A getA(){
return a;
}
}
//饱汉式
class B{
private static B b;
private B(){}
public B getB(){
if(b!=null){
return b;
}else{
b=new B();
retrun b;
}
}
}
兽王对多线程情况下单例迷失应用的处理是:
public class Singleton {
private Singleton(){
}
//静态内部类
static class SingletonInner{
static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return SingletonInner.instance;
}
}
原因:使用静态内部类!它是由一个叫Bob Lee的人写下来的(最初忘记了是哪两个人提出)。在加载singleton时并不加载它的内部类SingletonInner,而在调用 getInstance()时调用SingletonInner时才加载SingletonInner,从而调用singleton的构造函数,实例化 singleton,从而在不需要同步的情况下,达到延迟初始化的效果。
文中的内容均是兽王Rjx2008的出品,
链接
分享到:
相关推荐
在STOP模式下,可以通过配置中断或事件来唤醒MCU,这在本例中就是通过按键和串口实现的。 按键唤醒通常基于EXTI(外部中断)线路上的输入捕获。在进入STOP模式前,需要配置EXTI线路上的中断,并在唤醒后处理中断...
由于STM8L系列主打低功耗特性,因此例程可能包含节能模式的切换,如空闲模式、掉电模式等,以延长电池寿命。 10. **错误处理**: 例程中通常会有错误检查和异常处理机制,如CRC校验、通信错误检测等,以保证系统...
这些定时器可以工作在不同的模式,如自由运行模式、单脉冲模式、重复计数模式等,且具备比较单元和捕获单元,可用于脉宽调制(PWM)输出和输入信号的检测。 定时器中断是STM32处理时间事件的重要方式。当定时器的...
STM8L系列的一大特点便是低功耗,以STM8L051F3为例,该型号MCU拥有5种低功耗模式,分别为Wait, Low power run, Low power wait, Active-halt with RTC, Halt等。其中Halt模式下功耗为最低,本篇也将详细讨论该模式...
以关系模式S-L(Sno,Sdept,Sloc)为例,其中Sno是学生编号,Sdept是系别,Sloc是宿舍位置。该关系模式中存在非主属性对码的传递函数依赖,即Sno→Sdept,Sdept→Sloc,因此S-L模式属于2NF。然而,S-L模式仍存在...
在一个编码字符串中,存在多种模式,长度为l的二进制编码字符串上的模式总数为(2+1)^l,而在一个长度为m、规模为M的群体中,通常包含(2^m)^2种模式。模式的阶(Schema Order)表示模式中确定基因值的位置数,它决定...
- **驱动模式**:采用双H桥结构设计,能够独立控制两个电机的正转、反转以及停止状态。 #### 三、L298N引脚说明 L298N具有多个重要的引脚: 1. **IN1~IN4**:这四个引脚用于接收外部控制信号,通过组合不同的高低...
例如,可以选择连续测量模式以获得连续的数据流,或者选择单次测量模式以降低功耗。 2. **I2C或SPI通信**:HMC5883L支持两种通信协议,I2C更适合资源有限的系统,而SPI则能提供更高的数据传输速率。根据所使用的STC...
这个单片机因其高效的能源管理、丰富的外设集和小巧的封装而广泛应用于各种低功耗应用,如智能家居、安防系统,以及本例中的指纹锁电路设计。 指纹锁电路设计是现代安全技术的一个重要应用,它利用人的生物特征——...
本例涉及模式识别中的基本概念——类内散布矩阵(Sw)与类间散布矩阵(Sb)的计算。 **题目背景**: 设有三个类别样本集ω1,ω2和ω3,它们的先验概率相同,要求计算类内散布矩阵Sw和类间散布矩阵Sb。 **样本数据...
升级过程通常包括下载最新固件文件(如本例中的"DLINK_DNS320L(LW).1.08b08(3.07.0420.2016)"),通过设备管理界面进行安装。在升级前,建议备份重要数据,以防意外情况。 总之,DNS-320L的v1.08b08固件升级不仅...
在本例中,提供的压缩包可能包含了该软件,文件名为“l100”。 2. **解压并运行**:下载完成后,解压缩文件,找到可执行程序,双击运行。 3. **选择打印机型号**:软件启动后,按照界面提示选择打印机型号为EPSON ...
1. 初始化单片机:设置I/O口为输出模式,准备连接到L298和ULN2003的控制引脚。 2. 编写步进电机控制函数:定义步进电机的步进序列,即每个相位的通电顺序,以实现电机转动。 3. 设定速度控制:通过定时器设置脉冲...
在本例中,定时器4将被配置为PWM(脉宽调制)模式或者简单的定时中断模式,用于控制LED的亮度或闪烁频率。 首先,要使用定时器4,需要在初始化阶段进行配置。这包括设置预分频器值,确定计数器的时钟频率。预分频器...
它允许设计者以行为、结构和混合模式来描述电子系统,广泛应用于 FPGA(Field-Programmable Gate Array)和 ASIC(Application-Specific Integrated Circuit)的设计。"vhdl_100例"这个资源很可能是为了帮助学习者...
在当前的互联网时代,国有企业(以下简称“国企”)的采购模式正经历着深刻的变革,电商化采购成为一种趋势。本文将结合L公司的实践案例,深入探讨互联网背景下国企采购电商化的实施路径、挑战与应对策略。 一、...
本实验以LED闪烁为例,旨在帮助初学者掌握STM32L431RCT6的基础使用和CUBEMX配置工具以及HAL库的运用。 **CUBEMX简介** CUBEMX是ST官方提供的一个配置工具,全称为STM32CubeMX。它简化了STM32微控制器的初始化过程,...
本实验以灵动微电子的MM32L0xx系列低功耗单片机,特别是MM32L073为例,来探讨如何实现IAP功能,并通过串口进行程序更新。MM32L0xx系列单片机因其高效能、低功耗的特性,被广泛应用于各种对电源要求严格的场合,且与...