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

JVM和数据库面试知识点

JVM内存结构

主要有几部分:堆、栈、方法区和程序计数器
堆是JVM中最大的一块内存区域,用于存储对象实例,一般通过new创建的对象都存放在堆中。堆被所有的线程共享,但是它的访问时线程不安全的,通常通过锁的机制来保证线程安全。当堆中的对象超出内存无法回收时,会出现OOM异常。
方法区。(在JDK8之后也叫做元空间)它是被所有线程共享的内存区域,存储了类的结构信息、常量池、静态变量和方法编译后的字节码等。方法区也有可能发生OOM(比如大的静态数据、大的反射和动态代理生成的类)可能消耗大量方法区空间。
程序计数器是每个线程私有的,用于记录当前线程执行的字节码指令的地址。每个线程都有一个独立的线程计数器,用来控制线程的执行流程。
栈主要是用来存储方法调用和局部变量。每个线程运行时都会有一个独立的栈,栈中的每个方法调用,都会创建一个栈帧。栈帧中包含了方法的参数、局部变量和返回值等信息。栈中的数据时线程私有的,不会被其他线程访问的,所以时线程安全的。本地方法栈与虚拟机栈的区别是,虚拟机栈执行的是 Java 方法,本地方法栈执行的是本地方法(Native Method),其他基本上一致,在 HotSpot 中直接把本地方法栈和虚拟机栈合二为一,这里暂时不做过多叙述。

对象一定分配到堆中嘛
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
OOM一定会引起JVM退出嘛

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
java进程占用内存有哪些部分
在这里插入图片描述
A
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ava提供了四种类型的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。以下是它们的主要区别:

强引用(Strong Reference):
这是我们最常用的引用类型。如果一个对象具有强引用,那么它永远不会被垃圾回收器回收,直到这个引用被显式地设置为null或者从集合中移除。
示例:Object obj = new Object(); 这里obj就是一个强引用。
软引用(Soft Reference):
软引用主要用于实现内存敏感的缓存。如果一个对象只具有软引用,那么在内存充足的情况下,垃圾回收器不会回收它;但是在内存不足时,垃圾回收器会回收这些对象以释放内存。
软引用可以和SoftReference类一起使用,通常用于缓存场景。
示例:SoftReference softRef = new SoftReference<>(obj); 这里softRef就是一个软引用。
弱引用(Weak Reference):
弱引用比软引用的生存期更短,因为弱引用所指向的对象只能存活到下一次垃圾回收发生之前。当垃圾回收器工作时,无论内存是否充足,都会回收只被弱引用指向的对象。
弱引用可以和WeakReference类一起使用,适用于创建临时的缓存或者引用那些不需要强引用的对象。
示例:WeakReference weakRef = new WeakReference<>(obj); 这里weakRef就是一个弱引用。
虚引用(Phantom Reference):
虚引用是最弱的一种引用类型。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来获取一个对象的实例。
虚引用的主要作用是在对象被垃圾回收器回收时收到一个系统通知。
虚引用需要和PhantomReference类一起使用,并且必须和引用队列(ReferenceQueue)联合使用。
示例:
PhantomReference phantomRef = new PhantomReference<>(obj, refQueue);
这里phantomRef就是一个虚引用。

在这里插入图片描述
常见的垃圾回收器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以打破双亲委派机制嘛
在这里插入图片描述
JVM中完整的GC流程

在这里插入图片描述

在这里插入图片描述
指针碰撞:—前提:内存空间是连续的
维护一个指向空闲内存块的指针,管理和分配内存空间;
分配内存时,指针会向前移动,指向下一个可用的内存块------不需要额外的数据结构来跟踪可以内存块;
是否内存时,指针会向后移动;

为什么适用元空间替代了永久代

永久代是JVM内存是有上限的,而元空间是存储本地内存里,内存上限比较大。避免频繁出现OOM问题。
永久代对象是通过Full GC进行内存清理,元空间是由操作系统内存管理机制处理,简化FullGC,提高性能

在这里插入图片描述

加密后的数据如何支持模糊查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常见的索引数据结构个区别:二叉树、红黑树、B+树、B树;区别:树的高度影响获取数据的性能(每一个树节点都是一次磁盘的I/O)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在MySQL中,当查询语句中对索引列使用某些函数时,确实可能导致索引失效,迫使数据库执行全表扫描。这是因为函数应用于列值后,数据库无法直接利用索引中存储的排列信息。
在这里插入图片描述
在这里插入图片描述

什么时候索引失效会提升效率

索引失效在某些特定情况下可能会提升查询效率,这听起来可能有些反直觉,但在特定条件下是可能发生的。以下是一些索引失效可能提升效率的情况:
全表扫描更快:
对于小表或结果集非常小的查询,全表扫描可能比使用索引更快,因为索引需要额外的查找和排序开销。
索引选择性不高:
如果索引的选择性不高(即索引列中重复值很多),使用索引可能不会显著减少扫描的行数,优化器可能会选择全表扫描。
索引维护开销:
对于写入操作频繁的表,索引需要频繁更新,这会带来额外的开销。在某些情况下,禁用索引可能减少维护开销,提高写入效率。
复杂的索引结构:
某些复杂的查询条件可能使得索引的查找效率降低,优化器可能会评估使用索引的成本高于全表扫描。
数据分布不均:
如果数据分布极不均匀,导致索引树的某些部分非常深,查询优化器可能认为使用索引不如全表扫描高效。
查询条件导致索引分裂:
某些查询条件可能导致索引分裂,产生大量的内部碎片,影响索引性能,此时全表扫描可能更高效。
索引列上的函数操作:
对索引列进行函数操作可能会导致索引失效,但如果这个函数操作使得查询条件更加严格,减少了结果集,那么全表扫描可能会更快。
JOIN操作中的索引失效:
在某些JOIN操作中,如果JOIN条件复杂或者参与JOIN的表数据量差异很大,索引失效可能因为减少了不必要的JOIN操作而提升效率。
强制索引:
有时候,数据库优化器选择的索引并不是最优的,通过强制使用某个索引(即使它失效了),可能会因为减少了优化器的计算开销而提升效率。
缓存影响:
如果查询的数据已经被缓存在内存中,即使索引失效,全表扫描也可能因为直接从缓存中读取数据而变得高效。
需要注意的是,这些情况并不常见,通常索引是用来提高查询效率的。在实际应用中,应当通过分析和测试来确定是否应该使用索引,以及如何设计索引以达到最佳性能。数据库优化器通常会自动做出这些决策,但有时也需要数据库管理员或开发者进行手动调优。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一条SQL的执行流程

  1. 连接器(Connection Phase)
    首先,客户端与MySQL服务器建立连接,这一阶段由连接器负责处理,包括进行身份验证和权限确认等
  2. 查询缓存(Query Cache) MySQL会检查查询缓存,如果所需查询的结果已经存在于缓存中,便直接返回缓存结果,从而省略后续的查询过程。查询缓存可以提高查询效率,特别是对于重复执行的查询。
  3. 解析器和预处理器(Parser and Preprocessor) 当查询未命中缓存时,MySQL会运用解析器和预处理器对查询语句进行解析,验证语法正确性,并将查询语句转换为内部数据结构。
  4. 优化器(Optimizer) MySQL优化器根据查询语句的结构、表的统计信息等因素,生成多个可能的执行计划,并通过成本估算器挑选出最优的执行计划。
  5. 执行器(Executor) 执行器按照优化器选定的执行计划,调用存储引擎的API来执行查询,获取所需数据。
  6. 存储引擎(Storage Engine) 存储引擎负责实际的数据存储和检索,根据执行器的请求,读取或写入数据。
  7. 返回结果给执行器
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

JVM和数据库面试知识点

JVM内存结构 主要有几部分&#xff1a;堆、栈、方法区和程序计数器 堆是JVM中最大的一块内存区域&#xff0c;用于存储对象实例&#xff0c;一般通过new创建的对象都存放在堆中。堆被所有的线程共享&#xff0c;但是它的访问时线程不安全的&#xff0c;通常通过锁的机制来保证线…...

批量提取zotero的论文构建知识库做问答的大模型(可选)——含转存PDF-分割统计PDF等

文章目录 提取zotero的PDF上传到AI平台保留文件名代码分成20个PDF视频讲解 提取zotero的PDF 右键查看目录 发现目录为 C:\Users\89735\Zotero\storage 写代码: 扫描路径‘C:\Users\89735\Zotero\storage’下面的所有PDF文件,全部复制一份汇总到"C:\Users\89735\Downl…...

Codeforces Round 993 (Div. 4)个人训练记录

Codeforces Round 993 (Div. 4) 只选择对我有价值的题目记录 E. Insane Problem 题目描述 给定五个整数 k k k&#xff0c; l 1 l_1 l1​&#xff0c; r 1 r_1 r1​&#xff0c; l 2 l_2 l2​ 和 r 2 r_2 r2​&#xff0c;Wave 希望你帮助她计算满足以下所有条件的有序对 …...

【优选算法---分治】快速排序三路划分(颜色分类、快速排序、数组第K大的元素、数组中最小的K个元素)

一、颜色分类 题目链接: 75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 题目介绍&#xff1a; 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序…...

Spring Cloud OpenFeign

概述 Feign是一个声明式web服务客户端。可以像写接口一样定义http客户端。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注释和使用Spring Web中默认使用的HttpMessageConverter的支持。Spring Cloud集成了Ribbon和Eureka&#xff0c;以及Spring Cloud L…...

Oracle 数据库函数的用法(一)

Oracle数据库提供了大量的内置函数&#xff0c;可以用于完成各种操作&#xff0c;如字符串操作&#xff0c;数学计算&#xff0c;日期时间处理&#xff0c;条件判断&#xff0c;序列生成&#xff0c;聚合统计等。以下是一些常用的Oracle数据库函数&#xff1a; 一、oracle 使用…...

【C2C+GRCC】Exploring Disentangled Content Information for Face Forgery Detection

文章目录 Exploring Disentangled Content Information for Face Forgery Detection背景key points研究贡献方法增强解纠缠特性的独立性实验数据内评估跨方法评估跨数据集评估消融实验总结Exploring Disentangled Content Information for Face Forgery Detection 会议/期刊:…...

springboot461学生成绩分析和弱项辅助系统设计(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装学生成绩分析和弱项辅助系统软件来发挥其高效地信息处理的作…...

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…...

使用“NodeMCU”、“红外模块”实现空调控制

项目思路 空调遥控器之所以能够实现对空调的控制&#xff0c;是因为它能够向空调发射出特定的红外信号。从理论上来说&#xff0c;任何能够发射出这种相同红外信号的红外发射器&#xff0c;都可以充当空调遥控器&#xff08;这也正是手机能够控制多种不同品牌空调的原因所在&a…...

2023年西南大学数学建模C题天气预报解题全过程文档及程序

2023年西南大学数学建模 C题 天气预报 原题再现&#xff1a; 天气现象与人类的生产生活、社会经济、军事活动等方方面面都密切相关&#xff0c;大到国家&#xff0c;小到个人&#xff0c;都受到极端天气的影响。2022年6月&#xff0c;全球陆地地区出现了自1850年代末人类有系…...

【大模型】使用DPO技术对大模型Qwen2.5进行微调

前言 定义 DPO&#xff08;Direct Preference Optimization&#xff09;即直接偏好优化算法&#xff0c;是一种在自然语言处理领域&#xff0c;特别是在训练语言模型时使用的优化策略。它的主要目的是使语言模型的输出更符合人类的偏好。 背景和原理 在传统的语言模型训练中&a…...

Maven 生命周期

文章目录 Maven 生命周期- Clean 生命周期- Build 生命周期- Site 生命周期 Maven 生命周期 Maven 有以下三个标准的生命周期&#xff1a; Clean 生命周期&#xff1a; clean&#xff1a;删除目标目录中的编译输出文件。这通常是在构建之前执行的&#xff0c;以确保项目从一个…...

网络不通该如何手动下载torch

如果遇到pip install torch2.5.0 下载不了的情况,大部分是网络的问题.可以考虑下载wheel文件在去安装 查看对应的cuda版本(举个例子:cuda为12.4,找到这个版本的 复制到服务器上下载): 有conda和pip下载的两种方式,二者选其一:如果没有安装anaconda,就直接使用pip的方式下载 如…...

基础电路的学习

1、戴维南定理 ①左边的图可简化为一个电阻&#xff0b;一个电压源。② ③电压源可相当于开路。将R2移到左边&#xff0c;R1和R2相当于并联。RR1//R2 Rx和Rt相等时&#xff0c;灵敏度最大&#xff0c;因此使Rt10K。 104电容是0.1uf。 三位数字的前两位数字为标称容量的有效数…...

对 MYSQL 架构的了解

MySQL 是一种广泛使用的关系型数据库管理系统&#xff0c;其架构主要包括以下几个关键部分&#xff1a; 一、连接层 客户端连接管理&#xff1a;MySQL 服务器可以同时处理多个客户端的连接请求。当客户端应用程序&#xff08;如使用 Java、Python 等语言编写的程序&#xff09;…...

C#中方法参数传值和传引用的情况

对于引用类型 - 传类类型的具体值时 此时传的是引用 - 单纯传类类型 此时传的是个test引用的副本&#xff0c;在方法内修改的是这个副本的指向 传string&#xff0c;集合同理&#xff0c;只要是指向新对象&#xff0c;就是引用副本在指向 对于值类型 - 传普通值类型 …...

获取显示器(主/副屏)友好名称(FriendlyName)

在开发涉及多显示器的应用程序时&#xff0c;获取显示器的友好名称&#xff08;Friendly Name&#xff09;是一个常见需求。本文将深入探讨GetMonitorFriendlyName 方法&#xff0c;了解其实现细节和工作原理。 方法签名 public static string GetMonitorFriendlyName(bool i…...

Apache Solr RCE(CVE-2017-12629)--vulhub

Apache Solr 远程命令执行漏洞&#xff08;CVE-2017-12629&#xff09; Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个…...

2.3 携程的hook实现及dlsym函数

背景知识&#xff1a;&#xff08;排除static 情况&#xff09; 一个进程中可以有相同的命名吗&#xff1f; -- 不能 两个进程之间可以有相同的命名吗&#xff1f;--可以 一个进程和另一个静态库可以有相同的命名吗&#xff1f;--不能 一个进程和另一个动态库之间可以有相同…...

FNF-PsychEngine终极指南:3个Lua脚本技巧让游戏体验飙升

FNF-PsychEngine终极指南&#xff1a;3个Lua脚本技巧让游戏体验飙升 【免费下载链接】FNF-PsychEngine Engine originally used on Mind Games mod 项目地址: https://gitcode.com/gh_mirrors/fn/FNF-PsychEngine FNF-PsychEngine是一款功能强大的节奏游戏引擎&#xff…...

如何扩展Noisereduce:自定义降噪算法的开发指南

如何扩展Noisereduce&#xff1a;自定义降噪算法的开发指南 【免费下载链接】noisereduce Noise reduction in python using spectral gating (speech, bioacoustics, audio, time-domain signals) 项目地址: https://gitcode.com/gh_mirrors/no/noisereduce Noisereduc…...

《Windows Sysinternals实战指南》PsTools 学习笔记(7.10):PsFile——远程“谁在占用这个文件/共享”的取证与解占用

&#x1f525;个人主页&#xff1a;杨利杰YJlio❄️个人专栏&#xff1a;《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》&#x1f31f; 让复杂的事情更…...

如何测量WIFI通讯中客户端的漫游时间

在工业WiFi通信中会有很多涉及漫游的场景&#xff0c;例如AGV车辆在整个车间内移动&#xff0c;车间范围内会布置多个AP来完成信号覆盖&#xff0c;AGV车辆运动过程中远离已连接AP&#xff0c;接近另一个AP时就会发生漫游&#xff0c;由于工业通讯协议对实时性要求很高&#xf…...

KVM网络配置踩坑记:从virt-install的`--network`参数到virsh管理虚拟网桥

KVM网络配置实战&#xff1a;从virt-install到virsh的深度解析 当你在本地环境搭建KVM虚拟机时&#xff0c;网络配置往往是第一个拦路虎。不同于物理机插上网线就能用的简单体验&#xff0c;虚拟化环境中的网络需要经过多层抽象和配置才能正常工作。本文将带你深入KVM网络配置的…...

爬虫实战复盘:山东政务噪声数据逆向爬取踩坑全记录

爬虫实战复盘&#xff1a;山东政务噪声数据逆向爬取踩坑全记录 前言 近期在做全国各省市环境噪声实时数据爬虫、清洗、入库标准化项目&#xff0c;已经稳定跑通北京&#xff08;静态HTML&#xff09;、天津&#xff08;SM3国密签名接口&#xff09;两大站点。今天攻坚山东省噪声…...

对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方API&#xff0c;通过Taotoken接入在成本控制上的实际感受 1. 引言&#xff1a;从单一渠道到聚合平台 对于个人开…...

从审稿人到作者:我审了10篇论文后,总结出的5个投稿避坑指南和3个加分项

从审稿人到作者&#xff1a;10篇论文审阅经验提炼的5大避坑策略与3个关键加分项 第一次收到审稿邀请时&#xff0c;我正对着自己第三篇被拒的论文修改意见发呆。这种身份错位带来的震撼&#xff0c;让我开始系统记录审稿笔记——如今这些笔记已形成超过2万字的"审稿人思维…...

用STM32F103和LORA模块,从零搭建一个轮询式本地传感网(附避坑点)

基于STM32F103与LoRa的工业级轮询传感网实战指南 在工业物联网和智能农业领域&#xff0c;稳定可靠的无线传感网络是数据采集的基石。当我们手头有几个STM32F103开发板和LoRa模块时&#xff0c;如何构建一个抗干扰性强、响应及时的轮询式传感网络&#xff1f;本文将深入解析从硬…...

从MVC到DDD:微服务架构下应对业务复杂性的实战演进

1. 从“造到飞起”到“稳如老狗”&#xff1a;一个老码农的架构心路干了十几年开发&#xff0c;带过不少团队&#xff0c;也趟过无数坑。要说这些年最大的感受是什么&#xff0c;那就是&#xff1a;变化是常态&#xff0c;混乱是必然&#xff0c;而架构的价值&#xff0c;就是在…...