java面试题(24)

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{@Overridepublic void love(int a) {System.out.println("用外部类实现接口");System.out.println("I Love You==>" + a);}
}
public class Lambda {//静态内部类static class Love1 implements ILove {@Overridepublic void love(int a) {System.out.println("用静态内部类实现接口");System.out.println("I Love You==>" + a);}}public static void main(String[] args) {//局部内部类class Love2 implements ILove{@Overridepublic 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() {@Overridepublic 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.hqwc.cn/news/13269.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 数据库备份和还原

数据库备份 第一步:先在环境变量Path里面加上mysql bin目录的路径 第二部:执行对应的命令 备份数据库中的表: 命令: mysqldump -u root -p fenku_lianxi customer > d:\temp.sql root是 账号 username fenku_lianxi是数据…

transforms机制与数据标准化

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 图像预处理 transformstransforms运行机制数据标准化transforms.normalizetransforms.Normalize 图像预处理 transf…

javassist 02 implement interface

创建 interface package com.wsd;public interface AccountDao {int delete(); }利用 javassist 生产一个 类A, Class A implements AccountDao package com.wsd;import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.Modifi…

4. PS切图

4.1常见的图片格式 jpg图像格式: JPEG ( .JPG )对色彩的信息保留较好,高清,颜色较多,我们产品类的图片经常用jpg格式的gif图像格式 : GIF格式最多只能储存256色,所以通常用来显示简单图形及字体,但是可以保存透明背景和动画效果,实际经常用于一些图片小动画效果png图像格式&am…

RabbitMQ五种工作模式的简单应用

发布订阅模式(三种方式) 发布订阅模式上一篇我们已经介绍了,这里就不做介绍了,想要看的可以点此链接 在SpringBoot中对RabbitMQ三种使用方式_流殇꧂的博客-CSDN博客 Routing(路由模式)(基于注解的方式) 1.创建交换机和消息队列,类型要为direct(不设置也是默认的配置) //路由模式…

企业低成本万能架构

企业软件应用架构层出不穷(这里的应用架构是指偏后端服务的软件架构)每个企业由各自业务形态,技术栈,技术路线,技术实力不同,各自架构方案,技术选型各有各的不同,千姿百态&#xff0…

English Learning - L3 作业打卡 Lesson8 Day58 2023.7.3 周一

English Learning - L3 作业打卡 Lesson8 Day58 2023.7.3 周一 引言🍉句1: And this is when I learned that our borders and our obstacles can only do two things: one, stop us in our tracks or two, force us to get creative.成分划分弱读连读爆破语调 &…

颜色渐变的数据密集适用的堆叠图

一般情况会用柱状图去堆叠,但是如果数据量太大了,就可考虑这种方式堆叠。可以呈现时间和数量上不同层次数据的变化。 效果图: 比较详细的注释一下源码: import matplotlib as mpl import matplotlib.pyplot as plt import numpy …

OpenAI的新语言模型升级是否会改变人工智能领域的格局?

近年来,人工智能领域取得了巨大的进展,其中语言模型的发展尤为引人注目。而在这个领域的重要参与者之一,OpenAI近期宣布了其大型语言模型API的重大升级,引发了业界的广泛关注。随着GPT-4和gpt-3.5-turbo等新版本的推出&#xff0c…

牛客网Verilog刷题——VL39

牛客网Verilog刷题——VL39 题目答案 题目 设计一个自动贩售机,输入货币有两种,为0.5/1元,饮料价格是1.5/2.5元,要求进行找零,找零只会支付0.5元。 1、投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1&#x…

怎样寻找SEO服务商,需要注意那些问题?

网上提供SEO服务的公司或个人多如牛毛,随便在搜索引擎上搜索一下,成千上万的公司就在眼前。大部分网站设计公司也兼职SEO服务,寻找合适的SEO服务商并不简单,鉴别合格的SEO服务商是关键。 1、确定外包任务 如果没有SEO团队&…

单表查询练习

查看表的字符集编码 show create table tbname; 查看系统默认字符集 SHOW VARIABLES LIKE character_set_database; 显示所有可用的字符集 SHOW CHARACTER SET; 修改系统默认字符集 ①在 /etc/my.cnf 文件中的 [mysqld] 下添加: ②重启数据服务 systemctl re…