- 博客(8)
- 收藏
- 关注
转载 Java String 综述(下篇)
Java 中的 String类 是我们日常开发中使用最为频繁的一个类,但要想真正掌握的这个类却不是一件容易的事情。笔者为了还原String类的真实全貌,先分为上、下两篇博文来综述Java中的String类。笔者从Java内存模型展开,结合 JDK 中 String类的源码进行深入分析,特别就 String类与享元模式,String常量池,String不可变性,String对象的创建方式,Str...
2019-07-02 18:16:30
115
转载 String 综述(上篇)
Java 中的 String类 是我们日常开发中使用最为频繁的一个类,但要想真正掌握的这个类却不是一件容易的事情。笔者为了还原String类的真实全貌,先分为上、下两篇博文来综述Java中的String类。笔者从Java内存模型展开,结合 JDK 中 String类的源码进行深入分析,特别就 String类与享元模式,String常量池,String不可变性,String对象的创建方式,Str...
2019-07-02 10:04:50
96
转载 单例模式
本文首先概述了单例模式产生动机,揭示了单例模式的本质和应用场景。紧接着,我们给出了单例模式在单线程环境下的两种经典实现:饿汉式 和 懒汉式,但是饿汉式是线程安全的,而懒汉式是非线程安全的。在多线程环境下,我们特别介绍了五种方式来在多线程环境下创建线程安全的单例,即分别使用 synchronized方法、synchronized块、静态内部类、双重检查模式 和 ThreadLocal 来实现懒汉式单...
2019-07-01 11:40:23
111
转载 volatile为什么不能保证原子性
首先要了解的是,volatile可以保证可见性和顺序性,这些都很好理解,那么它为什么不能保证原子性呢?可见性可见性与Java的内存模型有关,模型采用缓存与主存的方式对变量进行操作,也就是说,每个线程都有自己的缓存空间,对变量的操作都是在缓存中进行的,之后再将修改后的值返回到主存中,这就带来了问题,有可能一个线程在将共享变量修改后,还没有来的及将缓存中的变量返回给主存中,另外一个线程就对共...
2019-07-01 09:42:09
582
转载 CPU多级缓存与缓存一致性
定义cpu缓存是位于CPU与内存之间的临时存储器,它的容量比内存小的多,但是交换速度却比内存要快得多为什么需要CPU cache?cpu的频率太快了,快到主存跟不上,这样在处理器时钟周期内,cpu常常需要等待主存,浪费资源。cache的出现,是为了缓解cpu和主存之间速度的不匹配问题(结构:cpu->cache>memory)CPU cache有什么意义?1、时间局部性:如果...
2019-06-29 17:51:31
379
转载 Java内存模型
为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。CPU和缓存一致性我们应该都知道,...
2019-06-29 17:51:14
77
转载 内部类
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。但有时候,我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。可幸的是,Java 提供了两种方式让我们曲折地来实现多重继承:接口和内部类。事实上,实现多重继承是内部类的一个极其重要的应用。除此之外,内...
2019-06-29 17:50:00
476
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人