轻量级NVIDIA GPU监控方案:nvidia_gpu_exporter部署与实战

news2026/5/6 17:14:42
1. 项目概述一个为普罗米修斯打造的轻量级NVIDIA GPU监控方案如果你在玩AI大模型、挖矿或者是个追求极致帧率的硬核游戏玩家手头大概率有几块NVIDIA显卡在日夜不停地工作。这时候一个灵魂拷问就来了我的显卡到底在干嘛它的温度、功耗、显存占用、核心负载这些关键指标是不是在一个健康且高效的范围内运行对于运维和开发者来说在Kubernetes集群里调度GPU资源时如何精确知道哪台节点的哪张卡是空闲的传统的nvidia-smi命令虽然强大但它是瞬时的、孤立的无法提供历史趋势和集中视图。这就是nvidia_gpu_exporter出场的时候。它是一个用Go语言编写的、极其轻量的Prometheus Exporter核心工作就是定期执行nvidia-smi命令把那一大堆文本输出解析成普罗米修斯能够理解的、带时间序列的指标数据。它的设计哲学非常明确简单、通用、无依赖。不依赖复杂的NVIDIA管理库如DCGM不强制要求Docker或Linux环境只要你的系统能跑nvidia-smi或者nvidia-smi.exe它就能跑。这意味着无论是Windows上的游戏PC、Linux上的AI训练服务器还是Mac如果有N卡的话都可以被统一纳入监控体系。我最初接触它是因为需要监控几台用于Stable Diffusion推理和轻量级LLM微调的工作站。那些基于DCGM的解决方案对于这种小规模、混合操作系统的场景来说过于沉重而一些脚本方案又缺乏维护。nvidia_gpu_exporter正好填补了这个空白——一个静态编译的二进制文件下载下来配个参数就能跑起来通过9100端口暴露指标和你现有的PrometheusGrafana监控栈无缝集成。接下来我就结合自己的使用和踩坑经验带你从零开始把它用起来。2. 核心设计思路与方案选型解析2.1 为什么选择 nvidia_gpu_exporter 而不是其他方案在GPU监控领域选择不少但各有各的“坑”。nvidia_gpu_exporter的定位非常巧妙它解决的是特定场景下的痛点。2.1.1 与DCGM Exporter的对比NVIDIA官方推荐的方案是DCGMData Center GPU Manager和配套的Exporter。DCGM非常强大能提供数百种指标包括ECC错误、XID错误、NVLink带宽等深度信息是数据中心和大型AI集群的标配。但它的“重”也是显而易见的需要安装额外的驱动和库对系统版本有要求在Windows上支持有限而且资源消耗相对较大。如果你的场景是监控几台实验室的GPU服务器或者个人的游戏/创作主机DCGM就像用牛刀杀鸡配置复杂收益比不高。nvidia_gpu_exporter则反其道而行之它只依赖nvidia-smi这个每个有N卡的系统都自带的基础工具获取最核心的十几二十个指标温度、功耗、利用率、显存、时钟频率等对于绝大多数非企业级场景这些指标已经完全够用。2.1.2 与社区其他nvidia-smi导出器的对比GitHub上也能找到一些用Python或Shell脚本写的nvidia-smi导出器。它们通常更轻量但问题往往在于可维护性和健壮性。很多项目年久失修无法适配新版本nvidia-smi的输出格式变化或者没有预编译的二进制文件需要用户自己配置Python环境又或者解析逻辑简单遇到输出格式的微小差异就容易崩溃。nvidia_gpu_exporter用Go重写编译成单个静态二进制文件消除了运行时依赖。更重要的是它实现了指标的自动发现。它会解析nvidia-smi --help-query-gpu的输出动态确定当前驱动版本的nvidia-smi能提供哪些字段然后按需抓取。这个设计让它具备了很好的向前兼容性即使未来NVIDIA增加了新指标它也能自动识别无需修改代码。2.1.3 跨平台与远程监控能力这是它另一个亮眼的设计。由于它只是通过命令行调用nvidia-smi所以理论上任何能执行这个命令的环境都支持。项目明确提到了Windows游戏监控的场景——你不需要在打游戏的Windows主机上装Docker或者Linux子系统直接运行exe文件即可。更绝的是它支持远程执行模式。你可以在一台监控服务器上运行nvidia_gpu_exporter然后通过SSH等方式让它去远程执行另一台机器上的nvidia-smi命令并将结果收集回来。这对于监控那些不方便直接安装导出器、或者资源受限的设备比如某些嵌入式GPU设备非常有用。当然这需要配置密钥认证等SSH免密登录增加了些复杂度但提供了极大的灵活性。2.2 架构与工作流程剖析它的工作流程非常直观我们可以把它拆解成一个简单的数据处理管道定时触发内部一个定时器按照你配置的抓取间隔默认是1秒启动一次收集循环。命令执行通过操作系统接口执行nvidia-smi命令并带上特定的查询参数如--query-gpuindex,name,temperature.gpu,utilization.gpu,... --formatcsv,noheader,nounits使其输出格式规整的CSV数据。数据解析读取命令的标准输出按行和列解析CSV数据。每一行对应一块GPU每一列对应一个查询的指标字段。指标转换将解析出的字符串值如“80”、“50”、“150”转换为浮点数或整数并打上丰富的标签Label。标签是普罗米修斯指标的灵魂nvidia_gpu_exporter会为每个指标附加诸如gpu_idGPU索引、gpu_nameGPU型号、gpu_uuidGPU唯一标识等标签这样你就能在Grafana里轻松地按GPU筛选、分组。暴露端点将转换好的指标数据以普罗米修斯标准的文本格式通过HTTP端点默认是http://localhost:9100/metrics暴露出来。普罗米修斯抓取你的普罗米修斯服务器配置一个scrape_config任务定期比如15秒来访问这个端点拉取指标并存入其时序数据库。整个过程中nvidia_gpu_exporter本身是无状态的它不存储任何历史数据只提供当前时刻的快照。这种设计使得它非常轻量崩溃后重启也能立刻恢复工作。3. 详细部署与配置指南3.1 环境准备与二进制部署部署的第一步是获取可执行文件。对于绝大多数用户我推荐直接使用预编译的二进制文件这是最干净、依赖最少的方式。3.1.1 下载与验证前往项目的GitHub Release页面根据你的系统架构选择对应的文件。例如对于Linux x86_64系统# 下载最新版本的二进制文件 wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.0.0/nvidia_gpu_exporter-linux-amd64 # 赋予可执行权限 chmod x nvidia_gpu_exporter-linux-amd64 # 验证版本 ./nvidia_gpu_exporter-linux-amd64 --version对于Windows用户下载对应的.exe文件在PowerShell或CMD中直接运行即可。注意请务必从官方GitHub Release页面下载避免使用来源不明的二进制文件以防安全风险。下载后可以先用sha256sum或在线工具校验文件哈希是否与Release页面的校验和一致。3.1.2 直接运行与测试最简单的运行方式就是直接在前台启动这适合快速测试./nvidia_gpu_exporter-linux-amd64默认情况下它会监听0.0.0.0:9100。打开浏览器访问http://你的服务器IP:9100/metrics你应该能看到大量的nvidia_为前缀的指标例如nvidia_gpu_temperature_celsius、nvidia_gpu_power_draw_watts等。如果看到这些说明导出器工作正常并且成功连接到了你的NVIDIA驱动。3.1.3 以系统服务方式运行生产环境推荐对于长期监控我们需要将其配置为系统服务实现开机自启和故障恢复。Linux (Systemd):创建一个service文件例如/etc/systemd/system/nvidia-gpu-exporter.service。[Unit] DescriptionNVIDIA GPU Exporter for Prometheus Afternetwork.target [Service] Typesimple Usernobody # 为了安全建议使用非root用户。确保此用户有权限执行nvidia-smi。 Groupnogroup # 关键指定二进制文件的完整路径 ExecStart/usr/local/bin/nvidia_gpu_exporter-linux-amd64 # 可选添加运行参数如修改监听端口或抓取间隔 # ExecStart/usr/local/bin/nvidia_gpu_exporter-linux-amd64 --web.listen-address:19100 --collector.interval2s Restarton-failure RestartSec5s [Install] WantedBymulti-user.target然后执行sudo cp nvidia_gpu_exporter-linux-amd64 /usr/local/bin/ sudo systemctl daemon-reload sudo systemctl enable nvidia-gpu-exporter sudo systemctl start nvidia-gpu-exporter sudo systemctl status nvidia-gpu-exporter # 检查状态Windows (使用NSSM或配置为服务):使用NSSMNon-Sucking Service Manager这个工具可以很方便地将任何exe封装成Windows服务。下载NSSM解压。以管理员身份打开命令提示符进入NSSM目录。执行nssm install nvidia-gpu-exporter在弹出窗口中Path: 选择nvidia_gpu_exporter.exe的完整路径。Startup directory: 选择exe所在的目录。在Details页可以设置服务显示名称。点击Install service。之后就可以在“服务”管理器中启动和设置自动启动了。3.2 关键配置参数详解nvidia_gpu_exporter支持一些命令行参数来调整其行为通过--help可以查看全部。这里讲解几个最常用的--web.listen-address指定监听地址和端口。默认是:9100。如果9100端口已被占用例如被node_exporter使用可以改为:19100或其他端口。--collector.interval指定抓取nvidia-smi指标的间隔。默认是1s。注意这个间隔不宜设置过短尤其是GPU数量多的时候频繁执行nvidia-smi可能会带来轻微的系统负载。对于大多数监控场景2s或5s的间隔已经足够并且能减轻Prometheus服务端的存储压力。--nvidia-smi.command这是实现远程监控的关键参数。默认值是nvidia-smi意味着在本地执行。你可以将其设置为一个SSH命令例如--nvidia-smi.commandssh userremote-server nvidia-smi这样导出器会在本地执行这个SSH命令在远程服务器上运行nvidia-smi并将输出传回本地进行解析。使用此模式前必须配置好从监控主机到目标主机的SSH密钥免密登录。--web.telemetry-path指定暴露指标的HTTP路径默认是/metrics。通常不需要修改。配置示例如果你想要在端口19100上运行每2秒收集一次指标命令可以这样写./nvidia_gpu_exporter-linux-amd64 --web.listen-address:19100 --collector.interval2s3.3 集成到Prometheus与Grafana导出器本身只是数据生产者我们需要配置Prometheus来消费数据并用Grafana进行展示。3.3.1 配置Prometheus抓取编辑你的prometheus.yml配置文件在scrape_configs部分添加一个新的任务scrape_configs: - job_name: nvidia-gpu static_configs: - targets: [your-gpu-host-ip:9100] # 如果修改了端口这里也要改 labels: group: ai-training-nodes # 可以自定义标签方便管理 # 建议适当调整抓取频率与导出器的收集间隔匹配或稍慢 scrape_interval: 5s重启Prometheus服务后在Prometheus的Web UI默认9090端口的“Status - Targets”页面应该能看到这个新任务的状态是“UP”。3.3.2 导入Grafana仪表盘这是最能体现监控价值的步骤。项目作者提供了一个开箱即用的Grafana仪表盘ID是14574。登录你的Grafana。点击左侧导航栏的“Dashboards” - “Import”。在“Import via grafana.com”框中输入14574然后点击Load。选择你的Prometheus数据源然后点击“Import”。导入后你就能看到一个专业的GPU监控面板里面包含了GPU利用率、温度、功耗、显存使用、时钟频率、风扇转速等关键指标的可视化图表并且按照不同的GPU进行了分面展示。这个面板是预设好的通常无需修改就能直接使用极大地节省了配置时间。4. 核心指标解读与监控场景实践4.1 关键指标深度解析nvidia_gpu_exporter暴露的指标很多但核心的可以归纳为以下几类。理解每个指标的含义和健康范围是有效监控的前提。利用率类nvidia_gpu_utilization_percentGPU核心的计算单元利用率。对于AI训练LLM训练、Stable Diffusion和挖矿这个值通常会持续在70%-100%。对于游戏它会随着场景复杂度波动。长期处于100%是正常的但需结合温度监控。nvidia_gpu_memory_utilization_percent显存利用率。显存被模型、纹理、数据占用的大小百分比。对于大模型推理显存占用可能很高对于挖矿如Ethash显存占用也接近满额。需要警惕的是显存占用满但GPU利用率低可能意味着存在瓶颈如CPU或IO。温度与功耗类nvidia_gpu_temperature_celsiusGPU核心温度。这是最重要的健康指标之一。NVIDIA显卡的TJMax最高结温通常在95°C-105°C左右。长期运行建议保持在80°C以下超过85°C就需要关注散热超过90°C应考虑降频或加强散热。笔记本显卡的温度墙通常更低。nvidia_gpu_power_draw_watts当前实际功耗。nvidia_gpu_power_limit_wattsGPU的功耗墙限制。实际功耗不会超过此值。通过观察(power_draw / power_limit)可以了解功耗负载情况。nvidia_gpu_fan_speed_percent风扇转速百分比。可以据此判断散热系统是否在积极工作。显存类nvidia_gpu_memory_total_bytes显存总容量。nvidia_gpu_memory_used_bytes已使用显存。nvidia_gpu_memory_free_bytes空闲显存。监控used_bytes的趋势可以预测何时会因显存不足OOM导致任务失败。时钟频率类nvidia_gpu_clock_graphics_mhz图形时钟频率核心频率。nvidia_gpu_clock_memory_mhz显存时钟频率。 在负载下这些频率会动态提升Boost。如果发现频率远低于标称Boost频率可能是遇到了温度墙或功耗墙导致降频。信息类标签指标附带的gpu_name、gpu_uuid等标签对于在多GPU环境中区分和定位问题至关重要。4.2 典型监控场景与告警规则配置知道指标含义后我们可以针对不同场景设置监控和告警。场景一AI训练/推理服务器监控关注点长期高负载下的稳定性、散热、显存泄漏。关键告警规则Prometheus Alertmanager配置示例groups: - name: gpu_alerts rules: - alert: GPUTemperatureTooHigh expr: nvidia_gpu_temperature_celsius 85 for: 5m # 持续5分钟超过85度才告警避免瞬时波动 labels: severity: warning annotations: summary: GPU温度过高 (实例 {{ $labels.instance }}) description: GPU {{ $labels.gpu_name }} (ID:{{ $labels.gpu_id }}) 温度已达 {{ $value }}°C。 - alert: GPUOutOfMemory expr: (nvidia_gpu_memory_used_bytes / nvidia_gpu_memory_total_bytes) * 100 95 for: 2m labels: severity: critical # 显存快满了可能导致训练失败设为严重 annotations: summary: GPU显存即将用尽 (实例 {{ $labels.instance }}) description: GPU {{ $labels.gpu_name }} 显存使用率 {{ $value | humanizePercentage }}。 - alert: GPUUtilizationAbnormal # 当显存使用高但GPU利用率很低时可能程序卡住或出现瓶颈 expr: (nvidia_gpu_memory_utilization_percent 80) and (nvidia_gpu_utilization_percent 10) for: 10m labels: severity: warning annotations: summary: GPU可能闲置或卡住 (实例 {{ $labels.instance }}) description: GPU {{ $labels.gpu_name }} 显存占用高({{ $labels.gpu_memory_utilization_percent }}%)但利用率低({{ $labels.gpu_utilization_percent }}%)。场景二游戏PC监控关注点游戏时的瞬时温度、频率是否达到预期、风扇噪音。实践可能不需要长期告警但在Grafana面板上观察游戏时的实时曲线很有意义。可以关注游戏加载时显存占用陡增、复杂场景渲染时核心利用率、温度、功耗达到峰值的各项指标变化。如果发现游戏时核心频率一直上不去温度却很高可能是机箱风道或散热器有问题。场景三加密货币挖矿监控关注点算力稳定性、功耗效率每瓦算力、设备长期运行的可靠性。关键指标除了温度、功耗还可以通过其他工具获取算力Hashrate指标并与GPU状态关联分析。例如当温度告警触发时可以检查同一时间点的算力是否有下降从而判断过热是否导致了性能损失。5. 高级用法、故障排查与性能调优5.1 远程监控与多节点部署对于拥有多台GPU主机如一个小型AI实验室或矿场的情况在每台机器上部署导出器是标准做法。Prometheus可以轻松地从多个targets抓取数据。5.1.1 使用服务发现简化管理如果机器数量多或动态变化建议使用Prometheus的服务发现功能而不是静态配置。例如使用file_sd_configs创建一个JSON文件如/etc/prometheus/gpu_nodes.json列出所有目标[ { targets: [ node01:9100 ], labels: { role: training, rack: rack-a } }, { targets: [ node02:9100, node03:9100 ], labels: { role: inference, rack: rack-b } } ]在prometheus.yml中配置scrape_configs: - job_name: nvidia-gpu-cluster file_sd_configs: - files: - /etc/prometheus/gpu_nodes.json scrape_interval: 5s更新节点列表时只需修改这个JSON文件Prometheus会自动重载配置。5.1.2 远程执行模式的注意事项前文提到的--nvidia-smi.commandSSH模式适用于无法安装导出器的特殊情况。但要注意安全确保使用密钥对认证并限制SSH用户权限最好能限制其只能执行nvidia-smi命令。性能与可靠性网络延迟和SSH连接开销会增加抓取时间。如果远程命令执行超时会导致本次抓取失败。务必确保网络稳定并适当调整Prometheus的scrape_timeout。资源在监控服务器上需要为每个远程连接维护一个SSH进程。监控大量主机时这可能成为负担。因此优先推荐每台主机本地部署导出器远程模式作为备用方案。5.2 常见问题与故障排查即使部署简单在实际运行中也可能遇到一些问题。这里记录几个我踩过的坑和解决方法。问题1导出器启动失败报错“exec: “nvidia-smi”: executable file not found in $PATH”原因系统找不到nvidia-smi命令。通常是因为NVIDIA驱动未正确安装或者nvidia-smi不在服务运行用户如nobody的PATH环境变量中。排查切换到运行导出器的用户如sudo -u nobody -s尝试直接执行nvidia-smi看是否报错。如果提示命令找不到使用which nvidia-smi找到完整路径通常是/usr/bin/nvidia-smi。解决方案A推荐在Systemd service文件的ExecStart命令中使用nvidia-smi的绝对路径。但nvidia_gpu_exporter调用的是nvidia-smi这个命令名无法直接修改。此时可以创建一个包装脚本或者更简单的方法是在service文件中使用Environment指令设置PATH[Service] ... EnvironmentPATH/usr/local/bin:/usr/bin:/bin:/usr/local/nvidia/bin # 将nvidia-smi所在目录加入PATH ExecStart/usr/local/bin/nvidia_gpu_exporter-linux-amd64 ...方案B创建一个指向nvidia-smi的软链接到/usr/local/bin/等通用目录。问题2Prometheus抓取目标显示“DOWN”原因网络不通、防火墙阻止、导出器进程挂掉、端口监听错误。排查在运行导出器的主机上执行curl http://localhost:9100/metrics看是否能返回指标数据。如果本地可以在Prometheus服务器上尝试telnet GPU主机IP 9100检查网络连通性。检查主机防火墙如firewalld、ufw是否放行了9100端口。检查导出器日志journalctl -u nvidia-gpu-exporter -f。问题3Grafana面板显示“No Data”原因数据源配置错误、查询的指标名称或标签不对、时间范围选择不当。排查确认Grafana中连接的数据源DataSource是否正确指向了你的Prometheus服务器并且测试连接是成功的。在Grafana中进入“Explore”页面选择正确的数据源输入一个简单的查询如nvidia_gpu_temperature_celsius看是否有数据返回。如果没有回到上一步检查Prometheus。如果Explore有数据但仪表盘没有可能是仪表盘的查询语句包含了你的环境不存在的标签如特定的job_name。需要根据你的Prometheus配置编辑仪表盘面板修改查询中的job标签值。问题4指标更新延迟或丢失原因导出器收集间隔(--collector.interval)、Prometheus抓取间隔(scrape_interval)设置不合理或者系统负载过高导致命令执行超时。解决确保Prometheus的scrape_interval大于或等于导出器的collector.interval。例如导出器每2秒收集一次Prometheus每5秒抓取一次这是合理的。如果导出器1秒收集一次Prometheus15秒抓取一次你会丢失中间的数据点。避免将collector.interval设置得过小如小于1秒这会给系统带来不必要的开销。对于监控1-5秒的精度完全足够。在GPU数量非常多比如超过8卡的服务器上执行一次nvidia-smi可能需要几十到上百毫秒。如果发现超时可以适当增加导出器命令执行的超时时间虽然项目本身未暴露此参数但若用远程SSH模式需考虑SSH超时。5.3 性能考量与资源优化nvidia_gpu_exporter本身非常轻量一个进程通常只占用几MB到十几MB内存CPU消耗几乎可以忽略不计。主要的性能开销在于频繁执行nvidia-smi命令。对GPU驱动的影响nvidia-smi是一个查询工具其本身对GPU性能的影响微乎其微。但在极端情况下比如每100毫秒查询一次可能会对系统造成轻微干扰。遵循默认的1秒或更长的间隔是安全的。对Prometheus的影响每个GPU每个指标每个抓取周期都会产生一个时间序列数据点。如果你有4块GPU监控20个指标每5秒抓取一次那么每分钟就会产生4 GPU * 20 metrics * (60s / 5s) 960个数据点。这对于Prometheus来说是小菜一碟。但如果你监控成百上千块GPU就需要规划Prometheus的存储和内存了。优化建议在Grafana中对于历史趋势图可以使用Prometheus的查询函数如avg_over_time,max_over_time对原始高精度数据进行降采样既能看清趋势又能减少渲染压力。例如avg_over_time(nvidia_gpu_temperature_celsius[5m])会显示过去5分钟的平均温度曲线。6. 总结与延伸思考经过从部署、配置到监控、告警的一整套实践nvidia_gpu_exporter展现出了它在简单性、通用性和实用性上的强大优势。它完美地满足了非数据中心场景下对NVIDIA GPU监控的“够用、好用、易用”的需求。无论是个人开发者调试AI模型还是游戏玩家想了解显卡在游戏中的真实状态或是小团队管理几台GPU服务器它都是一个近乎完美的选择。我个人在长时间使用中最大的体会是监控的价值不在于收集海量数据而在于建立有效的观察视角和预警机制。nvidia_gpu_exporter提供了准确的基础数据而真正的功夫在于如何利用Grafana构建一目了然的面板以及如何在Prometheus中定义那些能真正反映业务健康度的告警规则。例如仅仅监控温度上限是不够的结合功耗和利用率你可能会发现显卡因为散热不佳已经开始降频进而影响了训练速度或游戏帧率这种关联性分析才是深度监控的意义。最后虽然项目作者目前维护时间有限但工具的稳定性和完成度已经很高。对于遇到问题或想要新功能的用户除了在GitHub提交Issue外也可以考虑阅读其简洁的Go代码尝试自己修复或扩展。它的代码结构清晰是学习如何编写一个实用型Prometheus Exporter的好例子。毕竟在开源的世界里有时候“拿来即用”而有时候“用而理解进而改进”才是更深的乐趣所在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2588865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

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

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…