当前位置: 首页 > news >正文

java后端常见问题

java面向对象的特征,如何应用

  • 面向对象编程是利用类和对象的编程思想
  • 万物皆成类,对象是类的具体体现,面向对象的三大基础特性,继承封装多态。、
  • 封装:封装隐藏了类的具体内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据,因为他对外只是提供了访问方法。
  • 继承:Java中通过extends关键字实现继承。从已经有的类派生出的新类,新类能够吸收已有类的一些成员变量和方法,并且可以扩展新的方法,提高代码的复用性。关于子类能从父类中继承什么?子类不能继承父类的构造方法,私有方法(变量),
  • 多态:堕胎表示当同一个操作作用在不体哦那个的对象时,会有不同的语义,从而产生不同的结果。在JAVA中主要有两种表现方式,‘方法的重载,方法的覆盖’

HashMap的原理是什么,jdk1.7和jdk1.8有什么区别?

    • HashMap首先是通过哈希表和链表来实现的,具体的实现过程,拿到一个数据,首先计算他的hash值,然后找到对应的位置,如果为空就将该数据放在这里,如果该位置不为空,就将该数据放在链表头。如果容量达到某个阈值,会自动增长。Hash非线程安全的,即任意时刻可能有多个线程同时写HashMap,可能导致数据不一致的问题,我们可以用Collections的synchronizedMap方法时HashMap有更强的安全性,或者使用ConcurrentHashMap。
    • 1.7

宏观来看,HashMap是一个数组,然后数组中每个元素是一个单项链表。当数组容量到达某个阈值的时候既可以扩容,扩容之后是当前数组大小的2倍。其中有一个负载因子。阈值就等于当前数组容量乘以负载因子

  • 1.8

改进之处,将java7中的单向链表变成了红黑树,所以Java8的数据结构是数组+链表+红黑树构成,
为什么将红黑树引入呢?我们在java7中查找一个数据根据hash值就可以定位到在哪个链表中,然后顺着链表比下去,时间复杂度是O(N),所以我们引入红黑树,当链表中的元素超过8个的时候,就可以将链表转换成红黑树,改进之后的时间复杂度是O(logN).

ArrayList和LinkedList的区别

  • ArrayList的底层是数据,他的查找通过索引就可以找到,速度快
  • linkedList的底层是链表,查找的时间度是O(N)
  • ArrayList的删除和添加会更慢,当ArrayList添加或者删除的时候,他会重新的标注索引,并且需要移动位置。
  • LinkedList比ArrayList更加的占内存,因为LinkedList为每个节点存储了两个引用,一个只想前面一个元素,另外一个指向了后面的元素。
  • 更加适合使用LinkedList
    1, 当你的应用不需要随机访问,频繁的查找数据
    2, 当你的应用有更多的插入和删除操作的时候更适合

jdk1.8的新特性有哪些?

  1. 接口的默认方法

Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可
2. Lambda表达式
3. 函数式接口

每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”
是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。

接口和抽象类有那些区别?

  1. 不同

抽象类

  • 抽象类中可以定义构造器

  • 可以有抽象方法和具体方法

  • 抽象类中可以定义成员变量

  • 由抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法

  • 抽象类中可以包含静态方法

  • 一个类中只能继承一个抽象类

接口

  • 接口中不能定义构造器
  • 接口中全都是抽象方法
  • 接口中定义的成员变量都是常数
  • 接口中不能有静态方法
  • 一个类可以继承多个接口

怎么声明一个类不会被继承,什么场景下会用

如果一个类被final修饰,此类不能有子类,如果一个类中的所有方法都没有重写的需求,并没有子类,就可以使用final修饰

Java中的==和equals有那些区别?

  • 最大的区别就是一个是运算符,另外一个是方法
  • ==:如果比较的是基本数据类型就是比较数值是否相等,如果比较的是引用数据类型,则比较的是对象的地址值是否相等
  • equals():用来比较方法两个对象的内容是否相等

注意:equals方法不能用于基本数据类型的变量,如果没有对equal方法进行重写,则比较的是引用类型的变量所指向的对象的地址

String StringBuffer StringBuilder区别及使用场景

  1. String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。这个不能改变并不是指引用的对象不能改变,而是指对象里面的内容不能改变
  2. StringBuilder/StringBuffer表示的字符串对象可以直接进行修改
  3. StringBuilder 是 Java5 中引入的,它和 StringBuffer 的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方法都没有被 synchronized 修饰,因此它的效率理论上也比 StringBuffer 要高。

Java异常处理

  • 抛出异常:throw
  • 捕获异常:try,catch,finally
  • 声明异常:throws

常见的运行时异常

  • 空指针异常
  • 算术运算异常
  • 下标越界异常
  • 类型强制转换异常

常见的编译时异常

  • 未发现文件异常
  • 类为发现异常
  • SQL异常

说一下你对Spring的理解?

Spring 使创建 Java 企业应用程序变得更加容易。它提供了在企业环境中接受 Java 语言所需的一切,,并支持 Groovy 和 Kotlin 作为 JVM
Spring支持各种应用场景, 在大型企业中, 应用程序通常需要运行很长时间,而且必须运行在 jdk 和应用服务器上,这种场景开发人员无法控
Spring 是开源的。它拥有一个庞大而且活跃的社区,提供不同范围的,真实用户的持续反馈。这也帮助Spring不断地改进,不断发展。

你觉得spring的核心是什么?

  • spring是一个开源的框架
  • spring是为了简化企业开发而生成的
  • spring是一个IOC和AOP的容器框架
  • IOC:控制反转
  • AOP:面向切面编程

SPring的IOC实例对象的三种方式分别是?

  • 构造方法
  • 静态工厂
  • 实例工厂

redis为何这么快?

  • 基于内存
  • 单线程减少上下文切换,同时保证了原子性
  • IO多路复用

为什么采用单线程?

  • 因为Redis是基于内存来操作,CPU不会成为Redis的瓶颈,而最有可能的是及其内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章的使用单线程的方案了。

缓存的三大问题

  1. 缓存穿透:缓存穿透是指当用户查询某个数据时,Redis 中不存在该数据,也就是缓存没有命中,此时查询请求就会转向持久层数据库 MySQL,结果发现 MySQL 中也不存在该数据,MySQL 只能返回一个空对象,代表此次查询失败。如果这种类请求非常多,或者用户利用这种请求进行恶意攻击,就会给 MySQL 数据库造成很大压力,甚至于崩溃,这种现象就叫缓存穿透。
  • 缓存空对象,当MYSQL返回空对象的时候,Redis将该对象缓存起来,同时为其设置一个过期时间,当用户再次发起相同请求时,就会从缓存中拿到一个空对象,用户的请求被阻断在了缓存层,从而保护了后端数据库,但是这种做法也存在一些问题,虽然请求进不了 MSQL,但是这种策略会占用 Redis 的缓存空间。
  • 布隆过滤器:布隆过滤器判定不存在的数据,那么该数据一定不存在,利用它的这一特点可以防止缓存穿透。
  • 缓存空值
  • key值校验
  1. 缓存击穿:缓存击穿是指用户查询的数据缓存中不存在,但是后端数据库却存在,这种现象出现原因是一般是由缓存中 key 过期导致的。比如一个热点数据 key,它无时无刻都在接受大量的并发访问,如果某一时刻这个 key 突然失效了,就致使大量的并发请求进入后端数据库,导致其压力瞬间增大。这种现象被称为缓存击穿。
  • 改变过期时间:设置热点数据永不过期
  • 分布式锁:上锁:当我们通过 key 去查询数据时,首先查询缓存,如果没有,就通过分布式锁进行加锁,第一个获取锁的进程进入后端数据库查询,并将查询结果缓到Redis 中。
    解锁:当其他进程发现锁被某个进程占用时,就进入等待状态,直至解锁后,其余进程再依次访问被缓存的 key。
  1. 缓存雪崩:缓存雪崩是指缓存中大批量的 key 同时过期,而此时数据访问量又非常大,从而导致后端数据库压力突然暴增,甚至会挂掉,这种现象被称为缓存雪崩。它和缓存击穿不同,缓存击穿是在并发量特别大时,某一个热点 key 突然过期,而缓存雪崩则是大量的 key 同时过期,因此它们根本不是一个量级。
  • 缓存雪崩和缓存击穿有相似之处,所以也可以采用热点数据永不过期的方法,来减少大批量的 key 同时过期。再者就是为 key 设置随机过期时间,避免 key 集中过期。(这里的永不过期指的是如果查询到这条数据,发现他过期了,缓存区就会向mysql服务器发送请求,但同时缓存区还是会把过期的数据返回)

Redis有那些数据结构?

  • 字符串
  • 字典
  • 列表
  • 集合
  • 有序集合

什么是微服务?

MySQL的主从复制

Mysql的主从复制,就是将Mysql主数据库上的数据复制到从数据库上

  • 主从复制的目的是未来实现数据库的读写分离,写操作和实时性较强的读操作则访问主数据库;度操作则访问从数据库,从而使数据库具有更加强大的访问负载能力,支撑更多的用户访问

我的那个秒杀功能是怎么实现的?

  1. 全局ID生成器,解决了自增的id的规律性太强

超卖问题,多线程安全的问题?

  • 悲观锁:人文线程安全问题一定会发生的,因此在操作数据之前先获取锁,确保线程串行执行。例如Synchronized,lock都属于悲观锁。优点使简单粗暴,缺点使性能一般
  • 乐观锁:认为线程安全问题不一定会发生,因此不加锁,只是在更新数据的时候去判断有没有卡线程对数据做了修改。如果没有修改则认为是安全的,自己才会去更新数据,如果已经被其他线程修改说明了安全问题,因此可以重试或异常。优点性能好,缺点使成功率低的问题

JVM跨平台原理

  • 一次编译到处运行,每个操作系统都有JVM,但是可以执行同一份字节码文件

字节码的作用是什么?

代码-》字节码-》机器指令

  • 编译成字节码,加快了解释成机器指令的速度。

JVM的整体结构

  • 字节码-》类加载子系统-》方法区
  • 程 序计数器不会出现内存溢出的情况

相关文章:

java后端常见问题

java面向对象的特征,如何应用 面向对象编程是利用类和对象的编程思想万物皆成类,对象是类的具体体现,面向对象的三大基础特性,继承封装多态。、封装:封装隐藏了类的具体内部实现机制,可以在不影响使用的情…...

windows系统玩游戏找不到d3dx9_43.dll缺失,无法启动此程序的解决方法

今日,我们要深入讨论d3dx9_43.dll文件的重要性及其缺失问题。最近,我也遇到了这个文件丢失的困扰,因此想借此机会与大家分享如何解决d3dx9_43.dll缺失的问题。 一.电脑d3dx9_43.dll丢失会提示什么? 关于电脑提示d3dx9_43.dll丢失…...

MATLAB中mapminmax函数用法

目录 语法 说明 示例 使用 mapminmax 函数格式化矩阵 mapminmax函数的功能是通过将行最小值和最大值映射到 [-1 1] 来处理矩阵。 语法 [Y,PS] mapminmax(X,YMIN,YMAX) [Y,PS] mapminmax(X,FP) Y mapminmax(apply,X,PS) X mapminmax(reverse,Y,PS) dx_dy mapminmax(d…...

数据结构导航 -- 38篇

数据结构实现代码 线性表 顺序表代码-C-CSDN博客 单链表代码-C-CSDN博客 双链表代码-C-CSDN博客 有序表概述-CSDN博客 栈 栈代码数组实现-C-CSDN博客 栈代码链表实现(链栈)-C-CSDN博客 队列 队列与环形队列顺序存储代码数组实现-C-CSDN博客 队…...

前端性能优化 | CDN缓存

前言 CDN(Content Delivery Network)是一种分布式的网络架构,通过在全球各地部署节点服务器来快速传输和分发网络内容。CDN的主要目标是提供快速、可靠的内容传输,以提升用户体验。 本文主要从以下方面讲解CDN 什么是CDNCDN的作…...

【C#语言入门】17. 事件详解(上)

【C#语言入门】17. 事件详解(上) 一、初步了解事件 定义:单词Event,译为“事件” 通顺的解释就是**“能够发生的什么事情”**,例如,“苹果”不能发生,但是“公司上市”这件事能发生。在C#中事…...

Charles无法打开导出的har文件解决方法

打开出错:MalformedJson: Use JsonReader.setLenient(true) to accept malformed JSON at line1 column 1368184 path $.log.entries[41].request.postData.text 一、解决办法 用json.dumps格式化一下里面内容,保存为新文件再打开 import jsondef modify…...

FFmpeg--FlvPaser源码:解析.flv输出.h264

文章目录 程序功能:函数调用流程:部分FlvParse.h部分FlvParse.cpp 程序功能: 解析flv文件,重写一个h264文件,如输入movie.flv , 输出movie.h264 (只有视频,没有声音) 函数调用流程: 1 Proce…...

【项目笔记】java微服务:黑马头条(day02)

文章目录 app端文章查看,静态化freemarker,分布式文件系统minIO1)文章列表加载1.1)需求分析1.2)表结构分析1.3)导入文章数据库1.3.1)导入数据库1.3.2)导入对应的实体类 1.4)实现思路1.5)接口定义1.6)功能实现1.6.1):导入heima-leadnews-article微服务&am…...

每天五分钟计算机视觉:图像数据不足带来的问题和解决办法

本文重点 在当今的数字时代,图像数据的应用已经渗透到各个领域,包括但不限于计算机视觉、机器学习、自动驾驶、医疗诊断等。然而,当图像数据不足时,会引发一系列问题,对相关应用产生负面影响。 尤其是计算机视觉领域,图像数据尤为珍贵和稀缺,如果计算机视觉的任务中,如…...

手机App防沉迷系统C卷(JavaPythonC++Node.jsC语言)

智能手机方便了我们生活的同时,也侵占了我们不少的时间。"手机App防沉迷系统"能够让我们每天合理的规划手机App使用时间,在正确的时间做正确的事。 它的大概原理是这样的: 1、在一天24小时内,可注册每个App的允许使用时段; 2、一个时段只能使用一个App,举例说明…...

【WEEK2】学习目标及总结【SpringMVC】【中文版】

学习目标: 三周完成SpringMVC入门——第二周 学习内容: 参考视频教程【狂神说Java】SpringMVC最新教程IDEA版通俗易懂使用注释完成MVC程序Controller控制器RestFul风格结果跳转方式数据处理 学习时间及产出: 第二周 MON~FRI 2024.3.4 【W…...

Git版本工具学习

目录 版本控制git配置工作区域文件状态git对象模型基础命令.gitignore忽略文件IDEA集成Git 版本控制 本地版本控制:在本地记录每一次版本更新。 集中版本控制:版本数据都保存在单一服务器,不联网就看不到版本信息。SVN 分布式版本控制&…...

baidu, google和chatgpt -- 翻译对比

原文 That ChatGPT can automatically generate something that reads even superficially like human-written text is remarkable, and unexpected. But how does it do it? And why does it work? My purpose here is to give a rough outline of what’s going on inside…...

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言 在研究全球海平面变化的问题中,卫星测高获得总的海平面变化,而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。 测高数据下载网址: Global Ocean Gridded L 4 Sea Surface Heights And …...

微信小程序修改placeholder样式

微信小程序有既定的修改placeholder的标签 一、placeholder-style直接修改样式 <input type"text" placeholder"请输入" placeholder-style"color:#e2e2e2;"></input>二、placeholder-class设置样式类 <input type"text&…...

爬虫案例1

通过get请求直接获取电影信息 目标页面: https://spa6.scrape.center/在network中可以看到是通过Ajax发送的请求&#xff0c;这个请求在postman中也可以直接请求成功&#xff0c;这只是一个用来练习爬虫的&#xff0c;没有达到js逆向的过程&#xff0c;需要通过分析js 代码来获…...

修改表结构

目录 修改表结构 创建数据表插入数据 修改已有列 修改 member 表的 name 列的定义 为表增加列 增加一个 address 列&#xff0c;这个列上不设置默认值 增加一个 sex 列&#xff0c;这个列上设置默认值 删除表中的列 删除 sex 列 Oracle从入门到总裁:​​​​​​https…...

Rust 语言中的 into() 方法

在 Rust 中&#xff0c;into() 方法通常用于将一个类型的值转换为另一个类型&#xff0c;这通常涉及到资源的所有权转移。into() 方法通常定义在实现了 Into<T> trait 的类型上&#xff0c;该 trait 允许一个类型被“转换”为另一个类型。 into() 方法的一个常见用途是在…...

MinIO权限提升漏洞CVE-2024-24747详细解决办法

漏洞名称&#xff1a; MinIO权限提升漏洞(CVE-2024-24747) 漏洞简介 2024年2月2日&#xff0c;深瞳漏洞实验室监测到一则MinIO 存在权限提升漏洞的信息&#xff0c;漏洞编号&#xff1a;CVE-2024-24747&#xff0c;漏洞威胁等级&#xff1a;高危。 该漏洞是由于用户创建的访…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...