Prometheus外置抓取器:扩展监控能力与复杂场景适配方案

news2026/5/16 18:05:02
1. 项目概述一个为Prometheus量身定制的“数据抓取器”如果你正在使用Prometheus监控你的微服务、Kubernetes集群或者任何需要被度量的系统那你一定对scrape_configs这个配置项不陌生。Prometheus的核心工作模式就是“拉取”Pull它需要周期性地访问一个个配置好的目标端点Target去抓取暴露出来的指标数据。这个抓取过程我们通常称之为“Scraping”。然而当你的监控目标变得动态、复杂特别是当它们运行在云原生环境中时静态配置的scrape_configs就显得力不从心了。你需要服务发现Service Discovery来动态发现目标但即便如此Prometheus原生支持的发现机制如Kubernetes、Consul、DNS等有时也无法覆盖所有场景或者配置起来不够灵活。这就是lba0zi/claw-prometheus这个项目诞生的背景。你可以把它理解为一个高度定制化的、外置的“Prometheus抓取代理”或“抓取适配器”。它的核心功能就是作为一个独立的服务运行按照你定义的规则去主动发现并抓取那些Prometheus原生机制难以触及的监控目标然后将抓取到的指标数据以一种Prometheus能够直接“消费”的格式通常是/metrics端点暴露出来。这样一来Prometheus只需要配置一个静态的抓取任务指向claw-prometheus服务的/metrics端点就能间接获取到所有由claw-prometheus汇总的指标极大地扩展了Prometheus的抓取能力边界。我最初接触到这类需求是在一个混合云环境中。我们需要监控一批部署在传统IDC物理机上的老旧服务这些服务没有标准的服务发现IP地址分散甚至有些服务的指标端点还需要经过一层认证代理才能访问。用Prometheus直接去配得写几十行复杂的relabel_configs而且一旦有变动就得全局更新配置非常麻烦。claw-prometheus这类工具的思路就是把复杂的、定制化的抓取逻辑从Prometheus主配置中剥离出来用一个专门的服务去处理让Prometheus回归其“标准抓取器”的简单角色。2. 核心架构与设计思路拆解2.1 为什么需要“外置抓取器”Prometheus的设计哲学是简单和可靠它的抓取引擎非常高效但对于抓取逻辑的定制化能力是有所保留的。所有抓取行为都通过配置文件定义虽然支持重标签Relabeling进行强大的数据改写但其执行时机和上下文仍局限于单次抓取的生命周期内。当遇到以下场景时原生能力就可能遇到瓶颈目标发现逻辑极其复杂目标的发现需要查询多个外部API进行数据聚合、过滤和转换。例如需要同时从CMDB、运维平台和云厂商控制台获取信息才能拼凑出一个完整的监控目标列表。抓取过程需要定制化预处理在抓取指标之前需要先调用某个接口获取动态的认证令牌Token并将这个令牌作为抓取请求的Header。或者需要对目标地址进行动态端口探测只抓取存活端口的指标。指标源格式非标准目标暴露的数据不是标准的Prometheus文本格式可能是JSON、XML甚至是自定义的二进制格式。需要先抓取原始数据进行解析和转换再生成Prometheus格式的指标。对抓取行为有高级调度需求需要对不同目标设置不同的抓取频率或者实现依赖抓取例如必须等A服务的指标抓取成功后才能去抓取依赖A服务的B服务的指标。在这些场景下强行用Prometheus配置实现要么不可能要么会导致配置文件臃肿不堪、难以维护。claw-prometheus的架构选择是将这部分“脏活累活”外包。它自身作为一个独立进程可以用任何编程语言从项目名看很可能是Go实现复杂的发现、预处理和抓取逻辑最后只暴露出一个干净的、标准的Prometheus端点。2.2 项目核心组件猜想虽然我没有看到lba0zi/claw-prometheus的具体源码但根据其项目名和要解决的问题域我们可以推断出其核心组件通常包含以下几部分配置管理模块用于加载和管理抓取任务的定义。配置可能采用YAML或JSON格式定义的内容包括目标发现源如静态列表、脚本、API URL、抓取间隔、HTTP请求参数超时、TLS、认证头、指标解析规则正则表达式、JSON路径等和后处理规则指标重命名、标签添加。目标发现引擎这是项目的“大脑”。它周期性地执行配置中定义的发现逻辑生成一个当前活跃的“目标列表”。这个引擎可能支持多种发现模式静态文件从本地或远程文件读取目标列表。可执行脚本执行一个脚本或二进制文件其标准输出符合特定的目标格式。HTTP API查询调用外部RESTful API将返回的JSON/XML数据映射为目标列表。数据库查询从MySQL、PostgreSQL等数据库中查询出需要监控的主机或服务。抓取执行器这是项目的“双手”。它根据发现引擎提供的目标列表并发地执行HTTP或其它协议抓取。它需要处理网络超时、重试、认证Basic Auth, Bearer Token, OAuth2等、TLS证书验证等细节。抓取到的原始响应会被传递给下一个模块。指标解析与转换器这是项目的“翻译官”。如果目标暴露的是标准Prometheus格式这部分可能只是简单的透传。但更常见的是它需要将非标准数据如JSON API返回的业务指标解析出来并按照规则转换成metric_name{label_namelabel_value, ...} metric_value的格式。这里可能会内置一个类似Prometheustextparse的解析器但也可能支持更灵活的模板化转换比如Go的text/template。指标暴露端点这是项目对外的“窗口”。它将所有抓取任务得到的指标聚合起来在内存中维护一个最新的指标快照并在一个HTTP端点如:8080/metrics上暴露出来。这个端点的响应必须完全符合Prometheus文本格式规范以便Prometheus Server来抓取。服务发现与健康检查为了让Prometheus能自动发现claw-prometheus实例本身它可能还会集成或暴露一些辅助功能比如提供一个/targets端点来展示当前所有已发现的目标及其状态或者兼容Prometheus的服务发现协议虽然不常见。注意这种架构的一个关键决策点是指标缓存与时效性。claw-prometheus自身有抓取周期它暴露的指标是其最近一次成功抓取的结果。这意味着从数据产生到被最终用户看到的延迟是claw-prometheus抓取间隔与Prometheus抓取claw-prometheus间隔之和。在设计抓取频率时需要权衡对实时性的要求和对后端系统的压力。2.3 与类似方案的对比在云原生生态中解决类似问题的方案不止一种。理解claw-prometheus的定位有助于我们在实际中做出正确选择。Prometheus Operator AdditionalScrapeConfigs在Kubernetes中Prometheus Operator是主流部署方式。对于特殊的抓取需求我们可以通过AdditionalScrapeConfigs在Prometheus配置中嵌入自定义的scrape_configs。这适用于配置不太复杂、且能用Prometheus原生语法描述的场景。claw-prometheus更适合于Operator模式也无法处理的、逻辑在Kubernetes之外的复杂抓取。Prometheus Blackbox/SNMP Exporter模式这是官方推荐的“中间代理”模式。例如Blackbox Exporter用于探测HTTP、TCP、ICMP等它本身暴露一个Probe APIPrometheus通过传递参数targetxxx来触发一次探测并返回结果。claw-prometheus更像是这些Exporter的“通用集成版”。Blackbox Exporter专注于探测逻辑而claw-prometheus更专注于“目标的动态发现与抓取流程的编排”。自定义Exporter 服务发现为每一个需要监控的第三方系统编写一个独立的Exporter如MySQL Exporter, Redis Exporter然后通过服务发现让Prometheus去抓它们。这是最标准、最云原生的做法。claw-prometheus的适用场景是你不愿意或无法为每一个小众系统都维护一个Exporter或者你的抓取逻辑横跨了多个系统需要先聚合一些元数据。Vector, Telegraf等Agent这些是更通用的数据收集器它们可以从无数来源拉取或接收数据并输出到无数目的地包括Prometheus。它们功能强大但架构更重复杂度更高。claw-prometheus的定位应该更聚焦、更轻量只解决“为Prometheus准备数据”这一个问题。选择claw-prometheus的时机当你需要监控的目标群体无法被Prometheus原生服务发现机制覆盖且抓取逻辑包含动态认证、复杂数据转换等预处理步骤同时你又希望保持Prometheus配置的简洁性时它就是非常合适的候选方案。3. 核心配置与使用模式解析3.1 典型配置结构猜想一个假设的claw-prometheus的配置文件可能长这样# config.yaml global: scrape_interval: 60s # 全局默认抓取间隔 external_labels: # 为所有指标添加的静态标签 region: cn-east-1 collector: claw-prometheus scrape_configs: - job_name: legacy-apps-from-cmdb # 1. 目标发现从CMDB API动态获取 target_discovery: type: http http_config: url: http://internal-cmdb-api:8080/v1/hosts?statusactiveenvprod refresh_interval: 300s # 每5分钟刷新一次目标列表 authorization: type: bearer credentials_file: /etc/claw/cmdb-token # 将API返回的JSON数组映射为目标 json_path: $.data[*] target_template: {{.ip}}:{{.metrics_port}} # 使用模板生成 target 地址 label_map: # 将JSON字段映射为目标的初始标签 host_id: {{.id}} app_name: {{.app}} owner: {{.team}} # 2. 抓取配置 scrape_config: scheme: http path: /internal/metrics # 目标指标路径 params: format: [prometheus] timeout: 10s # 动态请求头从发现阶段获取的元数据中提取 headers: X-Auth-Token: {{.custom_token}} # 这个token可能来自发现API的另一个字段 tls_config: insecure_skip_verify: true # 仅用于内部测试环境 # 3. 指标处理 metric_relabel_configs: - source_labels: [__name__] regex: (.*)_total replacement: ${1}_per_minute action: replace - source_labels: [app_name] regex: myapp target_label: critical_service replacement: true - job_name: business-metrics-from-custom-api target_discovery: type: script script: /opt/scripts/discover_business_services.sh refresh_interval: 120s scrape_config: scheme: https path: /api/v1/business_metrics headers: Content-Type: application/json body: {action: get_metrics} # 支持POST请求带Body # 这个API返回JSON需要解析转换 metric_transform: type: json json_path_mappings: - metric_name: user_active_count json_path: $.data.active_users labels: platform: $.data.platform - metric_name: order_rate json_path: $.data.orders_per_second help: Current order processing rate这个配置定义了两个抓取任务Job。第一个任务从内部CMDB API发现目标并为每个目标添加了来自CMDB的标签抓取时还使用了动态的认证Token。第二个任务通过执行一个Shell脚本来发现目标并抓取一个需要POST Body的JSON API然后通过metric_transform将JSON字段映射为Prometheus指标。3.2 部署与运行模式claw-prometheus通常以一个独立的守护进程或容器形式运行。二进制部署下载编译好的二进制文件编写配置文件然后通过systemd或supervisor管理进程。./claw-prometheus --config.file/etc/claw-prometheus/config.yaml --web.listen-address:8080容器化部署推荐这是更云原生的方式。项目应提供Dockerfile或直接发布镜像到Docker Hub。# docker-compose.yml 示例 version: 3 services: claw-prometheus: image: lba0zi/claw-prometheus:latest container_name: claw-prometheus volumes: - ./config:/etc/claw-prometheus - ./secrets:/etc/claw-secrets # 挂载认证文件等敏感信息 ports: - 8080:8080 command: - --config.file/etc/claw-prometheus/config.yaml - --web.listen-address:8080 restart: unless-stopped在Kubernetes中可以将其部署为一个Deployment并通过ConfigMap管理配置文件通过Secret管理凭证。与Prometheus集成部署好claw-prometheus并确认其/metrics端点可以访问后在Prometheus的配置中添加一个简单的静态抓取任务即可。# prometheus.yml scrape_configs: - job_name: claw-prometheus static_configs: - targets: [claw-prometheus-service:8080] # 指向claw-prometheus的服务地址 # 可以添加一些标签用于区分来自不同claw实例的指标 relabel_configs: - source_labels: [__address__] target_label: claw_instance3.3 监控与自省一个设计良好的claw-prometheus实例其自身也应该暴露丰富的指标用于监控其健康状态和工作性能。这些指标可能包括claw_discovered_targets当前每个抓取任务发现的目标数量。claw_scrape_duration_seconds每次抓取的耗时。claw_scrapes_total抓取总次数按结果成功/失败分类。claw_target_scrape_duration_seconds对每个具体目标的抓取耗时。claw_target_up目标是否可达up1, down0。claw_config_last_reload_success_timestamp_seconds配置文件最后一次成功重载的时间戳。claw_process_*标准进程指标CPU内存打开文件数等。通过监控这些指标我们可以及时发现目标发现失败、抓取超时或错误率上升等问题。例如可以设置告警规则claw_target_up 0持续5分钟或者claw_scrape_duration_seconds的99分位数超过10秒。4. 实战构建一个监控传统IDC服务器的抓取链路假设我们有一个经典场景监控一个机房里的50台物理服务器这些服务器运行着老旧的监控代理暴露指标的端口不统一有的是9090有的是9100并且需要通过一个跳板机Bastion Host的SSH隧道才能访问。4.1 传统方案的痛点端口不统一在Prometheus中需要为每台服务器或每类端口写一个static_config或者用复杂的relabel_configs来重写端口。网络隔离Prometheus Server在云上无法直接访问IDC内网。传统做法是在IDC内部部署一个Prometheus实例再用Federation或Remote Write将数据聚合到中心Prometheus架构复杂。动态性差服务器上下线需要手动更新Prometheus配置。4.2 使用Claw-Prometheus的方案设计我们的思路是在IDC内部网络部署一个claw-prometheus实例让它负责所有内部服务器的抓取然后通过一个安全的出口如专线或VPN注此处仅为示例网络架构实际部署需严格遵守公司安全规定使用经批准的内部网络通道让云上的中心Prometheus只抓取这个claw-prometheus实例。步骤1目标发现我们在IDC内部维护一个简单的CMDB API或一个数据库记录所有服务器的信息IP 主机名 指标端口 所属业务等。claw-prometheus配置一个HTTP发现任务定期如每5分钟查询这个API获取最新的服务器列表。步骤2抓取执行claw-prometheus部署在IDC内网可以直接访问所有服务器的指标端口。配置中只需使用从API获取的IP:Port作为target。步骤3指标暴露与聚合claw-prometheus将抓取到的所有服务器的指标聚合在:8080/metrics端点暴露。步骤4中心化采集云上的中心Prometheus配置一个静态任务指向claw-prometheus实例的内网穿透后的公网地址或专线地址。这样中心Prometheus只需要管理一个抓取目标就获得了所有50台服务器的指标。配置示例片段# IDC内部 claw-prometheus 配置 scrape_configs: - job_name: idc-physical-servers target_discovery: type: http http_config: url: http://internal-cmdb:8000/api/servers?monitoringenabled refresh_interval: 300s json_path: $.servers[*] target_template: {{.management_ip}}:{{.metric_port}} label_map: dc: idc-1 rack: {{.rack_location}} asset_id: {{.id}} scrape_config: scheme: http path: /metrics timeout: 15s # 内网可以稍长4.3 高级技巧处理认证与跳板机如果目标服务器需要Basic认证可以在scrape_config中配置basic_auth。如果需要通过跳板机claw-prometheus本身可能不直接支持SSH隧道。这时有两种方案在发现阶段做文章写一个发现脚本target_discovery.type: script这个脚本通过SSH连接到跳板机执行命令获取内网服务器列表和状态并输出为claw-prometheus能识别的格式如JSON Lines。claw-prometheus执行这个脚本获取目标列表。但抓取流量仍然需要网络可达。网络层解决更常见的做法是在网络层面打通例如在跳板机上为每台内网服务器设置一个本地端口转发Local Port Forwarding将localhost:portX映射到内网服务器A:metric_port。然后claw-prometheus的发现脚本返回的目标地址就是localhost:portX。这样所有抓取流量都通过SSH隧道进行。实操心得在涉及网络跳转的场景中稳定性是首要考虑因素。SSH隧道可能超时断开需要配合autossh或类似的保活工具。同时要仔细评估单点故障风险——这个claw-prometheus实例及其依赖的跳板机或发现API成为了整个监控链路的关键节点。务必为其配置高可用和完备的自身监控。5. 常见问题、排查技巧与性能优化5.1 抓取失败问题排查当中心Prometheus看到来自claw-prometheus的指标缺失或up状态为0时排查链路如下检查claw-prometheus自身状态首先访问claw-prometheus的/metrics端点看它是否在正常暴露指标。同时查看其自带的监控指标如claw_target_up和claw_scrapes_total。检查目标发现如果claw-prometheus提供了/targets或类似的调试端点查看它当前发现的目标列表是否正确。检查目标发现源的日志如CMDB API的访问日志、执行脚本的输出。检查抓取日志claw-prometheus应该提供详细日志记录每次抓取的请求和响应摘要。查看是否有HTTP 4xx/5xx错误、连接超时或证书错误。日志级别通常可以调整。手动测试抓取从claw-prometheus所在网络环境用curl或wget命令模拟其抓取请求包括相同的URL、Header、Body等直接访问一个失败的目标看问题出在何处。检查指标转换如果抓取成功但指标格式不对检查metric_transform或解析规则是否正确。可以临时将抓取到的原始响应体打印到日志中对比查看。排查表现象可能原因排查步骤中心Prometheus抓取claw-prometheus失败网络不通claw-prometheus进程挂掉1.ping/telnet检查网络。2. 登录主机检查进程状态和日志。3. 检查防火墙/安全组规则。claw-prometheus的/metrics端点为空或只有自身指标所有抓取任务都失败了1. 检查claw-prometheus日志中的抓取错误。2. 检查目标发现配置确认是否发现了目标。3. 检查抓取配置如路径、认证。部分目标指标缺失特定目标抓取失败1. 在claw-prometheus的调试端点或日志中过滤该目标。2. 手动curl该目标地址验证可达性和响应格式。3. 检查该目标是否被metric_relabel_configs误丢弃。指标名称或标签不符合预期指标解析或重标签规则有误1. 查看claw-prometheus抓取到的原始响应开启调试日志。2. 逐步检查metric_transform和metric_relabel_configs规则。3. 使用Prometheus的relabel_config调试功能如果规则在Prometheus端。5.2 性能优化要点当监控目标数量很大成千上万时claw-prometheus可能成为瓶颈。并发控制检查配置中是否有scrape_concurrency或类似参数限制同时抓取的目标数避免瞬时大量并发请求打垮目标或耗尽自身资源。抓取间隔合理化不是所有目标都需要相同的抓取频率。可以为不同的job设置不同的scrape_interval。对于变化不频繁的业务指标可以适当拉长间隔。发现间隔优化目标发现如查询API也可能很耗时。确保refresh_interval设置合理避免过于频繁地查询外部系统。内存与GCclaw-prometheus需要在内存中缓存所有抓取到的指标直到下一次抓取更新。目标多、指标基数Cardinality大时内存消耗会增长。监控其进程内存并考虑对高基数指标进行裁剪或聚合在claw-prometheus端或Prometheus端。分片Sharding如果单个实例无法承受负载可以考虑运行多个claw-prometheus实例每个实例负责一部分目标的抓取例如按业务线或数据中心分片。然后由中心Prometheus抓取所有这些实例。5.3 配置管理与版本控制claw-prometheus的配置文件是核心资产必须纳入版本控制如Git。任何变更都应通过CI/CD流程进行包括语法检查、测试环境部署验证最后再滚动更新到生产环境。可以考虑以下模式配置分离将大型配置拆分为多个文件主配置文件通过include或类似方式引用。例如将不同业务线的抓取任务定义在不同的YAML文件中。敏感信息管理绝对不要将密码、Token、密钥等硬编码在配置文件中。使用credentials_file从外部文件读取或利用容器平台的Secret管理功能如Kubernetes Secrets。claw-prometheus应支持从环境变量或指定文件路径读取这些凭证。配置热重载优秀的实现应该支持向进程发送信号如SIGHUP或调用特定HTTP端点如/-/reload来动态重载配置文件而无需重启服务这对可用性至关重要。6. 扩展思考不仅仅是抓取更是数据网关在深入使用类似claw-prometheus的工具后你会发现它的定位可以超越一个简单的“抓取适配器”而演变成一个轻量级的“监控数据网关”。协议转换除了将非Prometheus格式转为Prometheus格式还可以考虑将抓取的数据同时推送到其他时序数据库如InfluxDB、TimescaleDB或者消息队列如Kafka用于更广泛的数据分析。数据预处理与降采样在将数据暴露给Prometheus之前可以在内存中进行一些简单的聚合运算如求和、求平均或者对历史数据进行降采样以减轻中心Prometheus的存储和查询压力。不过这需要谨慎设计以免破坏数据的准确性和原始性。边缘监控聚合在物联网或边缘计算场景中可以在每个边缘节点部署一个超轻量级的claw-prometheus或许可以叫claw-agent它负责收集本节点的多种指标然后由区域中心的Prometheus统一抓取实现分层聚合的监控体系。最后一点个人体会引入claw-prometheus这样的组件本质上是用运维复杂度换取架构灵活性。你获得了一个强大的、可编程的抓取层但同时也增加了一个需要维护、监控和高可用的新组件。在决定采用之前一定要权衡利弊。对于大多数标准化的云原生环境优先使用Prometheus原生服务发现和Exporter模式。只有当原生方案确实无法满足且定制化需求带来的价值足够大时claw-prometheus这类工具才是你的“瑞士军刀”。在实施过程中务必做好它的自身监控别让这个“抓取能手”成了监控盲点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2618978.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…