2019年10月13日
摘要: 其实,不分场景地、笼统地说A依赖B其实是不够准确、至少是不够细致的。我们可以简单定义一下什么是依赖。 所谓A依赖B,可以理解为A中某些功能的实现是需要调用B中的其他功能配合实现的。这里也可以拆分为两层含义: A强依赖B。创建A的实例这件事情本身需要B来参加。对照在现实生活就像妈妈生你一样。 A弱依赖 阅读全文
posted @ 2019-10-13 11:30 YL10000 阅读(126) 评论(0) 推荐(0) 编辑
  2019年10月11日
摘要: 锁的原理 java对象结构 java对象包括对象头和实例数据,其中对象头12B,其中4B是对齐位 对象头(12B) 包含mark word 和 klass pointer mark word 包含了锁信息,hashcode,gc信息(64bit,8B) klass pointer 指定对象的元数据的 阅读全文
posted @ 2019-10-11 11:33 YL10000 阅读(155) 评论(0) 推荐(0) 编辑
摘要: CAS的原理 CAS(compareAndSwap),比较交换,是一种无锁的原子算法。 Cas(value,expect,newValue),如果vaule和ecpect一样,就更新为newValue,否则什么也不做,返回false 实现原理 通过调用unsafe.compareAndSwapInt 阅读全文
posted @ 2019-10-11 11:32 YL10000 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 单例模式 1、饿汉式 在加载的时候已经被实例化,只有一次,线程安全 但如果一直不使用,占用资源 2、 懒汉式 2.1 synchronized实现懒汉式 由于使用了synchronized时代码退化为串行执行 2.2 使用DCL(double checked locking)实现懒汉式 在构造方法中 阅读全文
posted @ 2019-10-11 11:31 YL10000 阅读(117) 评论(0) 推荐(0) 编辑
摘要: volatile关键字实现原理 1、volatile关键字的语义分析 作用:让其他线程能够马上感知到某个线程多某个变量的修改 保证可见性 对共享变量的修改,其他线程能够马上感知到 保证有序性 在重排序时保证volatile修饰的代码位置不变 实现原理 对于volatile修饰的变量会编译时会使用Lo 阅读全文
posted @ 2019-10-11 11:31 YL10000 阅读(97) 评论(0) 推荐(0) 编辑
摘要: synchronized 1、 锁机制的特性 互斥性:在同一时间只允许一个线程持有某个对象锁(原子性) 可见性:必须确保在锁被释放之前,对共享变量所在的修改,对于随后获得该锁的另一个线程是可见的 2、synchronized的使用 2.1 锁的分类 对象锁:synchronized(this|obj 阅读全文
posted @ 2019-10-11 11:31 YL10000 阅读(119) 评论(0) 推荐(0) 编辑
摘要: java内存模型 1、JVM内存区域 方法区:类信息、常量、static、JIT (信息共享) java堆:实例对象 GC (信息共享) OOM VM stack:JAVA方法在运行的内存模型 (OOM) PC: java线程的私有数据,这个数据就是执行下一条指令的地址 Native method 阅读全文
posted @ 2019-10-11 11:29 YL10000 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 多线程核心原理 1. 多线程的作用 充分利用CPU资源,提高执行效率 CPU底层使用的是:总线锁和缓存锁(缓存一致性协议) 2. 多线程带来的问题 可见性问题 解决方法 volatile修饰全局变量(hsdis插件查看运行时的汇编指令) 原理:使用lock指令 把当前处理器缓存行的数据写入到系统内存 阅读全文
posted @ 2019-10-11 11:28 YL10000 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 1、数据倾斜 1.1 数据倾斜的现象 现象一:大部分的task都能快速执行完,剩下几个task执行非常慢 现象二:大部分的task都能快速执行完,但总是执行到某个task时就会报OOM,JVM out of Memory,task faild,task lost,resubmitting task等 阅读全文
posted @ 2019-10-11 11:13 YL10000 阅读(197) 评论(0) 推荐(0) 编辑
  2018年7月18日
摘要: 1.master和slave的读写分离(水平扩容支持读高并发) 2.master主从复制流程 master开始复制给slave前的认证流程 master向slave复制流程 2.1 无磁盘化复制配置 repl-diskless-sync yes #开启无磁盘化复制 repl-diskless-syn 阅读全文
posted @ 2018-07-18 18:33 YL10000 阅读(306) 评论(0) 推荐(0) 编辑