news 2026/8/23 20:32:51

Wireshark从入门到精通:网络抓包、协议分析与故障排查实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Wireshark从入门到精通:网络抓包、协议分析与故障排查实战指南

在日常网络运维、应用调试或安全分析中,你是否遇到过这样的困惑:服务器端口不通,却不知道数据包卡在了哪里?某个App功能异常,想查看它到底发送了什么请求?或者,只是想了解当你访问一个网页时,背后究竟发生了多少次“对话”?面对这些场景,掌握一款强大的网络数据包分析工具至关重要。本文将围绕网络分析领域的“瑞士军刀”——Wireshark,为你提供一份从零基础安装到实战精通的完整教程。无论你是刚接触网络的新手,还是希望提升排错能力的开发者,都能通过本文掌握独立抓包、过滤和分析网络流量的核心技能,为深入理解网络协议、排查复杂问题乃至进行基础安全分析打下坚实基础。

1. 网络抓包与Wireshark核心概念

在深入操作之前,我们首先需要理解几个核心概念,这能帮助你明白Wireshark在做什么,以及为什么要这么做。

1.1 什么是网络抓包?

网络抓包,顾名思义,就是捕获在网络中传输的数据包。你可以把它想象成在一条繁忙的高速公路上安装一个高清摄像头,记录下每一辆车的型号、颜色、行驶方向、装载的货物以及出发地和目的地。在网络世界里,数据被分割成一个个“数据包”,沿着网线、光纤或无线信号进行传输。抓包工具就是这个“摄像头”,它能够拦截流经本机网卡或指定网络节点的所有数据包,并将其原始内容(包括协议头和负载数据)完整地记录下来,供我们后续分析。

主要应用场景包括:

  • 网络故障排查:定位网络延迟、丢包、连接超时、端口不通等问题的根本原因。
  • 应用协议分析:分析HTTP、HTTPS、DNS、DHCP等应用层协议的工作过程,用于调试API接口、理解第三方服务交互。
  • 网络安全分析:检测异常流量、分析网络攻击行为(如ARP欺骗、DDoS)、调查安全事件。
  • 网络性能优化:分析数据包时序,找出网络瓶颈,优化传输效率。
  • 学习网络协议:直观地观察TCP三次握手、HTTP请求响应等协议交互过程,是学习计算机网络的最佳实践方式。

1.2 Wireshark是什么?

Wireshark是一款开源、免费、跨平台(支持Windows、macOS、Linux)的网络协议分析器。它前身是Ethereal,是目前全球最流行、功能最强大的抓包与分析工具之一。Wireshark的核心能力建立在libpcap(Linux/macOS)或WinPcap/Npcap(Windows)这些底层抓包库之上,它提供了图形化界面,使得查看和分析海量的网络数据包变得直观和高效。

Wireshark的核心优势:

  • 深度协议解析:支持上千种网络协议,能够将二进制数据包解析成人类可读的协议字段。
  • 强大的过滤系统:可以通过显示过滤器和捕获过滤器,从海量数据中快速定位你关心的数据包。
  • 丰富的统计分析功能:提供会话统计、协议分层统计、IO图表、流量图等,帮助宏观把握网络状况。
  • 可扩展性:支持使用Lua等语言编写插件,解析自定义协议。

1.3 与其他抓包工具的简单对比

你可能也听说过Fiddler、Charles或Burp Suite。这里做一个简单区分,帮助你根据场景选型:

  • Wireshark:工作在网络层和传输层,能抓取所有经过网卡的流量(包括TCP、UDP、ICMP等),功能最底层、最全面,适合分析网络基础问题、安全攻防和所有协议。
  • Fiddler/Charles:本质是HTTP/HTTPS代理,工作在应用层,主要针对Web和移动端App的HTTP/HTTPS流量进行拦截、修改和调试,对于Web前端和移动端开发非常友好。
  • Burp Suite:专注于Web应用安全测试,除了代理功能,还集成了漏洞扫描、爬虫、爆破等安全测试模块,是安全工程师的利器。

简单来说,如果你想分析为什么ping不通、TCP连接为何重置,或者查看非HTTP协议(如DNS、DHCP)的通信,Wireshark是你的首选。如果你主要调试网页API或手机App的请求响应,Fiddler或Charles更便捷。

2. 环境准备与安装指南

工欲善其事,必先利其器。下面我们详细介绍如何在Windows和macOS系统上安装Wireshark。Linux系统的安装通常通过包管理器(如apt-get install wireshark)即可,此处不赘述。

2.1 Windows系统安装

在Windows上安装Wireshark,需要同时安装Wireshark主程序和其依赖的抓包驱动Npcap(或WinPcap,但推荐更新的Npcap)。

步骤一:下载安装包

  1. 访问Wireshark官网(https://www.wireshark.org/#download)。
  2. 在“Windows Installer (64-bit)”栏目下,下载最新的稳定版安装程序(如Wireshark-4.2.0-x64.exe)。官网会自动检测系统位数。

步骤二:运行安装程序

  1. 管理员身份运行下载好的安装程序。
  2. 在安装向导中,大部分选项保持默认即可。但请务必注意以下几个关键步骤:
    • 在“Choose Components”页面,确保WiresharkNpcap都被选中。Npcap是抓包所必需的驱动。
    • 在“Install Npcap”页面,强烈建议勾选 “Install Npcap in WinPcap API-compatible Mode”。这能确保兼容那些依赖于旧版WinPcap的程序。
  3. 后续步骤点击“Next”直至安装完成。

步骤三:验证安装安装完成后,在开始菜单找到Wireshark并启动。如果能看到网络接口列表(如“WLAN”、“以太网”等),并且接口旁有数据包数量跳动,说明安装成功。

2.2 macOS系统安装

在macOS上,最方便的安装方式是使用Homebrew包管理器。

步骤一:安装Homebrew(如果尚未安装)打开“终端”应用,粘贴以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

按照提示完成安装。

步骤二:通过Homebrew安装Wireshark在终端中执行以下命令:

brew install --cask wireshark

--cask参数表示安装的是一个图形化应用程序。

步骤三:安装抓包权限macOS有严格的安全限制,需要额外授权才能抓包。

  1. 安装完成后,首次启动Wireshark可能会提示权限错误。
  2. 打开“系统设置” -> “隐私与安全性” -> “辅助功能”(或“开发者工具”)。
  3. 点击左下角锁图标解锁,然后将Wireshark或/usr/sbin/dumpcap(抓包引擎)添加到允许列表中。
  4. 有时也需要在“隐私与安全性” -> “网络”中授权。完成授权后重启Wireshark即可。

2.3 安装后重要设置

为了让Wireshark更好用,建议进行以下初始设置:

  1. 设置显示语言:启动后,点击菜单栏Edit->Preferences->Appearance->Language,选择“Chinese (简体中文)”可使界面汉化(可选)。
  2. 配置列显示:默认的列(时间、源、目标、协议等)可能不够。你可以在数据包列表的列标题上右键,选择“Column Preferences”来添加/删除列,例如添加“长度”、“信息”等。
  3. 熟悉界面:主界面主要分为:菜单栏、工具栏、数据包列表(Packet List)、数据包详情(Packet Details)、数据包字节(Packet Bytes)以及底部的状态栏和筛选栏。

3. Wireshark核心功能与界面详解

成功启动Wireshark后,你会看到主界面。我们通过一次实际的抓包来熟悉各个区域的功能。

3.1 首次抓包体验

  1. 在主界面,你会看到一个所有可用网络接口的列表。选择你正在活跃使用的接口(例如,连接Wi-Fi就选“Wi-Fi”或“WLAN”,插网线就选“以太网”)。
  2. 双击该接口,Wireshark立即开始捕获所有流经该网卡的数据包。你会看到数据包列表飞速滚动。
  3. 要停止抓包,点击工具栏左上角的红色方形停止按钮。

3.2 主界面五大区域解析

  • 区域1:数据包列表 (Packet List Pane)以表格形式显示所有捕获的数据包。每一行是一个数据包,包含序号、捕获时间、源IP地址、目标IP地址、协议、长度、简要信息等列。这是你浏览和筛选数据包的主要区域。

  • 区域2:数据包详情 (Packet Details Pane)当你点击列表中的一个数据包时,此处会以树状结构分层展示该数据包的详细信息。这是Wireshark最强大的功能所在。它按照协议栈从底层到高层的顺序展开:

    • Frame: 物理层帧的元信息(到达时间、捕获长度等)。
    • Ethernet II: 数据链路层,包含源/目的MAC地址。
    • Internet Protocol Version 4: 网络层,包含源/目的IP地址、TTL、协议类型等。
    • Transmission Control Protocol: 传输层,包含源/目的端口、序列号、确认号、标志位(SYN, ACK等)。
    • Hypertext Transfer Protocol: 应用层,包含HTTP请求方法、URL、状态码、头部信息等。 每一行前面的方括号[ ]表示该字段在原始数据中的字节范围。
  • 区域3:数据包字节 (Packet Bytes Pane)以十六进制和ASCII码形式显示数据包的原始二进制内容。当你点击详情面板中的某个字段时,字节面板中对应的字节会被高亮显示,实现了“所见即所得”的对应关系,对于深入分析或编写解析脚本非常有用。

  • 区域4:筛选工具栏 (Filter Toolbar)这是输入显示过滤器的地方。你可以在这里输入过滤表达式(如ip.addr == 192.168.1.1),然后按回车或点击应用,数据包列表将只显示符合条件的数据包。绿色表示语法正确,红色表示错误。

  • 区域5:状态栏 (Status Bar)显示当前捕获文件的状态,如数据包数量、是否被标记、当前使用的配置文件等。

4. 核心技能:捕获与过滤

面对海量数据包,过滤是找到关键信息的生命线。Wireshark有两种过滤器:捕获过滤器和显示过滤器。

4.1 捕获过滤器 (Capture Filter)

在开始抓包之前设置,用于决定哪些数据包能被抓取到。语法源于libpcaptcpdump,目的是减少内存和CPU占用,适合长时间抓取特定流量。

  • 设置位置:在选择接口后,开始抓包前,在接口列表上方有一个输入框,或通过Capture->Options->Capture Filter输入。
  • 常用语法示例
    • host 192.168.1.100:只抓取与指定IP(源或目标)相关的所有流量。
    • src host 192.168.1.1:只抓取源IP是192.168.1.1的流量。
    • dst port 80:只抓取目标端口是80(HTTP)的流量。
    • tcp port 443:只抓取TCP协议且端口为443(HTTPS)的流量。
    • not arp:不抓取ARP广播包,减少干扰。
    • icmp:只抓取ICMP(ping)包。
    • 组合使用:host 10.0.0.5 and port 5060抓取与10.0.0.5主机的SIP(5060端口)流量。

4.2 显示过滤器 (Display Filter)

在抓包之后使用,用于在已捕获的数据包中筛选显示。功能更强大,语法更丰富,是日常分析中最常用的工具。

  • 设置位置:主界面顶部的筛选工具栏。
  • 常用语法示例
    • IP过滤
      • ip.addr == 192.168.1.1:显示源或目标IP是192.168.1.1的数据包。
      • ip.src == 192.168.1.1:显示源IP是192.168.1.1的数据包。
      • ip.dst == 8.8.8.8:显示目标IP是8.8.8.8的数据包。
    • 端口过滤
      • tcp.port == 80:显示TCP协议且源或目标端口是80的数据包。
      • tcp.srcport == 8080:显示TCP源端口是8080的数据包。
      • udp.port == 53:显示UDP协议且端口是53(DNS)的数据包。
    • 协议过滤
      • http:显示所有HTTP协议的数据包。
      • dns:显示所有DNS协议的数据包。
      • tcp/udp/icmp:显示对应协议的数据包。
    • 逻辑运算符
      • and(与):ip.src == 192.168.1.1 and tcp.port == 443
      • or(或):http or dns
      • not(非):not arp
      • ==(等于),!=(不等于),><(大于小于,用于长度、时间等)
    • 内容过滤
      • http.request.method == “GET”:显示HTTP GET请求。
      • http.response.code == 404:显示HTTP 404响应的数据包。
      • tcp.flags.syn == 1:显示TCP SYN标志位为1的数据包(通常是连接发起)。
      • tcp.stream eq 0:显示TCP流索引为0的整个会话的所有数据包(非常有用!)。
    • 存在性过滤
      • tcp.analysis.flags:显示TCP分析中发现问题的数据包(如重传、乱序)。
      • http contains “password”:在HTTP协议中搜索包含“password”字符串的数据包(注意大小写)。

技巧:在数据包详情面板,右键点击你感兴趣的字段(如IP地址、端口号),选择“作为过滤器应用” -> “选中”,Wireshark会自动将对应的过滤表达式填入筛选栏,这是学习过滤语法最快的方式。

5. 实战案例:从入门到分析

现在,我们通过几个具体的实战场景,将上述知识串联起来。

5.1 案例一:分析一次完整的HTTP网页访问

目标:理解从输入网址到页面加载完成的网络通信过程。

  1. 准备:清空浏览器缓存,打开Wireshark。
  2. 设置捕获过滤器(可选):在开始前,可以设置port 80以减少无关流量。
  3. 开始抓包:选择正确的网卡,点击开始。
  4. 触发流量:在浏览器中访问一个纯HTTP网站(例如http://httpbin.org/get)。
  5. 停止抓包:页面加载完成后,在Wireshark中停止捕获。
  6. 分析过程
    • DNS解析:首先过滤dns,你会看到客户端向DNS服务器查询httpbin.org域名的A记录,并得到IP地址的响应。
    • TCP三次握手:过滤tcp and ip.addr == <httpbin.org的IP>。找到第一个TCP包,查看详情。你会看到标志位[SYN],这是第一步。接着是[SYN, ACK]的回复,最后是[ACK]确认。这就建立了TCP连接。
    • HTTP请求与响应:过滤http。你会看到一个GET /get HTTP/1.1的请求包,紧接着一个HTTP/1.1 200 OK的响应包。在响应包的详情中,展开Line-based text data可以看到服务器返回的JSON数据。
    • TCP四次挥手:通信结束后,过滤tcp.flags.fin == 1,可以看到由谁发起[FIN]来关闭连接。

5.2 案例二:排查网络连通性问题(Ping不通)

目标:使用Wireshark定位“ping不通”的具体环节。

  1. 开始抓包:在出问题的机器A上开启Wireshark抓包,无需设置过滤器。
  2. 执行Ping:在命令行执行ping <目标IP>,例如ping 192.168.1.200
  3. 停止抓包并分析
    • 过滤icmp
    • 场景1:能看到A发出的Echo (ping) request,但没有Echo (ping) reply
      • 这说明请求已经从A发出。可能的原因有:目标IP不存在、目标防火墙禁用了ICMP、中间网络设备丢弃了包。
    • 场景2:连Echo request都看不到。
      • 这说明包在离开A的网卡前就被丢弃了。检查A的路由表route printip route,看是否有通往目标网段的路由。或者检查A的本地防火墙。
    • 场景3:看到Destination unreachable响应。
      • 这通常是网关或中间路由器回复的,指明了不可达的原因(如网络不可达、主机不可达、端口不可达等),是极佳的排错线索。

5.3 案例三:追踪一个完整的TCP会话流

当分析一个具体应用(如数据库连接、文件传输)的问题时,需要查看整个会话的所有数据包。

  1. 在数据包列表中,找到该会话的任意一个TCP包。
  2. 右键点击该数据包 ->跟踪->TCP流
  3. 此时,Wireshark会自动应用一个类似tcp.stream eq 12的过滤器,并弹出一个新窗口,以ASCII或十六进制形式将整个会话的客户端和服务端数据按顺序排列显示,非常清晰。你可以在这个窗口看到完整的应用层对话(例如HTTP请求响应体、SMTP邮件内容等,如果是明文协议)。
  4. 关闭流窗口后,显示过滤器仍然生效,你可以继续在数据包列表中分析这个会话的时序、重传等问题。

6. 高级功能与实用技巧

掌握了基础抓包和过滤后,以下高级功能能极大提升你的分析效率。

6.1 着色规则 (Coloring Rules)

Wireshark允许根据规则给不同类型的数据包标记颜色,便于快速识别。

  • 查看与编辑视图->着色规则。例如,默认规则中,TCP RST(连接重置)包是黑色背景,ICMP包是粉红色,HTTP错误是黄色等。
  • 自定义规则:你可以创建自己的规则,比如将所有目标端口为3306(MySQL)的流量标为绿色,便于在混杂流量中快速定位数据库操作。

6.2 统计分析工具

  • 协议分层统计统计->协议分级。以树状和百分比形式展示捕获文件中各层协议的分布情况。如果发现未知协议或异常协议占比过高,可能预示着异常。
  • 会话统计统计->会话。查看所有TCP、UDP、IPv4/IPv6会话的列表,包括地址、端口、数据包数、字节数等。可以快速找出通信最频繁的主机或端口。
  • 流量图统计->流量图。生成一个时序图,直观展示主机之间的数据包交换情况,对于分析连接建立、断开、数据流方向非常有用。

6.3 导出与提取对象

Wireshark可以从捕获文件中提取出传输的文件。

  • 文件->导出对象->HTTP。会列出所有捕获到的HTTP传输文件(如图片、ZIP、PDF等),你可以选择保存到本地。这在分析Web文件下载或上传时非常方便。

6.4 命令行工具:tshark

Wireshark也提供了强大的命令行版本tshark。在服务器或无图形界面的环境中,或者需要自动化分析时,tshark是不可或缺的。

  • 基本捕获tshark -i eth0(在eth0网卡上抓包)
  • 捕获到文件tshark -i eth0 -w capture.pcap
  • 读取文件并应用显示过滤器tshark -r capture.pcap -Y “http.request.method==POST”
  • 指定输出字段tshark -r capture.pcap -T fields -e ip.src -e ip.dst -e http.request.uri

7. 常见问题与排查思路

在使用Wireshark过程中,你可能会遇到以下典型问题。

问题现象可能原因排查思路与解决方案
看不到任何网络接口1. 未安装Npcap/WinPcap驱动。
2. 权限不足(尤其在macOS/Linux)。
3. Wireshark版本与系统不兼容。
1. 重新运行安装程序,确保勾选了Npcap。
2. 以管理员/root权限运行Wireshark;在macOS/Linux上正确配置抓包权限(见2.2节)。
3. 尝试安装旧版本或稳定版。
抓不到本地回路 (localhost/127.0.0.1) 流量默认网卡无法捕获本地进程间通信。1. 安装Npcap时勾选“安装Npcap环回适配器”。
2. 使用第三方工具如RawCap捕获回环流量再导入Wireshark分析。
3. 对于开发调试,更推荐使用Fiddler/Charles等代理工具。
数据包列表为空或流量很少1. 选错了网络接口。
2. 设置了过于严格的捕获过滤器。
3. 网卡处于非混杂模式(对于无线网卡常见)。
1. 确认选择的接口是当前活跃的(有流量进出的)。
2. 清空或检查捕获过滤器设置。
3. 在捕获->选项中,确保对应接口的“混杂模式”是启用的(但注意,现代交换网络和Wi-Fi下,混杂模式也可能抓不到其他主机的流量)。
显示过滤器语法错误(变红)1. 字段名拼写错误。
2. 运算符使用不当。
3. 值类型不匹配(如用==比较IP和端口)。
1. 利用Wireshark的自动补全功能(输入时会有提示)。
2. 参考官方文档或右键字段“作为过滤器应用”来学习正确语法。
3. IP地址用ip.addr,端口用tcp.port,注意区分。
Wireshark卡顿或崩溃1. 捕获流量过大,超出处理能力。
2. 捕获文件保存到了慢速磁盘。
3. 内存不足。
1. 使用更严格的捕获过滤器,只抓需要的流量。
2. 在捕获->选项->输出中,设置“环状缓冲区”,将文件分割保存。
3. 增加显示过滤,减少实时渲染的数据量。
4. 升级硬件或关闭其他占用资源的程序。
无法解析HTTPS/TLS加密流量默认情况下,Wireshark看到的是加密后的TLS记录,无法看到HTTP内容。1.(推荐/可行时)配置浏览器或应用导出TLS会话密钥,并在Wireshark中设置(编辑->首选项->Protocols->TLS->(Pre)-Master-Secret log filename)。
2. 对于调试,可在测试环境使用自签名证书并在中间人代理(如Fiddler)上解密,然后分析代理与客户端/服务端的明文流量。

8. 最佳实践与工程建议

将Wireshark用于生产环境分析或安全研究时,遵循以下最佳实践能让你事半功倍,并避免常见陷阱。

  1. 明确分析目标,先过滤后抓包:开始前,花一分钟想清楚你要分析什么问题。尽量使用捕获过滤器缩小范围。例如,分析Web服务器问题,可以只抓port 80 or port 443。这能显著降低系统负载和抓包文件大小,提高分析效率。
  2. 保存原始抓包文件:任何时候开始重要的抓包,都应立即设置将数据保存到文件(捕获->选项->输出)。原始pcap/pcapng文件是你的“原始证据”,可以反复分析,也可以分享给同事。
  3. 使用“标记”功能:在分析长时段的抓包文件时,遇到关键或异常的数据包,可以按Ctrl+M进行标记。之后可以通过过滤frame.marked == 1快速定位所有标记过的包。
  4. 善用“追踪流”功能:这是分析应用层交互的利器。对于HTTP、TCP等协议,右键“追踪流”能瞬间理清一次完整会话的来龙去脉。
  5. 结合其他工具:Wireshark不是万能的。对于Web应用调试,结合浏览器开发者工具(Network面板)和Fiddler/Charles;对于性能分析,结合ping,traceroute,netstat,iftop等命令行工具。
  6. 注意隐私与法律:抓取网络流量可能涉及他人隐私和公司机密数据。务必确保你是在自己拥有管理权限的设备或网络,或在获得明确授权的情况下进行抓包分析。切勿在公共网络或未经授权的情况下抓取他人数据。
  7. 生产环境抓包要谨慎:在生产服务器上长时间抓包可能影响性能。尽量在业务低峰期进行,并使用精确的捕获过滤器。考虑使用tcpdump命令先捕获到文件,再将文件下载到本地用Wireshark分析。
  8. 持续学习协议知识:Wireshark的强大建立在你能看懂它解析出来的内容之上。花时间学习TCP/IP、HTTP、DNS等核心网络协议,你的分析能力会呈指数级增长。Wireshark的官方文档和维基是极佳的学习资源。

从双击网卡开始第一次抓包的迷茫,到能熟练运用过滤器精准定位问题,再到通过协议分析洞察网络行为的本质,Wireshark的学习曲线是陡峭但回报丰厚的。它不仅仅是一个工具,更是一扇通向网络世界内部运作原理的窗口。建议你按照本文的步骤,从分析一次简单的网页访问开始,逐步尝试排查一次真实的网络故障,再挑战分析一个复杂应用的数据交互流程。过程中遇到的每一个未知协议字段,都去查一查资料,积少成多,你终将成为团队中那个能解决“玄学”网络问题的高手。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 20:32:02

Java全栈面试实战:高频考点与场景化解决方案

1. 项目概述作为一名经历过上百场技术面试的Java全栈开发者&#xff0c;我深知面试过程中的痛点和难点。这份面试实录不同于市面上常见的面试题合集&#xff0c;而是基于真实面试场景的深度复盘&#xff0c;涵盖了从Java基础到分布式架构的全栈知识体系。它不仅记录了高频考点&…

作者头像 李华
网站建设 2026/8/23 20:13:39

C++模板与特化:泛型编程核心机制详解

1. 项目概述&#xff1a;为什么我们需要模板与特化&#xff1f;如果你写过C&#xff0c;尤其是写过一些需要处理多种数据类型的通用代码&#xff0c;那你一定遇到过这样的场景&#xff1a;写一个max函数&#xff0c;为了支持int、double、string&#xff0c;你不得不写三个几乎…

作者头像 李华
网站建设 2026/8/23 20:10:04

Java全栈工程师面试深度解析与技术要点

1. 面试全景&#xff1a;一场技术深潜的旅程 去年我以面试官身份参与了公司Java全栈岗位的招聘&#xff0c;连续两周的高强度技术面让我深刻体会到&#xff1a;优秀的全栈工程师绝不是简单掌握Spring和Vue的"API调用师"&#xff0c;而是能贯通前后端技术栈、具备系统…

作者头像 李华
网站建设 2026/8/23 20:08:17

上海计算机学会|2026年2月月赛|T2奇怪的展开式|顺序输出解法

题目链接 更好的阅读体验&#xff1f; 前提须知&#xff1a; 变量名称&#xff1a; t 几进制数 n 数串 h 数串n的长度 e 次方数 首先先进行输入 然后获取长度&#xff08;肯定是必要的这样才能知道后面要循环几次&#xff09; 创建变量e用来统计次幂是多少 每一次会-1 下…

作者头像 李华
网站建设 2026/8/23 20:02:44

手写VIO:从IMU运动学与视觉几何基础入门视觉惯性里程计

1. 项目缘起&#xff1a;为什么从“手写VIO”开始&#xff1f;如果你正在接触机器人、无人机或者自动驾驶&#xff0c;那么“VIO”这个词大概率已经在你眼前晃过无数次了。VIO&#xff0c;视觉惯性里程计&#xff0c;简单说就是让机器同时用“眼睛”&#xff08;相机&#xff0…

作者头像 李华
网站建设 2026/8/23 20:01:04

OpenCV与YOLO:零基础两个月完成计算机视觉毕业设计

如果你希望在两个月内从零入门计算机视觉&#xff0c;并完成一篇结合AI技术的交叉学科论文或毕业设计&#xff0c;那么OpenCV与YOLO的组合是一个极具可行性的技术路径。这个方案的核心优势在于&#xff1a;它不要求你具备深厚的数学或算法背景&#xff0c;而是通过成熟的工具库…

作者头像 李华