华为防火墙SNMP v2c配置与Zabbix丢包监控实战指南

最近帮一个客户排查了几天Zabbix里华为防火墙丢包监控无数据的问题,来来回回折腾了三个晚上,最后发现症结不在Zabbix,也不在Python脚本,而是华为防火墙侧SNMP v2c的配置没做对。事情本身不大,但能绕晕不少人。这篇把整个链路捋一遍:为什么丢包监控这么容易翻车、华为防火墙SNMP v2c到底该怎么配、Zabbix监控项怎么填才不出幺蛾子,最后附上一个我自己在用的Python巡检脚本,一条命令就能把全接口丢包和错误情况拉出来。

这篇内容适合正在用Zabbix监控网络设备的运维工程师,尤其是被“SNMP不通”“丢包永远是0”“数值突然暴涨”折磨过的人。看完你至少能少踩一半的坑。

1. 为什么丢包监控总翻车:从华为防火墙的计数机制说起

1.1 丢包不是一个OID能说清的

很多同行第一次做防火墙丢包监控的时候,习惯性去网上搜一个所谓“丢包OID”,填进Zabbix就完事。结果要么取回来的是接口错误计数,要么干脆就是华为私有MIB里的某个表项,跟你想监控的“丢包”根本不是一回事。

先说清楚概念。防火墙的丢包大体分三类:

  • 物理层/链路层错误:比如CRC错误、碰撞,反映线路质量,对应标准MIB里的ifInErrors、ifOutErrors。
  • 接口队列/缓存丢弃:比如接口缓存满、环形缓冲溢出,说明流量突发超过接口能力,对应标准MIB里的ifInDiscards、ifOutDiscards。
  • 业务策略丢弃:这是防火墙特有的,比如安全策略被拒绝、会话表满、攻击防范丢包。这些要读华为的私有MIB,标准MIB II完全覆盖不到。

问题就在这。Zabbix默认自带的网络设备模板,基本只覆盖了ifInErrors、ifOutErrors这类标准项,而华为防火墙真正核心的“策略丢包”“会话丢包”统计,分布在私有MIB里,模板根本不认识。如果你一开始就用默认模板,大概率得到的是一堆“看起来有数但没卵用”的结果。

1.2 SNMP v2c在华为防火墙上的三个隐形坑

第一个坑是华为设备默认不启用SNMP agent。新出厂的防火墙,你拿snmpwalk去扫,直接超时,很多人以为是设备不支持,其实是没开。

第二个坑是v2c的团体名(Community)配置。华为防火墙不像路由器那样默认带一个public,必须手动配置团体名,而且还要把这个团体名绑定到ACL上。ACL不写,或者写的网段不在里面,监控机就会被拒之门外——这里注意,华为的ACL规则即使没执行,也要确认包含源地址管理网段,而且团体名本身的大小写、长度、特殊字符都要和Zabbix里填的完全一致。

第三个坑是接口索引(ifIndex)不一致。你在Web界面上看到的接口名是GigabitEthernet1/0/0,但SNMP里的ifIndex可能是5、是23、是47,完全不是你想当然的1。很多人直接拿接口名的末尾“0/0/0”当索引去填OID,结果那个索引对应的根本不是你想要的接口。这事儿我在多个品牌的设备上都碰到过,华为防火墙尤其典型。

1.3 为什么现场推荐v2c而不是v3

有人问,既然v2c明文传输不安全,为什么不直接上SNMP v3?理论上确实v3更安全,有认证和加密。但现实里,Zabbix对接华为防火墙,我几乎全是推荐v2c,原因很实际:

一是部署成本低,一个团体名加一条ACL,一分钟搞定,v3要搞认证用户、权限组、加密算法,设备侧和Zabbix侧对不上就慢慢排查。

二是兼容性稳。Zabbix的SNMPv3实现虽然能用,但不同版本对HMAC-SHA/HMAC-MD5的支持有差异,华为设备侧的配置语义也对不齐,现场出问题排查链路比v2c长得多。

三是v2c配合ACL源限制,把管理网段限定死,风险完全可控。SNMP监控网段本身就不是互联网可达的,只要不在管理口上放飞所有网段,v2c足够用。

所以我的建议是:管理面走独立VLAN,SNMP只允许监控服务器网段访问,v2c是当前性价比最高的方案。v3留到等哪天有强合规要求了再上。

2. 华为防火墙SNMP v2c配置与自检:命令行实操

2.1 完整配置命令解读

以华为防火墙VRP系统为例(各版本命令差异不大),登录设备后:

system-view # 启动SNMP Agent,不做这一步,后面全白搭 snmp-agent # 声明支持SNMP v2c版本 snmp-agent sys-info version v2c # 配置团体名,cipher表示加密保存,后面跟ACL编号进行源限制 snmp-agent community read cipher YourCommunity@2024 acl 2001 # 可选:加上联系人和位置信息,Zabbix系统名里能看得到,方便多设备区分 snmp-agent sys-info contact ops-notify@example snmp-agent sys-info location IDC-A-03 quit # 保存配置 save

这里重点说三个参数。read表示只读权限,监控场景用read足够,千万别图省事开write,谁也不想监控机误操作改了防火墙配置。团体名里的特殊字符,比如@、#,在部分老版本命令行里可能需要转义,建议统一用字母加数字加下划线的组合,避免给自己找事。acl 2001是基本ACL编号,用来限定哪些源IP能访问SNMP,这个必须配。

2.2 ACL源限制不是可选项

有同行觉得内网环境无所谓,SNMP团体名反正没人知道,就不配ACL。我建议别这么干。SNMP v2c团体名是明文传输的,在内网抓个包就能看到团体名,如果ACL没限制,任何能到达设备管理口的节点都能读走全部接口状态和路由表,信息泄露风险不小。

ACL配置如下:

system-view acl number 2001 rule 5 permit source 10.10.10.0 0.0.0.255 rule 10 deny quit

rule 5放开监控网段,rule 10显式拒绝其他源。ACL匹配顺序是从小到大,所以第一个permit先放行Zabbix服务器和巡检机所在的网段,其余流量一律拒绝。这里注意,如果以后要加新的监控网段,别改老规则,直接插一条新rule编号进去就行,比如rule 6。

2.3 从设备侧和监控机侧验证配置

配置完了先在设备上确认:

display snmp-agent sys-info display snmp-agent community display acl 2001

看到团体名、版本、接口状态都正确后再去监控机验证。在Zabbix服务器上执行:

snmpwalk -v2c -c YourCommunity@2024 192.0.2.1 1.3.6.1.2.1.1.1.0

如果能返回sysDescr,比如设备型号、软件版本信息,说明设备侧配置通了。返回Timeout或No Response就按顺序排查:先ping管理IP,再telnet 161端口(自己用nc或telnet测UDP有些麻烦,实际用snmpwalk更直接),再看ACL和团体名。多数现场问题出在ACL没放行监控源IP,或者团体名大小写不一致。

3. Zabbix监控丢包的OID选择与监控项配置

3.1 标准MIB照抄就能用:接口组OID汇总

先明确一件事,接口级丢包和错误率,标准MIB II接口组就能搞定,不需要从华为私有MIB里翻。以下是IF-MIB中有用的几个OID,都是Counter32类型,拿到值后要用两次轮询的插值除以时间差,才能得到每秒丢包速率。

指标含义OID
接口名 ifName1.3.6.1.2.1.31.1.1.1.1
入方向丢弃包数 ifInDiscards1.3.6.1.2.1.2.2.1.13
入方向错误包数 ifInErrors1.3.6.1.2.1.2.2.1.14
出方向丢弃包数 ifOutDiscards1.3.6.1.2.1.2.2.1.19
出方向错误包数 ifOutErrors1.3.6.1.2.1.2.2.1.20

实际操作中,先用snmpwalk把整个接口表walk一遍,拿到ifName和ifIndex的映射关系,确认每个接口对应的索引值再入库。不要只填一个裸OID,Zabbix需要你在OID后面拼上具体索引,比如1.3.6.1.2.1.2.2.1.13.23表示23号接口的入方向丢弃计数。索引不对,数据就是错的。

3.2 Zabbix监控项、预处理与触发器配置实操

在Zabbix界面里,按以下步骤配置:

  • 主机 → 创建主机,填好名称、群组。
  • 添加SNMP接口:IP填设备管理IP,端口161,版本选SNMPv2,团体名填和华为设备一致的字符串。
  • 创建监控项:类型选SNMP agent,键值建议自己定义,比如ifInDiscards_rate_23,OID填1.3.6.1.2.1.2.2.1.13.23,信息类型选数字(unsigned),单位填pps,存储值选Delta(speed per second)。

关键点来了,Counter32本质上是一个“累加器”,值只会越来越大,直接存原始值没有任何意义。Zabbix里“Delta(speed per second)”会自动计算两次轮询之间该计数器的差值,再除以轮询间隔,得到每秒速率。如果你不想用存储值,也可以在主数据预处理里加一个“Change per second”步骤,效果一样,二选一即可。

触发器建议写成这样:

min(/主机名/ifInDiscards_rate_23,5m)>10

表示23号接口入方向丢弃速率持续5分钟超过10pps就告警。阈值不要拍脑袋,我建议先观察一周正常业务下的基线,再按基线的一倍以上设置告警线,避免晚上流量高峰误报。

3.3 想监控防火墙策略丢包:华为私有MIB的查找思路

如果你确实需要监控“因为安全策略被丢弃”的包数,那就得走华为私有MIB。这里我不直接给具体OID,因为不同版本、不同产品线的MIB文件有差异,直接抄网上的老OID很可能是过时的。

正确做法是:到华为技术支持网站下载对应设备软件版本号的MIB包,解压后用MIB浏览器(比如各种免费SNMP MIB工具)加载HUAWEI开头的MIB文件,搜索“drop”或者“discard”关键字,找到描述里带“firewall”、“policy”的表项,再用MIB浏览器自带的仿真功能或者snmpwalk实地验证OID是否存在、能否读到值。

我自己的习惯是,先用标准MIB把接口级丢包和错误监控跑通,再逐步加上私有MIB里的关键项。标准MIB是放之四海皆准的基线,私有MIB是锦上添花。一上来就追私有MIB,大概率被坑。

4. Python巡检脚本:一条命令批量确认丢包状态

4.1 为什么还要写Python脚本

Zabbix适合长期趋势监控,但故障排查时并不顺手。比如某个客户反馈防火墙丢包,你在Zabbix里一台台对接口、对索引,效率太低。而且Zabbix默认只按你配的监控项展示,没配的接口就完全没有数据。这时候一个随手能跑的Python脚本就很有用,批量snmpwalk所有接口,算完速率直接输出表格,哪个接口丢了包一眼就能看见。

脚本我基于pysnmp,这个库在Python 3环境比较省事,pip装一下就能用。

4.2 脚本设计思路与依赖

整体流程分三步:第一轮采集所有接口的计数器快照,等待几秒,第二轮再采集一次,然后两次差值除以时间差得到每秒速率,最后按照阈值判断状态并输出CSV。计数器注意32位回绕问题,差值为负数时要加上2的32次方修正。

pip install pysnmp

4.3 完整脚本与运行演示

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 防火墙SNMP v2c丢包/错误巡检脚本 依赖: pip install pysnmp 用法: python firewall_snmp_check.py -H 192.0.2.1 -C YourCommunity@2024 python firewall_snmp_check.py -H 192.0.2.1 -C YourCommunity@2024 -t 5 -w 10 """ import argparse import csv import sys import time from pysnmp.hlapi import ( CommunityData, ContextData, ObjectIdentity, ObjectType, SnmpEngine, UdpTransportTarget, nextCmd, ) OID_IF_NAME = "1.3.6.1.2.1.31.1.1.1.1" OID_IF_IN_DISC = "1.3.6.1.2.1.2.2.1.13" OID_IF_IN_ERR = "1.3.6.1.2.1.2.2.1.14" OID_IF_OUT_DISC = "1.3.6.1.2.1.2.2.1.19" OID_IF_OUT_ERR = "1.3.6.1.2.1.2.2.1.20" def snmp_walk_index_value(host, community, oid): """返回 {ifIndex: 计数值},例如 {23: 1024}""" result = {} for error_indication, error_status, error_index, var_binds in nextCmd( SnmpEngine(), CommunityData(community, mpModel=1), # mpModel=1 表示SNMPv2c UdpTransportTarget((host, 161), timeout=3, retries=2), ContextData(), ObjectType(ObjectIdentity(oid)), lexicographicMode=False, ): if error_indication: print(f"SNMP错误: {error_indication}", file=sys.stderr) return {} if error_status: print(f"SNMP错误: {error_status.prettyPrint()}", file=sys.stderr) return {} for name, value in var_binds: oid_str = name.prettyPrint() index = int(oid_str.rsplit(".", 1)[-1]) result[index] = int(value) return result def collect_snapshot(host, community): """采集全接口计数快照""" ifname = snmp_walk_index_value(host, community, OID_IF_NAME) in_disc = snmp_walk_index_value(host, community, OID_IF_IN_DISC) in_err = snmp_walk_index_value(host, community, OID_IF_IN_ERR) out_disc = snmp_walk_index_value(host, community, OID_IF_OUT_DISC) out_err = snmp_walk_index_value(host, community, OID_IF_OUT_ERR) snapshot = {} for index, name in ifname.items(): snapshot[index] = { "name": name, "in_disc": in_disc.get(index, 0), "in_err": in_err.get(index, 0), "out_disc": out_disc.get(index, 0), "out_err": out_err.get(index, 0), } return snapshot def diff_counter(new_val, old_val): """计算Counter32差值,处理回绕""" diff = new_val - old_val if diff < 0: diff += 2 ** 32 return diff def main(): parser = argparse.ArgumentParser(description="防火墙SNMP丢包巡检") parser.add_argument("-H", "--host", required=True, help="设备管理IP") parser.add_argument("-C", "--community", required=True, help="SNMP v2c团体名") parser.add_argument("-t", "--interval", type=int, default=2, help="两次采样间隔秒数,默认2") parser.add_argument("-w", "--warn", type=int, default=5, help="丢包告警阈值pps,默认5") args = parser.parse_args() print(f"[*] 开始巡检 {args.host},间隔 {args.interval}s,告警阈值 {args.warn}pps") snap1 = collect_snapshot(args.host, args.community) time.sleep(args.interval) snap2 = collect_snapshot(args.host, args.community) if not snap1 or not snap2: print("[-] 未获取到数据,请检查连通性和团体名", file=sys.stderr) sys.exit(1) report = [] for index in sorted(snap2.keys()): s1 = snap1[index] s2 = snap2[index] rate_in_disc = diff_counter(s2["in_disc"], s1["in_disc"]) / args.interval rate_in_err = diff_counter(s2["in_err"], s1["in_err"]) / args.interval rate_out_disc = diff_counter(s2["out_disc"], s1["out_disc"]) / args.interval rate_out_err = diff_counter(s2["out_err"], s1["out_err"]) / args.interval status = "OK" if max(rate_in_disc, rate_out_disc, rate_in_err, rate_out_err) > args.warn: status = "WARN" report.append([ index, s2["name"], f"{rate_in_disc:.2f}", f"{rate_out_disc:.2f}", f"{rate_in_err:.2f}", f"{rate_out_err:.2f}", status ]) # 输出到终端和CSV print(f"{'接口':<25} {'入丢(pps)':<12} {'出丢(pps)':<12} {'入错(pps)':<12} {'出错(pps)':<12} 状态") for row in report: print(f"{row[1]:<25} {row[2]:<12} {row[3]:<12} {row[4]:<12} {row[5]:<12} {row[6]}") csv_path = f"fw_snmp_report_{args.host}.csv" with open(csv_path, "w", newline="") as f: writer = csv.writer(f) writer.writerow(["ifIndex", "接口名", "入丢(pps)", "出丢(pps)", "入错(pps)", "出错(pps)", "状态"]) writer.writerows(report) print(f"[*] 报告已保存: {csv_path}") if __name__ == "__main__": main()

运行方式:

python firewall_snmp_check.py -H 192.0.2.1 -C YourCommunity@2024 -t 5 -w 10

输出效果类似:

[*] 开始巡检 192.0.2.1,间隔 5s,告警阈值 10pps 接口 入丢(pps) 出丢(pps) 入错(pps) 出错(pps) 状态 GigabitEthernet1/0/0 0.00 0.00 0.00 0.00 OK GigabitEthernet1/0/1 0.00 3.20 0.00 0.00 OK 10GE2/0/1 0.00 0.00 0.00 0.00 OK [*] 报告已保存: fw_snmp_report_192.0.2.1.csv

4.4 结果解读与阈值建议

脚本输出的“入丢/出丢/入错/出错”是每秒速率,单位pps。正常运行的接口,丢包和错误速率应该长期都是0。出现非0数值时,先看是某个接口持续出现还是全设备都有,区别很大:

  • 单个接口持续丢包,优先查线缆、光模块、协商模式,这种一般是物理层问题。
  • 多个接口同时丢包,要查是不是有广播风暴、环路,或者是设备CPU过高导致转发暂时性丢弃。
  • 瞬时小抖动不用慌,比如出方向偶发几个pps,可能是TCP全局拥塞控制导致的正常现象。阈值建议日常8-10pps起步,大带宽链路可以放宽到50pps,具体看业务。

5. 常见问题与排查技巧实录

5.1 症状-原因速查表

现场症状可能原因排查方向
Zabbix监控项无数据或“不支持”SNMP不可达、OID不存在、团体名错误Zabbix服务器上snmpwalk验证,设备侧display snmp-agent community
数值永远是0,但设备明明有丢包OID配错、监控的是错误计数不是丢弃计数、索引不对walk接口表,确认ifName和ifIndex映射,把ifInDiscards和ifInErrors都接上
数值突然变大或出现负数Counter32回绕、值类型选错监控项存储值改成Delta(speed per second),预处理加Change per second
部分接口有数据,部分没有手动配置监控项只覆盖了少数接口改用LLD自动发现规则,或按脚本走全接口巡检
设备CPU升高明显Zabbix轮询间隔太短、监控项过多轮询间隔不要小于60秒,减少无效OID请求,启用缓存
SNMPwalk超时ACL没放行、管理口不通、161端口被策略拦截从设备上display acl 2001,确认管理网段,检查入方向安全策略

5.2 排障顺序与现场心得

我强烈建议所有SNMP排障都按这个顺序来,能省一半时间:

  1. 设备侧确认SNMP Agent已启用,团体名和ACL都正确。
  2. 在Zabbix服务器上直接snmpwalk单条OID,绕开Zabbix界面先确认链路通。
  3. 用MIB浏览器或脚本walk整个接口表,确认ifIndex和ifName映射。
  4. 最后才去Zabbix界面看监控项配置和最新数据。

这个顺序的核心理念是:SNMP链路没有打通之前,一切Zabbix配置都是无用功。很多同事一上来就改Zabbix监控项,改来改去还是无数据,最后发现是设备侧团体名少了一个字符。

再分享一个小经验。我在脚本第一步就把所有接口的ifName和ifIndex映射保存到一个文本文件里,后续任何配置和排障都拿这份映射当基线。用熟了你会发现,Snmp接口索引和设备Web界面的接口序号的对应关系几乎没规律,没有基线文件就只能靠猜。

另外,阈值也要按接口性质区分。对接运营商的出口链路和对接内网服务器的接入链路,丢包容忍度完全不一样。出口链路偶发5pps可能没事,接入链路持续1pps就要警惕了。我的做法是给每类接口打上不同的告警模板,出口链路阈值高一点,接入链路阈值低一点,宁可多接几组触发器,也别因为阈值太粗把真问题漏掉。

这套组合拳在我这边稳定跑了一年多。Zabbix负责7x24小时趋势和告警,Python脚本负责故障时快速拉全量快照,各管一摊,互补性很强。如果你也在为防火墙丢包监控头疼,照着这篇把SNMP v2c配置逐项对一遍,再落一个巡检脚本,基本就能稳住了。

相关新闻

MySQL 8一键安装与巡检脚本实战:从部署到健康检查

MySQL 8一键安装与巡检脚本实战:从部署到健康检查

跑数据库运维没几年&#xff0c;但我越来越确认一件事&#xff1a;装 MySQL 这件事&#xff0c;如果每次都靠手工敲命令&#xff0c;总有一天会因为一个参数写错而丢掉一个通宵。尤其到了 MySQL 8&#xff0c;初始化方式、认证插件、参数默认值都和 5.7 有差异&#xff0c;照着…

2026/10/19 17:42:49 阅读更多 →
857个AI模型仅3.6%公开安全测试:AI安全测试的行业真相与落地实践

857个AI模型仅3.6%公开安全测试:AI安全测试的行业真相与落地实践

1. 一组数字背后的行业真相857个模型&#xff0c;只有3.6%公开了安全测试结果。这个比例我第一次看到的时候&#xff0c;盯着屏幕愣了好几秒。3.6%是什么概念&#xff1f;大概就是你在一个坐满100个人的会议室里扫一圈&#xff0c;只有不到4个人手里拿着体检报告&#xff0c;剩…

2026/10/19 17:41:48 阅读更多 →
逆序对计数:归并排序的O(n log n)解法与Go实现

逆序对计数:归并排序的O(n log n)解法与Go实现

1. 逆序对的定义&#xff1a;为什么这一题能拦住很多人 我第一次认真接触“逆序对”是在处理一批排序统计相关的小工具时。当时我需要量化一组序列到底“有多乱”&#xff0c;排序本身只能给出结果顺序&#xff0c;却丢失了原始乱序程度。后来才意识到&#xff0c;逆序对数量正…

2026/10/19 17:41:48 阅读更多 →

最新新闻

DeskcommCRM实战:轻量级客户管理与销售跟进全流程落地指南

DeskcommCRM实战:轻量级客户管理与销售跟进全流程落地指南

1. 项目概述&#xff1a;DeskcommCRM 到底是什么&#xff0c;以及为什么值得关注这两年市面上叫 CRM 的产品多得数不过来&#xff0c;但绝大多数都陷入了一个怪圈&#xff1a;功能越做越重&#xff0c;权限越加越细&#xff0c;你要是只为了管好手头几百个客户&#xff0c;得先…

2026/10/19 23:47:06 阅读更多 →
以沟通为核心的轻量级CRM系统设计与实践

以沟通为核心的轻量级CRM系统设计与实践

一个叫 DeskcommCRM 的项目&#xff0c;听起来有点像某个内部系统的代号&#xff0c;但实际上它代表了一类特别值得聊的东西&#xff1a;以“沟通”为核心的客户关系管理工具。我一开始接触这个项目名的时候&#xff0c;第一反应是“Deskcomm”可能是 Desk Communication 的缩写…

2026/10/19 23:47:06 阅读更多 →
从线程池失控到全局限流:高并发系统稳定性实战指南

从线程池失控到全局限流:高并发系统稳定性实战指南

1. 并发失控的第一现场&#xff1a;线程池是怎么被击穿的先说一个我实际排查过的案例场景。某公司核心交易链路的订单服务&#xff0c;平时性能表现很稳定&#xff0c;高峰期单机支撑上千QPS没有任何压力。但一次大促活动中&#xff0c;下游的库存服务因为数据库连接池被打满&a…

2026/10/19 23:39:50 阅读更多 →
STC单片机范例程序实战指南:从点灯到多外设工程搭建

STC单片机范例程序实战指南:从点灯到多外设工程搭建

简介&#xff1a;这是一份面向嵌入式初学者与单片机开发者的STC单片机C语言范例程序合集&#xff0c;围绕ADC采样、串口通信、EEPROM读写、ISP在系统编程、时钟中断、端口测试及优化编程思想等核心功能展开&#xff0c;适合用于课程实验、自学练手与项目参考。资源包共612个文件…

2026/10/19 23:39:50 阅读更多 →
Kafka全链路性能调优:吞吐量与延迟的实战权衡

Kafka全链路性能调优:吞吐量与延迟的实战权衡

前阵子业务告警群里又炸了——消费延迟从平时的几百毫秒一路飙到分钟级&#xff0c;P99 延迟曲线在监控面板上直接拉成一条陡坡。接手这套 Kafka 系统两年&#xff0c;类似的戏码每隔一阵就重演一次。与其每次都临时救火&#xff0c;不如把全链路参数优化这件事系统捋一遍。这篇…

2026/10/19 23:37:47 阅读更多 →
ZXing.Net 0.16.8.0 条码识别实战:从解码链路到性能调优

ZXing.Net 0.16.8.0 条码识别实战:从解码链路到性能调优

简介&#xff1a;ZXing.Net.0.16.8.0 是面向 C# 与 Unity 开发者的开源条码处理库&#xff0c;基于 Zebra Crossing 项目&#xff0c;可在 .NET 框架与 Unity 引擎中实现 QR 码、Aztec、Code 128、EAN 等多种条码的读取与生成。开发者只需调用少量 API 即可为桌面应用、移动端或…

2026/10/19 23:37:47 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →