![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
JzJ_jason
懒得说
展开
-
代理反射
代理静态代理核心点就是,代理对象要持有具体的被代理对象 ===》 确定性代理例子:/** * @Author: JZJ * @Date: 2020/6/19 14:58 */public class StaticProxy implements HelloWorld { private HelloWorld service;//被代理对象 -- 代理了HelloWorld“一类”;HelloWorld可能有多种实现类 public StaticProxy(HelloW原创 2020-12-31 15:52:26 · 141 阅读 · 0 评论 -
JDK1.8 -- LinkedHashMap学习记录
LinkedHashMap的特性:双向链表实现有序类继承关系继承HashMap;实现Map接口;成员LinkedHashMap只有3个新增的成员:1、head:记录头元素2、tail:记录尾元素3、accessOrder:排序的方式构造函数 public LinkedHashMap(int initialCapacity, float loadFactor, boole.原创 2020-12-28 15:41:42 · 71 阅读 · 0 评论 -
jdk1.7hashmap扩容死循环问题解析
之前就知道1.7的hashmap在并发下是存在安全性问题的。1、值可能会被覆盖2、死循环的问题虽然知道有问题,但是没有具体分析过。所以今天就自己画一画,看看问题是怎么产生的。1.7版本源码片段// A code blockvar foo = 'bar';...原创 2020-12-25 16:23:57 · 607 阅读 · 1 评论 -
jdk8中hash()方法的学习记录
引入我们知道hash算法的目的在于,让我们存储的值更更更加散散散列的存储数据;那要分析这个hash算法那就离不开寻址算法了,hashmap怎么决定存储位置的?寻址算法这是hashmap的put方法,我们可以发现hashmap的寻址算法:(length - 1) & hash //决定值的存储位置index寻址算法为什么这样设计?hashmap的length是2的n次幂length可能的值:2/4/8/16…因为有&运算,我们转换成二进制:( 2-1) :0000 …原创 2020-12-24 18:20:23 · 285 阅读 · 1 评论 -
volatile简介
volatilejmm8个原子性操作lock :将一个变量标记为线程独占;read :从主内存中读取数据;load :将读取的数据加载到线程工作内存中;use :将工作内存的数据给执行引擎执行;assign :将执行结果赋值给工作内存;store :将工作内存的数据存回主内存;write :将线程存回主内存的数据写入原始变量;unlock :释放锁;流程图总线:就是主内存和cpu数据传输的通道问题并发下,数据一致性没法保证。解决方式一(加锁)加锁 – 我们看到还有lock和原创 2020-12-23 18:02:22 · 132 阅读 · 0 评论