解决哈希冲突(四种方法):
1、开放定址法:我们在遇到哈希冲突时,去寻找一个新的空闲的哈希地址。
(1)线性探测法
(2)平方探测法(二次探测)
2、再哈希法
3、链地址法:将所有哈希地址相同的记录都链接在同一链表中。
4、建立公共溢出区:将哈希表分为基本表和溢出表,将发生冲突的都存放在溢出表中。
java8中,下面哪个类用到了解决哈希冲突的开放定址法 (C)
A. LinkedHashSet
B. HashMap
C. ThreadLocal
D. TreeMap
set不解决冲突
hashmap 链地址法
ThreadLocalMap中解决Hash冲突的方式并非链表的方式,而是采用线性探测的方式,所谓线性探测,就是根据初始key的hashcode值确定元素在table数组中的位置,如果发现这个位置上已经有其他key值的元素被占用,则利用固定的算法寻找一定步长的下个位置,依次判断,直至找到能够存放的位置。
TreeMap数组加红黑树(有序,线程不安全,不允许空值空键)
MYSQL实现主从复制的日志是哪种?(C)
A. READ LOG
B. UNDO LOG
C. BINLOG
D. GENERAL LOG
MySQL5.6开始主从复制有两种方式:基于日志(binlog);基于GTID(全局事务标示符)
MySQL三大日志:binlog、redo log和undo log
Java对象的初始化方式有(A B C )
A. 初始化块
B. 构造器
C. 定义变量时指定初始化值
D. 其它各项都不对
对象的初始化方式
1.new时初始化 ;
2.静态工厂 newInstance;
3.反射Class.forName();
4.clone方式;
5.反序列化;
类的初始化 对象实例化
类的初始化:
是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。类初始化只在类加载的时候执行一次
类的实例化(实例化对象):
是指创建一个对象的过程。这个过程中会在堆中开辟内存,将一些非静态的方法,变量存放在里面。在程序执行的过程中,可以创建多个对象,既多次实例化。每次实例化都会开辟一块新的内存。(就是调用构造函数)
一.什么时候类初始化?
1.第一次实例化之前会先类初始化
main方法所在的类需要先加载和初始化
2.子类初始化会先让父类初始化
3.一个类初始化就是执行()方法
clinit 方法由静态类变量显示赋值代码和静态代码块组成
从上到下顺序执行
二.什么时候实例化?
实例化就是执行()方法
()方法 方法可能重载有多个,有几个构造器就有几个()方法方法
()方法方法由非静态实例变量显示赋值代码和非静态代码块,对应构造器代码组成
非静态实例变量显示赋值代码和非静态代码块从上到下顺序执行,而对应构造器的代码最后执行、
Son son1 = new Son(); (9)(3)(2)(9)(8)(7)
注意!:上图中的 4 没有输出,重写的方法两个类中都调用的是子类的
解释:
public static void main(String[] args) {
Son son = new Son();
System.out.println();
Son son1 = new Son();
}
(5)(1)(10)(6)(9)(3)(2)(9)(8)(7)
(9)(3)(2)(9)(8)(7)