查漏补缺

学习目标:

  • 了解敏捷开发 CI CD

学习内容:

自我介绍
1、项目—负责内容(分步骤介绍,一、介绍自己在项目中的角色 二、介绍自己在项目中的工作内容 )
2、实习经历
HashMap数据结构介绍
HashMap在JDK1.7和1.8有比较大的改变
JDK1.7之前使用的就是数组加链表,它数据节点是一个Entry节点,它的一个内部类。 JDK1.7它的插入过程使用的是头插法,但是hashMap使用头插法会造成什么问题啊? 它的扩容过程可能会造成里面有一个resize的方法,他又调用了一个transfer的方法把里面的一些Entry进行了一个rehash在这个过程中可能会造成一个链表的循环。就可能在下一次Get的时候出现一个死循环的情况,也有可能就是因为他没有加锁,在多个线程并发的情况下可能对他的数据不能保证它的一个线程安全的,就是我push进去的值,取出来还是我push进去的一个值
JDK1.8以后对他数据结构进行了调整,变成了链表加数组加红黑树,采用了尾插法,尾插法他没有改变数据插入的顺序,所以不会出现链表循环的问题。把之前的Entry节点变成了一个Node节点,整个put过程也做了优化
扩容机制:了解Capacity这个节点就是我在初始化HashMap的时候我们没有设置它的capacity,它的默认初始化容量是16,负载因子是0.75,他会计算出一个threshold阈值,如果我在put的时候我会先判断我的size是否大于阈值,如果大于的时候,他就会扩容到原来的两倍,将原来的一个Entry进行一个resize的这么一个过程a
HashMap线程安全问题:
如何保证线程安全:
1、使用ConcurrentHashMap这种线程安全的一个集合容器 并发度更高!! 它使用了CAS Synchronized他只会锁住目前获取的那个Entry所在的节点的一个值。JDK1.6以后对CAS Synchronized进行了一个锁升级的优化,它支持的并发度是更高的。
2、hashTable 直接对里面的方法进行了一个Synchronized就是加了一个对象锁
3、加Synchronized或者Lock
4、Collection.Synchronized
锁的问题:
1、CAS Synchronized
2、锁升级:如果没有获取到这个锁,就升级成为一个轻量级的,一个CAS的锁就是一个乐观锁,乐观锁的时候它是一个比较有交换的过程,如果CAS没有设置成功的话,他会进行一个自旋,自旋到一定次数之后才会升级成一个Synchronized重量级锁,这样就保证了它的一个性能问题
Spring的事务隔离级别:
数据库事务:
AOP项目中使用:
反射机制:
Nginx:
Http:
MYSQL:
EXPlain:
JAVA8新特性:
Stream流:
InnoDB:
本地缓存:
RPC框架:
加粗样式
集合类
并发包
IO/NIO
反射


学习时间:


学习产出:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值