7月8日 学习日记

  1. HashMap
  2. 通过扩容可以减少链表长度
  3. 当链表长度超过8时会扩容
  4. 当数组长度到达64且链表长度超过8个的时候会转化成红黑树
  5. 红黑树
    1. 左结点都是比结点小
    2. 右结点都是比结点大
  6. 先比较hashcode,在比较值
  7. 扩容是原来的2倍
  8. 树里面排序是按照字符串排序
  9. 正常情况下链表不会超过6个,只有当遭到dos恶意攻击时,恶意存入一样的hashcode,才会超过8,当超长链表出现的时候系统性能会下降的很快,树化就是为了防止遭受这种攻击。
  10. 红黑树的时间复杂度 long2 n
  11. 树的占用空间比链表大,如非必要不会树化
  12. 退化情况
    1. 扩容时如果链表小于等于6个就会退化为链表
    2. remove树结点时,若root,root-left,root-right,root-left-left有一个为null,也会退化为链表,注意是移除之前检查,如果移除后不再了不会退化,若检查到为null了才会退化
  13. 97 % 16 == 97 &(16-1)
  14. 因为取模运算和按位与运算需要是2的n次幂才是等价的,所以hashmap的容量是2的n次幂,按位与运算比取模运算性能高。
  15. 采用质数来当作数组容量,在所有都是偶数的key时,分布情况好。
  16. 采用效率高,应该用2的n次幂来作为数组容量
  17. 1。7的put操作时头插法,1。8的put操作时尾插法
  18. 扩容因子是0。75,当超过数组容量*0。75时会扩容
  19. key可以为null,其他map就不行
  20. 作为key的对象,必须实现hashCode和equals。并且key的内容不可变,否则就会找不到这个key
  21. String对象hashcode,每次乘31来达到很好的散列效果
  22. 设计模式
  23. 饿汉式
    1. 还没实例化就已经被创建好了
    2. 私有构造方法
    3. 静态成员变量唯一实例
    4. 静态方法返回实例
  24. 懒汉式
    1. 使用到才创建好
    2. DCL double check lock
    3. if instance == null
    4. synchranized
    5. if instance == null
    6. instance 上要加volatile
    7. volatile可以解决可见性和有序性问题,添加了这个关键字会阻止了代码指令重排序,就不会出现线程2出现没有进行构造的实例。
    8. 还有一种静态内部类来创建初始化的一种方式,
  25. 枚举类
    1. 饿汉式
    2. 不怕序列化和反射破坏单例模式
  26. 单例在jdk
    1. Runtime 饿汉式
    2. System的Console 懒汉式 (控制台)
    3. Collections集合中有许多
    4. Comparator 采用枚举实现单例
  27. 并发
  28. 线程状态
    1. new 新建
    2. new线程的时候就是新建状态
    3. 通过start 转换成可运行
    4. runnable 可运行
    5. terminated 终结
    6. 线程执行完毕进入终结状态
    7. blocked阻塞
    8. 获得锁失败时
    9. 获得锁成功后进入可运行
    10. waiting等待
    11. 获得锁成功,条件不满足的时候会调用wait()方法,进入等待状态,同时释放锁
    12. 当条件满足了,别的线程会调用notify()来进入可运行
    13. timed waiting 等待 有时限
    14. wait(long),进入等待
    15. 时间到或notify()进入可运行
    16. 调用sleep也会进入等待
    17. 时间到后进入可运行
  29. 线程池的核心参数
    1. corePoolSize 核心线程数目,最多保留的线程数,可以为0,
    2. maximumPoolSize 最大线程数目,核心线程数+救急线程
    3. keepAliveTime生存时间,针对救急线程
    4. unit 时间单位 针对救急线程
    5. workQueue 阻塞队列
    6. threadFactory 线程工厂,可以为线程创建时起一个好名字
    7. handler 拒绝策略

posted @
2022-07-13 13:32 hanukkah

阅读(
26

) 评论(
) 编辑

Original: https://www.cnblogs.com/qiming666/p/16473530.html
Author: hanukkah
Title: 7月8日 学习日记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575022/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球