java面试题(24)

news2024/9/24 13:18:33

1、重写equals()方法的原则

1、对称性:

如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是
“true”。

2、自反性:

x.equals(x)必须返回是“true”。

3、传递性:

如果x.equalsl(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。

4、一致性:

如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管重复x.equals(y)多少次,返回结果都是“true”。

5、其他:

任何情况下,x.equals(null),永远返回是“false”:
x.equals(与x不同类型的对象)永远返回是“false”。

2、MySQL进程阻塞了之后,如何查询和中断

1、查询阻塞:
(1)检查MySQL的日志文件,查看是否有错误或超时的查询。
(2)使用SHOWPROCESSLIST命令查看当前正在执行的查询进程,判断是否有长时间运行的查询。
(3)使用MySQL自带的工具mysqldumpslow来统计查询耗时,并查看是否有长时间运行的查询。

2、解决查询阻塞问题
(1)优化查询语句。可以通过优化查询语句、添加索引等方式来提高查询效率,尽可能减少查询阻塞的可能性。
(2)调整MySQL参数。可以根据服务器的具体情况,调整MySQL的参数,包括缓存大小、线程数、连接数等。
(3)分析MySQL的运行状态。可以使用MySQL的各种性能分析工具,如EXPLAIN、SHOWSTATUS等,分析MySQL的运行状态,找到瓶颈所在,并加以优化。
(4)使用MySQL的事务隔离机制。可以使用MySQL的事务隔离机制来解决查询阻塞的问题,如使用锁定功能、设置隔离级别等。
(5)升级MySQL版本。如果使用的MySQL版本较老,可以考虑升级到最新版,从而获得更好的性能和稳定性。

3、预防查询阻塞
(1)合理设计数据库结构。合理设计数据库结构,优化查询语句,尽可能减少不必要的查询,可以有效降低查询阻塞的可能性。
(2)使用缓存。可以使用缓存来减少对数据库的访问次数,从而减少查询阻塞的可能性。
(3)控制并发连接数。合理控制并发连接数,可以有效降低查询阻塞的风险。
(4)监控MySQL运行状态。及时监控MySQL的运行状态,及时发现并解决性能问题,是预防查询阻塞的重要手段。

3、MySQL如何查询索引是否命中

1、explain查看sql语句的信息

explain sql语句可以分析sql语句的执行逻辑、顺序,以及是否使用索引、对记录进行操作时扫描的行数等信息。

2、Explain参数

参数1:table:表名
参数2:id:在一个大的查询语句中每个select关键字都对应一个唯一的id
参数3:select_type:SELECT关键字对应查询的类型,确定小查询在整个大查询中扮演了一个什么角色
参数4:partition(略):匹配的分区信息
参数5:type:针对单表的访问方法
参数6:possible_keys和key:可能用到的索引 和 实际上使用的索引
参数7:key_len:实际使用到的索引长度(即:字节数),帮你检查是否充分的利用上了索引当前key长度值越大越好(主要针对于联合索引,有一定的参考意义)
参数8:ref:当使用索引列等值查询时,与索引列进行等值匹配的对象信息(比如只是一个常数或者是某个列)
参数9:rows:预估的需要读取的记录条数(值越小越好)
参数10:filtered: 某个表经过搜索条件过滤后剩余记录条数的百分比
参数11:Extra:一些额外的信息,更准确的理解MySQL到底将如何执行给定的查询语句

4、自己如何写一个函数式接口

1、Java中重要的函数接口
在这里插入图片描述

2、函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
@FunctionalInterface注解
在Java8版本中引入了@FunctionalInterface函数式接口进行校验,用来检验我们所编写的接口是否有且只有一个抽象方法,例如:

@FunctionalInterface
public interface MyFunctionalInterface(){
	void method();
}

3、实现函数式接口的集中方法
1、外部类
2、静态内部类
3、局部内部类
4、匿名内部类
5、lambda表达式实现

//接口
interface ILove{
    void love(int a);
}
//外部类
class Love implements ILove{
    @Override
    public void love(int a) {
        System.out.println("用外部类实现接口");
        System.out.println("I Love You==>" + a);
    }
}
public class Lambda {
    //静态内部类
    static class Love1 implements ILove {
        @Override
        public void love(int a) {
            System.out.println("用静态内部类实现接口");
            System.out.println("I Love You==>" + a);
        }
    }

    public static void main(String[] args) {
        //局部内部类
        class Love2 implements ILove{
            @Override
            public void love(int a) {
                System.out.println("用局部内部类实现接口");
                System.out.println("I Love You==>" + a);
            }
        }
        new Love().love(1);
        new Love1().love(2);
        new Love2().love(3);
        //匿名内部类
        new ILove() {
            @Override
            public void love(int a) {
                System.out.println("用匿名内部类实现接口");
                System.out.println("I Love You==>" + a);
            }
        }.love(4);
        //lambda表达式
        System.out.println("用lambda实现接口");
        ILove love=a -> System.out.println("I Love You==>" + a);
        love.love(5);
        System.out.println("注意:lambda只能实现函数式接口");
    }

}

5、Sentianl 服务熔断和服务降解

限流:
限制并发的请求访问量,超过阈值则拒绝;
降级:
服务分优先级,牺牲非核心服务(不可用),保证核心服务稳定;从整体负荷考虑;
熔断:
依赖的下游服务故障触发熔断,避免引发本系统崩溃;系统自动执行和恢复

6、springboot 自动配置怎么实现

springboot启动时,会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,XxxxAutoConfiguration加载的时候会将全局配置application.properties或application.yml中的配置绑定到XxxxProperties类中(没有配置的属性将使用默认配置),注入到spring的ioc容器中。

7、Redission实现原理

在这里插入图片描述

8、B树和B+树的区别

1、B树

1、这里的 B 是 Balance(平衡)的缩写。它是一种多路的平衡搜索树。
2、它跟普通的平衡二叉树的不同是,B树的每个节点可以存储多个数据,而且每个节点不止有两个子节点,最多可以有上千个子节点。
3、B树中每个节点都存放着索引和数据,数据遍布整个树结构,搜索可能在非叶子节点结束,最好的情况是O(1)。
4、一般一棵 B 树的高度在 3 层左右,3 层就可满足 百万级别的数据量。

2、B+树

1、叶子节点保存了完整的索引和数据,而非叶子节点只保存索引值,因此它的查询时间固定为 log(n).
2、叶子节点中有指向下一个叶子节点的指针,叶子节点类似于一个单链表
正因为叶子节点保存了完整的数据以及有指针作为连接,B+树可以增加了区间访问性,提高了范围查询,而B树的范围查询相对较差
3、B+树更适合外部存储。因为它的非叶子节点不存储数据,只保存索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【动态规划】第N个泰波那契数

📭从这里开始,我们要开始学习动态规划辣。之后的动态规划有关的文章都是按照这个逻辑来写,首先来介绍一下基本逻辑。 🧀(1)题目解析:就是分析题目,读懂题目想让我们实现的功能 🧀(2)算法原理&…

linux 创建一个线程的基础开销探讨

测试代码 测试方法比较笨,每修改一次线程数,就重新编译一次,再运行。在程序运行过程中,查看到进程 pid,然后通过以下命令查看进程的运行状态信息输出到以线程数为名字的日志文件中,最后用 vimdiff 对比文件…

LVS负载均衡集群之LVS-DR部署

目录 一、lVS-DR集群概述 二、LVS-DR数据包流向分析 四、LVS-DR特性 五、DR模式 LVS负载均衡群集部 5.0配置虚拟 IP 地址(VIP 192.168.14.180) 5.1.配置负载调度器(192.168.14.101) 5.2部署共享存储(NFS服务器:192.168.14.10…

7-3打怪升级(25分)【Floyd、dijkstra】【2021 RoboCom 世界机器人开发者大赛-本科组(初赛)】

考点:Floyd,dijkstra变式(记录路径,多优先级) 7-3 打怪升级 (25分) 很多游戏都有打怪升级的环节,玩家需要打败一系列怪兽去赢取成就和徽章。这里我们考虑一种简单的打怪升级游戏,游戏规则是&am…

数据在计算机中的存储——【C语言】

在前面的博客中,我们已经学习了C语言的数据类型,先让我们回顾一下C语言中有哪些数据类型。 目录 C语言的基本内置类型 类型的基本归类 整型在内存中的存储 原码、反码、补码 存储中的大小端 练习 浮点型在内存中的存储 浮点数的存储规则 对引例问…

【算法与数据结构】20、LeetCode有效的括号

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:括号匹配是使用栈解决的经典问题。做这道题首先要分析什么时候括号不匹配。1、右括号多余 ( { [ ] } )…

动态规划之96 不同的二叉搜索树(第7道)

题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例: 递推关系的推导: n3时,如上图所示。 当1为头结点的时候&#x…

C#学习之路-常量

C# 常量 常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。 常量可以被当作常规的变量,只是它们的值在定义后不能被修改。 整数常量 整数常量可…

Mybatis-Plus查询

Mybatis-Plus Mybatis-Plus条件查询的书写方法 1.条件查询 直接new QueryQuery<>创建对象&#xff0c;然后再wrappee.eq(“数据库列表”,“匹配值”)创建条件就可以。 其中&#xff0c;基本查询&#xff1a;eq表示相等&#xff1b;gt表示大于&#xff1b;lt表示小于&a…

[Vue3]学习笔记-provide 与 inject

作用&#xff1a;实现祖与后代组件间通信 套路&#xff1a;父组件有一个 provide 选项来提供数据&#xff0c;后代组件有一个 inject 选项来开始使用这些数据 具体写法&#xff1a; 祖组件中&#xff1a; setup(){......let car reactive({name:奔驰,price:40万})provide(…

Leetcode刷题(Week1)——宽(深)度优先遍历专题

刷题时间&#xff1a; 2019/04/04 – 2019/04/07 主播&#xff1a;yxc(闫雪灿) 视频链接&#xff1a; https://www.bilibili.com/video/av32546525?fromsearch&seid14001345623296049881 题号题目链接127Word Ladderhttps://leetcode.com/problems/word-ladder/131Palind…

Integration Objects OPC 所有产品Crack

OPC产品 OPC UA 升级到 OPC UA 以提高互操作性和安全性。 OPC 隧道 无需 DCOM 即可实现安全可靠的连接。 OPC 数据归档 将 OPC 数据存储到标准数据库或 CSV 文件中。 OPC 服务器 将任何通信协议转换为OPC标准。 OPC 客户端 读取、写入和传输您的 OPC 数据。 OPC 服务器工具…

四十五、时间/空间复杂度分析

算法主要内容 一、时间复杂度分析1、由数据范围反推算法复杂度以及算法内容2、如何分析代码复杂度&#xff08;1&#xff09;看循环&#xff08;2&#xff09;看递归&#xff08;3&#xff09;一些看似为O(n^2)&#xff0c;但实际为O(n)&#xff08;4&#xff09;数据结构&…

HPM6750系列--第五篇 使用Segger Embedded Studio for RISC-V开发环境

一、目的 之前的博文中《HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境》我们介绍了如何使用visual studio code进行开发调试&#xff0c;但是用起来总缺少点感觉&#xff0c;那么有没有更加友好一些的IDE用来开发呢&#xff1f; 本篇主要介绍如何使用Embedded Stud…

Stable Diffusion 模型界面介绍

Stable Diffusion 模型界面介绍 界面1 图1 Stable Diffusion 模型界面1 ①&#xff1a;选择的模型&#xff0c;及Stable Diffusion进行生成图片是使用的模型。其中.ckpt为大模型 ②&#xff1a;prompt --> 正向提示词。表示你的想法&#xff0c;你想要生成一副什么样的图…

更快更准更简单的工业异常检测新SOTA:SimpleNet

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2303.15140.pdf 代码链接&#xff1a;https://github.com/DonaldRR/SimpleNet 0.背景&#xff1a; 图像异常检测和定位任务旨在识别异常图像并定位异常子区域。…

eNSP-交换机VLAN配置

eNSP-交换机VLAN配置 文章目录 eNSP-交换机VLAN配置一、题目要求二、拓扑结构三、基础配置四、测试验证五、知识点详解1.VLAN2.VLAN的端口成员模式3.不同端口成员模式对报文的处理 一、题目要求 1.PC1可以访问PC2&#xff0c;PC4,但是不能访问PC3 2.PC2可以访问PC1&#xff0…

Python实现PSO粒子群优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

openGauss学习笔记-03 openGauss极简版单节点安装

文章目录 openGauss学习笔记-03 openGauss极简版单节点安装3.1 获取安装包3.1.1 下载对应平台的安装包3.1.2 解压安装包3.1.3 查看目录结构 3.2 准备软硬件安装环境3.2.1 硬件环境要求3.2.2 软件环境要求3.2.3 软件依赖要求 3.3 单节点安装3.3.1 安装前准备3.3.2 安装openGauss…

硬件电路设计--运算放大器(四)应用三比较器

文章目录 前言电压比较器一、过零比较器二、单门比较器三、滞回比较器&#xff08;施密特触发器&#xff09;四、窗口比较器五、未使用的比较器的处理六、推挽式输出或漏极开路输出开漏输出推挽输出 七、比较器的应用7.1 3V转5V7.2 双极性转单极性7.3 光敏电阻模数转换 八、比较…