单例设计模式,意味着整个系统中只能存在一个实例,比方说像日志对象这种。我们常说的有饿汉式和懒汉式这两种模式来创建单例对象,今天就拓展一下思维,多看几种。 首先我们若是想一个类只有一个对象,那肯定先要私有化构造器,断了在其它的类中使用构造器创建实例的念头。其它的类中不能创建,我们就只能在类中自己创建一 ...
分类:
其他好文 时间:
2019-03-12 18:24:13
阅读次数:
164
单例设计模式,意味着整个系统中只能存在一个实例,比方说像日志对象这种。我们常说的有饿汉式和懒汉式这两种模式来创建单例对象,今天就拓展一下思维,多看几种。 首先我们若是想一个类只有一个对象,那肯定先要私有化构造器,断了在其它的类中使用构造器创建实例的念头。其它的类中不能创建,我们就只能在类中自己创建一 ...
分类:
其他好文 时间:
2019-03-12 14:09:16
阅读次数:
157
final: final是一个修饰符,可以修饰变量、方法和类,如果final修饰变量,意味着变量的值在初始化后不能被改变; 防止编译器把final域重排序到构造函数外;(面试的时候估计答出这个估计会加分哦!一般人都会答上面几个,哈哈~,大牛可以忽略) finalize: finalize方法是在对象 ...
分类:
编程语言 时间:
2019-02-24 10:28:11
阅读次数:
179
在多线程并发编程的过程中,执行重排序有时候会造成错误的后果,比如一个线程在main线程中调用setFlag(true)的前边修改了某些程序配置项,而在t1线程里需要用到这些配置项,所以会造成配置缺失的错误。但是java给我们提供了一些抑制指令重排序的方式。 1.同步代码抑制指令重排序 将需要抑制指令 ...
分类:
编程语言 时间:
2019-02-21 00:33:56
阅读次数:
205
请说一下 ArrayList,Vector, LinkedList的区别 答:ArrayList和Vector使用数组的方式存储数据,LinkedList采用双端链表的方式存储数据。 由于插入和移除数据时ArrayList和Vector需要对数组元素进行移动和索引进行重排序,而LinkedList只 ...
分类:
其他好文 时间:
2019-02-14 23:58:24
阅读次数:
340
参考https://www.cnblogs.com/zhengbin/p/5654805.html 阅读目录 一、基本概念 二、Volatile原理 一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉 ...
分类:
编程语言 时间:
2019-02-14 11:45:20
阅读次数:
148
思路: 一些解释: ①:建筑的排序: 下面是以输入顺序为标号,在数组bd中的顺序: 排序后在数组bd中的顺序: 以后我们比较就按这个顺序 ②:x坐标的排序 x的内容是每一个建筑的左边界和右边界,我们把他去重排序后,就是一个一个的坐标,相邻的x形成一个区间, 取它的中点来判断,比如,样例输入的bd[1 ...
分类:
其他好文 时间:
2019-02-14 11:39:36
阅读次数:
159
目录 1.什么是JMM 2.JMM的主内存和工作内存 3.JMM如何解决可见性问题-指令重排序 4.Volatile 十、JMM(Java内存模型)(暂时没有理解) 1.什么是JMM 2.JMM的主内存和工作内存 (1)主内存 (2)工作内存 (3)主内存和工作内存数据存储类型以及操作方式归纳 (4 ...
分类:
编程语言 时间:
2019-02-11 20:00:02
阅读次数:
213
一、 Java并发编程的三个概念 原子性:一个或多个操作要么全部执行成功要么全部执行失败; 可见性:当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获取到最新的值; 有序性:程序执行的顺序按照代码的先后顺序执行(处理器可能会对指令进行重排序); 二、单核CPU到多核CPU的变 ...
分类:
编程语言 时间:
2019-02-10 09:32:59
阅读次数:
210
1. final的简介 final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。即使能够知道final具体的使用方法,我想对final在多线程中存在的重排序问题也很容易忽略,希望能够一起做下探讨。 2. final的具体使用场景 ...
分类:
其他好文 时间:
2019-02-08 20:12:25
阅读次数:
174