自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 原子性、可见性、有序性

原子性:由JMM直接保证的原子性变量操作是read、load、assign、use、store和write,大致可以认为基本数据类型的读写都是原子性的操作(大多数商用虚拟机将long和double的读写作为原子性操作来对待),对于更大范围的原子性保证,JMM提供了monitorenter和monitorexit操作,对应Java代码中就是synchronized关键字。可见性:可见性是指当一个...

2018-10-31 20:41:16 242

原创 volatile的语义

1.可见性:当一个线程修改了这个值,新值对其他线程是立即可知的。当被volatile修饰的变量的值发生改变后,新值会立即从线程的工作内存刷新到主内存(执行store和write操作),而且线程每次使用这个变量前,都会将主内存的值刷新到工作内存(read和load操作),普通变量的值在线程间传递均需要通过主内存来完成。2.禁止JIT进行指令重排序优化,普通变量不能保证变量赋值操作的顺序与代码中的...

2018-10-31 20:19:45 200

原创 JMM内存交互模型

JMM的主要目标就是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量指线程间共享的变量,包括实例字段、静态字段和构成数组对象的元素,存储在主内存中。每个线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量主内存的副本拷贝(JVM只会拷贝对象的引用和线程中访问到的字段,而不会把整个对象都从主内存拷贝到工作线程),线程对变量的操作...

2018-10-31 17:53:15 286

翻译 硬件效率与缓存一致性

  绝大多数的计算任务都不可能只靠处理器计算就能完成,处理器至少要跟内存交互,如读取运算数据、存储运算结果等,这个I/O是很难消除的,无法仅靠寄存器来完成所有的计算任务。由于计算机存储设备与处理器的运算速度有个数量级的差距(即便存储设备使用SSD,还是比处理器慢几个数量级),所以计算机系统不得不增加一层读写速度尽可能接近处理器速度的高速缓存Cache来作为内存和处理器之间的缓冲:将运算需要使用到的...

2018-10-31 16:47:37 256

翻译 类加载模型-双亲委派模型

   如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此,所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。使用双亲委派模型来组织加载器之间的关系,会使Java类随着它的类加载器一起具备了一种带有...

2018-10-30 10:46:14 141

翻译 类加载器

public class ClassLoaderTest { public static void main(String[] args) throws Exception{ ClassLoader myLoader = new ClassLoader(){ @Override public Class<?> ...

2018-10-29 11:31:52 93

翻译 JVM实践-类初始化

只有主动引用可以触发类的初始化,被动引用不能触发类的初始化。有以下5种主动引用:1.遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果没有进行初始化,会触发初始化。2.使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行初始化,则需触发初始化。3.当初始化一个类时,如果发现其父类还没有进行初始化,则需先触...

2018-10-25 21:38:44 118

原创 直接内存溢出

JVM虚拟机是运行在操作系统上的进程,操作系统分配给JVM的内存在启动是有限的,不可能把全部内存都分配给JVM,Java NIO又用到了直接内存技术,利用Channel和Buffer直接操作JVM外的内存,避免数据在JVM和操作系统内存之间来回复制。但是,当JVM和直接内存的和大于操作系统总内存时,就会发生内存溢出。...

2018-10-19 11:24:17 655

原创 static和final在并发场景下的应用

1.static:静态初始化不需要同步,自带线程安全属性public class LazyInitialization { private static class ResourceHolder { public static Resource resource = new Resource(); } public static Resource ...

2018-10-19 11:13:02 619

原创 MySQL索引常识

1.为什么索引可以加快数据库的检索速度?MySQL的基本的存储结构是页,行存储在页的User Record区域,各个数据页可以组成一个双向链表,而每个数据页中的行记录又可以组成一个单向链表。select * from coupon_detail where user_id = "1231312313";如果user_id不是索引字段,那么MySQL会先遍历双向页链表,找到数据所在的页,...

2018-10-15 11:36:32 129

原创 CAS的ABA问题与解决办法

CAS的核心操作就是比较V值与A是不是一致,如果一致,则将V更新为B。如果V先被线程1更新为C,又被线程2更新为A,最后当前线程进行CAS操作时,看到V的值还是A,认为可以将V更新为B,但是某些场景下,ABA被认为是发生了变化,需要重新执行计算。产生问题的原因:缺失足够多的信息。解决方案:增加信息量,原来要校验并更新1个值,现在校验并更新2个值,包括原来要更新的值和一个版本号。Java...

2018-10-13 17:10:12 331

原创 Git修复线上Bug或多任务协作开发模式

1.修复线上BUG:以master为基准,拉取新分支,如master-20181013fix,在新分支上修复线上bug,然后合并到test分支,发到测试环境测试,测完完成,再将master-20181013fix合到master分支,可以避免将其他人合到test分支上的代码错误合并到master。2.多任务协作开发:以master为基准,拉取新分支,如master-20181013pa...

2018-10-13 14:27:19 1096

原创 线程阻塞的实现原理

Java中,当多个线程同时请求独占锁时,JVM虚拟机会根据上一次获取锁操作中对锁的持有时间来决定是挂起线程还是让线程自旋,当上一次持有锁的时间相对较长时,会将线程加入阻塞队列,否则让线程通过while来自旋。常用的阻塞方式:加入FIFO的队列,或者while自旋。...

2018-10-13 13:54:06 2720 1

原创 ReentrantLock可重入实现原理

ReentrantLock持有实现了AbstractQueuedSynchronizer的static内部类,而AbstractQueuedSynchronizer继承了AbstractOwnableSynchronizer,AbstractOwnableSynchronizer有个保存当前持有锁的线程的变量exclusiveOwnerThread。/** * The current ow...

2018-10-13 11:55:09 714

原创 MySQL控制流

MySQL控制流有:CASE、IF、IFNULL、NULLIF1.CASECASE有2种格式,可以用在SELECT或WHERE字句中。         CASE value WHEN compare_value_1 THEN result_1 WHEN compare_value_2 THEN result_2 ...

2018-10-12 17:37:40 320

原创 MySQL VARCHAR使用说明

VARCHAR(5)代表这个字段的最大空间是5字符,可以是数字、字母、特殊符号、汉字等通用字符集的内容。如"abcde"、"测试测试测",但是不能超过长度限制,如果是"测试测试测试",则会报data too lang的错误。...

2018-10-12 17:13:00 1643

原创 MySQL 聚簇索引 clustered index

Typically, an index is a separate data structure such as B-Tree that stores the key values used for faster lookups.A clustered index, on the other hand, is actually the table. It is an index that en...

2018-10-12 17:08:45 1490 1

常用算法资源:算法pdf

常用算法资源:算法pdf

2023-12-23

空空如也

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

TA关注的人

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