自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 双重检查锁定与延迟初始化

双重检查锁定的由来 问题的根源 基于volatile的解决 基于类初始化的解决方案 类或接口初始化的五个阶段 第一阶段 第二阶段 第三阶段 第四阶段 小结 在Java多线程程序当中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销.双检查锁定是常见的延迟初始化结束,但他是一个错误的用法. 双重检查锁定的由来 在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并...

2019-09-06 19:15:26 205

原创 happens-before规则

happens-before是JMM最核心的概念。 JMM的设计 从JMM设计者的角度,在设计JMM时,需要考虑两个关键因素 程序员对内存模型的使用.程序员希望内存模型易于理解,易于编程.程序员希望基于一个强内存模型来编写代码. 编译器和处理器对内存模型的实现.编译器和处理器希望内存模型对它们的束缚越少越好,这样它们就可以做尽可能多的优化来提高性能.编译器和处理器就希望实现一个弱内存模型. 由...

2019-09-06 17:33:12 246

原创 volatile的内存语义

volatile的内存语义 volatile的特性 volatile写-读建立的happens-before关系 volatile写-读的内存语义 volatile的写内存语义 volatile读的内存语义 volatile内存语义的实现 volatile的内存语义 volatile的特性 理解volatile特性的一个好方法是把对volatile变量的单个读/写,看成是使用同一个...

2019-09-03 08:37:20 217 1

原创 锁的内存语义

锁的内存语义 锁的释放-获取建立的happens-before关系 锁是Java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送信息. 假设线程A执行writer()方法,随后线程B执行reader()方法.根据happens-before规则,这个过程happens-before关系可以分为3类. 根据程序次序规则,1 happens-bef...

2019-09-03 08:34:42 159

原创 redis从海量的key里面查询出某一固定前缀的key

生成海量数据 1.Linux Bash下面执行(一定要是Bash) for((i=1;i<=20000000;i++)); do echo "set k$i v$i" >> /tmp/redisTest.txt ;done; 生成2千万条redis批量设置kv的语句(key=kn,value=vn)写入到/tmp目录下的redisTest.txt文件中 2.用vim去掉行尾...

2019-08-29 21:37:39 5308 3

原创 Redis的数据类型即应用场景

String(最基本的数据类型,二进制安全) String是二进制安全的,也就是说redis的String可以包含任何数据类型,比如说JPG图像或者是序列化对象.String类型能存储的最大值是512MB. String就像是Java中的Map一样,一个Key对应一个Value 基本用法: 127.0.0.1:6380> set hello world OK 127.0.0.1:6380&g...

2019-08-29 21:37:00 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除