单例模式 单例模式就是在系统运行期间有且只有一个实例,且只能提供私有的构造器,保证不能随意创建该类的实例。 第一种(饿汉模式) 上述代码在类加载时就完成了初始化操作,故加载类较慢,但是获取对象的速度很快,也称饿汉模式,并且饿汉模式是在类初始化时就以及自行 实例化,因此不存在线程安全问题。 第二种(懒 ...
分类:
其他好文 时间:
2018-10-07 15:31:11
阅读次数:
144
1、简单的单例模式实现 2、C++的构造函数不是线程安全的,所以上述代码在多线程的情况下是不安全的,原因是new Singelton时,这句话不是原子的,比如一个线程执行了new的同时,另一个线程对if进行判断(此时实例还没被创建出来)。在windows下模拟: 运行结果: 该单例模式也称为懒汉式单 ...
分类:
编程语言 时间:
2018-10-05 12:30:13
阅读次数:
245
一、内存分配分类 1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2.在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。 3.从堆上分配,亦称动态内存分配。程序在 ...
分类:
其他好文 时间:
2018-10-04 10:54:37
阅读次数:
120
2.1 用引用操作对象 2.2 必须由你创建所有对象 2.2.1 存储到了什么地方 当通过new的方式创建对象,会在堆上分配相应的内存空间,通过变量引用分配的对象。 2.2.2 特例:基本类型 对于一些小的对象,在堆上创建往往不是很有效。所以像基本类型,都是直接分配在栈上,创建的变量不是引用,而是直 ...
分类:
其他好文 时间:
2018-10-02 20:16:39
阅读次数:
109
懒汉模式:在类加载的时候不被初始化。 饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快。 饿汉模式是线程安全的,在类创建好一个静态对象提供给系统使用,懒汉模式在创建对象时不加上synchronized,会导致对象的访问不是线程安全的。 synchronized 关键字,代表这个方法 ...
分类:
其他好文 时间:
2018-09-27 00:08:07
阅读次数:
128
本文只需要考虑一件事:如何使单例模式遇到多线程是安全的、正确的 1.立即加载 / "饿汉模式" 什么是立即加载?立即加载就是使用类的时候已经将对象创建完毕,常见的实现办法就是直接 new 实例化。 打印结果: 控制台打印的 hashCode 是同一个值,说明对象是同一个,也就实现了立即加载型单例设计 ...
分类:
编程语言 时间:
2018-09-19 23:29:09
阅读次数:
184
# 前言 本文主要是对Java异常处理机制的阐述,了解Java的异常机制的设计和分类,及Java异常有哪些坑,如何在自定义异常类时避免采坑。 # 异常机制分类 异常情况是指阻止当前方法或作用域继续继续执行的情况。在Java中异常也是对象,我们可以像创建其他对象一样,用new在堆上创建异常对象。从上图 ...
分类:
其他好文 时间:
2018-09-18 14:56:20
阅读次数:
222
装箱:它允许根据值类型创建一个对象,然后使用对这新对象的一个引用。 int i = 5; object o = i; int j = (int)o; 装箱:运行时将在堆上创建一个包含值5的对象(它是一个普通对象)。o的值是对该对象的一个引用。该对象的值是原始值的一个副本,改变 i 的值不会改变箱内的 ...
单例设计模式:保证类在内存中只有一个对象。 1.控制类的创建,不让其他的类来创建本类对象 2.在本类中定义一个本类对象。 3.提供公共的访问方式 单例模式的写法:饿汉模式,懒汉模式 1.饿汉模式写法: class Demo{ //创建私有构造 private Demo(){} //创建本类对象 pr ...
分类:
其他好文 时间:
2018-08-30 14:26:22
阅读次数:
135
背景:单例模式模式是在编程中经常使用,他可以对需要使用的资金进行一次性初始化,防止多次初始化多次资源释放带来性能的开销。 最近在读《JAVA并发编程的艺术》发现有些知识点不错,整理出来。 单例模式常用模式是懒汉模式和饿汉模式 懒汉模式:就是用到时候才new出来。 饿汉模式:类一开始就加载好,可直接使 ...
分类:
其他好文 时间:
2018-08-24 13:23:57
阅读次数:
122