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

路由追踪核心技术深度解析:Traceroute与Tracert命令实战指南(跨平台/抓包/网络安全防护)

目录

路由器是什么?

路由器的基本功能:

路由追踪技术(Traceroute)

路由追踪的工作原理

实现技术

路由追踪的输出示例

路由追踪的用途

traceroute 命令(Linux 和 macOS)

基本语法

常用选项

示例

tracert 命令(Windows)

基本语法

常用选项

示例

traceroute 和 tracert 输出解释

输出说明:

总结


路由器是什么?

路由器(Router)是一种网络设备,主要用于连接多个网络,并通过 IP 地址转发数据包,从一个网络到另一个网络。路由器位于 OSI 模型的网络层(第三层),负责决定数据包的路径,确保数据能够高效地从源设备传输到目的设备。

路由器的基本功能:
  • 路由选择:根据目标 IP 地址决定数据包的最佳转发路径。
  • 分割广播域:通过划分子网和处理不同的 IP 地址,减少广播流量。
  • IP 地址分配和转换:例如,NAT(网络地址转换)可以帮助多个内部设备共享一个公共 IP 地址。
  • 安全性:路由器通常包括防火墙功能,通过筛选和控制传入或传出的流量来增强网络安全。

路由追踪技术(Traceroute)

路由追踪(Traceroute) 是一种用于分析数据包从源主机到目标主机经过的路径的网络诊断工具。Traceroute 使用 ICMP 协议(或有时使用 UDP)来发送数据包,并逐跳地测量每一跳(每个路由器)的响应时间,从而帮助网络管理员识别网络延迟和链路故障。


路由追踪的工作原理
  1. TTL(Time-to-Live):Traceroute 通过逐步增加每个数据包的 TTL 值来控制数据包的跳数。TTL 是一个字段,表示数据包在网络中可以经过的最大路由跳数。每经过一个路由器,TTL 值会减少 1,当 TTL 值减至 0 时,路由器会丢弃该数据包并返回一个 ICMP "超时" 错误消息。

  2. 逐跳发送数据包:Traceroute 首先发送一个 TTL 为 1 的数据包,数据包经过第一个路由器后 TTL 被减为 0,这时该路由器返回一个 ICMP 超时消息。接着,Traceroute 发送一个 TTL 为 2 的数据包,直到到达目标设备。通过这种方式,每一跳都会返回一个 ICMP 超时消息,从而告知路由器的 IP 地址和响应时间。

  3. 记录路径信息:每收到一个 ICMP 超时消息,Traceroute 记录下该消息的返回时间,并显示该路由器的 IP 地址。通过多个数据包和每一跳的超时消息,Traceroute 可以显示完整的路径。

  4. 测量响应时间:Traceroute 会计算每个路由器的响应时间,帮助分析哪些路由器可能存在延迟或丢包现象。


实现技术

Traceroute 的实现依赖于以下关键技术:

  • ICMP 超时消息:在 TTL 到达 0 时,路由器会返回 ICMP 超时消息给源主机。源主机根据这些信息推断出路由路径。

  • UDP 或 ICMP Echo Request:虽然很多时候使用 ICMP Echo Request(Ping)进行路由追踪,但有时使用 UDP 数据包,尤其是在防火墙和路由器对 ICMP 有严格控制时。Traceroute 默认发送 UDP 数据包给目的地的高端口,目标系统不响应时会返回 ICMP 超时消息。

  • TTL 控制:通过逐步增加 TTL 值(从 1 开始),让每个路由器依次响应,直到到达目标地址。

路由追踪的输出示例
traceroute to google.com (172.217.5.78), 30 hops max, 60 byte packets1  192.168.1.1 (192.168.1.1)  1.210 ms  1.350 ms  1.440 ms2  10.1.1.1 (10.1.1.1)  5.670 ms  5.755 ms  5.835 ms3  209.85.248.246 (209.85.248.246)  15.182 ms  15.285 ms  15.352 ms4  216.239.50.78 (216.239.50.78)  16.523 ms  16.589 ms  16.698 ms5  172.217.5.78 (172.217.5.78)  17.109 ms  17.306 ms  17.582 ms

在输出中,每一行代表一个路由器的信息,包括:

  • 路由器的 IP 地址
  • 各跳的响应时间(通常以毫秒为单位)

路由追踪的用途

  • 诊断网络故障:通过显示每一跳的响应时间,帮助管理员识别可能的延迟问题或丢包现象。
  • 分析网络拓扑:Traceroute 可以显示从源主机到目标主机的路径,帮助管理员了解数据包经过的路由路径。
  • 网络优化:通过分析路径中的每一跳,网络管理员可以识别和优化网络中的瓶颈。

traceroutetracert 是用于网络诊断的工具,它们的主要作用是追踪数据包从源主机到目标主机的路径,并测量每一跳(路由器)之间的延迟。

这两个命令基本上是执行相同的功能,但它们分别用于不同的操作系统平台:traceroute 主要用于 Linux 和 macOS,而 tracert 则是 Windows 系统的命令。


traceroute 命令(Linux 和 macOS)

基本语法
traceroute [options] <hostname or IP address>
常用选项
  1. -m <max_hops>:设置最大跳数(默认是 30)。

    traceroute -m 20 google.com
    

    这个命令会设置最大跳数为 20,限制追踪最多经过 20 个路由器。

  2. -w <timeout>:设置等待每个响应的超时时间,单位是秒。

    traceroute -w 2 google.com
    

    该命令会设置超时时间为 2 秒。如果超时,Traceroute 会报告该跳没有响应。

  3. -n:显示数字格式的 IP 地址而不是尝试解析为域名。

    traceroute -n google.com
    

    这样,你会看到 IP 地址,而不是路由器的主机名。

  4. -I:使用 ICMP Echo Request(与 ping 使用相同的 ICMP 协议)代替默认的 UDP 数据包发送。

    traceroute -I google.com
    

    通过这种方式,Traceroute 使用 ICMP 数据包进行追踪,而不是默认的 UDP 数据包。

  5. -p <port>:设置发送数据包的端口(适用于 UDP 数据包)。

    traceroute -p 80 google.com
    

    设置使用 80 端口进行追踪,通常用于测试 Web 服务的连通性。

  6. -q <nqueries>:指定每跳发送的查询次数(默认是 3)。

    traceroute -q 1 google.com
    

    这个命令只发送一次查询包,而不是默认的三次。

示例
traceroute -m 20 -n google.com

这条命令将会:

  • 设置最大跳数为 20
  • 仅显示 IP 地址而不是解析主机名

tracert 命令(Windows)

基本语法
tracert [options] <hostname or IP address>
常用选项
  1. -h <max_hops>:设置最大跳数(默认是 30)。

    tracert -h 20 google.com
    

    设置最大跳数为 20。

  2. -w <timeout>:设置等待每个响应的超时时间,单位是毫秒(默认是 4000 毫秒)。

    tracert -w 1000 google.com
    

    这条命令会设置超时时间为 1000 毫秒(1 秒)。

  3. -d:显示数字格式的 IP 地址,而不解析域名。

    tracert -d google.com
    

    这条命令会显示 IP 地址而不是主机名。

  4. -4:强制使用 IPv4 地址进行追踪。

    tracert -4 google.com
    
  5. -6:强制使用 IPv6 地址进行追踪。

    tracert -6 google.com
    
示例
tracert -h 20 -w 1000 google.com

这条命令将会:

  • 设置最大跳数为 20
  • 设置每个响应的超时时间为 1000 毫秒(1 秒)

traceroutetracert 输出解释

无论是在 Linux 还是 Windows 系统中,命令的输出通常如下所示:

traceroute to google.com (172.217.5.78), 30 hops max, 60 byte packets1  192.168.1.1 (192.168.1.1)  1.210 ms  1.350 ms  1.440 ms2  10.1.1.1 (10.1.1.1)  5.670 ms  5.755 ms  5.835 ms3  209.85.248.246 (209.85.248.246)  15.182 ms  15.285 ms  15.352 ms4  216.239.50.78 (216.239.50.78)  16.523 ms  16.589 ms  16.698 ms5  172.217.5.78 (172.217.5.78)  17.109 ms  17.306 ms  17.582 ms
输出说明:
  • 行号:每一行代表一个跳点(路由器)。
  • IP 地址:每跳的路由器的 IP 地址(或域名,如果解析成功)。
  • 响应时间:每个数据包从当前路由器返回的时间(通常为毫秒),会显示多个响应时间(默认是 3 次)。

总结

  • traceroute 是 Linux 和 macOS 的命令,用于显示从源设备到目标设备的路径。
  • tracert 是 Windows 中类似的命令,功能相同。
  • 两者可以使用多种选项来控制输出,设置超时时间、最大跳数等,并提供详细的网络路径和延迟信息。

通过这些命令,你可以详细了解数据包在网络中经过的路由,帮助识别网络延迟和问题。

  • MTR:结合了 Ping 和 Traceroute 的功能,可以实时显示路径上每一跳的网络状态。


喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

相关文章:

路由追踪核心技术深度解析:Traceroute与Tracert命令实战指南(跨平台/抓包/网络安全防护)

目录 路由器是什么&#xff1f; 路由器的基本功能&#xff1a; 路由追踪技术&#xff08;Traceroute&#xff09; 路由追踪的工作原理 实现技术 路由追踪的输出示例 路由追踪的用途 traceroute 命令&#xff08;Linux 和 macOS&#xff09; 基本语法 常用选项 示例 …...

音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介

一、引言 RTP封装H.264时&#xff0c;RTP对NALU Header的nal_unit_type附加了扩展含义。 由《音视频入门基础&#xff1a;H.264专题&#xff08;4&#xff09;——NALU Header&#xff1a;forbidden_zero_bit、nal_ref_idc、nal_unit_type简介》可以知道&#xff0c;nal_unit…...

HTTP GET 请求示例

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是华为公司自主研发的面向全场景的分布式操作系统&#xff0c;旨在为用户提供一个安全、流畅且跨设备无缝连接的体验。它支持多种终端设备&#xff0c;如智能手机、平板电脑、智能电视、汽车等&#xff0c;并实现了模块化解耦&am…...

GO 快速升级Go版本

由于底层依赖升级了&#xff0c;那我们也要跟着升&#xff0c;go老版本已经不足满足需求了&#xff0c;必须要将版本升级到1.22.0以上 查看当前Go版本 命令查看go版本 go version [rootlocalhost local]# go version go version go1.21.4 linux/amd64 [rootlocalhost local]# …...

ELK搭建初入

ELK搭建&#xff1a; 1、安装ElasticSearch &#xff08;用于存储收集到的日志信息&#xff09; 解压安装包 tar -xzvf elasticsearch-8.17.2-linux-x86_64.tar.gz 启动es&#xff1a;bin/elasticsearch –d&#xff08;默认端口号9200&#xff09; 浏览器输入es地址。出现…...

【redis】数据类型之Bitfields

Redis的Bitfields&#xff08;位域&#xff09;与Bitmaps一样&#xff0c;在Redis中并不是一种独立的数据类型&#xff0c;而是一种基于字符串的数据结构&#xff0c;用于处理位级别的操作。允许用户将一个Redis字符串视作由一系列二进制位组成的数组&#xff0c;并对这些位进行…...

vscode软件中引入vant组件

一、vant简介 Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网&#xff1a;介绍 - Vant Weapp 里面的快速上手的教程&a…...

DDR3模块、HDMI、晶振的布局原则

DDR3模块的布局原则 1.1片DDR就尽量靠近 我们CPU去摆放 2.DDRx2片&#xff0c;相对CPU需要严格对称 3.DDR滤波电容靠近管脚进行放置 4.端接匹配电阻摆放&#xff1a;串联端接电阻放置CPU端&#xff0c;并联端接电阻放置DDR端 5.地址线、控制线、时钟线都是单向传输&#xff0c…...

夜莺监控 - 边缘告警引擎架构详解

前言 夜莺类似 Grafana 可以接入多个数据源&#xff0c;查询数据源的数据做告警和展示。但是有些数据源所在的机房和中心机房之间网络链路不好&#xff0c;如果由 n9e 进程去周期性查询数据并判定告警&#xff0c;那在网络链路抖动或拥塞的时候&#xff0c;告警就不稳定了。所…...

【CSP/信奥赛通关课(六):信奥赛STL专题】

CSP/信奥赛通关课&#xff08;六&#xff09;&#xff1a;信奥赛STL专题 课程简介&#xff1a; 讲解信奥赛C中的STL核心组件&#xff1a;容器、迭代器、算法等&#xff0c;分析重点案例&#xff0c;让学生在实践的过程中熟练掌握信奥赛C相关的STL重要知识点。 课程教学目标&…...

【数据结构初阶第十五节】堆的应用(堆排序 + Top-K问题)

必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。云边有个稻草人-CSDN博客 对于本节我们要提前掌握前一节课堆的相关实现才能学好本次的知识&#xff0c;一定要多画图多敲代码看看实现的效果是啥&#xff08;Crazy&#xff01;&#xff09;开始吧&#xff01; …...

SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系

下面是 SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系&#xff0c;包含它们的英文全称和中文全称&#xff1a; 属性SSL/TLS 协议SSL证书SSH 协议英文全称Secure Sockets Layer / Transport Layer SecuritySecure Sockets Layer CertificateSecure Shell Protocol中文全称安全…...

数据结构与算法-图论-最短路和其他的结合

介绍 最短路算法常与深度优先搜索&#xff08;DFS&#xff09;、动态规划&#xff08;DP&#xff09;、二分答案、拓扑排序等算法结合使用&#xff1a; - 最短路与DFS结合&#xff1a;在一些图的路径问题中&#xff0c;当需要访问特定的多个结点&#xff0c;且数据范围较小时…...

C++day6

编写一个如下场景&#xff1a; 有一个英雄Hero类&#xff0c;私有成员&#xff0c;攻击&#xff0c;防御&#xff0c;速度&#xff0c;生命值&#xff0c;以及所有的set get 方法 编写一个 武器 Weapon 类&#xff0c;拥有私有成员攻击力&#xff0c;以及set get 方法 编写一个…...

【初阶数据结构】星河中的光影 “排” 象:排序(下)

文章目录 4.交换排序4.1 冒泡排序&#xff08;BubbleSort&#xff09;4.2 快速排序&#xff08;QuickSort&#xff09;4.2.1 hoare版本4.2.2 挖坑法4.2.3 前后指针法4.2.4 非递归实现 5.归并排序&#xff08;MergeSort&#xff09;5.1 递归实现5.2 非递归实现5.2.1 一次性全部拷…...

C++ 练习1

阐述g 有哪些常用的选项&#xff0c;该选项有什么作用 选项作用-o <file>指定输出文件名&#xff08;默认生成 a.out&#xff09;-c仅编译生成目标文件&#xff08;.o 文件&#xff09;&#xff0c;不链接-E只进行预处理&#xff0c;输出预处理后的代码&#xff08;展开…...

Ajax数据采集与分析详解

文章目录 1. 什么是 Ajax&#xff1f;2. Ajax 的工作原理3. Ajax 在网页中的应用场景4. 爬取 Ajax 数据的方法4.1 分析网络请求4.2 模拟 Ajax 请求4.3 使用 Selenium 模拟浏览器4.4 使用 Headless 浏览器 5. 处理动态参数6. 处理分页和滚动加载7. 处理反爬虫机制8. 数据存储9. …...

协方差(Covariance)与得分函数:从Fisher信息矩阵看统计关联

协方差与得分函数&#xff1a;从Fisher信息矩阵看统计关联 协方差&#xff08;Covariance&#xff09;是统计学中一个基础但强大的概念&#xff0c;它描述了两个随机变量之间的关系。在Fisher信息矩阵中&#xff0c;协方差以一种特别的形式出现&#xff1a;得分函数的协方差。…...

【CSS 选择器的特异度 CSS 继承 CSS 求值过程解析 CSS 布局方式及相关技术】

以下是关于 CSS 选择器特异度、继承、求值过程及布局技术 的详细解析&#xff0c;结合核心概念和实际应用场景&#xff1a; 一、CSS 选择器特异度&#xff08;Specificity&#xff09; 1. 特异度规则 特异度用于决定当多个选择器作用于同一元素时&#xff0c;哪个样式优先级更…...

Vue+ElementPlus的一些问题修复汇总

目录 一、ElementPlusVue-router做侧边栏问题 二、 组件样式问题 2.1修改文字颜色、大小、粗细、边框的颜色 2.2修改聚焦后文字的颜色、边框的颜色 2.3修改鼠标悬浮时文字的颜色、边框的颜色 三、 组件样式问题 3.1修改文字颜色、大小、粗细 四、 样式问题 4.1当数据为空…...

单链表删除算法(p=L; j=0;与p=p->next;j=1的辨析)

算法描述 Status ListDelete&#xff08;LinkList &L,int i&#xff09; { //在带头结点的单链表 L 中&#xff0c;删除第 i 个元素 pL; j0; while ((p->next) && (j<i-1)) {pp->next; j;} if (!(p->next)||(j>i-1)) return ERROR; qp->nex…...

从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯

目录 前言 HAL库对GPIO的抽象 核心分析&#xff1a;HAL_GPIO_Init 前言 我们终于到达了熟悉的地方&#xff0c;对GPIO的初始化。经过漫长的铺垫&#xff0c;我们终于历经千辛万苦&#xff0c;来到了这里。关于GPIO的八种模式等更加详细的细节&#xff0c;由于只是点个灯&am…...

vue2项目打包后js文件过大, 首次加载缓慢

vue2项目打包后js文件过大, 首次加载缓慢 安装插件 npm i compression-webpack-plugin6.1.1 -D配置vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin)module.exports {configureWebpack: {plugins:[new CompressionWebpackPlugin({filen…...

llama.cpp 一键运行本地大模型 - Windows

文章目录 llama.cpp 一键运行本地大模型 - Windows嘿&#xff0c;咱来唠唠 llama.cpp 这玩意儿&#xff01;gguf 格式是啥&#xff1f;咱得好好说道说道基座模型咋选&#xff1f;所需物料&#xff0c;咱得准备齐全咯核心命令&#xff0c;得记牢啦运行方式咋选&#xff1f;测试应…...

Android 老项目 jcenter 库失效

最近重新维护了一些老项目发现大部分jcenter库失效了&#xff0c; Could not resolve com.xx:2.1.3. 如果你也遇到了&#xff0c;不妨试试 替换为 aliyun的jcenter服务&#xff0c;就不用一个个找代替库了。 project 下的 build.gradle 文件添加&#xff1a; maven { url htt…...

MyBatis简明教程

MyBatis 是一个用于简化数据库操作的持久层框架&#xff0c;它的核心思想是 将 SQL 与 Java 代码解耦&#xff0c;让开发者专注于 SQL 的编写&#xff0c;同时自动处理重复的数据库操作步骤。 一、核心思想&#xff1a;SQL 与 Java 解耦 传统 JDBC 需要开发者手动管理数据库连…...

【Golang 面试题】每日 3 题(六十八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

DeepSeek个人知识库

deepseek构建个人知识库 安装软件链接 : 安装链接 先在本地把deepseek跑起来&#xff0c;本地部署deepseek见前文链接: 本地部署ollama # 目前软件只支持1.5b小模型&#xff0c;将就着用 ollama run deepseek-r1:1.5b等服务器启动后开启软件 上传文件 输入消息 &#xff08…...

力扣练习之字符串的最大公因子

使用语言&#xff1a;c 题目&#xff1a; 对于字符串 s 和 t&#xff0c;只有在 s t t t ... t t&#xff08;t 自身连接 1 次或多次&#xff09;时&#xff0c;我们才认定 “t 能除尽 s”。 给定两个字符串 str1 和 str2 。返回 最长字符串 x&#xff0c;要求满足 x 能…...

姿态矩阵/旋转矩阵/反对称阵

物理意义&#xff0c;端点矢量角速率叉乘本身向量&#xff1b; 负号是动系b看固定系i是相反的&#xff1b; 一个固定 在惯性导航解算中&#xff0c;旋转矢量的叉乘用于描述姿态矩阵的微分方程。你提到的公式中&#xff0c; ω i b b \boldsymbol{\omega}_{ib}^b \times ωibb…...

项目一 - 任务3:搭建Java集成开发环境IntelliJ IDEA

通过本次实战&#xff0c;我们成功搭建了Java集成开发环境IntelliJ IDEA&#xff0c;并完成了多个任务。首先&#xff0c;安装了IntelliJ IDEA并进行了个性化设置&#xff0c;如选择主题、调整字体和编码等。接着&#xff0c;创建了Java项目、包和类&#xff0c;编写并运行了简…...

C++的类型转换

目录 一、隐式类型转换的触发场景 1.基本数据类型间的转换 i.提升转换 ii.截断转换 2.类与对象的转换 i.单参数构造函数 ii.类型转换运算符 3.继承体系中的指针/引用转换 向上转型 二、隐式转换的风险与问题 1.意外行为 2.二义性错误 3.性能损耗 三、C强制类型转…...

嵌入式项目:STM32刷卡指纹智能门禁系统

本文详细介绍基于STM32的刷卡指纹智能门禁系统。 获取资料/指导答疑/技术交流/选题/帮助&#xff0c;请点链接&#xff1a; https://gitee.com/zengzhaorong/share_contact/blob/master/stm32.txt 1 系统功能 1.1 功能概述 本系统由STM32硬件端&#xff08;下位机&#xff09;…...

DeepSeek基础之机器学习

文章目录 一、核心概念总结&#xff08;一&#xff09;机器学习基本定义&#xff08;二&#xff09;基本术语&#xff08;三&#xff09;假设空间&#xff08;四&#xff09;归纳偏好&#xff08;五&#xff09;“没有免费的午餐”定理&#xff08;NFL 定理&#xff09; 二、重…...

Docker 搭建 Nginx 服务器

系列文章目录 Docker 搭建 Nginx 服务器 系列文章目录前言一、准备工作二、设置 Nginx 容器的目录结构三、启动一个临时的 Nginx 容器来复制配置文件四、复制 Nginx 配置文件到本地目录五、删除临时 Nginx 容器六、创建并运行 Nginx 容器&#xff0c;挂载本地目录七、修改 ngin…...

【Docker基础】理解 Docker:本质、性质、架构与核心组件

文章目录 Docker 本质Docker 的引擎迭代Docker 和虚拟机的区别Docker 为什么比虚拟机资源利用率高&#xff0c;速度快&#xff1f;Docker 和 JVM 虚拟化的区别Docker 版本1. LXC (Linux Containers)2. libcontainer3. Moby4. docker-ce5. docker-ee总结&#xff1a; Docker 架构…...

QT:QLinearGradient、QRadialGradient、QConicalGradient

QLinearGradient QLinearGradient 是 Qt 框架中用于创建线性渐变的类&#xff0c;它允许在图形绘制中实现颜色沿着一条直线的平滑过渡效果。以下是关于 QLinearGradient 的详细介绍&#xff1a; 基本概念&#xff1a;线性渐变是指颜色从一个点&#xff08;起始点&#xff09;沿…...

MySql:Authentication plugin ‘caching sha2 password‘ cannot be loaded

报错问题解释 在 MySQL 数据库中&#xff0c;如果你尝试使用 caching_sha2_password 插件进行认证&#xff0c;但是遇到错误信息 "Authentication plugin caching sha2 password cannot be loaded"&#xff0c;这通常意味着客户端库或者连接器不兼容或者没有正确配置…...

c++类知识点复习与总结

类 c 是一种人机交互的面向对象的编程语言&#xff0c;面向对象思想主要体现在 类 上。 类是具有相同属性和相同行为的对象的集合&#xff0c; 具有封装&#xff0c;继承&#xff0c;多态的特性。 类的定义 class 类名 { }&#xff1b; 封装 例如&#xff1a;人就是一种类…...

Redis快速入门

一、Redis介绍 Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构&#xff0c;如 字符串&#xff08;strings&#xff09;&#xff0c;散列&#xff08;has…...

嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT

目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程&#xff0c;通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…...

LLM/VLM进行票据识别工作

​ 票据识别任务的需求是给定不同类型的票据图像&#xff0c;提取出指定的字段值&#xff0c;以json格式给出结构化信息。 目前的范式包括OCR&#xff0c;OCRLLM, OCRVLM&#xff0c;VLM四种方法。 一、OCR 利用OCR技术进行图像文字识别。 例如&#xff1a;https://github.c…...

AWS SDK for Java 1.x 403问题解决方法和原因

问题表现 使用AWS SDK for Java 1.x访问S3&#xff0c;已经确认文件存在&#xff0c;且具有权限&#xff0c;仍然出现403 Forbidden应答。 解决方法 升级到AWS SDK for Java 2.x。 问题原因 AWS签名机制严格依赖请求的精确路径格式&#xff0c;任何URI的差异&#xff08;如…...

Spring Boot 项目中,JDK 动态代理和 CGLIB 动态代理的使用

在 Spring Boot 项目中&#xff0c;JDK 动态代理和 CGLIB 动态代理都是实现 AOP (面向切面编程) 的重要技术。 它们的主要区别在于代理对象的生成方式和适用范围。 下面详细介绍它们的使用场景&#xff1a; 1. JDK 动态代理 (JDK Dynamic Proxy) 原理&#xff1a; JDK 动态代理…...

蓝桥杯备赛-精卫填海-DP

精卫终于快把东海填平了&#xff01;只剩下了最后的一小片区域了。同时&#xff0c;西山上的木石也已经不多了。精卫能把东海填平吗&#xff1f; 事实上&#xff0c;东海未填平的区域还需要至少体积为 v 的木石才可以填平&#xff0c;而西山上的木石还剩下 n 块&#xff0c;每块…...

萌新学 Python 之闭包函数

闭包函数&#xff1a;在一个函数体内嵌套函数&#xff0c;是一个函数对象&#xff0c;允许在内部函数中修改或引用外部函数的变量 闭包函数对数据有封存功能 闭包函数需要满足以下几个条件&#xff1a; 1.函数必须有一个嵌套函数&#xff0c;在定义函数时&#xff0c;内部再…...

AI创作教程:用deepseek和猫箱做互动故事游戏

年轻的时候我看过典型的玛丽苏文学、小妞文学&#xff0c;老了虽然识破这是给女孩编织的琉璃般的梦&#xff0c;看起来梦幻美丽其实一击就碎&#xff0c;会伤人的碎渣渣。【叠甲完毕】 本来我想用橙光的&#xff0c;但是橙光的话&#xff0c;最好把剧本和立绘都多打磨一下。快…...

【Linux探索学习】第三十一弹——线程互斥与同步(下):深入理解确保线程安全的机制

线程互斥与同步&#xff08;上&#xff09;&#xff1a;【Linux探索学习】第三十弹——线程互斥与同步&#xff08;上&#xff09;&#xff1a;深入理解线程保证安全的机制-CSDN博客 Linux探索学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?…...

博客系统完整开发流程

前言 通过前⾯课程的学习, 我们掌握了Spring框架和MyBatis的基本使用, 并完成了图书管理系统的常规功能开发, 接下来我们系统的从0到1完成⼀个项⽬的开发. 企业开发的流程 1. 需求评审(产品经理(PM)会和运营(想口号),UI,测试,开发等沟通) ,会涉及到背景/目标/怎么做,可能会有多…...

【C++】面试常问八股

5、内存管理 野指针 野指针指的是未进行初始化或未清零的指针&#xff0c;不是NULL指针野指针产生原因及解决方案&#xff1a; 指针变量未初始化&#xff1a;指针变量定义时若未初始化&#xff0c;则其指向的地址是随机的&#xff0c;不为NULL&#xff1b;定义时初始化为NULL…...