【2016-10-14】【坚持学习】【Day5】【单例模式】

今天学习第二个模式:单例模式。只允许系统有一个实例运行,提供全局访问该实例的公共方法。

class Singleton
{
    private static Singleton instance=null;  //静态私有成员变量

    //私有构造函数
    private Singleton()
    {
    }

    //静态公有工厂方法,返回唯一实例
    public static Singleton GetInstance()
    {
        if(instance==null)
            instance=new Singleton();
        return instance;
    }
}

饿汉单例:

class EagerSingleton
{
private static EagerSingleton instance = new EagerSingleton();
private EagerSingleton() { }
public static EagerSingleton GetInstance()
{
return instance;
}
}

懒汉单例+双重保险

class LazySingleton
{
private static LazySingleton instance = null;
//程序运行时创建一个静态只读的辅助对象
private static readonly object syncRoot = new object();
private LazySingleton() { }
public static LazySingleton GetInstance()
{
      //第一重判断,先判断实例是否存在,不存在再加锁处理
if (instance == null)
{
    //加锁的程序在某一时刻只允许一个线程访问
lock(syncRoot)
{
    //第二重判断
    if(instance==null)
    {
        instance = new LazySingleton();  //创建单例实例
}
}
}
return instance;
}
}
时间: 2025-01-02 16:17:03

【2016-10-14】【坚持学习】【Day5】【单例模式】的相关文章

2016.10.24 继续学习

今天继续学习,进入面向对象的学习. 1.输出换行可以这样输出 System.out.println(); 2.数组学得有点蒙.... public class PracMultiArray { public static void main(String[] args) { int[][] a1 = {{1, 2, 4}, {3, 1, 2}, {14, 5, 3}}; System.out.println(a1[1][2]); for(int i=0;i<a1.length;i++){ for

2016.10.30 济南学习 Day2 下午 T1

他 [问题描述] 一张长度为??的纸带,我们可以从左至右编号为0 ? ??(纸带最左端标号为 0).现在有??次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行两个数字??, ??如题意所述. 接下来一行??个整数代表每次折叠的位置. [输出格式] 一行一个整数代表答案. [样例输入] 5 2 3 5 [样例输出] 2 [样例解释] 树上有只鸟. [数据规模与约定] 对于60%的数据,??, ?? ≤ 3000. 对于100%的数据,?? ≤ 101

2016/01/14开始学习git:标签管理:创建标签

标签也是版本库的一个快照指向某个commit的指针(分支可以移动,标签不能移动) 切换到需要打标签的分支上git tag <name>就可以打一个新标签: $ git tag v1.0 git tag查看所有标签: $ git tagv1.0 打之前提交的版本的commit需要当时的commit ID$ git tag v0.9 93ddf60 查看tag$ git tagv0.9v1.0 标签不是按时间顺序列出,而是按字母排序的.可以用git show <tagname>查看标签

2016.10.26 继续学习

今天继续学习面向对象部分 1.static的使用 静态方法不能访问非静态变量 非静态方法可以访问静态变量 a.静态变量 public class PracStaticParam { int id = 0; static int num = 0; PracStaticParam(int x) { this.id = x; num++; } public static void main(String[] args) { PracStaticParam s1 = new PracStaticPara

2016.10.14,英语,《American Accent Training》

这本书是讲述美语发音训练的.已经看了一段时间了,决定向周叶学习,记录读书笔记.计划每天花半个小时,学习3节左右的音频(按照CD TRACK),并完成训练. CD1 Track1 What is Accent? Accent is a combination of  three main components:intonation(speech music),liaisons(word connections),pronunciation(the spoken sounds of vowels,c

2016/01/14开始学习git:标签管理:操作标签

一.删除本地标签 如果标签打错了,也可以删除:git tag -d v0.1 因为创建的标签都只存储在本地,不会自动推送到远程.所以,打错的标签可以在本地安全删除. 二.推送标签如果要推送某个标签到远程,使用命令git push origin <tagname>:git push origin v1.0或者,一次性推送全部尚未推送到远程的本地标签:git push origin --tags 三.删除远程标签如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:git tag -d

2016/01/14开始学习git:分支管理:多人协作

一.当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin. 要查看远程库的信息,用git remote:origingit remote -v显示更详细的信息origin  [email protected]:Jacobwan/learngit.git (fetch)origin  [email protected]:Jacobwan/learngit.git (push) 二.推送分支推送分支,就是把该分支上的

10.14的学习报告里的新名词

欧式范数: 激波函: 可视化: 鲁棒性: UCF50  数据集: vectorized  向量化 piece-wise 分段 cinstant:恒定的 patches:修补程序 spikes:电信号 momentum:惯性 HOG+MBH+HOF: temporal:时序 algorithm:算法 propagation:传播, Back Propagation 反向传播 ; 反向传播算法 ; 算法 ; 向后传播算法 propagation loss 传播损耗 ; 传播损失 ; 传输损耗 ; 传

每周例行报告2016.10.07-2016.10.14

PSP 日期 类型 任务 开始时间 结束时间 被打断时间(min) 实际(min) 2016.10.07 需求分析 看spec,分析每个功能的需求 14:59 15:38 3 36 编码学习 设计文件存放.分词.词频统计,阅读同学的代码 15:44 17:11 5 82 编码学习 词频排序.读取目录下书目.主函数设计 19:00 21:26 19 127 2016.10.08 编码学习 学习重定向 15.01 15:39 2 36 代码复审 写博客.调试运行结果 15:45 17:12 6 81

每周进度及工作量统计——2016.10.06-2016.10.13

项目:词频统计--web支持 项目类型:个人项目 项目完成情况:已完成 项目改进:新项目 项目日期:2016.10.9-2016.10.10 C类别 C内容 S开始时间 E结束时间 I间隔 T净时间 P预计时间 分析 设计  9:12  10:37  55  30  20 学习 查阅资料  10:37  11:46  0  69  30 编码 实现上传  16:03  21:53  127  223  180 优化 改进 9:56 17:41  149  316  120 文档 程序说明,随笔