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

JVM 调试与内存优化实战详解

🌟 JVM 调试与内存优化实战详解 🌟

  • 前言
  • 一、JVM 内存模型概览
  • 二、常见内存问题与诊断思路
  • 三、核心调试工具与命令详解
  • 四、实战案例一:频繁 Full GC 深度排查与优化
    • 1. 🕵️ 问题现象
    • 2. 🔬 排查流程
    • 3. ✅ 优化方案
  • 五、实战案例二:隐蔽内存泄漏定位与修复
    • 1. 🕵️ 问题现象
    • 2. 🔬 排查流程
    • 3. ✅ 修复策略
  • 六、实战案例三:大对象分配导致 Young GC 瓶颈
    • 1. 🕵️ 问题背景
    • 2. 🔬 排查流程
    • 3. 🔍 分析思路
    • 4. ✅ 优化方案
  • 七、实战案例四:Web 应用 Session 内存泄漏
  • 八、实战案例五:多线程池配置不当导致内存压力
  • 九、高级调优策略与 JVM 参数解读
  • 十、堆外内存与 Metaspace 优化
  • 十一、在线诊断利器:Arthas 与 Async‑profiler
  • 十二、新一代 GC 对比与选型
  • 十三、容器化与云原生场景下的 JVM 调优
  • 十四、总结与最佳实践


前言

在微服务与云原生架构盛行的当下,Java 应用常面临高并发、高可用与大数据量处理的挑战。JVM(Java Virtual Machine)作为 Java 程序运行的基石,其性能直接影响系统的稳定性与吞吐能力。本文将从 JVM 内存模型入手,结合真实生产环境中的常见内存问题与排查流程,深入剖析调试工具与优化手段,帮助开发者构建高性能、低延迟的 Java 服务。🚀


一、JVM 内存模型概览

Java 虚拟机将运行时内存划分为多个逻辑区域,各区域职责明确,问题定位也各有侧重:

请添加图片描述

  • 年轻代(Young Gen):Eden + Survivor,频繁 Minor GC 🌀

  • 老年代(Old Gen):长期存活对象,高代价 Full GC ⏳

  • Metaspace:类元数据区,JDK 8+ 替代 PermGen 📦

  • 直⽅内存(Direct Memory):NIO/Netty 缓冲区,需谨慎管理 🌐

二、常见内存问题与诊断思路

❗️ 问题表现🔍 可能原因🛠️ 初步诊断工具
频繁 Full GC老年代满载;对象晋升过快;缓存泄漏jstat -gcutil、GC 日志
响应延迟、卡顿GC 停顿时间过长;大对象分配频繁jstat -gcjconsole
堆内存持续增长至 OOM隐蔽内存泄漏(静态集合、ThreadLocal、缓存)jmap -dump + MAT
Metaspace 溢出动态生成类过多;ClassLoader 泄漏jcmd GC.class_stats
Direct Memory 溢出NIO/Netty Buffer 泄漏;过度使用直接缓冲区应用日志 + Netty 监控

三、核心调试工具与命令详解

工具 / 命令功能说明
jps列出 Java 进程 PID
jstat -gcutil <pid> 1000内存区使用率与 GC 次数
jmap -histo:live <pid>堆中对象分布
jmap -dump:live,format=b,file=heap.hprof <pid>导出堆快照,仅包含存活对象
jstack <pid> > thread.log导出线程栈,排查死锁/阻塞
jcmd <pid> GC.class_stats查看 Metaspace 类加载统计
VisualVM / JConsoleGUI 监控:内存、线程、GC
Arthasheapmonitorttoptracejad 等命令
MAT (Memory Analyzer)分析 .hprof,查找泄漏疑点
Async‑profilerCPU/内存/锁竞争火焰图,直观定位热点

四、实战案例一:频繁 Full GC 深度排查与优化

1. 🕵️ 问题现象

  • 服务运行数小时后,响应延迟飙升至 2000ms+

  • Old Gen 使用率稳定 95%+

  • Full GC 停顿偶现 > 500ms

2. 🔬 排查流程

(1)日志 & 监控:确认 System.gc() 或 CMS ConcurrentModeFailure

(2)堆快照

jmap -dump:live,format=b,file=fullgc.hprof <pid>

(3)晋升行为:检查 Survivor 利用率,调整 -XX:SurvivorRatio

  • 代码审查:大对象复用 & 缓存清理策略

3. ✅ 优化方案

  • JVM 参数

    -Xms8g -Xmx8g -Xmn2g \
    -XX:SurvivorRatio=8 \
    -XX:+UseG1GC -XX:MaxGCPauseMillis=200
    
  • 切换 G1GC:Region 管理,混合回收,适合大堆 (>6GB)

  • 代码优化:对象池 & Caffeine 缓存(容量/过期策略)

五、实战案例二:隐蔽内存泄漏定位与修复

1. 🕵️ 问题现象

  • 应用长时间运行后,Heap 使用率持续上升直至 OOM

  • Minor GC 后 Eden/S0 可回收,Old Gen 稳步增长

2. 🔬 排查流程

(1)堆快照

jmap -dump:live,format=b,file=leak.hprof <pid>

(2)MAT 分析

  • Leak Suspects Report

  • Dominator Tree

(3)GC Roots:静态变量 / ThreadLocal / 未关闭资源

3. ✅ 修复策略

  • 弱引用缓存

    Cache<K, V> cache = Caffeine.newBuilder().weakKeys().weakValues().expireAfterWrite(10, TimeUnit.MINUTES).build();
    
  • ThreadLocal 管理

    try { threadLocal.set(v); /*...*/ }
    finally { threadLocal.remove(); }
    
  • 资源关闭:JDBC/IO/Netty Channel/Listener

  • 定期清理

    Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(cache::cleanUp,1,1,TimeUnit.HOURS);
    

六、实战案例三:大对象分配导致 Young GC 瓶颈

1. 🕵️ 问题背景

  • 处理大文件上传时,构造 50MB 左右的 byte[]ByteBuffer

  • 并发高时,Minor GC 频繁,停顿 50–100ms,影响响应。

2. 🔬 排查流程

(1)监控

jstat -gcutil <pid> 500

(2)堆快照

jmap -histo:live <pid>

(3)GC 日志

-Xlog:gc*,gc+heap=debug:file=gc.log:time,level,tags

3. 🔍 分析思路

  • 大对象直接进入 Old Gen,Old Gen 使用率上升;

  • Eden 中小对象频繁分配,触发更多 Minor GC。

4. ✅ 优化方案

  • 堆外分配

    ByteBuffer buffer = ByteBuffer.allocateDirect(size);
    
  • 对象复用:使用 PooledByteBufAllocator

  • 调整年轻代大小

    -Xmn1g -XX:MaxNewSize=1g
    

七、实战案例四:Web 应用 Session 内存泄漏

  1. 🕵️ 问题背景

    • Spring MVC 应用,Session 中存储自定义对象。

    • 活跃用户增多,堆内存持续增长,触发 OOM。

  2. 🔬 排查流程

    (1)监控jconsole 观察堆内存趋势

    (2)堆快照

    jmap -dump:live,format=b,file=session_leak.hprof <pid>
    

    (3)MAT 分析:定位 StandardSession 实例过多

    (4)GC Roots:Session Map 引用链

  3. 优化方案

  • Session 过期策略

    <session-config><session-timeout>15</session-timeout></session-config>
    
  • 轻量化 Session:仅存必要字段

  • 分布式 Session:Redis 存储,设置过期

八、实战案例五:多线程池配置不当导致内存压力

  1. 🕵️ 问题背景
  • 多个 ThreadPoolExecutor,无界队列。

  • 高并发时,任务堆积,Runnable 对象大量堆积,内存飙升。

  1. 🔬 排查流程

    (1)监控jstat -gcutil 显示 Old Gen 上升

    (2)队列监控jconsole 查看队列长度

    (3)堆快照jmap -histo:live 定位 FutureTask

  2. 优化方案

  • 有界队列 + 拒绝策略

    new ThreadPoolExecutor(50,100,60,TimeUnit.SECONDS,new ArrayBlockingQueue<>(1000),new ThreadPoolExecutor.CallerRunsPolicy());
    
  • 监控告警:队列长度、活跃线程数

  • 动态扩缩容:基于响应与队列长度自动调整

九、高级调优策略与 JVM 参数解读

参数作用
-XX:+UseG1GC启用 G1 收集器,低停顿
-XX:MaxGCPauseMillis=200G1 目标最大停顿
-XX:InitiatingHeapOccupancyPercent=45G1 并发标记阈值
-XX:+UseStringDeduplicationG1 字符串去重
-XX:MetaspaceSize=128mMetaspace 初始大小
-XX:MaxMetaspaceSize=512mMetaspace 最大大小
-XX:+HeapDumpOnOutOfMemoryErrorOOM 时生成堆转储
-XX:HeapDumpPath=/path/dump.hprof指定堆转储路径
-Xlog:gc*:file=/path/gc.log:timeJDK 9+ 统一 GC 日志格式

十、堆外内存与 Metaspace 优化

✨ Direct Memory

  • Netty Buffer 泄漏:启用 ResourceLeakDetector

  • 参数-XX:MaxDirectMemorySize=2g

✨ Metaspace

  • 动态类卸载:Spring Devtools / 自定义 ClassLoader 清理

  • 参数-XX:MaxMetaspaceSize=256m + jcmd GC.class_stats

十一、在线诊断利器:Arthas 与 Async‑profiler

  • Arthas

    • heap histogrammonitorttoptracejad
  • Async‑profiler

    ./profiler.sh -d30 -f cpu.svg <pid>
    ./profiler.sh -e alloc -f mem.svg <pid>
    

🔥 火焰图直观定位 CPU/内存热点

十二、新一代 GC 对比与选型

特性G1GCZGCShenandoah
停顿时间< 200ms< 10ms< 10ms
最大堆支持多 TB多 TB多 TB
并发标记整理并发标记 + 短暂停顿整理全并发,无停顿搬迁并发标记与整理,无停顿搬迁
CPU 开销中等较高中等偏高
JDK 支持9+11+12+

十三、容器化与云原生场景下的 JVM 调优

  1. CGroup 内存识别
  • JDK 8:-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap

  • JDK 10+ 自动感知

  1. 避免 OOMKilled
  • -Xmx ≈ 容器内存 75%,保留 25% 给 Metaspace/DirectMemory/OS
  1. 水平扩缩容
  • HPA:jvm_memory_bytes_used + jvm_gc_pause_seconds

  • Istio/Linkerd 限流熔断

  1. 可观测性

    management:metrics:export:prometheus:enabled: true
    

十四、总结与最佳实践

  1. 监控为先:实时 GC/内存/线程报警与可视化

  2. 日志为证:规范 GC 日志,定期归档分析

  3. 快照为王:关键时刻堆 & 线程快照 + 深度剖析

  4. 策略为纲:选对 GC:G1GC、ZGC、Shenandoah

  5. 代码为本:缓存 & 资源管理需严谨,弱引用 + 清理

  6. 持续优化:CI/CD + 运维闭环,确保线上健康 💪

通过对 JVM 内存模型的深入理解、系统化的诊断流程,以及工具链与参数的合理应用,开发者能够在复杂生产环境中快速定位瓶颈并实施有效优化,确保 Java 服务的高可用与高性能。🎉

相关文章:

JVM 调试与内存优化实战详解

&#x1f31f; JVM 调试与内存优化实战详解 &#x1f31f; 前言一、JVM 内存模型概览二、常见内存问题与诊断思路三、核心调试工具与命令详解四、实战案例一&#xff1a;频繁 Full GC 深度排查与优化1. &#x1f575;️ 问题现象2. &#x1f52c; 排查流程3. ✅ 优化方案 五、实…...

Linux上通过Docker部署Zabbix6.2监控平台

文章目录 前言Zabbix概述zabbix特性 一、Zabbix架构二、主节点部署容器2.1 部署Docker 三、主节点部署数据库3.1 创建存储卷3.2 查看存储卷3.3 删除存储卷3.4 运行容器MySQL8 四、主节点部署Zabbix4.1 安装zabbix-java-gateway4.2 运行zabbix-server4.3 安装zabbix-web 五、配置…...

Grok3 API 已经免费开放了,附上免费使用 Grok3 API的教程

Grok-3是什么 Grok-3 是 xAI&#xff08;由 Elon Musk 创立的 AI 公司&#xff09;开发的最新大语言模型&#xff08;LLM&#xff09;&#xff0c;属于 Grok 系列模型的第三代&#xff0c;旨在与 OpenAI 的 GPT-4、Anthropic 的 Claude 3 和 Google 的 Gemini 1.5 等顶尖 AI 竞…...

2025年4月9日-华为暑期实习-第三题-300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 矩阵螺旋排序 问题描述 卢小姐是一家艺术展览馆的策展人,她正在为一个数字艺术展览设计一个特殊的展示方案。展览厅的墙面是一个 N N N \times N...

【Web API系列】WebSocketStream API 深度实践:构建高吞吐量实时应用的流式通信方案

前言 在当今的 Web 开发领域&#xff0c;实时通信已成为许多应用的核心需求。无论是即时聊天、实时数据仪表盘&#xff0c;还是在线游戏和金融交易系统&#xff0c;都需要高效的双向数据传输能力。传统的 WebSocket API 为此提供了基础支持&#xff0c;但在处理大规模数据流、…...

WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网不回显

目录 1. RCE执行-5大类函数调用 1.1 Runtime方式 1.2 Groovy执行命令 1.3 脚本引擎代码注入 1.4 ProcessImpl 1.5 ProcessBuilder 2. JNDI注入(RCE)-RMI&LDAP&高版本 2.1 RMI服务中的JNDI注入场景 2.2 LDAP服务中的JNDI注入场景 攻击路径示例&#…...

在android实现Google的web登录

前言 由于业务上的需要,想要在android端实现Google登录。但是android的原生方法受到限制,实现起来比较麻烦。于是想到了一个曲线救国的方法,在android端使用Google的web登录。 实现逻辑 在andorid端拉起外部浏览器,用户登录Google账号,登录成功后,再将登录信息返回到a…...

opencv常用边缘检测算子示例

opencv常用边缘检测算子示例 1. Canny算子2. Sobel算子3. Scharr算子4. Laplacian算子5. 对比 1. Canny算子 从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术&#xff0c;检测算法可以分为以下5个步骤&#xff1a; 噪声过滤&#xff08;高斯滤波&…...

安装了VM Tools,仍无法复制拖动-解决方案

今天在安装ubuntu时遇到了困扰许久的问题&#xff0c;安装了VM Tools&#xff0c;仍无法拖动主机文件到虚拟机&#xff0c;主要有两种原因并对应解决办法。 1.相关虚拟机设置选项卡中-客户机隔离-两个功能没有勾选 解决方案&#xff1a;勾选重启虚拟机即可 2.&#xff08;这个…...

一文读懂WPF布局

WPF布局 布局WPF 布局的核心机制常用布局控件详解Grid&#xff08;网格布局&#xff09;StackPanel&#xff08;堆叠布局&#xff09;DockPanel&#xff08;停靠布局&#xff09;WrapPanel&#xff08;自动换行布局&#xff09;Canvas&#xff08;绝对定位布局&#xff09;Unif…...

【Docker基础-网络】--查阅笔记4

目录 Docker 网络网络类型none 网络host 网络bridge 网络自定义网络 容器间通信IP 通信Docker DNS Serverjoined 容器 容器与外部通信容器访问外部外部访问容器 Docker 网络 学习Docker提供的几种原生网络如何创建自定义网络容器间通信&#xff0c;容器于外界交互 Docker 安装…...

FacialExpressionDetection的conda虚拟环境搭建Window

安装conda的URL&#xff1a;Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 清华源下载conda版本&#xff0c;哪个最新用哪个&#xff0c;这里下载Anaconda3-5.3.1-Windows-x86_64.exe版本 安装conda虚拟环境 conda create --name py1…...

IPD推进中关键角色与岗位(七)LTDT确保技术开发的实用性与可靠性,满足市场需求

IPD 体系作为一种先进的研发管理模式&#xff0c;其核心在于打破传统职能部门的壁垒&#xff0c;通过跨部门团队的协同合作&#xff0c;实现产品开发的全流程优化。在 IPD 体系的架构中&#xff0c;存在着多个关键团队&#xff0c;它们各司其职又紧密配合&#xff0c;共同推动产…...

c++自学笔记——字符串与指针

字符串与指针 1. 字符串基础 字符串的定义&#xff1a;字符的序列&#xff0c;通常用来表示文本。 字符串字面量&#xff08;String Literal&#xff09;是在程序中直接用双引号括起来的文本序列。字符串字面量的类型是 const char*&#xff0c;即指向字符常量的指针。字符串…...

Jmeter分布式测试启动

代理客户端配置 打开jmeter.properties文件&#xff0c;取消注释并设置端口&#xff08;如server_port1099&#xff09;&#xff0c; 并添加server.rmi.ssl.disabletrue禁用SSL加密。 &#xff08;Linux系统&#xff09;修改jmeter-server文件中的RMI_HOST_DEF为代理机实际IP。…...

.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具

&#x1f409;工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 &#x1f3af;使用 本工具使用Python3 PyQt5开发&#xff0c;在开始使用前&#xff0c;请确保已经安装了相关模块&#xff1a; pip3 install -r requirements.txt -i ht…...

Coze+大模型智能体环境搭建

1 前言 Coze作为字节跳动推出的新一代AI Bot开发平台&#xff0c;为开发者提供了快速构建、部署智能对话代理的一站式解决方案。Coze平台通过提供可视化工作流编排、知识库集成、插件扩展等核心功能&#xff0c;结合一些大模型&#xff0c;例如豆包、deepseek、通义千问等大模型…...

计算机视觉与深度学习 | 视觉SLAM学习思路总结与视觉SLAM发展历程(1986年至2025年)

视觉SLAM(Simultaneous Localization and Mapping,同时定位与建图)是计算机视觉和机器人领域的重要研究方向,涉及数学、几何、优化、传感器融合等多学科知识。以下是学习视觉SLAM的系统化思路总结,适合从入门到进阶的学习路径:视觉SLAM学习思路总结 一、基础准备 数学基…...

Ansible(8)——循环与条件任务

目录 一、循环迭代任务&#xff1a; 1、简单循环&#xff1a; 2、循环字典列表&#xff1a; 3、Ansible 2.5 之前的循环关键字&#xff1a; 4、在循环中使用 register 变量&#xff1a; 二、条件任务&#xff1a; 1、使用条件句的常见场景&#xff1a; 2、条件任务语法…...

搭建Trae+Vue3的AI开发环境

从2024年2025年&#xff0c;不断的有各种AI工具会在自媒体中火起来&#xff0c;号称各种效率王炸&#xff0c;而在AI是否会替代打工人的话题中&#xff0c;程序员又首当其冲。 作为一个后端开发&#xff0c;这篇文章基于Trae工具&#xff0c;来创建和运行一个简单的Vue前端应用…...

【免费公测】可遇AI直播/无人直播/矩阵直播/AI场控

前言 经过了一个多月的内测打磨&#xff0c;实现了非常稳定的无人直播效果&#xff0c;AI直播语音及其真实&#xff0c;软件交互方便&#xff0c;可以快速的构建AI直播间。 免费公测&#xff0c;内置无限激活卡密一张&#xff0c;打开即用。 亮点 高仿真语音模型&#xff0c…...

大数据Hadoop(MapReduce)

MapReduce概述 MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上…...

使用apache-jmeter时,控制台打不开应用的解决方法

运行jmeter.bat的时候&#xff0c;提示&#xff1a; findstr 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 Not able to find Java executable or version. Please check your Java installation. errorlevel2这个错误信息表明系统无法识别 findstr 命令…...

leetcode 74. 搜索二维矩阵

class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m matrix.length;int n matrix[0].length;int l 0;int r n * m - 1; // 记得减一while (l < r) {int mid (l r) / 2;if(matrix[mid / n][mid % n] > target) {r mid - 1;} else if…...

函数式编程在 Java:Function、BiFunction、UnaryOperator 你真的会用?

大家好&#xff0c;我是你们的Java技术博主&#xff01;今天我们要深入探讨Java函数式编程中的几个核心接口&#xff1a;Function、BiFunction和UnaryOperator。很多同学虽然知道它们的存在&#xff0c;但真正用起来却总是不得要领。这篇文章将带你彻底掌握它们&#xff01;&am…...

SpringMVC基础一(SpringMVC运行原理)

先了解MVC&#xff0c;在JavaWeb基础五中。 回忆servlet&#xff0c;在javaweb基础二中。 创建一个web项目&#xff1a; 1、新建maven项目&#xff0c;导入依赖。&#xff08;junit、springmvc、spring-webmvc、servlet-api、jsp-api、jstl&#xff09; <groupId>org…...

libva之ffavdemo分析

ffavdemo 代码库实现了一个基于FFmpeg和VAAPI的硬件加速视频解码与渲染框架&#xff0c;主要用于演示视频解码与渲染的完整硬件加速流程。支持多种渲染后端&#xff08;X11、DRM、EGL&#xff09;&#xff0c;适应不同显示环境。包含视频处理过滤器&#xff0c;可进行格式转换和…...

从零开始写android 的智能指针

Android中定义了两种智能指针类型&#xff0c;一种是强指针sp&#xff08;strong pointer&#xff09;&#xff0c;源码中的位置在system/core/include/utils/StrongPointer.h。另外一种是弱指针&#xff08;weak pointer&#xff09;。其实称之为强引用和弱引用更合适一些。强…...

Spark-SQL 之 Window

window 函数实例 select concat(substr(p_dt,1,4),substr(p_dt,6,2)...

Python设计模式-单例模式

一、单例模式核心思想 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点。该模式主要解决以下问题&#xff1a; 资源控制&#xff08;如数据库连接池&#xff09;配置信息全局一…...

富文本编辑器的内容导出html,并保留图片

富文本编辑器的上传的图片默认转为base64&#xff0c;但是如果需要保存到数据库&#xff0c;base64的数据就太大了&#xff0c;所以一般都会长传到文件服务器&#xff0c;然会返回图片url。 但是当我们需要把富文本编辑器的内容导出为html时&#xff0c;因为图片时url,当浏览器…...

jQueryHTML与插件

1.jQuery 事件机制 1.1 注册事件 bind()、on()方法向被选元素添加一个或多个事件处理程序&#xff0c;以及当事件发生时运行的函数 $("p").on({"click": function () {alert("点击了")},"mouseenter": function () {…...

KTH5772 系列游戏手柄摇杆专用3D 霍尔位置传感器

产品概述 KTH5772是一款专为游戏手柄上的摇杆应用而设计的3D霍尔磁感应芯片&#xff0c;主要面向对线性度、回报率、灵敏度、功耗要求严格的摇杆应用。KTH5772基于3D霍尔技术&#xff0c;内部分别集成了X轴、Y轴和Z轴三个独立的霍尔元件&#xff0c;能够通过测量和处理磁通密度…...

C++进阶——C++11_右值引用和移动语义_可变参数模板_类的新功能

目录 1、右值引用和移动语义 1.1 左值和右值 1.2 左值引用和右值引用 1.3 引用延长生命周期 1.4 左值和右值的参数匹配 1.5 右值引用和移动语义的使用场景 1.5.1 左值引用主要使用场景 1.5.2 移动构造和移动赋值 1.5.3 右值引用和移动语义解决传值返回问题 1.5.4 右值…...

(五)深入了解AVFoundation-播放:多音轨、字幕、倍速播放与横竖屏切换

引言 在之前的博客中&#xff0c;我们已经实现了一个相对完整的播放器&#xff0c;具备了基本功能&#xff0c;如播放、暂停、播放进度显示和拖拽快进等。这为我们提供了一个坚实的基础。接下来&#xff0c;我们将进一步扩展播放器的功能&#xff0c;使其更具灵活性和实用性&a…...

matplotlib.pyplot常见图形及组合基础用法文档

matplotlib.pyplot 常见图形及组合基础用法文档 一、引言 matplotlib.pyplot 是 Python 中用于数据可视化的强大库&#xff0c;提供了丰富的绘图函数&#xff0c;可绘制折线图、散点图、柱状图等多种类型的图形。同时&#xff0c;还能将不同类型的图形组合在一起&#xff0c;…...

mysql的基础语句和外键查询及其语句

思路&#xff1a;双指针思路可以吗&#xff0c;我就直接找G,如果后一个是1就cnt&#xff0c;如果不是数字&#xff0c;用一个指针i指向G&#xff0c;另一个指针j移动&#xff0c;当不是G时停止&#xff0c;统计G的个数&#xff0c;如果是奇数个同时G的下一个是1&#xff0c;cnt…...

如何使用 DeepSeek 帮助自己的工作?

1. 信息检索 信息检索是获取特定信息的过程&#xff0c;尤其是在大量数据或文本中查找相关内容。这个过程应用广泛&#xff0c;从网页搜索引擎到数据库查询&#xff0c;再到企业内部信息系统。在使用 DeepSeek 或其它类似工具进行信息检索时&#xff0c;可以考虑以下几个重要方…...

为 Doub 打造吸引 CMO 的 SEO 报告

在数字营销中&#xff0c;SEO 报告不仅是展示工作成果的工具&#xff0c;更是向高层管理者&#xff08;如 CMO&#xff09;证明 SEO 价值的关键。对于 Doub 这样一家提供精密模切解决方案的网站&#xff08;基于 WordPress 和 WooCommerce&#xff09;&#xff0c;撰写一份吸引…...

数据可视化 —— 折线图应用(大全)

一、导入需要的库 # Matplotlib 是 Python 最常用的绘图库&#xff0c;pyplot 提供了类似 MATLAB 的绘图接口 import matplotlib.pyplot as plt import numpy as np import pandas as pd 二、常用的库函数 plt.plot(x轴,y轴)&#xff1a;plot()是画折线图的函数。 plt.xlabe…...

配置mac mini M4 的一些软件

最近更换了 mac mini M4 &#xff0c;想要重新下载配置软件 &#xff0c;记录一下。 Homebrew是什么&#xff1f; homebrew是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等功能。通过简单的指令可以实现包管理&#xff0c;而不用关心各种…...

八邻域轮廓跟踪算法_传感器技术

在科学技术日新月异的今天&#xff0c;人们对机器设备的智能性、自主性要求也越来越高&#xff0c;希望其完全替代人的角色&#xff0c;把人们从繁重、危险的工作任务中解脱出来&#xff0c;而能否像人一样具有感知周围环境的能力已成为设备实现智能化自主化的关键。 广义的“…...

python实战:如何正确安装 ffmpeg(window、linux、mac都通用)

直接使用 Conda 安装 FFmpeg,而无需手动下载或配置环境变量。Conda 会自动管理依赖项,并将 FFmpeg 添加到你的环境路径中。 方法 1:使用 Conda 安装 FFmpeg 在 Anaconda Prompt(或终端)中运行: conda install ffmpeg -c conda-forge-c conda-forge 表示从 conda-forge…...

网络机顶盒常见问题全解析:从安装到故障排除

WiFi连接问题 机顶盒无法连接WiFi&#xff0c;先检查路由器信号强度。若信号弱&#xff0c;可将机顶盒移近路由器&#xff0c;或调整路由器天线方向。也可重启机顶盒与路由器&#xff0c;若仍不行&#xff0c;进入机顶盒设置&#xff0c;重置网络设置。若支持5GHz频段&#xf…...

使用stm32cubeide stm32f407 lan8720a freertos lwip 实现tcp客户端、服务端及网络数据转串口数据过程详解

1前言 项目需要使用MCU实现网络功能&#xff0c;后续确定方案stm32f407 外接lan8720a实现硬件平台搭建&#xff0c;针对lan8720a也是用的比较多的phy&#xff0c;网上比较多的开发板&#xff0c;硬件上都是选用了这个phy&#xff0c;项目周期比较短&#xff0c;选用了这个常用…...

GAT-GRAPH ATTENTION NETWORKS(论文笔记)

CCF等级&#xff1a;A 发布时间&#xff1a;2018年 代码位置 25年4月21日交 目录 一、简介 二、原理 1.注意力系数 2.归一化 3.特征组合与非线性变换 4.多头注意力 4.1特征拼接操作 4.2平均池化操作 三、实验性能 四、结论和未来工作 一、简介 图注意力网络&…...

【蓝桥杯】贪心算法

1. 区间调度 1.1. 题目 给定个区间,每个区间由开始时间start和结束时间end表示。请选择最多的互不重叠的区间,返回可以选择的区间的最大数量。 输入格式: 第一行包含一个整数n,表示区间的数量 接下来n行,每行包含两个整数,分别表示区间的开始时间和结束时间 输出格式:…...

从一批视频里面抽取固定的第n帧图片(包含并行实现)

以下代码主要用于从 ./*.mp4 的文件夹中&#xff0c;每个视频中抽取第N帧保存成图&#xff0c;用于图生视频训练&#xff0c;考虑到数据量比较大&#xff0c;推荐使用ffmpeg来实现的&#xff0c;性能可以比较高&#xff08;10w个视频差不多十多分钟就可以跑完&#xff09;&…...

论文阅读:2024-arxiv How to Steer LLM Latents for Hallucination Detection?

总目录 大模型安全相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 How to Steer LLM Latents for Hallucination Detection? https://arxiv.org/pdf/2503.01917 https://www.doubao.com/chat/2818934852496130 其它资料&#xff1a; http…...

python面试技巧

文章目录 前言面试前面试中良好的沟通表达展示解决问题的能力体现学习能力和热情注意非语言沟通 面试后 前言 在 Python 面试中&#xff0c;掌握一些有效的技巧能让你更好地展现自己的能力和素质&#xff0c;以下是一些实用的面试技巧&#xff1a; 面试前 研究公司和岗位&…...