边缘计算监控实战:轻量级异常检测框架edgequake部署与架构解析

news2026/5/10 5:50:52
1. 项目概述当边缘计算遇上“地震”监控最近在GitHub上看到一个挺有意思的项目叫edgequake。光看名字你可能会有点懵“edge”是边缘“quake”是地震这俩词放一块儿难不成是在地震带上部署服务器其实不然这是一个非常典型的、利用边缘计算理念来解决特定监控问题的开源工具。它的核心思想是把传统上需要集中式、高算力服务器才能处理的复杂监控告警逻辑下沉到离数据源更近的边缘节点上实现更快速、更轻量的异常检测与响应。简单来说edgequake是一个轻量级的边缘侧异常检测与告警框架。它不是为了预测真实的地震而是把业务指标比如服务器的CPU使用率、应用的请求延迟、数据库的连接数的剧烈波动比喻成一次“地震”。当这些指标在极短时间内发生异常飙升或骤降时edgequake能像地震监测仪一样迅速感知并发出告警。它的设计哲学非常明确轻量、快速、低依赖能够轻松部署在各种资源受限的边缘环境如物联网网关、工厂的工控机、零售门店的本地服务器甚至是容器化的微服务Sidecar中。这个项目适合谁呢如果你是运维工程师、SRE站点可靠性工程师或者正在构建分布式物联网系统的开发者面对成百上千个边缘节点既需要实时掌握它们的健康状态又受限于边缘节点的计算资源、网络带宽和不稳定性那么edgequake所代表的思路就非常值得你深入了解。它不追求大而全的监控体系而是专注于解决边缘场景下“快速发现严重问题”这个核心痛点。接下来我就结合自己的实践经验带你彻底拆解这个项目看看它是如何设计的我们又该如何把它用起来以及过程中会遇到哪些“坑”。2. 核心架构与设计哲学解析2.1 为什么是“边缘”场景在深入代码之前我们必须先理解它要解决的痛点。集中式监控系统如Prometheus Alertmanager, Zabbix在数据中心内运行良好但在边缘场景下会面临三大挑战网络不可靠与高延迟边缘节点可能通过移动网络4G/5G或质量较差的专线与中心网络连接。网络闪断、高延迟是家常便饭。如果告警逻辑完全依赖中心服务器网络一旦抖动就可能出现“数据传不上来告警发不出去”的尴尬局面或者因为延迟导致告警严重滞后。资源严格受限边缘设备通常是嵌入式设备或低配虚拟机CPU、内存、存储空间都非常有限。运行一个完整的监控代理如Node Exporter再加上复杂的规则引擎可能会挤占业务本身所需的资源。数据海量与成本成千上万的边缘节点每时每刻产生巨量的监控指标如果全部无差别地传回中心会带来巨大的带宽成本和中心存储成本。很多情况下我们只关心“异常”时刻的数据正常状态的数据在边缘进行聚合或丢弃更为经济。edgequake的设计直接回应了这些挑战。它采用“边缘计算边缘告警”的模式。核心监控和告警判断逻辑直接在边缘节点上执行只有告警事件本身一条轻量的消息需要上报到中心。这大大降低了对网络稳定性和带宽的依赖也减轻了中心系统的压力。2.2 核心工作流与组件拆解edgequake的架构非常清晰主要包含以下几个核心组件我们可以把它们想象成一个微型的地震监测站Sensor传感器这是数据采集层。它负责定期收集本地系统的各项指标比如通过读取/proc文件系统获取CPU、内存信息通过调用本地命令获取磁盘空间或者通过HTTP探针检查某个本地服务的端口。edgequake内置了一些基础传感器也提供了接口让你可以轻松编写自定义传感器来采集业务指标如从本地日志文件中提取错误数量。Detector检测器这是大脑也是核心。它持续接收来自Sensor的指标数据流并应用预定义的检测规则。它的检测逻辑通常是基于阈值的但不仅仅是简单的静态阈值。为了更智能它往往会结合瞬时阈值CPU使用率瞬间超过95%。变化率阈值请求量在5秒内增长了500%。持续时间高负载状态持续超过30秒。 当一条或多条规则被触发时Detector就会判定一次“地震”即异常事件发生。Notifier通知器这是警报器。一旦Detector确认了异常Notifier就负责将告警消息发送出去。它支持多种渠道例如发送HTTP POST请求到一个中心化的告警网关。调用本地脚本触发重启服务等修复动作。写入本地日志文件供后续采集。 关键点在于Notifier发送的是高度浓缩的告警事件而不是原始的、高频的指标数据这极大地减少了网络传输量。Config配置整个系统的行为由一份YAML或JSON格式的配置文件驱动。在这里你需要定义启用哪些Sensor以及它们的采集频率。定义Detector的规则包括指标名称、阈值、检测窗口等。配置Notifier的目标地址和格式。整个工作流形成一个高效的闭环Sensor采集 - Detector分析 - Notifier上报。所有这一切都在单个边缘节点上独立完成体现了边缘计算的精髓。注意edgequake通常被设计为单个进程所有组件在进程内协同工作。这种设计避免了进程间通信的开销更适合资源受限的环境但也要求代码具有很好的模块化和可扩展性。3. 从零开始部署与配置实战理解了原理我们动手把它跑起来。这里我以在一台Linux边缘服务器上部署为例演示完整过程。3.1 环境准备与安装edgequake是Go语言编写的这带来了巨大的部署便利性单一二进制文件几乎没有运行时依赖。第一步获取可执行文件最直接的方式是从项目的GitHub Release页面下载对应平台Linux x86_64, ARM等的预编译二进制文件。假设我们的边缘服务器是x86_64架构# 下载最新版本的 edgequake wget https://github.com/raphaelmansuy/edgequake/releases/download/v0.1.0/edgequake-linux-amd64 -O edgequake # 赋予执行权限 chmod x edgequake # 移动到系统路径可选 sudo mv edgequake /usr/local/bin/第二步验证安装edgequake --version如果输出版本信息说明二进制文件本身是可用的。第三步创建配置文件目录通常我们会将配置文件和日志放在独立目录便于管理。sudo mkdir -p /etc/edgequake sudo mkdir -p /var/log/edgequake3.2 核心配置文件详解配置文件是edgequake的灵魂。我们创建一个/etc/edgequake/config.yaml文件。# edgequake 配置文件示例 global: # 全局采集间隔单位秒 scrape_interval: 10s # 实例标识用于在告警信息中区分不同节点 instance_id: edge-node-01 # 日志级别debug, info, warn, error log_level: info log_file: /var/log/edgequake/edgequake.log sensors: # 1. 系统基础传感器 - name: cpu_usage type: proc # 类型表示从/proc文件系统读取 config: metric_name: node_cpu_usage_percent source: /proc/stat # 该传感器每10秒采集一次继承全局配置 - name: memory_usage type: proc config: metric_name: node_memory_usage_percent source: /proc/meminfo - name: disk_usage type: command # 类型表示执行shell命令 config: metric_name: node_disk_usage_percent command: df / | tail -1 | awk {print $5} | sed s/%// # 命令输出直接是数字百分比 # 2. 业务自定义传感器示例检查本地Web服务健康 - name: web_health type: http config: metric_name: app_http_health url: http://localhost:8080/health method: GET # 如果HTTP状态码为200则指标值为1健康否则为0不健康 value_mapper: status_ok detectors: # 定义一个名为“high_load”的检测器 - name: high_load # 关联的传感器指标 metric: node_cpu_usage_percent # 检测规则最近3个采集点即30秒内平均值超过80% rule: avg_over_time(3) 80 # 告警级别 severity: warning # 告警冷却时间防止告警风暴 cooldown: 2m - name: disk_critical metric: node_disk_usage_percent # 规则单次采集值超过90% rule: value 90 severity: critical cooldown: 5m - name: service_down metric: app_http_health # 规则连续2次采集20秒健康值都为0 rule: consecutive_failures(2) 2 severity: critical cooldown: 1m notifiers: # 1. HTTP通知器将告警发送到中心告警网关 - name: central_alertmanager type: http config: url: https://your-central-alert-host/api/alerts method: POST headers: Content-Type: application/json Authorization: Bearer YOUR_SECRET_TOKEN # 告警消息的模板 template: | { labels: { alertname: {{.AlertName}}, instance: {{.InstanceID}}, severity: {{.Severity}} }, annotations: { description: {{.Description}}, value: {{.Value}}, timestamp: {{.Timestamp}} } } # 2. 本地脚本通知器严重故障时尝试自动修复 - name: local_restart type: command config: command: /opt/scripts/restart_service.sh # 可以配置只在特定严重级别触发 trigger_on_severity: [critical]这个配置文件定义了一个完整的监控场景采集CPU、内存、磁盘使用率以及一个自定义的HTTP健康检查。检测定义了高负载、磁盘满、服务宕机三条规则。通知告警会同时发送到中心HTTP接口并且对于“critical”级别告警会触发一个本地修复脚本。实操心得在编写command类型的传感器时务必确保命令在目标环境中的路径和权限是正确的。最好先在终端手动执行一遍。对于value_mapperedgequake通常需要你实现对应的映射函数或者确保命令输出直接是数值。3.3 以系统服务方式运行为了确保edgequake在边缘设备开机后能自动运行并且崩溃后能自动重启我们将其配置为系统服务。对于使用 systemd 的系统如 Ubuntu 18.04, CentOS 7创建服务文件/etc/systemd/system/edgequake.service[Unit] DescriptionEdgeQuake - Lightweight Edge Monitoring and Alerting Afternetwork.target Wantsnetwork.target [Service] Typesimple Useredgequake # 建议创建一个专用用户 Groupedgequake # 重点指定配置文件路径 ExecStart/usr/local/bin/edgequake --config /etc/edgequake/config.yaml Restarton-failure RestartSec10 # 资源限制防止监控本身耗尽资源 MemoryLimit100M CPUQuota20% # 日志重定向到 journalctl StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target然后执行# 创建系统用户 sudo useradd -r -s /bin/false edgequake # 更改配置文件和日志目录所有者 sudo chown -R edgequake:edgequake /etc/edgequake /var/log/edgequake # 重载systemd配置 sudo systemctl daemon-reload # 启动服务 sudo systemctl start edgequake # 设置开机自启 sudo systemctl enable edgequake # 查看状态和日志 sudo systemctl status edgequake sudo journalctl -u edgequake -f如果一切正常你应该能看到edgequake服务处于active (running)状态并且日志中显示传感器开始采集检测器初始化成功。4. 高级功能与自定义扩展指南基础监控往往不够用。edgequake的强大之处在于其可扩展性。下面我们探讨几个高级场景。4.1 编写自定义传感器Sensor假设我们需要监控一个自定义应用程序的队列长度这个长度写在一个本地文件/opt/myapp/queue_length.txt里文件里就一个数字。我们需要编写一个Go插件但更简单的方式是利用edgequake可能支持的“脚本传感器”或“文件传感器”。如果原生不支持我们可以通过command类型传感器变通实现sensors: - name: app_queue_length type: command config: metric_name: app_queue_length command: cat /opt/myapp/queue_length.txt 2/dev/null || echo 0 # 命令输出就是指标值edgequake会尝试将其解析为浮点数但如果逻辑更复杂比如需要解析JSON或者项目设计上支持Go插件那么自定义开发是更好的选择。你需要实现项目定义的Sensor接口通常包含Name(),Scrape(ctx context.Context) (float64, error)等方法然后将编译好的插件文件放在指定目录并在配置中引用。4.2 实现更复杂的检测规则Detector Rule配置文件中的rule: avg_over_time(3) 80是一种DSL领域特定语言。edgequake需要内置一个规则引擎来解析和执行这些规则。常见的规则模式包括value X瞬时值超标。avg_over_time(N) X过去N个点的平均值超标。increase_over_time(N) X过去N个点的增长量超标。consecutive_failures(N) M连续N次采集失败次数达到M次。(value - avg_over_time(10)) / avg_over_time(10) 0.5相对变化率超过50%需要引擎支持数学表达式。理解项目支持的规则语法至关重要。如果内置规则不满足需求你可能需要修改Detector的源码来添加新的规则函数。4.3 通知渠道Notifier的集成除了HTTP和Command你可能还需要集成其他通知渠道比如MQTT在物联网场景中将告警发布到一个MQTT主题让中心服务订阅。本地日志结构化将告警以JSON格式写入本地文件然后由Filebeat等日志采集器抓取送入Elasticsearch或Loki。短信/电话通过第三方API对于关键告警可以集成Twilio或国内云服务商的短信API。集成方式同样是实现Notifier接口并在配置中启用。例如一个写入本地JSON文件的Notifier配置可能如下notifiers: - name: local_json_log type: file config: path: /var/log/edgequake/alerts.json format: json # 每行一个JSON对象5. 生产环境部署的注意事项与排坑实录将edgequake用于成百上千的边缘节点会面临许多在单机测试时遇不到的问题。下面是我在实际部署中总结的经验和踩过的坑。5.1 配置管理如何高效管理上千份配置每个边缘节点的配置可能略有不同如instance_id、监控的磁盘路径、业务健康检查的URL。手动管理是不可能的。解决方案采用“模板变量”的配置管理方案。编写配置模板创建一个config.yaml.tmpl模板文件将需要动态替换的部分用占位符表示如{{ .InstanceID }}{{ .DiskMountPoint }}。使用配置管理工具在中心使用 Ansible, SaltStack 或 Kubernetes ConfigMap如果边缘是K8s集群。Ansible示例在Ansible inventory中为每个主机定义变量然后使用template模块将模板渲染为具体的配置文件推送到目标节点的/etc/edgequake/config.yaml。K8s示例将配置模板定义为ConfigMap并使用环境变量或Init Container来渲染最终配置挂载到edgequake容器中。版本控制将模板和变量文件纳入Git进行版本控制任何更改都有记录便于回滚和审计。踩坑记录曾经因为所有节点使用相同的instance_id导致中心告警平台无法区分告警来源一团混乱。务必确保每个节点的标识符唯一。5.2 资源限制与稳定性保障边缘节点资源紧张监控工具本身不能成为“问题制造者”。内存限制如上文systemd服务文件所示通过MemoryLimit严格限制其内存使用。edgequake作为Go程序内存管理较好但仍需防范内存泄漏尤其是自定义插件。CPU限制通过CPUQuota限制其CPU占用率避免在系统高负载时监控采集和计算反而加剧竞争。磁盘IO避免过高频率的采集和日志写入。scrape_interval不宜设置过小通常10-30秒足矣。日志级别在生产环境建议设为info或warn减少磁盘写入。进程保活依赖systemd的Restarton-failure机制。但更重要的是要让edgequake本身足够轻量和稳定避免频繁崩溃。5.3 网络断连场景下的告警可靠性这是边缘监控的核心挑战。网络断了HTTP Notifier无法将告警送到中心。应对策略本地缓冲与多级降级。本地持久化缓冲修改或配置Notifier在发送失败时将告警事件暂存到本地磁盘的一个小文件中如SQLite或简单的文本队列。定期重试实现一个后台线程定期检查缓冲文件尝试重新发送积压的告警。本地应急动作对于critical级别的告警如“服务宕机”配置commandNotifier执行本地修复脚本如重启容器、清理缓存。这是边缘自治能力的体现。心跳监控中心系统不能只靠接收告警来感知边缘节点存活。需要建立一个独立的、非常轻量的“心跳”机制。edgequake可以定期向中心发送一个“我还活着”的信号比如每5分钟一次HTTP GET。中心长时间收不到心跳即可判定该节点失联这本身就是一个需要关注的告警。5.4 监控系统自身的监控“谁来看守看守者” 我们需要监控edgequake本身是否健康。进程存活可以通过systemd或supervisor来监控也可以让edgequake暴露一个自身的健康检查端点如果项目支持然后由另一个更基础的监控机制或者另一个edgequake实例来检查它。资源使用edgequake自身的CPU/内存使用情况可以通过其内置的传感器如果暴露或者传统的系统监控工具来采集。日志监控将/var/log/edgequake/edgequake.log纳入日志收集体系监控其中是否有error级别的日志出现。5.5 性能测试与容量规划在大规模部署前需要在代表性硬件上进行压力测试。测试方法逐渐增加传感器数量和采集频率观察edgequake进程的资源消耗CPU、内存。关键指标单个数据点处理延迟从采集到完成规则判断需要多久这决定了告警的实时性。内存增长长时间运行是否存在内存缓慢增长可能的内存泄漏规则复杂度影响复杂的数学表达式规则是否会显著增加CPU消耗容量规划根据测试结果给出建议配置。例如“在树莓派4B4核ARM CPU 4GB内存上建议运行不超过20个传感器采集间隔不低于15秒规则数量不超过10条。”6. 与现有监控生态的集成方案edgequake不是要取代Prometheus或Zabbix而是作为它们在边缘侧的补充和延伸。如何将两者有机结合方案一Edgequake作为智能边缘代理Prometheus作为中心聚合与长期存储。边缘侧edgequake负责高频采集和实时告警判断。同时它可以作为一个简单的指标导出器以一个固定的HTTP端点例如/metrics暴露当前采集到的最新指标值格式兼容Prometheus的文本格式。中心侧Prometheus Server配置一个scrape_job定期如每1-5分钟去拉取每个边缘节点edgequake暴露的/metrics端点。由于拉取频率低对网络带宽和稳定性的要求大大降低。数据流实时告警由edgequake在边缘本地产生并立即动作。指标归档由Prometheus拉取到中心用于长期趋势分析、容量规划和复杂的多节点关联查询这是edgequake不擅长的。方案二Edgequake告警事件统一接入中心告警管理平台。edgequake的HTTP Notifier将告警发送到中心的Alertmanager(Prometheus生态) 或Zabbix Server的API。中心告警平台进行告警的去重、静默、路由和升级。例如可以将来自同一区域多个节点的相同告警聚合成一条避免告警风暴可以将告警按严重程度分派给不同的值班人员邮件、钉钉、短信。这样既保留了边缘告警的实时性又利用了中心平台强大的告警管理能力。方案三作为现有监控代理的轻量级替代或补充。在一些资源极度受限无法运行完整Node Exporter或Zabbix Agent的设备上edgequake可以作为最小化的监控解决方案只负责最关键的几个指标和告警。在资源稍好的设备上它可以与现有代理并存edgequake专注于“秒级”异常检测和本地响应而传统代理负责全面的指标采集和上报。选择哪种方案取决于你的具体架构、资源约束和运维习惯。核心思想是让合适的工具做合适的事edgequake填补了边缘侧实时、轻量、自治监控的空白。7. 总结与个人实践建议走完这一整套流程你会发现edgequake这类工具的价值远不止于一段代码。它代表了一种架构思维的转变从“一切上云”的中心化思维转向“云边协同”的分布式思维。在边缘场景下网络的不可靠性不再是阻碍我们可以通过赋予边缘节点一定的“智能”和“自治权”来构建更健壮、响应更快的系统。从我个人的实践经验来看在引入类似edgequake的方案时有几点建议第一明确边界不要大包大揽。edgequake的定位应该是“关键异常哨兵”而不是“全量数据采集器”。只让它监控最核心、最可能引发故障的少数几个指标如服务存活、CPU突发毛刺、磁盘空间。把全面的指标采集和性能分析交给更适合的中心化工具通过低频拉取实现。第二告警规则宜精不宜多。在边缘侧告警规则一定要简单、明确、高置信度。避免使用需要复杂计算或长期历史数据对比的规则。规则太多太复杂会增加误报率消耗本就宝贵的边缘资源也违背了其“快速发现严重问题”的初衷。我的经验法则是一个边缘节点上运行的edgequake其检测规则最好不超过5条。第三重视本地自愈能力的设计。这是边缘计算监控最大的价值点之一。对于某些已知的、可自动恢复的故障如某个进程僵死、临时文件占满磁盘一定要在commandNotifier中配置相应的修复脚本。这能极大地减少运维人员深夜被叫醒处理简单问题的次数。当然自愈脚本必须经过充分测试确保其安全性和幂等性。第四做好配置的版本化和自动化分发。手动管理成百上千个节点的配置文件是灾难。一定要在项目初期就搭建好配置管理流水线实现配置的“一次编写处处生效”并且能快速回滚。最后开源项目raphaelmansuy/edgequake提供了一个优秀的思路和起点但你可能需要根据自己公司的技术栈和业务需求对其进行定制和增强。比如你可能需要为它添加对特定硬件如PLC、摄像头的传感器支持或者将告警事件集成到内部已有的工单系统。这个过程本身就是对边缘计算运维体系的一次深度思考和构建。

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