错题记录—哪个类用到了解决哈希冲突的开放定址法,MYSQL实现主从复制的日志是哪种,Java对象的初始化方式有

解决哈希冲突(四种方法):
1、开放定址法:我们在遇到哈希冲突时,去寻找一个新的空闲的哈希地址。
(1)线性探测法
(2)平方探测法(二次探测)
2、再哈希法
3、链地址法:将所有哈希地址相同的记录都链接在同一链表中。
4、建立公共溢出区:将哈希表分为基本表和溢出表,将发生冲突的都存放在溢出表中。

java8中,下面哪个类用到了解决哈希冲突的开放定址法 (C)
A. LinkedHashSet
B. HashMap
C. ThreadLocal
D. TreeMap


LinkedHashSet是HashSet的子类,底层使用了LinkedHashMap,在HashSet的哈希表数据结构基础之上,增加了一个双向链表用来记录元素添加的顺序,能按照添加顺序遍历输出。
哈希表(数组+链表/红黑树)和链表(用来记录元素的存储顺序,可以保证元素有序)的实现

hashmap 链地址法

ThreadLocalMap中解决Hash冲突的方式并非链表的方式,而是采用线性探测的方式,所谓线性探测,就是根据初始key的hashcode值确定元素在table数组中的位置,如果发现这个位置上已经有其他key值的元素被占用,则利用固定的算法寻找一定步长的下个位置,依次判断,直至找到能够存放的位置。

TreeMap数组加红黑树(有序,线程不安全,不允许空值空键),插入时红黑树使用键的比较顺序(comperTo)来确定节点的位置,而不依赖于哈希函数。因此,在 JDK 8 的 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 方法由静态类变量显示赋值代码静态代码块组成

从上到下顺序执行

image-20221107172006076

二.什么时候实例化?

实例化就是执行()方法

()方法 方法可能重载有多个,有几个构造器就有几个()方法方法

()方法方法由非静态实例变量显示赋值代码和非静态代码块,对应构造器代码组成

非静态实例变量显示赋值代码和非静态代码块从上到下顺序执行,而对应构造器的代码最后执行、

Son son1 = new Son(); (9)(3)(2)(9)(8)(7) 

注意!:上图中的 4 没有输出,重写的方法两个类中都调用的是子类的

解释:

image-20221107182354065

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)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值