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

JVM 面试

JVM 运行时内存区域划分是怎样的?

  • 程序计数器:记录当前线程执行的字节码指令的地址,是线程私有的。

  • Java 虚拟机栈:每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息,是线程私有的。

  • 本地方法栈:与 Java 虚拟机栈类似,用于执行本地方法,是线程私有的。

  • :用于存储对象实例,是线程共享的。

  • 方法区:用于存储已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,是线程共享的。在 JDK 1.8 中,方法区被元空间(Metaspace)取代,元空间使用本地内存。

常见的 GC 回收算法及其含义是什么?

  • 标记 - 清除算法:分为标记和清除两个阶段。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。该算法会产生大量的内存碎片。

  • 复制算法:将内存分为大小相等的两块,每次只使用其中一块。当这块内存满了时,将存活的对象复制到另一块内存中,然后清除原来的内存。该算法不会产生内存碎片,但会浪费一半的内存空间。

  • 标记 - 整理算法:在标记 - 清除算法的基础上,增加了整理的步骤。在标记阶段标记出所有需要回收的对象,清除阶段将存活的对象向一端移动,然后清除边界以外的内存,解决了内存碎片的问题。

  • 分代收集算法:根据对象的存活周期将内存划分为新生代和老年代。新生代采用复制算法,老年代采用标记 - 清除或标记 - 整理算法。

什么是类加载器?

类加载器是负责将字节码文件加载到 JVM 中,并将其转换为 Class 对象的组件。Java 中有三种类型的类加载器:

  • 启动类加载器(Bootstrap ClassLoader):负责加载 Java 核心类库,如 rt.jar,是用 C++ 实现的,无法被 Java 程序直接引用。

  • 扩展类加载器(Extension ClassLoader):负责加载 Java 的扩展类库,如 jre/lib/ext 目录下的类库。

  • 应用程序类加载器(Application ClassLoader):负责加载应用程序的类,如 classpath 下的类。

什么是双亲委派模型机制?

当一个类加载器收到类加载请求时,它首先不会自己去尝试加载这个类,而是把请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子类加载器才会尝试自己去加载。

一个类的生命周期是怎样的?类是如何加载到 JVM 中的?

  • 生命周期:加载、验证、准备、解析、初始化、使用、卸载。

  • 加载过程

    1. 加载:通过类加载器将字节码文件加载到内存中,生成一个 Class 对象。

    2. 验证:验证字节码文件的正确性,确保其符合 Java 虚拟机规范,包括文件格式验证、元数据验证、字节码验证和符号引用验证等步骤,防止恶意字节码对 JVM 造成危害。

    3. 准备:为类的静态变量分配内存,并设置默认初始值,如为整型变量赋 0,引用类型赋 null 。

    4. 解析:将常量池中的符号引用替换为直接引用,也就是把类、接口、字段和方法的符号引用转换为具体内存地址的直接引用,便于在运行时快速定位和访问这些元素。

    5. 初始化:执行类构造器<clinit>()方法,对静态变量进行显式赋值和执行静态代码块中的代码。<clinit>()方法是由编译器自动收集类中的所有静态变量的赋值动作和静态代码块中的语句合并产生的,并且在多线程环境下,JVM 会确保<clinit>()方法的线程安全性,一个类的<clinit>()方法在多线程环境下只会被执行一次。

说说类加载的过程?

类加载过程包含上述生命周期中的加载、验证、准备、解析、初始化这几个阶段:加载阶段通过类加载器查找并读取字节码文件,将其转化为内存中的 Class 对象;验证阶段全方位检查字节码的合法性和安全性;准备阶段为静态变量分配内存并赋予初始默认值;解析阶段将常量池中的符号引用替换为直接引用;初始化阶段执行<clinit>()方法,完成静态变量的显式赋值和静态代码块的执行。例如,当我们首次使用一个自定义类时,JVM 会按照这个顺序逐步完成类的加载,确保类在使用前已经被正确加载和初始化。

什么是强引用、软引用、弱引用、虚引用?

  • 强引用:最常见的引用类型,通过new关键字创建对象时就是强引用。只要强引用存在,垃圾回收器就不会回收被引用的对象。例如Object obj = new Object();,只要obj引用存在,对应的Object对象就不会被回收,哪怕内存不足也不会回收,可能导致 OOM。

  • 软引用:通过SoftReference类实现,在内存充足时,不会被回收;当内存不足时,会被回收。常用于实现内存敏感的缓存,比如缓存图片等大对象,在内存不够时,系统会优先回收这些软引用指向的对象,避免 OOM。

  • 弱引用:通过WeakReference类实现,无论内存是否充足,只要垃圾回收器扫描到,就会回收被弱引用指向的对象。常用于解决内存泄漏问题,例如在HashMap中,如果使用强引用作为key,当key不再使用但仍被HashMap引用时,可能导致内存泄漏,而使用弱引用作为key,在key不再被其他地方引用时,垃圾回收器会回收它,避免内存泄漏。

  • 虚引用:通过PhantomReference类实现,也叫幻影引用,它对对象的生命周期没有影响,无法通过虚引用来获取对象实例,主要用于在对象被回收时收到一个系统通知,例如用于管理堆外内存资源,当对象被回收时,可通过虚引用关联的引用队列来触发堆外内存的释放操作。

Minor GC 与 Full GC 分别在什么时候发生?

  • Minor GC:发生在新生代,当新生代的 Eden 区满了,无法存放新创建的对象时,就会触发 Minor GC。它会回收新生代中不再被引用的对象,由于新生代对象大多 “朝生夕灭”,所以 Minor GC 的频率较高,但回收速度相对较快。

  • Full GC:发生在老年代,常见的触发场景有老年代空间不足、方法区空间不足、显式调用System.gc() (不过System.gc()只是建议 JVM 进行 Full GC,JVM 不一定会立即执行)、大对象直接进入老年代且老年代空间不够时,以及在进行 Minor GC 时,动态年龄判断发现 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,若老年代空间不足就会触发 Full GC。Full GC 会对整个堆(包括新生代和老年代)和方法区进行垃圾回收,回收速度相对较慢,因为老年代中的对象存活时间长,垃圾回收的成本更高。

什么时候触发 Full GC?

除了上述提到的老年代空间不足、方法区空间不足、显式调用System.gc() 、大对象直接进入老年代且老年代空间不够、Minor GC 时动态年龄判断导致老年代空间不足等情况外,还有以下情况:当 JVM 的堆内存使用率达到一定阈值(可通过参数设置,如-XX:HeapDumpOnOutOfMemoryError 结合-XX:OnOutOfMemoryError 等参数配合监控和触发相关操作),可能会触发 Full GC;在使用 CMS(Concurrent Mark Sweep)垃圾回收器时,如果在并发标记和清理阶段出现 Concurrent Mode Failure,即 CMS 在垃圾回收过程中,应用程序又产生了大量垃圾,导致老年代剩余空间无法容纳新的垃圾对象,也会触发 Full GC。

Java 中的大对象如何进行存储?

大对象通常指需要大量连续内存空间的对象,如大数组。在 Java 中,大对象一般会直接分配到老年代。因为新生代的空间相对较小,且使用复制算法,频繁地在新生代分配和回收大对象可能会导致大量的内存复制操作,影响性能。而老年代空间较大,并且采用标记 - 清除或标记 - 整理算法,更适合存储大对象。不过,当老年代空间不足时,就可能触发 Full GC 来回收老年代空间,以容纳大对象。此外,可以通过调整 JVM 参数(如-XX:PretenureSizeThreshold )来设置大对象直接进入老年代的阈值,当对象大小超过该阈值时,就直接在老年代分配内存。

为什么新生代内存需要有两个 Survivor 区?

新生代采用复制算法进行垃圾回收,两个 Survivor 区(一般称为 From Survivor 和 To Survivor)的设计是为了实现高效的垃圾回收。在每次 Minor GC 时,Eden 区和 From Survivor 区中存活的对象会被复制到 To Survivor 区,然后清空 Eden 区和 From Survivor 区。下次 Minor GC 时,From Survivor 区和 To Survivor 区的角色互换,即原来的 To Survivor 区变为 From Survivor 区,原来的 From Survivor 区变为 To Survivor 区。这样设计的好处是:一方面,避免了像标记 - 清除算法那样产生内存碎片;另一方面,通过复制存活对象,使得存活时间长的对象逐步晋升到老年代,因为每次复制时,对象的年龄(在 Survivor 区经历一次 Minor GC,年龄就加 1)会增加,当年龄达到一定阈值(默认为 15)时,对象就会被晋升到老年代,从而保证新生代的空间能够高效地利用,提高垃圾回收的效率。

相关文章:

JVM 面试

JVM 运行时内存区域划分是怎样的&#xff1f; 程序计数器&#xff1a;记录当前线程执行的字节码指令的地址&#xff0c;是线程私有的。 Java 虚拟机栈&#xff1a;每个方法在执行时都会创建一个栈帧&#xff0c;用于存储局部变量表、操作数栈、动态链接、方法出口等信息&#…...

七、Redis集群高可用

一、节点与插槽管理 添加主节点 准备节点 首先准备一个新的节点&#xff0c;添加配置文件。 vi /usr/local/redis/cluster/conf/redis-6377.conf # 放行访问IP限制 bind 0.0.0.0 # 端口 port 6377 # 后台启动 daemonize yes # 日志存储目录及日志文件名 logfile "/us…...

WPF12-MVVM

目录 1. 什么是MVVM2. 实现简单MVVM2.1. Part 12.2. Part 21. 什么是MVVM MVVM 是 Model-View-ViewModel 的缩写,是一种用于构建用户界面的设计模式,是一种简化用户界面的事件驱动编程方式。 MVVM 的目标是实现用户界面和业务逻辑之间的彻底分离,以便更好地管理和维护应用…...

多智能体博弈代码案例

多智能体博弈代码案例 直接可用,我不吝啬 from openai import OpenAI import random# 定义不同人物角色的提示 CHARACTER_PROMPTS = {"专家": "你是该领域的权威专家,知识渊博,回答严谨专业。"...

【AHK】资源管理器自动化办公实例/自动连点设置

此处为一个自动连续点击打开检查的自动化操作案例&#xff0c;没有quicker的鼠键录制&#xff0c;不常用了&#xff0c;做个备份 #MaxThreadsPerHotkey 2 ; 这个是核心&#xff01;&#xff01;&#xff01;&#xff01;确保可以同时运行多个热键或标签global isRunning : tru…...

Python安装环境变量

1、确保已经安装python到电脑上 2、到系统上环境变量位置 3、新建 系统变量&#xff0c;变量名为PYTHON_HOME&#xff0c;变量值为python安装目录 4、 点击系统变量的path&#xff0c;并新建环境变量 5、测试 &#xff0c;windowsR,并输入cmd&#xff0c;尝试命令python --ver…...

Flink同步数据mysql到doris问题合集

Flink同步数据mysql到doris 官方同步流程Doris安装下载地址导入镜像启动配置 Flink-cdc安装&#xff08;自制&#xff09;下载地址导入镜像启动命令 启动问题修复Flink报错Could not acquire the minimum required resources.作业报错 Mysql8.0 Public Key Retrieval is not al…...

Pytest测试用例执行跳过的3种方式

文章目录 1.前言2.使用 pytest.mark.skip 标记无条件跳过3.使用 pytest.mark.skipif 标记根据条件跳过4. 执行pytest.skip()方法跳过测试用例 1.前言 在实际场景中&#xff0c;我们可能某条测试用例没写完&#xff0c;代码执行时会报错&#xff0c;或者是在一些条件下不让某些…...

spring boot 连接FTP实现文件上传

spring boot 连接FTP实现文件上传 maven&#xff1a; <!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency>接口示例&#xff1a; ApiO…...

深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

文章目录 深入解析/etc/hosts.allow与 /etc/hosts.deny&#xff1a;灵活控制 Linux 网络访问权限引言什么是 TCP Wrappers&#xff1f;工作原理 什么是 /etc/hosts.allow 和 /etc/hosts.deny&#xff1f;匹配规则配置语法详解配置示例允许特定 IP 访问 SSH 服务拒绝整个子网访问…...

短跑怎么训练提高最快·棒球1号位

棒球运动员的短跑能力直接影响跑垒、防守和进攻效率&#xff0c;提升短跑速度需结合专项需求&#xff08;如爆发力、加速度、变向能力&#xff09;进行系统训练。以下为针对性训练方案&#xff1a; 一、专项爆发力训练&#xff08;提升起跑速度&#xff09; 抗阻冲刺 用弹力带…...

USRP7440-通用软件无线电平台

1、产品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架构&#xff0c;它将射频ADC、DAC、ARM、FPGA等集成一体&#xff0c;瞬时带宽可以达到2.5GHz&#xff0c;尤其适合于射频直采应用&#xff0c;比如通信与雷达。 第一代RFSOC高达4GHz • 8x 或 16x 6.554GSPS DAC…...

51c大模型~合集48

我自己的原文哦~ https://blog.51cto.com/whaosoft/11940475 #Mini-Omni 让大模型能听会说&#xff0c;国内机构开源全球首个端到端语音对话模型 本文出自启元世界多模态算法组&#xff0c;共同一作是来自清华大学的一年级硕士生谢之非与启元世界多模态负责人吴昌桥&…...

004-利用Docker安装Mysql

利用Docker安装Mysql 一、在镜像仓库找到 Mysql1.镜像仓库地址2.复制命令3.下载Mysql镜像4.查看镜像 二、创建实例并启动三、用本地工具连接数据库四、设置 Mysql 配置 一、在镜像仓库找到 Mysql 1.镜像仓库地址 https://hub.docker.com 2.复制命令 docker pull mysql:8.0…...

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时&#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为&#xff0c;我们可以将已登录状态的Cookies存储起来&#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies&#xff0c;从而跳过登录步骤。 Cookies简介 …...

UEditor集成Markdown编辑功能方案

分步解决方案&#xff1a; 1. 推荐免费开源Markdown库 推荐使用 markdown-it&#xff08;MIT协议&#xff09; 官网&#xff1a;https://github.com/markdown-it/markdown-it 特点&#xff1a;轻量级&#xff08;15KB&#xff09;、扩展性强、支持CommonMark规范、中文文档丰…...

综合练习 —— 递归、搜索与回溯算法

目录 一、1863. 找出所有子集的异或总和再求和 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 代码思路 问题分析 核心思想 实现细节 代码解析 初始化 DFS 函数 时间复杂度 空间复杂度 示例运行 输入 运行过程 总结 二、 47. 全排列 II - 力扣&a…...

Python之使用动态导包优化软件加载速度

在开发大型 Python 软件时,可能会遇到以下问题:由于静态导入了大量模块,导致软件启动时间过长,用户体验不佳。例如,一个复杂的桌面应用程序或 Web 服务可能依赖于多个大型库(如 numpy、pandas、torch 或 Yolo),这些库在启动时被静态导入,即使某些功能模块在启动时并不…...

第16天:C++多线程完全指南 - 从基础到现代并发编程

第16天&#xff1a;C多线程完全指南 - 从基础到现代并发编程 一、多线程基础概念 1. 线程创建与管理&#xff08;C11&#xff09; #include <iostream> #include <thread>void hello() {std::cout << "Hello from thread " << std::this_…...

建筑兔零基础人工智能自学记录33|基础知识1

插入学习一下一些基础概念&#xff1a; 1、基本概念 人工智能&#xff1a;让机器像人一样思考。机器学习ML&#xff1a;计算机获取知识的过程。深度学习&#xff1a;机器的一种思考方式&#xff08;借助神经网络&#xff09;。 三者关系 2、机器学习的方式 监督学习&#x…...

win11编译pytorchaudio cuda128版本流程

1. 前置条件 本篇续接自 win11编译pytorch cuda128版本流程&#xff0c;阅读前请先参考上一篇配置环境。 访问https://kkgithub.com/pytorch/audio/archive/refs/tags/v2.6.0.tar.gz下载源码&#xff0c;下载后解压&#xff1b; 2. 编译 在visual studio 2022安装目录下查找…...

Python—Excel全字段转json文件(极速版+GUI界面打包)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码(简易版)5、进阶版(GUI)总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——…...

NLP学习记录十一:位置编码

目录 一、位置编码的意义 二、位置编码方法 三、代码实现 一、位置编码的意义 在标准的注意力机制中&#xff0c;每个查询都会关注所有的键&#xff0d;值对并生成一个注意力输出&#xff0c;模型并没有考虑到输入序列每个token的顺序关系。 以["我&qu…...

算法之算法主题

程序员数学 《程序员数学 v2.0》 | 小傅哥 bugstack 虫洞栈 智力题 头脑风暴题目 | Java 全栈知识体系...

【三维分割】LangSplat: 3D Language Gaussian Splatting(CVPR 2024 highlight)

论文&#xff1a;https://arxiv.org/pdf/2312.16084 代码&#xff1a;https://github.com/minghanqin/LangSplat 文章目录 一、3D language field二、回顾 Language Fields的挑战三、使用SAM学习层次结构语义四、Language Fields 的 3DGS五、开放词汇查询&#xff08;Open-voca…...

Wireshark:自定义类型帧解析

文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧&#xff0c;仔细分析相关代码和数据帧后&#xff0c…...

ES6 特性全面解析与应用实践

1、let let 关键字用来声明变量&#xff0c;使用let 声明的变量有几个特点&#xff1a; 1) 不允许重复声明 2) 块儿级作用域 3) 不存在变量提升 4) 不影响作用域链 5) 暂时性死区 6&#xff09;不与顶级对象挂钩 在代码块内&#xff0c;使用let命令声明变量之前&#x…...

Qt跨线程信号槽调用:为什么信号不能像普通函数那样调用

1. 信号与槽机制的基本原理 在 Qt 中&#xff0c;信号与槽机制是一种事件驱动的通信方式&#xff0c;用于对象之间的解耦交互。其关键特点如下&#xff1a; 信号不能直接调用 信号只是一个声明&#xff0c;并没有实际的函数实现。它们通过 emit 关键字在对象内部被触发&…...

Zookeeper(79)如何进行Zookeeper的监控?

对 Zookeeper 进行监控是确保其高可用性和性能的关键步骤。监控 Zookeeper 通常包括以下几个方面&#xff1a; 健康检查&#xff1a;检查 Zookeeper 节点是否在线。性能指标&#xff1a;监控关键性能指标&#xff0c;如请求延迟、事务处理量等。日志监控&#xff1a;监控 Zook…...

【江科大STM32】TIM输出比较-PWM功能(学习笔记)

一、PWM驱动LED呼吸灯 接线图&#xff1a; PWM的初始化: 具体步骤&#xff1a; ①RCC开启时钟&#xff08;把要用的TIM外设和GPIO外设时钟都打开&#xff09; ② 配置时基单元&#xff0c;包括前面的时钟源选择 ③配置输出比较单元&#xff0c;里面包括CCR的值&#xff…...

playbin之autoplug_factories源码剖析

一、autoplug_factories_cb /* Called when we must provide a list of factories to plug to pad with caps.* We first check if we have a sink that can handle the format and if we do, we* return NULL, to expose the pad. If we have no sink (or the sink does not…...

Spring Cloud之注册中心之Nacos的使用

目录 Naacos 服务注册/服务发现 引⼊Spring Cloud Alibaba依赖 引入Nacos依赖 引入Load Balance依赖 配置Nacos地址 服务端调用 启动服务 Naacos Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使⽤Na…...

React antd的datePicker自定义,封装成组件

一、antd的datePicker自定义 需求&#xff1a;用户需要为日期选择器的每个日期单元格添加一个Tooltip&#xff0c;当鼠标悬停时显示日期、可兑换流量余额和本公会可兑流量。这些数据需要从接口获取。我需要结合之前的代码&#xff0c;确保Tooltip正确显示&#xff0c;并且数据…...

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK&#xff0c;接入校园网后一人登录&#xff0c;所有人都能通过连接此路由器上网&#xff0c;无法解决遂上网搜索&#xff0c;无果&#xff0c;幸而偶然看到一个帖子说要把信号源网线接入路由器lan口&#xff0c;开启新世界。 一、wan-lan&#xff0c;lan-lan区…...

散户情绪周期模型(情绪影响操作)

目录 一、个股上涨阶段情绪演化二、个股下跌阶段情绪演化三、底部震荡阶段情绪演化四、情绪观察与操作工具箱1. 情绪自测量表&#xff08;每日收盘后记录&#xff09;2. 情绪-指标对照表 五、高阶情绪管理技巧1.认知重构训练2.生理指标监控&#xff08;需配合智能手表&#xff…...

对比Grok3 普通账户与 30 美元 Super 账户:默认模式、Think 和 DeepSearch 次数限制以及如何升级

面对这个马斯克旗下的"最聪明"的人工智能&#xff0c;很多人都不知道他们的基本模式&#xff0c;本期将从几个方面开始说明&#xff1a; Grok3的背景与功能 账户类型及其详细背景 使用限制 使用限制对比表 如何充值使用 Super 账户 纯干货&#xff0c;带你了解…...

小程序Three Dof识别 实现景区AR体验

代码工程 GitCode - 全球开发者的开源社区,开源代码托管平台 dof...

主流Linux发行版优缺点整理及对比指南(文末附表格)

Linux发行版种类繁多&#xff0c;各有其设计理念和适用场景。本文整理常见发行版的优缺点&#xff0c;并附对比表格&#xff0c;帮助用户根据需求选择最适合的系统。 1. Ubuntu 定位&#xff1a;适合新手的通用型桌面/服务器系统优点&#xff1a; 安装简单&#xff0c;社区支持…...

用大白话解释搜索引擎Elasticsearch是什么,有什么用,怎么用

Elasticsearch是什么&#xff1f; Elasticsearch&#xff08;简称ES&#xff09;就像一个“超级智能的图书馆管理系统”&#xff0c;专门帮你从海量数据中快速找到想要的信息。它底层基于倒排索引技术&#xff08;类似书籍的目录页&#xff09;&#xff0c;能秒级搜索和分析万…...

坐标变换及视图变换和透视变换(相机透视模型)

文章目录 2D transformationScaleReflectionShear&#xff08;切变&#xff09;Rotation around originTranslationReverse变换顺序复杂变换的分解 齐次坐标&#xff08;Homogenous Coordinates&#xff09;3D transformationScale&TranslationRotation Viewing / Camera t…...

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布 MQTT简述MQTTNet简述创建项目&#xff08;基于.NET Framework框架&#xff09;安装MQTTNet库项目源码运行效果 MQTT简述 mqtt官网 MQTTNet简述 MQTTnet MQTTnet 是一个强大的开源 MQTT 客户端库&#…...

Python实现视频播放器

Python实现视频播放器 Python实现视频播放器&#xff0c;在如下博文中介绍过 Python实现本地视频/音频播放器https://blog.csdn.net/cnds123/article/details/137874107 Python简单GUI程序示例 中 “四、视频播放器” https://blog.csdn.net/cnds123/article/details/122903…...

介绍一款飞算JavaAI编程工具,集成到idea,图文并茂

飞算的插件下载地址&#xff0c;里边也有安装步骤&#xff1a; JavaAI 下载 从file-》setting-》plugin&#xff0c;然后走图中所示 选择从磁盘安装插件&#xff1a;找到下载好的压缩包然后进行idea重启 根据提示模块可以生成代码&#xff0c;就是需要等待&#xff0c;后期不…...

【大数据】Spark Executor内存分配原理与调优

【大数据】Spark Executor内存管理与调优 Executor内存总体布局 统一内存管理 堆内内存 (On-heap Memory) 堆外内存 (Off-heap Memory) Execution 内存和 Storage 内存动态占用机制 任务内存管理&#xff08;Task Memory Manager&#xff09; 只用了堆内内存的示例 用了…...

Python 课堂点名桌面小程序

一、场景分析 闲来无事&#xff0c;老婆说叫我开发一个课堂点名桌面小程序&#xff0c;给她在课堂随机点名学生问问题。 人生苦短&#xff0c;那就用 Python 给她写一个吧。 二、依赖安装 因为要用到 excel&#xff0c;所以安装两个依赖&#xff1a; pip install openpyxl…...

配置Spring Boot中的Jackson序列化

配置Spring Boot中的Jackson序列化 在开发基于Spring Boot的应用程序时&#xff0c;Jackson是默认的JSON序列化和反序列化工具。它提供了强大的功能&#xff0c;可以灵活地处理JSON数据。然而&#xff0c;Jackson的默认行为可能无法完全满足我们的需求。例如&#xff0c;日期格…...

Rust学习总结之-match

Rust 有一个叫做 match 的极为强大的控制流运算符&#xff0c;它允许我们将一个值与一系列的模式相比较&#xff0c;并根据相匹配的模式执行相应代码。模式可由字面量、变量、通配符和许多其他内容构成。 一&#xff1a;match定义 可以把 match 表达式想象成某种硬币分类器&a…...

实践教程:使用DeepSeek实现PDF转Word的高效方案

&#x1f388;Deepseek推荐工具 PDF文件因其跨平台、格式稳定的特性被广泛使用&#xff0c;但在内容编辑场景中&#xff0c;用户常需将PDF转换为可编辑的Word文档。传统的付费工具&#xff08;如Adobe Acrobat&#xff09;或在线转换平台存在成本高、隐私风险等问题。本文将使…...

鸿蒙 ArkUI 实现 2048 小游戏

2048 是一款经典的益智游戏&#xff0c;玩家通过滑动屏幕合并相同数字的方块&#xff0c;最终目标是合成数字 2048。本文基于鸿蒙 ArkUI 框架&#xff0c;详细解析其实现过程&#xff0c;帮助开发者理解如何利用声明式 UI 和状态管理构建此类游戏。 一、核心数据结构与状态管理…...

az devops login报错:Failed to authenticate using the supplied token.

PowerShell&#xff0c;az devops login报错&#xff1a; Failed to authenticate using the supplied token. 检查了一下PAT token是对的。 检查命令&#xff1a; az devops login --organization https://dev.azure.com/xxxxxxxx/ 乍一看好像没问题问题&#xff0c;然后想…...