java常见题3

11.二分查找的次数

image-20221213114829016

奇数取 中间那一个作为中值

偶数个取 中间靠左

然后不断模拟这个算法

image-20221213160632427

查找的最多次数:n个元素里最多查找log二N

个元素Log2 128 = 7

12.equals和hashCode

java.lang.Object类中有两个非常重要的方法:

public boolean equals(Object obj)
public int hashCode()

equals()方法是用来判断其他的对象是否和该对象相等

默认在object的实现是return (this == obj);

但是我们知道,String 、Math、Integer、Double等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。从而进行的是内容的比较。

需要注意的是当equals()方法被override时,hashCode()也要被override。按照一般hashCode()方法的实现来说,相等的对象,它们的hash code一定相等。

1、相等(相同)的对象必须具有相等的哈希码(或者散列码)。

2、如果两个对象的hashCode相同,它们并不一定相同。

hashMap相关的:

当集合要添加新的元素时,先调用这个元素的hashCode方法,如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。所以这里存在一个冲突解决的问题。这样一来实际调用equals方法的次数就大大降低了,几乎只需要一两次。

参考

java异常体系

img

两个子类:Exception(异常)和Error(错误)

Error(错误):是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题

Exception(异常):程序本身可以捕获并且可以处理的异常。

Exception异常又分为两类:运行时异常和编译异常。

运行时异常(不受检异常)此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理

编译异常(受检异常):Exception中除RuntimeException极其子类之外的异常。如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,否则编译不通过。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。

除RuntimeException及其子类外,其他的Exception异常都属于可查异常。编译器会检查此类异常,也就是说当编译器检查到应用中的某处可能会此类异常时,将会提示你处理本异常——要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

在开发中用的是?to do

13.jre 判断程序是否执行结束的标准是所有的前台线程执行完毕

后台线程就是守护线程,前台线程就是用户线程。

14. mysql主键为啥自增主键比uuid好

MySQL默认的索引结构是B+Tree,代表着索引节点的数据是有序的。

不过一张表中只能存在一个聚簇索引,一般都会选用主键作为聚簇索引

聚簇索引中,索引数据和表数据在磁盘中的位置是一起的

如果使用UUID作为主键,那么每当插入一条新数据,都有可能破坏原本的树结构。但使用自增ID就不会有这个问题,所有新插入的数据都会放到最后。

15.什么是跨域?
  1. 协议不同:如 http 和 https;
  2. 域名不同
  3. 端口不同

springboot 的解决方法

  1. **使用 @CrossOrigin 注解实现跨域 **修饰类,也可以修饰方法

  2. 通过配置文件实现跨域;

    添加 @Configuration 注解,实现 WebMvcConfigurer 接口;

    重写 addCorsMappings 方法,设置允许跨域的代码。

  3. 通过 CorsFilter 对象实现跨域;

    和上一种实现方式类似,它也可以实现全局跨域

    @Configuration // 一定不能忽略此注解

    public class MyCorsFilter {

    @Bean

    public CorsFilter corsFilter() {

    // 1.创建 CORS 配置对象

    ​ CorsConfiguration config = new CorsConfiguration();

  4. 通过 Response 对象实现跨域;

    response.setHeader(“Access-Control-Allow-Origin”, “*”); return new HashMap<String, Object>() {{ put(“state”, 200); put(“data”, “success”); put(“msg”, “”); }};

  5. 通过实现 ResponseBodyAdvice 实现跨域。(过滤器来实现跨域)

是对返回结果进行处理 切面编程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值