创建线程的方法
1、类继承Thread并重写run()方法
2、类实现Runnable接口并重写run()方法 (无返回值,发生异常不会抛出)
3、实现Callable接口并实现call()方法 (有返回值,发生异常会抛出)
自定义线程池,可以使用hutool工具
ExecutorBuilder.create().build 构建者模式
SpringBoot相对于SSM有哪些优点
1、简化配置
2、快速开发,内置tomcat服务器
3、微服务支持:Spring Boot 是构建微服务架构的理想选择。它提供了对 Spring Cloud 的无缝集成,可以方便地实现服务注册与发现、负载均衡、断路器等微服务相关的功能。
Spring Boot 在开发效率、配置简化、微服务支持等方面相对于 SSM 框架具有明显的优势,使得开发者能够更快速地构建高效、可扩展的应用程序。
设计模式
HashMap底层原理
jdk1.8时,HashMap由数组(键值对entry组成的数组主干)+ 链表(元素太多时为解决哈希冲突数组的一个元素上多个entry组成的链表)+ 红黑树(当链表的元素个数达到8链表存储改为红黑树存储)进行数据的存储。当数组的长度大于64 和 链表的节点达到8的时候 才转成红黑树。当红黑树 的节点小于6的时候,转成链表。
加载因子:0.75
初始容量: 16
扩容的倍数:2
map.put(k,v)实现原理
1、首先将k,v封装到Node对象当中(节点)。
2、然后它的底层会调用K的hashCode()方法得出hash值。
3、通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。如果说下标对应的位置上有链表。此时,就会拿着k和链表上每个节点的k进行equal。如果所有的equals方法返回都是false,那么这个新的节点将被添加到链表的末尾。
HashMap,Hashtable两者之间的区别
HashMap 和 Hashtable 两者都是Map接口之下的两个实现类,Map对象是键值对的,所以两类也是键值对的.
HashMap的初始化容量为16,而Hashtable的初始化容量是11,
Hashtable 是线程安全的,使用synchronized同步代码块保证安全性,效率低
HashMap 非线程安全的,效率高,如果要在多线程场景下使用,请用ConcurrentHashMap
key 健值: HashMap 健值 可与为 null, HashTable 不允许为null
HashMap和Hashtable
存储:HashMap 运行 key 和 value 为 null,而 Hashtable 不允许。
线程安全:Hashtable 是线程安全的,而 HashMap 是非线程安全的。
推荐使用:在 Hashtable 的类注释可以看到,Hashtable 是保留类