使用单件模式的意图是保证一个类只有一个实例,并提供一个访问它的全局访问点。
将单件定义为全局或静态对象,然后依赖于自动的初始化,并不能完全实现上述意图。虽然可以提供全局访问点,但这是不够的。原因如下:
1)我们不能保证静态对象只有一个实例会被声明。
2)我们可能没有足够信息在静态初始化时实例化每个单件,单件可能需要在程序运行中稍后被计算出来的值。
3)c++没有定义转换单元上全局对象的构造...
分类:
其他好文 时间:
2014-09-16 23:47:51
阅读次数:
425
单例模式是使用最广泛,也最简单的设计模式之一,作用是保证一个类只有一个实例。单例模式是对全局变量的一种改进,避免全局变量污染命名空间。因为以下几个原因,全局变量不能作为单例的实现方式:1. 不能保证只有一个全局变量2. 静态初始化时可能没有足够的信息创建对象3. c++中全局对象的构造顺序是未定义的...
分类:
其他好文 时间:
2014-09-15 22:34:49
阅读次数:
289
Java提供了两种不同的初始化类型,分别是类的初始化和对象的初始化。类成员都是静态的,默认会设置一个值。对象的初始化会在构造函数里面进行。但如果想要赋给静态变量非默认值,或者是初始化一类共有的对象属性(不论调用哪个构造函数),那么就需要一些特殊的方法。Java提供了静态初始化块和非静态初始化块来处理这两种情况。...
分类:
编程语言 时间:
2014-08-21 22:49:14
阅读次数:
263
一、final 修饰变量,被final修饰的变量在被赋初始值之后,不能对它重新赋值 修饰实例变量,必须显示指定初始值,可以在三个位置指定初始值: 1、定义final实例变量时指定初始值 2、在非静态初始化块中为final变量指定初始值 3、在构造器中为final实例变量指定初始值...
分类:
其他好文 时间:
2014-08-21 11:12:13
阅读次数:
244
vulnerability 漏洞 exploit 破解 Proof Of Concept(POC) fuzzer 模糊测试工具 内存管理: .text 只读 .bss 未初始化数据 .data静态初始化数据 汇编语言: 段寄存器 16位的 段寄存器CS,DS,SS一般用作段基址寄存器 EIP 下一条...
分类:
其他好文 时间:
2014-08-20 22:32:12
阅读次数:
200
以前看过书上这样的写法。还不是很清楚为什么,今天在看了一遍《headfirst Java》才终于算是明白了。
正如静态变量,静态初始化程序(static initializer)是一段在加载类时会执行的程序代码,它会在其他程序可以使用该类之前就执行,所以很适合放静态final变量的起始程序。
public class Hello {
private final static ...
分类:
其他好文 时间:
2014-08-19 16:34:14
阅读次数:
153
这两天项目代码中遇到一个很疑惑的问题,问题可以描述为:一个静态成员初始化的时候直接core掉,该静态成员初始化时通过另外一个文件中静态成员来完成。该问题同样发生在全局对象上。该问题可以描述为今天要讨论的:变量的静态初始化顺序。
具体可以用代码简述如下:
//test1.cpp
#include
std::string a = "test";
//test2.cpp
#inclu...
分类:
编程语言 时间:
2014-08-10 21:34:30
阅读次数:
385
1. 概述 条件变量和互斥量是最基本的同步形式,总是用于同步同一个进程的各个线程间同步。 当把条件变量或互斥量放在共享内存区时,可用于进程间同步。 同样的情况还有读写锁,它们都是随进程的持续性。 2.互斥锁 互斥锁指代相互排斥,用于保护临界区。多个线程和多个进程分享的共享数据。 静态初始化:stat...
分类:
其他好文 时间:
2014-08-01 22:49:32
阅读次数:
320
NSDate的静态初始化+ (id)date //返回当前时间+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs //返回以当前时间为基准,然后过了secs秒的时间。+ (id)dateWithTimeIntervalSinceRefere...
分类:
其他好文 时间:
2014-07-26 01:47:56
阅读次数:
226
Java中数组的初始化方式
初始化方式有两种:
1、静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统指定数组长度
2、动态初始化:初始化时由程序员只指定数组长度,由系统为数组元素分配初始值...
分类:
编程语言 时间:
2014-07-20 10:13:28
阅读次数:
203