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

TTL 传输中过期问题定位

问题:

   工作环境中有一个ac+ap的环境,ac的wan口ip是192.168.186.195/24,ac上lan上有vlan205,其ip子接口地址192.168.205.1/24,ac采用非nat模式,而是路由模式,在上级路由器上有192.168.205.0/24指向ac的wan口地址192.168.186.195,而ac上有缺省路由0.0.0.0/0指向192.168.186.1,pc地址是192.168.186.118/24,gw是192.168.186.1。

现在ping192.168.205.1,打印TTL 传输中过期。如下图:

排查过程:

ping消息属于icmp协议的诊断工具命令,有导通的正常对request消息发出的reply回显和不正常的错误报告,或者没有在等待超时后,没有reply或者错误回显三种情况。ttl传输中过期,属于错误回显。

icmp消息四种功能描述:

  1. 错误报告:当IP数据包无法到达目的地或发生其他错误时,ICMP可以生成错误报告并将其返回给源主机。
  2. 诊断工具:ICMP还可以用于网络诊断和故障排除,例如ping命令。
  3. 路由选择:ICMP可以提供路由选择信息,帮助路由器选择最优路径。
  4. 流量控制:ICMP还可以用于控制网络流量,例如通过发送ICMP重定向消息,告知主机更好的路由选择,从而减少不必要的网络流量。

 icmp消息常见类型:

发现ac的地址回了 TTL 传输中过期,ttl exceeded是数据包传输过程中的节点收到ttl=1的包后,发出icmp消息给源主机,并丢弃该包数据。icmp发出的源ip是由节点的路由表决定的,会用正常的访问时的出口ip地址给源ip返回一个icmp消息。

抓包看到如下:

知道Time-to-live exceeded是当节点设备收到ip层ttl为1的包时,发给源ip,告知这个数据包的在网络中传输极限已经到达,将被丢弃。

看一下路由器route print  -4 回车

查一下arp表,看一下对应192.168.186.0网段的mac地址情况,知道一下数据的来源:

arp  -a | findstr  186.

C:\Windows\System32>arp  -a | findstr  186.  回车 findstr是在前一个命令里查找对应字符串
接口: 192.168.186.118 --- 0x12
  192.168.186.1           64-a3-41-03-a0-a1     动态
  192.168.186.192       cc-96-e5-23-3a-36     动态
  192.168.186.195       64-c3-41-b2-18-21     动态
  192.168.186.221       32-1e-5b-f9-eb-7e     动态

而自身的ip192.168.186.118的mac地址是

C:\Windows\System32>getmac  /v

连接名          网络适配器      物理地址            传输名称
=============== =============== =================== ==========================================================
以太网          Realtek PCIe Gb CC-96-E5-23-39-3C   \Device\Tcpip_{E23FF6BD-F5DA-4E0C-B23F-FB03429AAAB6}
WLAN            Realtek 8821CE  74-97-79-A9-A6-13   媒体已断开连接

看抓包的显示是设备ac192.168.186.195给回的ttl 传输中过期的消息。

发现开始的ping消息,ttl为128从Source: cc:96:e5:23:39:3c (192.168.186.118)发给Address: 64:a3:41:03:a0:a1 (192.168.186.1),匹配路由表的默认路由和自身路由和直连路由.

而icmp的Time-to-live exceeded是从Source: 64:c3:41:b2:18:21 (192.168.186.195)发给cc:96:e5:23:39:3c(192.168.186.118)

为了看数据包的传输过程,执行一下tracert   -w 1  -d  192.168.205.1,查看一下数据传输的路径

-w 1是超时等待时间为1s,-d是不进行dns解析,这两个参数能加快回显速度。

C:\Windows\System32>tracert  -w 1 -d  192.168.205.1

通过最多 30 个跃点跟踪到 192.168.205.1 的路由

  1    <1 毫秒   <1 毫秒   <1 毫秒 192.168.186.1
  2     1 ms     2 ms    <1 毫秒 192.168.186.195
  3    <1 毫秒    1 ms     1 ms  192.168.186.1
  4     1 ms     2 ms     1 ms  192.168.186.195
  5     1 ms     1 ms     1 ms  192.168.186.1
  6     1 ms     1 ms     1 ms  192.168.186.195
  7     1 ms     1 ms     1 ms  192.168.186.1
  8     1 ms     1 ms     1 ms  192.168.186.195
  9     1 ms     1 ms     *     192.168.186.1
 10     1 ms     *        *     192.168.186.195
 11     1 ms     *        *     192.168.186.1
 12     1 ms     4 ms     *     192.168.186.195
 13     2 ms     *        3 ms  192.168.186.1
 14     2 ms     2 ms     *     192.168.186.195
 15     2 ms     *        2 ms  192.168.186.1
 16     2 ms     4 ms     *     192.168.186.195
 17     2 ms     *        2 ms  192.168.186.1
 18     3 ms     2 ms     *     192.168.186.195
 19     2 ms     *        4 ms  192.168.186.1
 20     2 ms     2 ms     *     192.168.186.195
 21     2 ms     *        3 ms  192.168.186.1
 22     2 ms     2 ms     *     192.168.186.195
 23     2 ms     *        2 ms  192.168.186.1
 24     3 ms     3 ms     *     192.168.186.195
 25     2 ms     *        5 ms  192.168.186.1
 26     2 ms     2 ms     *     192.168.186.195
 27     3 ms     *        2 ms  192.168.186.1
 28     3 ms     2 ms     *     192.168.186.195
 29     3 ms     *        4 ms  192.168.186.1
 30     5 ms     3 ms     *     192.168.186.195

跟踪完成。

抓包显示

windows里tracert的原理就是分别发出发送ttl从1-30(最大ttl=30,当收到目的设备reply,命令停止发ping的request,记录终点的ip地址)的包ping的request(每个ttl取值发三次ping的request消息,ttl从1开始),看那个设备回icmp的ttl超时消息,就证明经过的路由器是那个。

该例中,抓包显示ttl从1-30,当ttl为奇数时,是上级路由器192.168.186.1回的回ttl excceed,当ttl偶数时,是ac192.168.186.195回的ttl  exceeded过期消息。说明,数据会在上级路由器192.168.186.1和192.168.186.195间来回传递。

查看上级出口路由器的路由配置:

C       192.168.186.0/24 is directly connected, vlan1.1   这直连路由
C       192.168.188.0/24 is directly connected, vlan1.1
S       192.168.202.0/24 [1/0] via 192.168.186.195, vlan1.1
S       192.168.205.0/24 [1/0] via 192.168.186.195, vlan1.1 发现有这样的一条静态路由

show ip int brief  查看上级路由器的子接口ip
Interface             IP-Address      Status Protocol
vlan1.1               192.168.186.1   UP     UP       default        

决定在192.168.186.195的ac上看看,数据包的流向。

登录ac,切换到linux操作系统下进行tcpdump

然后在cmd下执行一次ping包

C:\Windows\System32>ping  192.168.205.1  -n 1

正在 Ping 192.168.205.1 具有 32 字节的数据:
来自 192.168.186.195 的回复: TTL 传输中过期。

192.168.205.1 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),

tcpdump的抓包显示如下:

 tcpdump  -i eth0  -nnevv  -ttt  icmp and host  192.168.186.118 回车, -i eth0  指定eth0接口

-nnevv是显示mac地址,并关闭dns解析,用数字显示端口 vv是显示协议详情,-ttt是显示时间格式为时分秒微秒

发现规律:ping的request消息被反射回去,下一包和上一包的mac地址交换,ttl减1,ip层源目的ip地址不变。

发现整个过程中,ttl在减1,知道ac收到ttl为1的包后,向源ip192.168.186.118对应mac CC-96-E5-23-39-3C发了ttl超时的消息,如上图所示。

看来,是上级路由器192.168.186.1查路由表项192.168.205.0/24 via 192.168.186.195,把ping的request消息发给192.168.186.195ac,而ac上没有落地的192.168.205.0/24的落地路由,没有落地处理,查自身的默认0.0.0.0/0,指向192.168.186.1,request消息,被ttl-1后,又送出给上级路由器192.168.186.1,上级路由器根据路由表项192.168.205.0/24 via 192.168.186.195又送过来,这个过程中,ip包中,ttl被减1,二层中mac地址在互换。ping的包在二者直接来回乒乓震荡,直到ttl为1,ip包的生命周期到了为止。

ac上为啥没有落地处理192.168.205.1的包而送出呢?在ac上查看

ac上show ip route发现有下面的打印:

XOS#show ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

Gateway of last resort is 192.168.186.1 to network 0.0.0.0

S*      0.0.0.0/0 [1/0] via 192.168.186.1, vlan1.4093 
C       127.0.0.0/8 is directly connected, lo
C       192.168.186.0/24 is directly connected, vlan1.4093
C       192.168.202.0/24 is directly connected, vlan1.202

没有192.168.205.0/24的直连路由显示,为啥,一般没有路由条目,要么没有配置,要么配置的路由对应网口没有激活,导致直连路由没有生成。检查一下子接口和网口的物理连接情况:

XOS#show int brief
The brief information of interface(s) under route mode:
Status: ADM - administratively down
Interface             IP-Address      Status Protocol Description
vlan1.1               172.16.81.1     DOWN   DOWN     
vlan1.202             192.168.202.1   UP     UP       202                 
vlan1.205             192.168.205.1   DOWN   DOWN     205        发现有配置子接口ip,但是down状态        
vlan1.4093            192.168.186.195 UP     UP       
vlan1.4094                            DOWN   DOWN     

The brief information of interface(s) under bridge mode:
Status: ADM - administratively down
Duplex: A - auto;H - half;F - full
Type:A - access;T - trunk;H - hybrid
Interface             Status Speed  Duplex Type PVID Description
eth0                  UP     1g     F      A    4093 eth0
eth1                  DOWN   1g     F      A    4094 eth1
eth2                  DOWN   1g     F      A    205    发现对应vlan205网络物理是down状态,导致子接口也是down状态
eth3                  DOWN   1g     F      A    202  
eth4                  UP     1g     F      T    202  
eth5                  UP     1g     F      A    202 

查看路由:

XOS(config-if)#show ip route    
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

Gateway of last resort is 192.168.186.1 to network 0.0.0.0

S*      0.0.0.0/0 [1/0] via 192.168.186.1, vlan1.4093
C       127.0.0.0/8 is directly connected, lo
C       192.168.186.0/24 is directly connected, vlan1.4093
C       192.168.202.0/24 is directly connected, vlan1.202

发现192.168.205.0/24的直连路由没有生成,而原因是对应子接口没有up,就是含有vlanid205

的网络接口物理状态没有up。

明白原因了,由于对应vlan205的接口down导致子接口down,没有对应直连路由生成,导致数据包到达ac后,无法落地,再次没送出,而上级路由器里有192.168.205.0/24指向192.168.186.195的路由条目,所以request消息,又被ttl减1后送来,再送出,这样乒乓循环,直到ac收到ttl为1的ping的reques消息后,发出ttl exceeded给源ip后,丢弃该包后结束。

解决方法:

只要解决子接口up问题,直连路由就会生成。

SVI 虚拟子接口接口 up的 条件,下面其一满足即可:
1、有接口被 access 这个vlan ,且这个物理接口 up
2、这个svi有trunk口,并且允许这个vlan 通过

我们把一个up的物理接口改成trunk口,默认vlanid不变,但添加vlanid205为物理上通过的vlanid。

解决方法把一个up的端口,改为trunk口,添加允许通过vlanid205

-------------------------------------------
 Interface name          : eth5
 Switchport mode         : trunk
 Ingress filter          : enable
 Acceptable frame types  : all
 Default Vlan            : 202
 Configured Vlans        : 202 205

XOS#show ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

Gateway of last resort is 192.168.186.1 to network 0.0.0.0

S*      0.0.0.0/0 [1/0] via 192.168.186.1, vlan1.4093
C       127.0.0.0/8 is directly connected, lo
C       192.168.186.0/24 is directly connected, vlan1.4093
C       192.168.202.0/24 is directly connected, vlan1.202
C       192.168.205.0/24 is directly connected, vlan1.205  对应的192.168.205.0/24直连路由生成了

ping的结果:

C:\Windows\System32>ping  192.168.205.1  -n 1

正在 Ping 192.168.205.1 具有 32 字节的数据:
来自 192.168.205.1 的回复: 字节=32 时间=1ms TTL=64

192.168.205.1 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 1ms,最长 = 1ms,平均 = 1ms

tcpdump的结果:

 tcpdump  -i  eth0  -nnevv  icmp
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:16:32.985443 64:a3:41:03:a0:a1 > 64:c3:41:b2:18:21, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 127, id 16894, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.186.118 > 192.168.205.1: ICMP echo request, id 1, seq 968, length 40
15:16:32.985489 64:c3:41:b2:18:21 > cc:96:e5:23:39:3c, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 48259, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.205.1 > 192.168.186.118: ICMP echo reply, id 1, seq 968, length 40

pc的cmd下ping效果:

C:\Windows\System32>ping  192.168.205.1

正在 Ping 192.168.205.1 具有 32 字节的数据:
来自 192.168.205.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.205.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.205.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.205.1 的回复: 字节=32 时间<1ms TTL=64

192.168.205.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 1ms,平均 = 0ms

总结:

路由转发,就是二层mac层不断更改mac地址的过程,而ip层除了ttl还有经过nat设备更换目的ip外,其他的不变。就像信件的传递,邮车中转的邮局的城市街道门牌号不断变化,但信件的收发地址是不变的。

对于一个节点设备,收到一个ip包,判断是否落地,要看是否有直连网络路由和主机路由,目的ip符合主机路由就在节点上落地处理,符合直连路由,而且arp表表项有对应ip和mac对照关系,就改变mac层的源和目的mac转发出去,mac地址表项里没有对应项,就发出arp消息请求目的ip的mac,得到响应后,添加mac地址表项,再组包发出,没有得到arp响应,就由节点设备根据路由表选择对应ip发出目标主机不可达消息告知源主机。

TTL传输中过期,通常指的是数据包在网络中的生存时间(TTL值)超出限制,导致数据包被路由器丢弃,并且路由器会向数据包的发送方发送一个ICMP“Time Exceeded”消息。以下是一些可能导致TTL传输中过期的原因:

  1. 网络设备问题‌:路由器、交换机等网络设备配置错误或故障,可能导致数据包在传输过程中被错误地处理或丢弃。如果网络设备无法正确处理或转发数据包,就会引发TTL过期。

SVI 虚拟子接口接口 up的 条件,下面其一满足即可:
1、有接口被 access 这个vlan ,且这个物理接口 up
2、这个svi有trunk口,并且允许这个vlan 通过

tracert就是发ttl从1到xx的包,根据icmp的ttl传输中超时消息确定经过节点设备ip。

本例就是对应子接口物理接口没有up,导致路由环路导致出现的ttl传输中过期的问题。

相关文章:

TTL 传输中过期问题定位

问题&#xff1a; 工作环境中有一个acap的环境&#xff0c;ac的wan口ip是192.168.186.195/24&#xff0c;ac上lan上有vlan205&#xff0c;其ip子接口地址192.168.205.1/24&#xff0c;ac采用非nat模式&#xff0c;而是路由模式&#xff0c;在上级路由器上有192.168.205.0/24指向…...

非docker方式部署openwebui过程记录

之前一直用docker方式部署openwebui&#xff0c;结果这东西三天两头升级&#xff0c;我这一升级拉取docker镜像硬盘空间嗖嗖的占用&#xff0c;受不了&#xff0c;今天改成了直接部署&#xff0c;以下是部署过程记录。 一、停止及删除没用的docker镜像占用的硬盘空间 docker s…...

大模型的prompt的应用二

下面总结一些在工作中比较实用的prompt应用。还可以到以下网站参考更多的prompt AI Prompts - WayToAGI 举个例子&#xff0c;让大模型写一份周报 # 角色:智能周报编写助手 ## 背景: 需要根据产品经理提供的简要周报框架,补充完整的周报内容。 ## 注意事项: 言简意赅,重点突…...

ubuntu 22.04安装ollama

1. 顺利的情况 按照官网的提示&#xff0c;执行下面的命令&#xff1a; curl -fsSL https://ollama.com/install.sh | sh如果网络畅通&#xff0c;github访问也没有问题&#xff0c;那就等待安装完成就行 2. 不顺利的情况 由于众所周知的情况&#xff0c;国内网络访问githu…...

从企业级 RAG 到 AI Assistant,阿里云 Elasticsearch AI 搜索技术实践

在过去一年中&#xff0c;基座大模型技术的快速迭代推动了 AI 搜索的演进&#xff0c;主要体现在以下几个方面&#xff1a; 1.搜索技术链路重构 基于大模型的全面重构正在重塑 AI 搜索的技术链路。从数据采集、文档解析、向量检索到查询分析、意图识别、排序模型和知识图谱等…...

Redis--高可用(主从复制、哨兵模式、分片集群)

高可用&#xff08;主从复制、哨兵模式、分片集群&#xff09; 高可用性Redis如何实现高可用架构&#xff1f;主从复制原理1. 全量同步2. 命令传播3. 增量同步 Redis Sentinel&#xff08;哨兵模式&#xff09;为什么要有哨兵模式&#xff1f;哨兵机制是如何工作的&#xff1f;…...

框架(Mybatis配置日志)

mybatis配置日志输出 先导入日志依赖 <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency> 编写log4j.properties配置文件 # Root logger option log4j.rootLogge…...

人工智能-Python上下文管理器-with

概念 Python提供了 with 语句的这种写法&#xff0c;既简单又安全&#xff0c;并且 with 语句执行完成以后自动调用关闭文件操作&#xff0c;即使出现异常也会自动调用关闭文件操作&#xff1b;其效果等价于try-except-finally with 拥有以下两个魔术方法 __enter__() 上文管理…...

每天40分玩转Django:Django类视图

Django类视图 一、知识要点概览表 类别知识点掌握程度要求基础视图View、TemplateView、RedirectView深入理解通用显示视图ListView、DetailView熟练应用通用编辑视图CreateView、UpdateView、DeleteView熟练应用Mixin机制ContextMixin、LoginRequiredMixin理解原理视图配置U…...

自动化测试之Pytest框架(万字详解)

Pytest测试框架 一、前言二、安装2.1 命令行安装2.2 验证安装 三、pytest设计测试用例注意点3.1 命名规范3.2 断言清晰3.3 fixture3.4 参数化设置3.5 测试隔离3.6 异常处理3.7 跳过或者预期失败3.8 mocking3.9 标记测试 四、以案例初入pytest4.1 第一个pytest测试4.2 多个测试分…...

基于51单片机(STC32G12K128)和8X8彩色点阵屏(WS2812B驱动)的小游戏《贪吃蛇》

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、矩阵按键模块3、8X8彩色点阵屏 四、主函数总结 系列文章目录 前言 《贪吃蛇》&#xff0c;一款经典的、怀旧的小游戏&#xff0c;单片机入门必写程序。 以《贪吃蛇》为载体&#xff0c;熟悉各种屏幕…...

2011-2020年各省粗离婚率数据

2011-2020年各省粗离婚率数据 1、时间&#xff1a;2011-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;地区、年份、粗离婚率 4、范围&#xff1a;31省 5、指标解释&#xff1a;粗离婚率指某地区当年离婚对数占该地区年平均人口的比重。计算公式为&#xff1a…...

C++高级编程技巧:模板元编程与性能优化实践

C高级编程技巧&#xff1a;模板元编程与性能优化实践 在C编程的世界里&#xff0c;模板元编程&#xff08;Template Metaprogramming&#xff09;是一项强大的技术&#xff0c;它允许程序员在编译时而非运行时进行计算和类型操作。这项技术的核心在于C模板系统&#xff0c;它…...

Mac 版本向日葵退出登录账号

找遍整个软件&#xff0c;Mac 版本的向日葵甚至逆天到没有提供退出登录的功能… 随后我发现可以直接删除向日葵的配置文件达到退出登录的效果&#xff0c;具体操作如下&#xff1a; cd /etc # 确认存在 orayconfig.conf 文件 ls orayconfig.conf  # 删除 sudo rm -f oray…...

SOLIDWORKS Composer在产品设计、制造与销售中的应用

SOLIDWORKS Composer是一款专为技术团队设计的高效沟通工具&#xff0c;广泛应用于产品设计、制造、销售及售后等领域。它能从复杂的CAD数据中提取关键信息&#xff0c;轻松转化为高质量的产品文档、交互式3D动画及说明视频&#xff0c;显著提升产品沟通效率。 Composer擅长制…...

Win11+WLS Ubuntu 鸿蒙开发环境搭建(一)

参考文章 Windows11安装linux子系统 WSL子系统迁移、备份与导入全攻略 如何扩展 WSL 2 虚拟硬盘的大小 Win10安装的WSL子系统占用磁盘空间过大如何释放 《Ubuntu — 调整文件系统大小命令resize2fs》 penHarmony南向开发笔记&#xff08;一&#xff09;开发环境搭建 一&a…...

[CSAW/网络安全] Git泄露+命令执行 攻防世界 mfw 解题详析

Home界面&#xff1a; Home界面翻译如下&#xff1a; 欢迎访问我的网站&#xff01; 我自己从头开始写的&#xff01; 您可以使用上面的链接浏览页面&#xff01; About界面&#xff1a; 观察到Git&#xff0c;联想Git泄露 Git泄露 Git是一个非常流行的开源分布式版本控制系…...

MySQL 锁那些事

Q1 : MySQL有哪些锁,功能是什么,如何项目中使用?Q2 : 行锁是如何实现的?什么情况下会使用行锁?Q3 : 四种事务隔离形式的行锁有什么不一样?读未提交读提交可重复读串行 Q4 : MySQL 的读写都是怎样加锁的?Q5 : 需要注意什么? Q1 : MySQL有哪些锁,功能是什么,如何项目中使用…...

Linux中常用的基本指令和一些配套的周边知识详解

目录 一些基本指令 一些常用指令 注&#xff1a;配套的周边知识是直接跟在指令的讲解后面的。 补充&#xff1a;(重要) 如何看待这么多指令&#xff1f;&#xff1f;&#xff1f;记不住怎么办&#xff1f;&#xff1f;&#xff1f; 首先&#xff0c;指令不用刻意去记&#xf…...

深入理解Java中的Set集合:特性、用法与常见操作指南

一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 ①&#xff1a;add(Object o)&#xff1a;向Set集合中添加元素&#xff0c;不允许添加重复数据。 ②&#xff1a;size()&#xff1a;返回Set集合中的元素个数 ③.remove(Object o)&#xff1a; 删除Set集合中的obj对…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4&#xff0c;后7...