当前位置: 首页 > news >正文

Wireshark网络抓包分析使用详解

序言

之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark,但一直没怎么专门去用过,也没去系统学习过,就想趁着备考的网络相关知识还没忘光,先来系统学下整理点笔记~

什么是抓包?抓包就是将网络传输发送与接收的数据包进行截获、分析、重发、编辑、转存等操作,也用来检查网络安全。在我们做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候,查看手机客户端发送给 server 端的包内容是否正确,就需要用到抓包工具。而工程师和程序常用的抓包工具有哪些呢?

Sniffmaster 是在 Windows ,mac和linux上运行的程序,专门用来捕获 HTTP , HTTPS和tcp,udp 的;Wireshark 能获取各类网络协议包,但是不能解密所以 Wireshark 看不懂 HTTPS 中的内容,可以运行在 Windows、Linux 和 Mac OS 上;Linux 还有个轻量级的命令行抓包工具是 tcpdump 。本人学过一点 Linux 但没了解 mac OS 这边,因此本文是主要重点分析 Wireshark,然后简单介绍 Fiddler 和 tcpdump 的使用。

学习之前最好先了解计网的网络协议和分包 等核心知识,便于理解:

一、Wireshark

1、Wireshark 认识

(1)基本信息

Wireshark 是目前最流行、功能强大的网络协议图形化分析工具 ,用于捕获和分析网络数据包,以深入了解网络流量,广泛应用于网络故障诊断、安全分析、软件开发和学习网络协议等场景。

  • 开发者 :由 Gerald Combs 开发,现由社区和 Wireshark 基金会维护。
  • 开源 :Wireshark 是免费且开源的软件,支持多种平台(Windows、macOS、Linux 等)。
  • 官网 :https://www.wireshark.org/
  • 支持的协议 :Wireshark 支持数百种网络协议(如 HTTP、TCP、UDP、DNS、SSL/TLS 等),并不断更新支持新协议。

(2)Wireshark 的功能

  • 数据包捕获 :捕获通过网络接口传输的数据包或实时流量,支持有线、无线、蓝牙等多种类型的网络。
  • 协议解码 :提供对网络协议的解码和详细分析。
  • 数据包分析 :允许查看数据包的各层内容(链路层、网络层、传输层和应用层)并支持检测和分析网络异常。
  • 数据过滤 :在捕获数据时仅抓取特定条件的流量;在已捕获的数据中筛选感兴趣的内容。
  • 图形化展示 :提供网络流量统计图、I/O 图、协议分布图等,帮助用户直观分析流量。
  • 数据导出与共享 :数据捕获可以保存为多种格式,如 .pcap、.csv 等,可以被其他网络分析工具读取。

(3)Wireshark 抓包捕获原理

Wireshark 的抓包功能依赖底层的数据链路层 访问权限,使用WinPCAP/Npcap 作为接口直接与网卡进行数据报文交换**。使用的环境大致分为两种,一种是电脑直连网络的单机环境,另外一种就是应用比较多的即连接交换机的网络环境。

单机情况 :Wireshark 直接抓取本机网卡的网络流量,默认正常工作模式,适用于分析本地通信;

交换机情况 :Wireshark 通过端口镜像ARP 欺骗 等方式获取局域网中的网络流量。

  • 端口镜像:利用交换机的接口作为镜像端口 SPAN,将局域网指定接口或 VLAN 的流量复制到镜像端口,Wireshark 运行在连接镜像端口的电脑上,从而可以捕获这里的数据流量(无法抓取加密流量)。
  • ARP 欺骗:使用工具(如 EttercapArpspoof )发送伪造的 ARP 响应,欺骗局域网中的目标设备将其流量发送到攻击者的设备,Wireshark 伪装成中间人(MITM)捕获流量后再将数据转发给真正的网关。

Wireshark 的捕获机制是监听并复制数据包流经指定接口的数据 供分析使用。

  • 监听指定接口的数据流 :Wireshark 会监控用户选择的网络接口(以太网、Wi-Fi 等)上的数据流。
  • 复制数据包到本地分析 :Wireshark 不会对网络上的实际数据包产生影响,而是将通过接口捕获到的数据包复制到本地内存中,并将其按照时间顺序记录。捕获到的数据包会被存储在内存或临时文件中,并可保存为 .pcap 文件供后续分析,若选不保存则是删除本地复制的数据包无法恢复。

(4)Wireshark 捕获主要模式(决定网卡能够接收到的数据包范围

正常模式 (Normal Mode):网卡只会捕获发送给自身的特定数据包如单播、广播和多播数据包,适合抓取与主机直接相关的流量排查本地问题

混杂模式 (Promiscuous Mode):网卡会捕获经过网络接口的所有数据包 ,可用于分析局域网内的整体通信流量 ,能查看其他主机的通信。

监视模式 (Monitor Mode):主要用于无线网络分析 802.11 协议,能够截获未与网卡关联的所有无线数据帧 (包括管理帧、控制帧和数据帧),用于调试 Wi-Fi 网络问题并测试无线网络的安全性。

(5)Wireshark 的特点

  • 跨平台支持 :支持 Windows、macOS、Linux 等操作系统。
  • 协议支持广泛 :Wireshark 支持从常见的 HTTP、DNS 到专有的工业协议。
  • 用户友好界面 :提供直观的 GUI 和强大的过滤器系统。
  • 可扩展性 :支持通过 Lua 编写插件,扩展 Wireshark 的功能。
  • 实时捕获与离线分析 :既可实时捕获流量,也可分析离线的捕获文件。

(6)安装下载

官网下载地址:Wireshark · Go Deep

下载安装 Windows x64 版本

下载完成后接着一路按照软件提示 Next 安装即可。

2、Wireshark 界面详解(Windows)

(1)Wireshark 界面认识

打开 Wireshark,主界面如下:

(2)接口列表详细分析

选择菜单栏上的“捕获”点击“选项”可以查看所有可用接口详细配置信息选项:

Wireshark 显示的捕获接口信息主要包括以下列

  • 接口名称 :每个网络接口的名称(如“本地连接 *数字”)。
  • 流量 :实时显示当前接口上的流量活动(波动的流量曲线)。
  • 链路层 :接口使用的链路层协议类型(如 Ethernet)。
  • 混杂模式 :是否启用混杂模式以捕获接口上所有的网络流量。
  • 捕获长度缓冲区监控模式 :Wireshark 捕获的相关设置和当前状态。

Wireshark 显示的各类接口的详细介绍

本地连接 数字* ”接口通常是 Windows 系统中虚拟接口或未激活的网络接口 ,可以通过设备管理器禁用。

vEthernet (WSL) ”是 WSL 创建的虚拟网络接口,用于连接 WSL 环境与主机网络并监控 WSL 应用产生的流量,IP 地址为 172.17.128.1,这通常是 WSL 的虚拟网络子网范围。

WLAN ”接口是无线网络适配器(Wi-Fi 网卡),IP 地址 192.168.2.103,用于捕获 Wi-Fi 网络中的流量。

以太网2 ”可能是本机的物理有线网卡(Ethernet),IP 地址 192.168.56.1,这通常是虚拟化软件(如 VirtualBox、VMware)创建的虚拟网络适配器,常用于虚拟机通信。

vEthernet (Default Switch) ”是 Hyper-V 虚拟化环境创建的默认交换机接口,IP 地址 172.19.176.1,通常是 Hyper-V 虚拟网络的默认子网,用于捕获 Hyper-V 虚拟机与主机或网络之间的通信流量。

Adapter for loopback traffic capture ”是环回接口,IP 地址 127.0.0.1,用于捕获本地通信流量。

Raw IP ”表示直接捕获 IP 层流量,而不依赖具体的链路层协议。

这些接口主要用于远程捕获或特定环境下的网络数据分析:

Cisco Remote Capture ”接口用于与 Cisco 设备(如路由器或交换机) 建立远程连接,从设备中抓取网络数据包,可以分析其流量或调试网络配置问题。要求有管理员权限配置 Cisco 设备并启用远程数据捕获功能。

Event Tracing for Windows (ETW) Reader ”接口可以捕获与 Windows 内核相关的网络流量或事件信息 ,利用 Windows 系统的事件跟踪机制提供对系统内部网络事件的捕获能力。

Random Packet Generator ”是一个模拟接口,用于生成随机的网络数据包,不涉及实际的网络通信 ,仅用于测试或验证数据包解码功能,常用于开发者或协议分析。

SSH Remote Capture ”通过 SSH 协议 连接远程设备,从中捕获数据包。

UDP Listener Remote Capture ”接口用于监听来自远程设备通过 UDP 协议发送的流量

Wi-Fi Remote Capture ”接口用于远程捕获 Wi-Fi 网络 流量,用于无线网络性能分析或调试。

(3)双击“WLAN”后进入如下页面开始抓包:

图示以 WLAN 抓 TCP 数据包为例

左上角红框点击即停止抓包,最左上角“文件”选择“保存”即可以保存抓包的数据,这是最基础的抓包。

从上图可知 Wireshark 操作的主界面包含 6 个部分:

  • 菜单栏:用于调试、配置
  • 工具栏:常用功能的快捷方式
  • 过滤栏:指定过滤条件过滤数据包,如上图过滤位置选了 tcp 筛选数据包
  • 数据包列表:核心区域,每一行就是一个数据包
  • 数据包详情:数据包的详细数据
  • 数据包字节:数据包对应的十六进制字节流和 ASCII 码

(4)菜单栏与工具栏与过滤栏

菜单栏位于主界面的顶部,提供全面的调试和配置选项 ,包括捕获、分析、统计和导出。

  • File(文件): 打开/保存捕获文件、导出数据包或退出程序。
  • Edit(编辑): 配置首选项、搜索数据包或清除屏幕。
  • View(视图): 定制界面布局,例如显示/隐藏工具栏、过滤栏等。
  • Capture(捕获): 设置捕获参数(选择网络接口、过滤规则等),并启动/停止捕获。
  • Analyze(分析): 应用显示过滤器、启用协议解析器或重新组装流。
  • Statistics(统计): 查看网络统计(如 IO 图表、协议层统计、端点分析等)。
  • Telephony(电话): 分析 VoIP 和 SIP 协议的流量(如 RTP 流、呼叫分析)。
  • Help(帮助): 查看帮助文档、协议参考以及关于 Wireshark 的信息。

工具栏位于菜单栏下方,提供一些常用功能的快捷方式 ,方便用户快速操作。

  • Start(开始捕获): 开始实时捕获网络流量。
  • Stop(停止捕获): 停止当前捕获。
  • Open(打开): 加载保存的捕获文件。
  • Save(保存): 将当前捕获会话保存为 .pcap 或其他格式。
  • 捕获接口选择: 选择要监控的网络接口。
  • 过滤: 应用过滤条件快速缩小分析范围。
  • 流重组: 快速查看 TCP 或 UDP 的上下文流量。
  • 其他: 包括统计功能、清除显示、显示或隐藏面板等。

过滤栏位于工具栏下方,用于设置过滤条件进行数据包列表过滤 ,支持多种形式过滤并实时显示过滤器是否有效(输入框变为绿色表示有效,红色表示无效)。

  • 基础协议 : 如 tcp、udp、icmp。
  • 条件组合 : 使用逻辑运算符如 and、or、not。
  • 字段过滤 : 如 ip.src == 192.168.1.1(过滤源 IP 是 192.168.1.1 的数据包)。

(5)数据包列表 Packet List Pane

按时间顺序排列显示捕获到的数据包 ,每一行代表一个数据包,每个数据包包含编号、时间戳、源地址、目标地址、协议、长度以及数据包信息。不同协议的数据包使用了不同的颜色区分显示,可以在菜单栏“视图”的“着色规则”里查看。

  • 编号(No.): 数据包的序号,从 1 开始。
  • 时间(Time): 数据包捕获的时间戳(相对时间或绝对时间,用户可配置)。
  • 源地址(Source): 数据包的源 IP 地址或主机名。
  • 目的地址(Destination): 数据包的目的 IP 地址或主机名。
  • 协议(Protocol): 数据包使用的协议(如 TCP、UDP、HTTP)。
  • 长度(Length): 数据包的大小(以字节为单位)。
  • 信息(Info): 数据包的简要信息(如 HTTP 请求类型、TCP 标志等)。

(6)数据包详情 Packet Details Pane

位于数据包列表下方,用于显示当前选中的数据包的详细协议层次结构解析信息

此过滤的是 tcp 所以最高到传输层

  • Frame(帧): 显示数据包的物理层基本信息(捕获时间、长度等)。
  • Ethernet(以太网): 解析数据链路层以太网帧头部信息(MAC 地址、帧类型)。
  • IP(网络层): 显示 IP 地址、TTL、标志位等。
  • TCP/UDP(传输层): 显示端口号、序列号等。
  • 应用层协议: 如 HTTP、DNS、TLS 的具体内容。

(7)数据包字节 Dissector Pane

位于界面的最下方或侧右边,显示当前选中数据包的原始数据字节流 ,可以检查协议字段的实际值。

字节流点击十六进制部分会和对应的ASCII部分的内容高亮

  • 十六进制视图: 显示数据包的二进制内容,每个字节以十六进制表示。
  • ASCII 视图: 显示数据包内容的 ASCII 表示(若不可见则显示 .)。
  • 实时定位: 点击数据包详情中的某字段,字节流中会高亮对应的内容。

3、常用基础界面操作

(1)设置显示列

数据包列表中有一些默认显示的列,我们可以添加、删除、修改显示的列。

想要在数据包列表中显示某一个字段,可以在数据包详情右键选中这个数据字段“添加为列”即可。

按 Ctrl + Shift + I 也可以实现同样的效果

  • 隐藏字段列 :在显示列的任意位置右键取消列的高亮勾选即可。
  • 删除字段列 :在指定的列名位置右键点击最下方的“Remove this Column”。

(2)设置时间

默认精确到微秒,打开工具栏的“视图”选“时间显示格式”即可设置不同格式

(3)标记和导出数据包

对于某些比较重要的数据包,可以选中右键选择最上面的“标记/取消标记”设置成高亮显示。

按 Ctrl + M 也可以实现同样的效果,按两次可以取消标记

保存全部数据包:菜单栏的“文件”和工具栏的“保存捕获文件”都可以默认保存所有已经抓取的数据包。

导出一或多个数据包:菜单栏的“文件”选择“导出特定分组”,仅选中分组是只保存选中的数据包;仅已标记分组是在当前捕获数据包中有标记时可用与多个选择,范围则也是可以多个选择。

(4)进一步分析数据包

除了单机数据包列表在数据包详情查看完整信息外,我们还可以右键列表对应的数据包选择“追踪流”查看该数据流的详细内容

一组完整的请求-响应对的数据包信息

4、过滤操作详解

Wireshark 提供了两个过滤器:抓包过滤器和显示过滤器,两者过滤思路不同。

(1)抓包过滤器(Capture Filter)

通过设置抓包过滤器,Wireshark 仅抓取符合条件的数据包 ,其他的会被直接丢弃,常用于高负载网络流量场景下减少数据存储压力和后续分析时间。

  • 作用时间 :在数据包进入捕获阶段时过滤。
  • 性能优势 :通过减少需要捕获的数据包数量,降低了存储和处理的负担。
  • 基于BPF 语法:简单但功能有限。

BPF 有四个元素可以自由组合:

  • 类型 Type:host、net、port、portrange、ether 等。
  • 方向 Dir:src、dst、src and dst、src or dst。
  • 协议 Proto:tcp、udp、http、icmp、arp、broadcast 和 multicast 等。
  • 逻辑运算符:and、or、not、!=、>、<、= 等。

BPF 语法的过滤器表达式:

[protocol] [direction] [host/port/net] [value]host 192.168.1.1         // 只抓取与 IP 地址 192.168.1.1 相关的所有数据包(包括源和目标)
tcp dst port 80          // 只抓取目标端口是 TCP 端口 80(HTTP)的数据包
!port 80               // 不抓取端口为 80 的数据包
!brocast               // 不抓取广播包
net 192.168.0.0/16       // 只抓取属于 192.168.0.0/16 子网的所有流量
tcp port 443 and src net 10.1.0.0/24  // 只抓取源网络为 10.1.0.0/24 

相关文章:

Wireshark网络抓包分析使用详解

序言 之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark&#xff0c;但一直没怎么专门去用过&#xff0c;也没去系统学习过&#xff0c;就想趁着备考的网络相关知识还没忘光&#xff0c;先来系统学下整理点笔记~ 什么是抓包&#xff1f;抓包就是将网络传输…...

linux命令行工具进阶

文章目录 前言ssh免密登录&#xff0c;免密码登录&#xff0c;公私钥查看与修改IP地址临时修改永久修改 mount临时切换根文件系统永久切换根文件系统loop文件partedinitramfsuboot command line 前言 本文记录了一些不经常用到&#xff0c;但在某个时刻需要用到的一些指令。 免…...

【Linux文件IO】Linux中标准IO的API的描述和基本用法

Linux中标准IO的API的描述和基本用法 一、标准IO相关API1、文件的打开和关闭示例代码&#xff1a; 2、文件的读写示例代码&#xff1a;用标准IO&#xff08;fread、fwrite&#xff09;实现文件拷贝(任何文件均可拷贝) 3、文件偏移设置示例代码&#xff1a; 4、fgets fputs fget…...

【netstat和ss】Windows和Linux下的,网络连接排查简单案例

网络连接排查利器&#xff1a;netstat与ss命令详解 初识netstat&#xff1a;Windows下的网络连接查看工具 需要查看本机的网络连接情况时&#xff0c;Windows系统提供了一个非常实用的命令&#xff1a;netstat。和findstr组合形成一个有用的组合命令&#xff1a; netstat -a…...

【WPF】MVVM模式实现数据绑定以及Command事件绑定

1.引用类 using System.ComponentModel2.创建Command自定义类 public class DelegateCommand : ICommand{public bool CanExecute(object parameter){if (CanExecuteFunc null)return true;return this.CanExecuteFunc(parameter);}public event EventHandler CanExecuteChan…...

Flutter快速搭建聊天

之前项目中使用的环信聊天&#xff0c;我们的App使用的Flutter开发的 。 所以&#xff0c;就使用的 em_chat_uikit &#xff0c;这个是环信开发的Flutter版本的聊天。 一开始&#xff0c;我们也用的环信的聊天&#xff0c;是收费的&#xff0c;但是&#xff0c;后面就发现&…...

网络层之IP协议

在讨论传输层时, 我们都只讨论了发送方和接收方的问题, 而没有讨论中间的网络形态的问题. 也就是数据包如何从主机传送到主机的? 如图, 主机B发送数据到主机C, 发送报文需要进行路径选择, 主机B-> F-> G-> H-> C-> D -> 主机C 这条路径是如何被选择出来的?…...

【设计模式】策略模式(Strategy Pattern)详解

策略模式&#xff08;Strategy Pattern&#xff09;详解 一、策略模式的定义 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一组算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以相互替换&#xff0c;从而让算法的…...

Elasticsearch:构建 AI 驱动的搜索体验

Elasticsearch 介绍 当你开始使用 Elastic 时&#xff0c;你将使用 Elasticsearch Relevance Engine™&#xff08;ESRE&#xff09;&#xff0c;它专为 AI 搜索应用程序提供支持。借助 ESRE&#xff0c;你可以利用一整套开发者工具&#xff0c;包括 Elastic 的文本搜索、向量…...

数据文件误删除,OceanBase中如何重建受影响的节点

当不慎误删数据文件且当前没有现成的可替换节点时&#xff0c;在OceanBase中&#xff0c;不必急于采取极端措施&#xff0c;可以考虑运用 server_permanent_offline_time 参数&#xff0c;来重建受影响的节点。 原理&#xff1a; server_permanent_offline_time 是 OceanBase数…...

MySQL面试专题

1.什么是BufferPool&#xff1f; Buffer Pool基本概念 Buffer Pool&#xff1a;缓冲池&#xff0c;简称BP。其作用是用来缓存表数据与索引数据&#xff0c;减少磁盘IO操作&#xff0c;提升效率。 Buffer Pool由缓存数据页(Page) 和 对缓存数据页进行描述的控制块 组成, 控制…...

Redmi Note 11 T pro + 刷入 LinegaOs 22.1 记录 手机已经解锁bl.

Redmi Note 11 T pro 刷入 LinegaOs 22.1 记录 手机已经解锁bl. 获取LIneagaOS源码&#xff0c; 以及https://github.com/xiaomi-mediatek-devs 这个组织提供的代码&#xff0c;非常感谢 环境要求&#xff1a; ubuntu 22.04 需要准备的依赖 sudo apt install git curl vim…...

Python+Requests+Pytest+YAML+Allure接口自动化框架

GitHub源码地址&#xff08;详细注释&#xff09;&#xff1a;源码 调试项目python自主搭建&#xff1a;附项目源码 一、项目介绍 本项目是基于 PythonRequestsPytestYAMLAllure 搭建的 接口自动化测试框架&#xff0c;用于对 REST API 进行测试。 框架的主要特点包括&#…...

如何解决Redis缓存异常问题(雪崩、击穿、穿透)

引言 Redis作为一种高性能的内存数据库&#xff0c;被广泛应用于缓存系统的构建中。然而&#xff0c;在实际应用过程中&#xff0c;我们常常会遇到三种典型的缓存异常问题&#xff1a;缓存雪崩、缓存击穿和缓存穿透。这些问题如果处理不当&#xff0c;可能会导致系统性能下降&…...

如何使用 Postman 进行接口测试?

使用 Postman 这一工具&#xff0c;可以轻松地进行接口测试。以下是一份简单的使用教程&#xff0c;帮助你快速上手。 Postman 接口测试教程&#xff1a;详细步骤及操作技巧...

记一次线上环境JAR冲突导致程序报错org.springframework.web.util.NestedServletException

一、问题描述 有个文件导入功能&#xff0c;用到了Hutool 的加密解密功能&#xff0c;本地运行完全可以&#xff0c;但是线上报错&#xff1a;“org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFou…...

VLAN实验

一&#xff1a;实验拓扑 二&#xff1a;实验需求 1、PC1和PC3所在接口为access接口&#xff0c;属于VLAN 2 2、PC2/4/5/6处于同一网段 其中PC2可以访问PC4/5/6 PC4可以访问PC5不能访问PC6 PC5不能访问PC6 3、PC1/3和PC2/4/5/6不在一个网段&#xff0c;且可以正常通讯 4、…...

FPGA中串行执行方式之状态机

FPGA中串行执行方式之状态机 在FPGA中,默认情况下,逻辑是并行执行的,因为FPGA的硬件资源是并行的。然而,在某些情况下,你可能需要某一段逻辑以串行方式执行。这可以通过以下几种方法实现:使用状态机(Finite State Machine, FSM)​、使用计数器控制、使用流水线(Pipel…...

【常用的中间件】

中间件&#xff08;Middleware&#xff09;是位于客户端和服务器之间的软件层&#xff0c;用于处理客户端请求和服务器响应之间的各种任务。中间件可以提供多种功能&#xff0c;如负载均衡、消息队列、缓存、身份验证等。以下是常用的中间件及其作用&#xff1a; 1. 消息队列中…...

spring - 十二种事务失效场景

目录 ​编辑 一、方法内部调用 1、原理: 2、结论: 3、解决方法: 1. 增加一个service,把一个事务的方法移到新增加的service方法里面,然后进行注入再调用 2. 在自己类中注入自己 3. 通过AopContentent 二、访问权限不是pubilc 三、方法用final修饰 四、没有被spr…...

python脚本处理excel文件

1.对比perl和python 分别尝试用perl和python处理excel文件&#xff0c;发现perl的比较复杂&#xff0c;比如说read excel就有很多方式 Spreadsheet::Read use Spreadsheet::ParseExcel 不同的method&#xff0c;对应的取sheet的cell方式也不一样。更复杂的是处理含有中文内…...

C#基础学习(二)C#数组生存手册:从入门到“血压拉满“的奇妙旅程

作为一只C#萌新&#xff0c;当你试图用数组装下整个世界时&#xff0c;系统可能会温柔地弹出一句**"Index was outside the bounds of the array."**。别慌&#xff01;这份求生指南将用段子教你玩转数组 一、数组是什么 数组简单来说就是由相同元素组成的一个集合&a…...

MySQL 性能优化方向

MySQL 性能优化是一个系统性的工作,涉及数据库设计、查询优化、索引优化、硬件配置等多个方面。以下是 MySQL 性能优化的主要方向和具体优化方案: 一、数据库设计优化 1. 合理设计表结构 规范化设计:避免数据冗余,确保数据一致性。适度反规范化:在查询频繁的场景下,适当…...

2025年- G26-Lc100-57.插入间隔(max、min)--java版

1.题目描述 题目翻译&#xff1a; 给定一个不重叠的区间阵列 intervals&#xff0c;其中intervals[i] [starti, endi]表示第i一个区间的起始位置和结束位置&#xff0c;并且intervals 按照起始位置starti升序排序。 另外&#xff0c;给定一个新的区间newInterval [start, e…...

Burp Suite HTTPS解密原理

HTTPS HTTPS是在HTTP的基础上增加了SSL/TLS协议&#xff0c;提供了数据的加密、完整性校验和身份认证等安全保障。HTTPS的工作过程可以分为两个阶段&#xff1a;握手阶段和数据传输阶段。 流程如下图所示&#xff1a; 通过上面的图可以看到&#xff0c;在TCP建立连接后会发起…...

【ESP32S3】esp32获取串口数据并通过http上传到前端

通过前面的学习&#xff08;前面没发过&#xff0c;因为其实就是跑它的demo&#xff09;了解到串口配置以及开启线程实现功能的工作流程&#xff0c;与此同时还有esp32作为STA节点&#xff0c;将数据通过http发送到服务器。 将这两者联合 其实是可以得到一个&#xff1a;esp32获…...

怎么查看linux是Ubuntu还是centos

要确定你的Linux系统是基于Ubuntu还是CentOS&#xff0c;可以通过几种不同的方法来进行判断。下面是一些常用的方法&#xff1a; 要快速判断 Linux 系统是 Ubuntu 还是 CentOS&#xff0c;可通过以下方法综合验证&#xff1a; 一、查看系统信息文件 1. /etc/os-release 文件…...

Qt进程间通信:QSharedMemory 使用详解

1. 什么是 QSharedMemory&#xff1f; QSharedMemory 是 Qt 中用于进程间共享内存的类。它允许多个进程共享一块内存区域&#xff0c;从而避免数据传输时的 IO 操作&#xff0c;提高通信速度。通过共享内存&#xff0c;多个进程可以直接读写这块内存&#xff0c;而无需经过文件…...

【day1】数据结构刷题 链表

一 反转链表 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]…...

使用redis设置店铺状态

知识点&#xff1a; 将前端传过来的status&#xff08;0&#xff0c;1&#xff09;通过redis对象以key&#xff0c;values值的形式存放在redis中。 #设置店铺状态 redisTemplate.opsForValue().set(KEY,status); #获取店铺状态 Integer status (Integer) redisTemplate.o…...

基于python+django的商城网站-电子商城管理系统源码+运行

基于 python 开发的电子商城网站&#xff0c;平台采用 B/S 结构&#xff0c;后端采用主流的 Python 语言进行开发&#xff0c;前端采用主流的 Vue.js 进行开发。该系统是给师弟做的课程作业。同学们可以拿去自用。学习问题可以留言哦。 整个平台包括前台和后台两个部分。 前台…...

深度解读 C 语言运算符:编程运算的核心工具

一、引言 在 C 语言的编程世界中&#xff0c;运算符是构建逻辑与运算的基石&#xff0c;它如同一位指挥家&#xff0c;精准地协调着程序中各种数据的操作与处理。C 语言丰富多样的运算符涵盖了算术、关系、逻辑、位运算、赋值以及其他杂项运算等多个领域&#xff0c;为开发者提…...

docker中间件部署

1.docker安装 # 1.卸载旧版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 2.需要的安装包 yum install -y yum-utils# 3.设置镜像的仓库 # 3.1.默认是国外的&#x…...

【Python Cookbook】字符串和文本(二)

字符串和文本&#xff08;二&#xff09; 6.字符串忽略大小写的搜索替换7.最短匹配模式8.多行匹配模式9.将 Unicode 文本标准化10.在正则式中使用 Unicode 6.字符串忽略大小写的搜索替换 你需要以忽略大小写的方式搜索与替换文本字符串。 为了在文本操作时忽略大小写&#xf…...

docker pull时报错:https://registry-1.docker.io/v2/

原文&#xff1a;https://www.cnblogs.com/sdgtxuyong/p/18647915 https://www.cnblogs.com/OneSeting/p/18532166 docker 换源&#xff0c;解决连接不上的问题。 编辑以下文件&#xff0c;不存在则创建&#xff1a; vim /etc/docker/daemon.json {"registry-mirrors&qu…...

DeepSeek助力文案,智能音箱如何改变你的生活?

你好&#xff0c;我是三桥君 你有没有为写智能音箱的宣传文案而抓耳挠腮过&#xff1f;三桥君在这方面可是有些感想&#xff0c;今天就来给你唠唠怎么用DeepSeek写出超赞的智能音箱宣传文案。 首先&#xff0c;你得给DeepSeek喂足“料”。这就好比做饭&#xff0c;你得准备好各…...

【机器学习】什么是随机森林?

什么是随机森林&#xff1f; 随机森林&#xff08;Random Forest&#xff09;是一种集成学习方法&#xff0c;它通过组合多个决策树来提高预测的准确性和鲁棒性。可以把随机森林看作是“森林”&#xff0c;而森林中的每棵树就是一个决策树。每棵树独立地做出预测&#xff0c;最…...

Nature Machine Intelligence 嵌入式大语言模型使机器人能够在不可预测的环境中完成复杂的任务

近期英国爱丁堡大学发表Nature Machine Intelligence研究工作&#xff0c;提出了一种名为ELLMER&#xff08;具身大型语言模型支持机器人&#xff09;的创新框架&#xff0c;通过整合大型语言模型&#xff08;如GPT-4&#xff09;、检索增强生成&#xff08;RAG&#xff09;、视…...

[特殊字符] 2025蓝桥杯备赛Day13——P10984 [蓝桥杯 2023 国 Python A] 残缺的数字

&#x1f50d; 2025蓝桥杯备赛Day13——P10984 [蓝桥杯 2023 国 Python A] 残缺的数字 &#x1f680; 题目速览 题目难度&#xff1a;⭐⭐⭐&#xff08;需掌握位运算与组合数学&#xff09; 考察重点&#xff1a;二进制状态处理、位运算、乘法原理、枚举 P10984 [蓝桥杯 2…...

【AcWing】算法基础课-数学知识

目录 1、质数 1.1 试除法判定质数 暴力解法 优化解法 1.2 分解质因数(试除法) 暴力解法 优化解法 1.3 筛质数 朴素筛法(nlogn) 埃氏筛法(nloglogn) 线性筛法(n) 2、约数 2.1 试除法求约数 2.2 约数个数 2.3 约数之和 2.4 最大公约数 实现方法一 实现方法二 …...

JVM常见概念之条件移动

问题 当我们有分支频率数据时&#xff0c;有什么有趣的技巧可以做吗&#xff1f;什么是条件移动&#xff1f; 基础知识 如果您需要在来自一个分支的两个结果之间进行选择&#xff0c;那么您可以在 ISA 级别做两件不同的事情。 首先&#xff0c;你可以创建一个分支&#xff…...

k8s存储介绍(二)Secret

Kubernetes&#xff08;K8s&#xff09;提供了一种安全的方式来存储和管理敏感信息&#xff0c;如密码、OAuth 令牌和 SSH 密钥&#xff0c;这就是 Secret。使用 Secret 可以避免将敏感数据硬编码到 Pod 规范或容器镜像中&#xff0c;从而提高安全性和可管理性。 1. Secret 的…...

Css布局-常规流笔记

https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Normal_Floworghttps://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Normal_Flow 前言 常规流布局是html元素默认布局&#xff0c;凡是没有设置过css布局的html元素&#xff0c;默认布局方式称为常…...

Linux系统管理与编程08:任务驱动综合应用

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 [环境] windows11、centos7.9.2207、zabbix6、MobaXterm、Internet环境 [要求] zabbix6.0安装环境&#xff1a;Lamp&#xff08;linux httpd mysql8.0 php&#xff09; [步骤] 3 …...

基于 OCO - 2 氧气 A 带辐射数据与地面台站气压观测数据构建近地面气压监测算法方案

基于 OCO - 2 氧气 A 带辐射数据与地面台站气压观测数据构建近地面气压监测算法方案 一、数据获取与准备 (一)OCO - 2 氧气 A 带辐射数据 数据下载:从 OCO - 2 官方数据发布平台(如 NASA 的相关数据存储库),按照研究所需的时间范围(例如,近 5 年的数据以获取足够的样本…...

Linux centos7 虚拟用户访问脚本

下面是脚本&#xff1a; #!/bin/bash #function:创建 vsftpd 虚拟用户脚本 #author: 20250324 IT小旋风# 判断是否是 root 用户 if [ "$USER" ! "root" ]; thenecho "不是 root 用户&#xff0c;无法进行安装操作"exit 1 fi# 关闭防火墙 system…...

HTTP 协议中请求与响应的详细解析

前言&#xff1a;HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于在互联网上传输超文本的协议 --由一个请求和响应组成&#xff0c;一个完整的 HTTP 请求由请求行&#xff08;Request Line&#xff09;、请求头&#xff08;Headers&…...

Collectors.toMap / list 转 map

前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重复值&#xff0c;则会报错Duplicate key xxx, 解决方案 两个重复id中&#…...

根据模板将 Excel 明细数据生成 PDF 文档 | PDF实现邮件合并功能

在日常办公中&#xff0c;我们常常会面临这样的需求&#xff1a;依据特定的模板&#xff0c;把 Excel 里的每一条数据转化为单独的 PDF 文档&#xff0c;且这些 PDF 文档中的部分内容会根据 Excel 数据动态变化。这一功能不仅能高效完成任务&#xff0c;还支持图片的动态替换&a…...

<KeepAlive>和<keep-alive>有什么区别

在不同的前端技术框架里&#xff0c;<KeepAlive> 和 <keep-alive> 有着不同的含义与使用场景&#xff0c;下面分别从 Vue 2 和 Vue 3 来为你详细介绍它们的区别。 Vue 2 中的 <keep-alive> 在 Vue 2 里&#xff0c;<keep-alive> 属于内置组件&#x…...