懒汉式,线程不安全 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == n ...
分类:
其他好文 时间:
2020-06-28 18:22:58
阅读次数:
37
java基础篇 java基础 目录 1、java是一种什么语言,jdk,jre,jvm三者的区别 2、java 1.5之后的三大版本 3、java跨平台及其原理 4、java 语言的特点 5、什么是字节码,字节码的好处 6、java 和 c++ 的区别 7、java的三大特性 8、java中的基本数 ...
分类:
编程语言 时间:
2020-06-28 11:11:14
阅读次数:
78
一、volitail起到什么作用 1.可变的,跟踪变量的变化,保证线程的可见性. 1.1堆内存是所有线程共享的内存,每个线程都有自己专属的工作内存,当某一线程要访问某一个值的时候,都会copy一份到自己的空间,单线程要改变这个值的时候首先会对自己空间里的值进行改变, 什么时候写回堆的时候不好控制.其 ...
分类:
其他好文 时间:
2020-06-23 00:40:30
阅读次数:
165
##目录 多线程需要解决的问题 线程之间的通信 线程之间的同步 Java内存模型 内存间的交互操作 指令屏障 happens-before规则 指令重排序 从源程序到字节指令的重排序 as-if-serial语义 程序顺序规则 顺序一致性模型 顺序一致性模型特性 顺序一致性模型特性 当程序未正确同步 ...
分类:
编程语言 时间:
2020-06-22 01:23:32
阅读次数:
56
在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 在单线程环境下不能改变程序运行的结果;存在数据依赖关系的不允许重排序 需要注意的是:重排序不会影响单线程环境的执行结果,但是会破坏多线程的执行语义。 ...
分类:
编程语言 时间:
2020-06-21 13:34:42
阅读次数:
55
本篇文章从底层原理层面深度剖析volatile关键字是如何实现内存可见性的,同时引入了Java内存模型、指令重排序以及内存屏障等知识点作为原理分析的知识支撑。 阅读本文之前,推荐大家先阅读作者之前的一篇关于happens-before的文章,这样更有助于大家对volatile关键字底层原理的理解。 ...
分类:
其他好文 时间:
2020-06-18 19:29:06
阅读次数:
49
41. 缺失的第一个正数 思路:利用去重排序,从1找出对应关系,不同即退出循环 class Solution { public: int firstMissingPositive(vector<int>& nums) { if(nums.size()==0) return 1; if(nums.si ...
分类:
其他好文 时间:
2020-06-15 14:13:42
阅读次数:
83
在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是 不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 在单线程环境下不能改变程序运行的结果; 存在数据依赖关系的不允许重排序 需要注意的是:重排序不会影响单线程环境的执行结果,但是会破坏多线程的执 行语义。 ...
分类:
编程语言 时间:
2020-06-09 13:02:12
阅读次数:
65
一、设计简介1、什么是设计模式?设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。1994年,有四位作者:ErichGamma,RichardHelm,RalphJohnson和JohnVlissides发表了一本题为《设计模式-可重用的面向对象软件元素》的图书,该书在软件
分类:
编程语言 时间:
2020-06-06 23:31:18
阅读次数:
110
题目传送门 分析: 一个路径的字符串能够重排序构成回文串当且仅当其中最多有一种字符数量为奇数 22种字符,按该种字符个数是否为奇数构成长度为22的二进制数 其中就只有23种情况符合要求 两条路径合并只需要按位异或了 对于每个点$x$,建立一个以从它开始向下延伸的路径的值作为下标的桶, 一个一个儿子地 ...
分类:
其他好文 时间:
2020-06-06 15:35:29
阅读次数:
68