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

网络编程——TCP和UDP详细讲解

文章目录

  • TCP/UDP全面详解
    • 什么是TCP和UDP?
    • TCP如何保证可靠性?
      • 1. 序列号(Sequence Number)
      • 2. 确认应答(ACK)
      • 3. 超时重传(Timeout Retransmission)
      • 4. 窗口控制(Sliding Window)
      • 5. 快速重传(Fast Retransmit)
    • 三次握手(建立连接)
    • 四次挥手(断开连接)
    • 为什么是三次握手?为什么是四次挥手?
      • 三次握手的原因
      • 四次挥手的原因
    • TCP和UDP特点
    • TCP拥塞控制
      • 一、慢启动(Slow Start)
        • 举例:
      • 二、拥塞避免(Congestion Avoidance)
        • 举例:
      • 三、超时重传与慢启动重启
      • 处理方法:
    • 四、快速重传与快速恢复(Fast Retransmit & Fast Recovery)
      • 快速重传行为:
      • 快速恢复行为:
    • 拥塞控制减慢增长速度的条件总结
      • 拥塞控制会减慢增长速度的时机:
    • TCP/IP 数据链路层的交互过程简述
    • TCP 和 UDP 如何区分?
    • UDP 中的 `connect()` 函数原理
      • `connect()` 的作用:
    • TCP连接中的 TIME_WAIT 状态详解
      • 一、TIME_WAIT 状态如何产生?
      • 二、TIME_WAIT 的两个核心作用
        • 1. 确保连接的可靠关闭
        • 2. 避免旧连接干扰新连接
      • 三、TIME_WAIT 的副作用与优化
        • ✅ 解决方法:
    • TCP的模型

TCP/UDP全面详解

什么是TCP和UDP?

TCP(Transmission Control Protocol)叫传输控制协议,是面向连接可靠传输的协议。
UDP(User Datagram Protocol)叫用户数据报协议,是无连接尽最大努力交付的协议。

一句话总结:

  • TCP可靠但慢,像寄快递(要签收、确认收货)
  • UDP快速但可能丢失,像发传单(发了就发了,收不收无所谓)

TCP如何保证可靠性?

TCP为了确保数据能安全、完整送到对方,设计了很多机制,主要有:

1. 序列号(Sequence Number)

每发送一段数据,TCP都会打个"编号"。
比如发送第一包数据编号1001,第二包编号2001,接收方按照编号顺序排列,避免了丢包、乱序问题。

2. 确认应答(ACK)

接收方收到数据后,会回一条确认信息(ACK),告诉发送方:“我收到了!下一包从xxxx开始发。”
如果发送方迟迟收不到确认,就会怀疑数据丢了。

3. 超时重传(Timeout Retransmission)

如果一定时间(超时)还没收到确认,发送方就自动重发
一般超时时间 = 2 × RTT(往返时延)+ 偏差值。

4. 窗口控制(Sliding Window)

为了提高速度,TCP可以同时发多包,不需要一包一确认。
窗口大小定义了一次可以连续发送多少数据而不用等确认

小例子:
窗口大小=3,发送方可以连续发第1包、第2包、第3包数据,不用等第1包的确认就发第2包!

5. 快速重传(Fast Retransmit)

如果连续收到3个相同的ACK(比如一直提示1001未收到),发送方立刻重发缺失的数据段,而不用等超时。


三次握手(建立连接)

  1. 客户端发送SYN报文,请求建立连接(SYN=1,seq=J)。
  2. 服务器收到后,发送SYN+ACK报文,表示接受(SYN=1,ACK=1,seq=K,ack=J+1)。
  3. 客户端再回一个ACK报文,确认连接建立(ACK=1,ack=K+1)。

三次握手后,双方就可以正式通信了。
在这里插入图片描述

特别感谢@frozendure绘制的图片。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四次挥手(断开连接)

  1. 客户端发FIN报文,请求断开(主动关闭)。
  2. 服务器收到后,回ACK确认(被动关闭)。
  3. 服务器数据发完后,也发FIN报文。
  4. 客户端收到FIN后,回ACK确认,进入TIME_WAIT等待一段时间后彻底关闭。

小图示:
在这里插入图片描述


为什么是三次握手?为什么是四次挥手?

三次握手的原因

  • 防止陈旧连接(老旧、失效的请求包)误建立连接。
  • 确保双方收发能力正常
    如果只两次握手,可能因为网络延迟,服务器误认为客户端还想建立新连接,导致资源浪费。假设两次握手时,A发出的第一个请求连接报文段在某一网络节点长时间滞留,以致延误到连接释放后才到达B。B收到失效的连接请求报文段后,认为是A又发出一次新的连接请求。于是向A发送确认报文段,同意建立连接,此时在假定两次握手的前提下,连接建立成功。这样会导致B的资源白白浪费
    假设两次握手时,A发出一个请求报文段,但发送过后A就因为问题而导致下线。之后B收到了A发来的请求连接报文段,给A发送确认报文段,同意建立连接,此时在假定两次握手的前提下,连接建立成功。这样会导致B的资源白白浪费
  • 第一次握手(客户端发送SYN):保证客户端能够发送数据。
  • 第二次握手(服务器发送SYN-ACK):保证服务器能够接收并发送数据。
  • 第三次握手(客户端发送ACK):保证客户端能够接收数据。

四次挥手的原因

  • TCP是全双工,发送和接收需要分别关闭
  • 一方关闭发送,不代表另一方立即也关闭发送,因此需要两次FIN和两次ACK,确保双方都完成通信。

TCP和UDP特点

项目TCPUDP
是否连接面向连接(需三次握手)无连接
可靠性可靠,具备确认应答、重传机制不可靠,尽力而为
传输速度较慢(因连接建立和状态维护)较快(无需连接、开销小)
传输单位字节流(Stream)数据报(Datagram)
是否顺序保证顺序到达不保证顺序
占用资源较多(需维护连接状态)较少
安全性容易受到SYN洪水攻击等较少攻击面
优点可靠性高、顺序到达快速、资源开销小
缺点速度慢、资源占用高、易被攻击不可靠、易丢包、乱序
适用场景要求高可靠性,能容忍延迟要求实时性强,容忍丢包
应用实例文件传输(FTP)、发送邮件(SMTP)、网页浏览(HTTP)视频通话(VoIP)、在线视频直播、网络游戏、广播

TCP拥塞控制

在 TCP 通信中,如果发送端窗口设置过大,会在短时间内发送大量数据,这可能导致中间路由器和接收端缓冲区被挤爆,进而引发丢包、重传等问题。TCP 拥塞控制是指通过动态调整数据发送速率,避免过多的数据包涌入网络,从而引起网络拥堵甚至网络瘫痪的一种机制。

因此,TCP 引入了拥塞控制窗口(cwnd),并采用如下四种主要算法动态调整窗口大小:


一、慢启动(Slow Start)

  • 初始化拥塞窗口 cwnd = 1(以 MSS 为单位)。
  • 每收到一个确认应答(ACK),就将 cwnd 翻倍(即指数增长)。
  • 每经过一个 RTT,cwnd *= 2。
举例:
  1. 第一个 RTT:cwnd = 1
  2. 第二个 RTT:cwnd = 2
  3. 第三个 RTT:cwnd = 4
  4. 第四个 RTT:cwnd = 8

✅ 优点:快速提高网络利用率
❌ 缺点:指数增长可能迅速导致拥塞


二、拥塞避免(Congestion Avoidance)

当 cwnd 达到慢启动阈值 ssthresh(一般初始值为 65536 字节),就不再使用慢启动的指数增长,而是进入拥塞避免阶段。

  • 每经过一个 RTT,仅将 cwnd 加 1(线性增长)。
  • 防止窗口增长过快引发网络拥塞。
举例:
  1. cwnd = 64,到达 ssthresh
  2. 后续每次 ACK,cwnd = cwnd + 1/cwnd ≈ 每 RTT 增加 1

三、超时重传与慢启动重启

如果出现报文段超时未收到 ACK,TCP 认为网络出现拥塞。

处理方法:

  1. ssthresh 设置为当前 cwnd 的一半;
  2. 将 cwnd 设为 1;
  3. 重新进入慢启动阶段

🔁 这是 TCP 的自我修复机制,避免持续拥塞。


四、快速重传与快速恢复(Fast Retransmit & Fast Recovery)

如果收到 3 个重复的 ACK(即 ACK 重复了 3 次),TCP 认为某个报文段丢失。

快速重传行为:

  • 立即重传丢失的段,而不是等待超时。

快速恢复行为:

  • ssthresh = 当前 cwnd / 2;
  • cwnd = ssthresh + 3(体现网络尚可);
  • 进入拥塞避免阶段(不再重回慢启动);

✅ 快速恢复保持了中等的发送速率,防止性能大幅下降。


拥塞控制减慢增长速度的条件总结

拥塞控制会减慢增长速度的时机:

  1. cwnd 超过 ssthresh
    • 进入拥塞避免阶段,从指数增长变为线性增长。
  2. 发生超时重传
    • 表明网络严重拥塞,立即进入慢启动(cwnd 重置为 1)。
  3. 收到 3 个重复 ACK
    • 进入快速重传,cwmd 缩减并进入拥塞避免。

TCP/IP 数据链路层的交互过程简述

当 IP 层向数据链路层(如以太网)传递数据时:

  1. 查找 ARP 缓存:查找目标 IP 对应的 MAC 地址;
  2. 若存在,直接封装 MAC 地址;
  3. 若不存在,发起 ARP 广播请求;
  4. 接收到 IP 匹配的设备返回自己的 MAC 地址;
  5. 使用该 MAC 地址封装链路层帧,完成数据发送。

TCP 和 UDP 如何区分?

传输层协议由 IP 协议头中的 Protocol 字段决定:

  • TCP:值为 6
  • UDP:值为 17

操作系统根据协议和端口号,将报文传递给对应的应用程序。


UDP 中的 connect() 函数原理

connect() 的作用:

  1. 记录对端 IP 与端口号
  2. 发送数据时不再需要 sendto() 指定地址,可以使用 write()、send();
  3. 接收数据时只接受来自该对端的数据
  4. 可接收异步错误信息
  5. 丢弃来自其他地址的包

✅ 用于长期通信(如 TFTP)或希望使用 TCP 接口风格的场景。


TCP连接中的 TIME_WAIT 状态详解

一、TIME_WAIT 状态如何产生?

  1. 主动关闭连接的一方(client)发送最后一个 ACK 后进入 TIME_WAIT
  2. 保持 2 * MSL 时间后释放连接;
  3. MSL(Maximum Segment Lifetime):报文段在网络中的最大生存时间。

二、TIME_WAIT 的两个核心作用

1. 确保连接的可靠关闭
  • 若最后一个 ACK 丢失,server 会重发 FIN;
  • client 能在 TIME_WAIT 状态中接收该 FIN,并再次回复 ACK;
  • 保证被动关闭方正常结束连接。
2. 避免旧连接干扰新连接
  • 如果不等待,可能使用相同四元组快速建立新连接;
  • 网络中仍存在旧连接的数据包,可能被误接收,导致数据错乱;
  • 2MSL 等待时间保证旧数据失效。

三、TIME_WAIT 的副作用与优化

  • 占用端口资源;
  • 影响服务器重启;
✅ 解决方法:

设置套接字选项 SO_REUSEADDR,允许 TIME_WAIT 状态的端口被重复绑定。

TCP的模型

四层TCP/IP模型如下,包括应用层、网络层、数据链路层、物理层
在这里插入图片描述
在这里插入图片描述

特别感谢@frozendure绘制的图片和说明。

相关文章:

网络编程——TCP和UDP详细讲解

文章目录 TCP/UDP全面详解什么是TCP和UDP?TCP如何保证可靠性?1. 序列号(Sequence Number)2. 确认应答(ACK)3. 超时重传(Timeout Retransmission)4. 窗口控制(Sliding Win…...

Qt多线程TCP服务器实现指南

在Qt中实现多线程TCP服务器可以通过为每个客户端连接分配独立的线程来处理&#xff0c;以提高并发性能。以下是一个分步实现的示例&#xff1a; 1. 自定义工作线程类&#xff08;处理客户端通信&#xff09; // workerthread.h #include <QObject> #include <QTcpSo…...

【经管数据】A股上市公司资产定价效率数据(2000-2023年)

数据简介&#xff1a;资产定价效率是衡量市场是否能够有效、准确地反映资产内在价值的重要指标。在理想的市场条件下&#xff0c;资产的市场价格应该与其内在价值保持一致&#xff0c;即市场定价效率达到最高。然而&#xff0c;在实际市场中&#xff0c;由于信息不对称、交易摩…...

打包 Python 项目为 Windows 可执行文件:高效部署指南

Hypackpy 是一款由白月黑羽开发的 Python 项目打包工具&#xff0c;它与 PyInstaller 等传统工具不同&#xff0c;通过直接打包解释器环境和项目代码&#xff0c;并允许开发者修改配置文件以排除不需要的内容&#xff0c;从而创建方便用户一键运行的可执行程序。以下是使用 Hyp…...

【QNX+Android虚拟化方案】138 - USB 底层传输原理

【QNX+Android虚拟化方案】138 - USB 底层传输原理 1. USB 数据包的格式2. 数据传输事务过程3. 四种传输类型3.1 批量传输3.2 中断传输3.3 实时传输3.4 控制传输4. USB 设备枚举过程4.1 Attached: 发送控制传输,读取设备描述符4.2 Power -> Default 这个状态无数据传输4.3 …...

QT6 源(66)篇三:阅读与注释类 QAbstractSpinBox ,这是螺旋框的基类,附上源码

&#xff08;9&#xff09;所有代码来自于头文件 qabstractspinbox . h : #ifndef QABSTRACTSPINBOX_H #define QABSTRACTSPINBOX_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qwidget.h> #include <QtGui/qvalidator.h>/* QT_CONFIG宏实…...

MCP入门

什么是mcp mcp&#xff08;model context protocol&#xff0c;模型上下文协议&#xff09; 标准化协议&#xff1a;让大模型用统一的方式来调用工具&#xff0c;是llm和工具之间的桥梁 A2A&#xff1a;Agent-to-Agent协议 mcp通信机制 提供mcp服务查询的平台 具有工具合集…...

FPGA中级项目8———UART-RAM-TFT

FPGA中级项目8———UART-RAM-TFT UART串口我们学过&#xff0c;RAM IP核学过&#xff0c;TFT同样也学过。那如何将它们联合起来呢&#xff1f; 言简意赅&#xff1a;实现从串口写入图像到RAM并且由TFT显示屏输出&#xff01; 首先第一步&#xff0c;便是要将UART_RX与RAM之间…...

Ocelot\Consul\.NetCore的微服务应用案例

案例资料链接&#xff1a;https://download.csdn.net/download/ly1h1/90733765 1.效果 实现两个微服务ServerAPI1和ServerAPI2的负载均衡以及高可用。具体原理&#xff0c;看以下示意图。 2.部署条件 1、腾讯云的轻量化服务器 2、WindowServer2016 3、.NETCore7.0 4、Negut …...

数值求解Eikonal方程的方法及开源实现

Eikonal方程是一类非线性偏微分方程&#xff0c;形式为 ( |\nabla u(x)| f(x) )&#xff0c;常见于波传播、几何光学、最短路径等问题。以下是数值求解Eikonal方程的方法及开源实现参考&#xff1a; 一、数值求解方法 有限差分法&#xff08;FDM&#xff09; 快速行进法&#…...

Http详解

&#x1f9f1; 一、从 TCP 三次握手到访问网页&#xff1a;两层过程 &#x1f9e9; 1. TCP 三次握手&#xff08;网络传输层&#xff09; 这是 建立连接 的前提&#xff0c;跟 HTTP 无关&#xff0c;但 HTTP 要依赖它。 举例&#xff1a;你打开浏览器访问 https://example.c…...

实验五 完整性

一、引言 本次上机实验的目的主要是让学生掌握数据库完整性的三大类型&#xff08;实体完整性、参照完整性、用户自定义完整性&#xff09;&#xff0c;并通过实际建库建表和数据操作加深理解。 下面将为分别展示 student、course、sc 三个表的创建语句&#xff0c;并设置对应的…...

《原码、反码与补码:计算机中的数字奥秘》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、原码&#xff1a;最直观的表示法1. 正数的原码2. 负数的原码3. 原码的特点 二、反码&#xff1a;原码的“反转”1. 正数的反码2. 负数的反码3. 反码的特…...

论文笔记——QWen2.5 VL

目录 引言架构创新数据整理与训练策略性能与基准测试精细感知能力应用与现实世界影响与现有模型比较结论 引言 视觉理解和自然语言处理的集成一直是人工智能研究的一个重要焦点&#xff0c;促成了日益复杂的视觉语言模型 (VLMs) 的发展。由阿里巴巴集团 Qwen 团队开发的 Qwe…...

前端HTML基础知识

1.HTML介绍 HTML(HyperText Markup Language&#xff0c;超文本标记语言)是构成网页的基本元素&#xff0c;是一种用于创建网页的标准化标记语言。HTML不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;通过标签来描述网页的结构和内容。 超文本&#xff1a;超文本是…...

程序代码篇---ESP32云开发

文章目录 前言 前言 本文简单介绍了实现 ESP32-S3 传感器数据上传至云平台 手机远程控制电机 的完整方案&#xff0c;涵盖推荐的云平台、手机端。 一、推荐云平台及工具 云平台选择 阿里云 IoT 平台 优势&#xff1a;国内稳定、支持大规模设备接入、提供完整设备管理及安全…...

【C语言】文本操作函数fseek、ftell、rewind

一、fseek int fseek ( FILE * stream, long int offset, int origin ); 重新定位文件指针的位置&#xff0c;使其指向以origin为基准、偏移offset字节的位置。 成功返回0&#xff0c;失败返回非零值&#xff08;通常为-1&#xff09;。 origin有如下三种&#xff1a;分别是…...

ARM ASM

ARM ASM ARM寄存器集 列出了ARM的16个程序员可见寄存器&#xff08;r0~r15&#xff09;以及它的状态寄存器。 ARM共有14个通用寄存器r0~r13。寄存器r13被保留用作栈指针&#xff0c;r14存放子程 序返回地址&#xff0c;r15为程序计数器。 由于r15能够被程序员访问&#xff0c…...

【五一培训】Day1

注&#xff1a; 1. 本次培训内容的记录将以“Topic”的方式来呈现&#xff0c;用于记录个人对知识点的理解。 2. 由于培训期间&#xff0c;作者受限于一些现实条件&#xff0c;本文的排版及图片等相关优化&#xff0c;需要过一段时间才能完成。 Topic 1&#xff1a;使用DeepS…...

SpringBoot使用分组校验解决同一个实体对象在不同场景下需要不同校验规则的问题

背景 添加分类的接口不需要id字段&#xff0c;但更新分类的接口需要id字段&#xff0c;当在id字段上使用NotNull注解时&#xff0c;会导致使用添加分类接口报id字段不能为空的错误 解决 定义分组 pojo/Category.java // 如果没有指定分组&#xff0c;则默认属于Default分组…...

Hibernate与MybatisPlus的混用问题(Invalid bound statement (not found))

当项目里已经有了Hibernate后&#xff1a; spring:jpa:hibernate:ddl-auto: updateshow-sql: trueproperties:hibernate:format_sql: true 再配置yml文件就会失效&#xff1a; mybatis-plus:mapper-locations: classpath:mapper/*.xml# 全局策略global-config:db-config:# 自…...

【音视频】ffplay数据结构分析

struct VideoState 播放器封装 typedef struct VideoState {SDL_Thread *read_tid; // 读线程句柄AVInputFormat *iformat; // 指向demuxerint abort_request; // 1时请求退出播放int force_refresh; // 1时需要刷新画⾯&#xff0c;请求⽴即刷新画⾯的意思int paused; // 1时…...

PV操作:宣帧闯江湖武林客栈版学习笔记【操作系统】

P,V,S江湖话翻译 P&#xff08;申请&#xff09; 江湖侠客拔剑大喊“掌柜的&#xff0c;给我一间上房&#xff01;”&#xff08;申请资源&#xff0c;房不够就蹲门口等&#xff09;-要房令牌 V&#xff08;释放&#xff09; 江湖侠客退房时甩出一锭银子&#xff0c;大喊“…...

精品推荐-湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)

精品推荐&#xff0c;湖仓一体电商数据分析平台实践教程合集&#xff0c;包含视频教程、设计文档及完整项目代码等资料&#xff0c;供大家学习。 1、项目背景介绍及项目架构 2、项目使用技术版本及组件搭建 3、项目数据种类与采集 4、实时业务统计指标分析一——ODS分层设计与…...

对计网考研中的信道、传输时延、传播时延的理解

对计网考研中的信道、传输时延、传播时延的理解 在学习数据链路层流量控制和可靠传输那一节的三个协议的最大信道利用率时产生的疑惑 情景&#xff1a; 假如A主机和B主机通过集线器连接&#xff0c;A和集线器是光纤连接&#xff0c;B和集线器也是光纤连接&#xff0c;A给B发…...

RAGFlow报错:ESConnection.sql got exception

环境&#xff1a; Ragflowv0.17.2 问题描述&#xff1a; RAGFlow报错&#xff1a;ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […...

报错:函数或变量 ‘calcmie‘ 无法识别。

1、具体报错 运行网上一个开源代码&#xff0c;但是运行报如下错&#xff1a; TT_para_gen 函数或变量 calcmie 无法识别。 出错 TT_para_gen>Mie (第 46 行) [S, C, ang,~] calcmie(rad, ns, nm, lambda, nang, ... 出错 TT_para_gen (第 17 行) [~,ang,Miee,C] …...

蓝桥杯获奖后心得体会

文章目录 获奖项备考心得&#x1f4d6; 蓝桥杯 Java 研究生组备考心得&#x1f4cc; 一、备考规划&#x1f4cc; 二、考试技巧&#x1f4cc; 三、心理调整&#x1f4cc; 四、总结 获奖项 JAVA研究生组省二 备考心得 好&#xff01;我来给你写一篇蓝桥杯研究生组Java方向的备…...

大鱼吃小鱼开源

因为知道一些学校也有相关C语言课设 所以这里对代码开源&#xff08;如果没有csdn会员请用夸克&#xff09; 我用夸克网盘分享了「大鱼吃小鱼-程序.zip」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0…...

深度学习框架搭建(Vscode/Anaconda/CUDA/Pytroch)

目录 ​​​​​​一 Vscode安装 二、Anaconda安装 三、更新显卡驱动 四、安装CUDA 五、安装Pytorch 六、Vscode配置 七、出现的问题汇总 ​​​​​​一 Vscode安装 在 Windows 上安装 访问 VS Code 官网 https://code.visualstudio.com/&#xff0c;点击 "Downl…...

免费实用的图像处理工具箱​

提到图像处理&#xff0c;一般会想到Photoshop。的确PS比较专业&#xff0c;但是学习成本比较高。其实&#xff0c;针对具体的应用场景&#xff0c;选些简单的工具软件会更方便。 今天就给大家分享一款“洋芋田图像工具箱”软件。它支持Windows和Mac电脑。 用这款软件&#x…...

范式演进:从ETL到ELT及未来展望

范式演进:从ETL到ELT及未来展望 引言 随着数据规模与实时分析需求的爆发,传统的集中式 ETL(Extract-Transform-Load)已难以为继,ELT(Extract-Load-Transform)凭借云原生仓库的弹性计算与分析工程的兴起逐步成为主流。2025 年,数据团队正加速从“先变换再加载”走向“…...

定义一个3D cube,并计算cube每个顶点的像素坐标

定义一个3D cube,并计算cube每个顶点的像素坐标 scratch a pixel课程&#xff1a;Your Starting Point! 3D场景中物体所有点与坐标系原点的连线&#xff0c;该连线与像素平面canvas的交点就是场景中3D点其投影点的位置 3D场景中的点均由这个坐标系描述 相似三角形ABC和A’B’…...

Python学习笔记(第二部分)

接续 Python.md 文件的第二部分 字典 字典的基本操作 字典是一系列 键—值 对&#xff0c;每一个键都与一个值关联&#xff0c;值可以是数字&#xff0c;字符串&#xff0c;甚至是列表或字典&#xff0c;可以把任何python对象都作为字典中的值 alien {color:green,points:5}键…...

ZYNQB笔记(十六):AXI DMA 环路测试

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用 PL 端的 AXI DMA IP 核实现对 DDR3 中数据的读取与写入&#xff0c;实现数据环回&#xff0c;具体流程为&#xff1a; PS 端产生测试数据并写入到 DDR3 中&#xff0c;然后 PL 端的 AXI DMA I…...

Java学习手册:Spring 数据访问

一、Spring JDBC JdbcTemplate &#xff1a;Spring JDBC 提供了 JdbcTemplate 类&#xff0c;它简化了数据库操作&#xff0c;提供了丰富的 API 来执行数据库访问任务。JdbcTemplate 可以自动处理数据库连接的获取、释放&#xff0c;SQL 语句的执行&#xff0c;结果集的处理等…...

第二章 日志分析-apache日志分析(玄机系列)

简介 账号密码 root apacherizhi ssh rootIP 1、提交当天访问次数最多的IP&#xff0c;即黑客IP&#xff1a; 2、黑客使用的浏览器指纹是什么&#xff0c;提交指纹的md5&#xff1a; 3、查看包含index.php页面被访问的次数&#xff0c;提交次数&#xff1a; 4、查看黑客IP访问了…...

类比分析AI Agent 技术

引言&#xff1a;AI Agent 的本质与范式转变 在人工智能领域&#xff0c;AI Agent&#xff08;智能体&#xff09;代表了一种从传统软件系统到自主性实体的深刻范式转变。不同于仅仅执行预设指令或算法的程序&#xff0c;现代 AI Agent 被设计为能够&#xff1a; 感知 (Perce…...

【业务领域】PCIE协议理解

PCIE协议理解 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 PCIE学习理解。 文章目录 PCIE协议理解[TOC](文章目录) 前言零、PCIE掌握点&#xff1f;一、PCIE是什么&#xff1f;二、PCIE协议总结物理层切速 链路层事务层6.2 TLP的路…...

设计模式简述(十四)组合模式

组合模式 描述基本使用所有节点方法一致使用 叶子无实现子节点使用 添加向上查询使用&#xff08;没变化&#xff09; 描述 组合模式用于描述部分与整体的关系&#xff0c;将个体对象与组合对象的行为统一&#xff0c;便于维护整个数据集。 基本使用 所有节点方法一致 定义…...

【Tool】vscode

vscode问题集锦 1 全局搜索失效 ctrl shift f 快捷键失效&#xff1a; 原因&#xff1a;可能与输入法快捷键冲突&#xff0c;重定义输入法快捷键即可 其他 看心情和经历补充&#xff5e;...

文件操作--文件包含漏洞

本文主要内容 脚本 ASP、PHP、JSP、ASPX、Python、Javaweb --# 各种包含函数 检测 白盒 代码审计 黑盒 漏扫工具、公开漏洞、手工看参数值及功能点 类型 本地包含 有限制、无限制 远程包含 无限制、有限制…...

数字智慧方案6156丨智慧医联体信息化解决方案(50页PPT)(文末有下载方式)

资料解读&#xff1a;智慧医联体信息化解决方案 详细资料请看本解读文章的最后内容。 在医疗改革不断深化的大背景下&#xff0c;医联体信息化建设成为推动医疗服务高质量发展的关键力量。《智慧医联体信息化解决方案》这份资料&#xff0c;全面且深入地阐述了医联体信息化建…...

华为eNSP:多区域集成IS-IS

一、什么是多区域集成IS-IS&#xff1f; 多区域集成IS-IS是一种基于中间系统到中间系统&#xff08;IS-IS&#xff09;协议优化的网络架构设计&#xff0c;通过多区域协同、路径优化和扩展性增强实现高效路由管理&#xff0c;其核心特征如下&#xff1a; 1、分布式架构与多区…...

RAG技术完全指南(一):检索增强生成原理与LLM对比分析

RAG技术完全指南&#xff08;一&#xff09;&#xff1a;检索增强生成原理与LLM对比分析 文章目录 RAG技术完全指南&#xff08;一&#xff09;&#xff1a;检索增强生成原理与LLM对比分析1. RAG 简介2. 核心思想3. 工作流程3.1 数据预处理&#xff08;索引构建&#xff09;3.2…...

(持续更新)Ubuntu搭建LNMP(Linux + Nginx + MySQL + PHP)环境

LNMP&#xff08;Linux Nginx MySQL PHP&#xff09;环境是在Linux操作系统上构建的一个高性能Web服务器环境。M也可以指代其他数据库&#xff0c;P也可以指代Python 1. 准备Linux系统 确保你已经在一台服务器或虚拟机上安装了Linux操作系统。推荐使用Ubuntu、CentOS或Debi…...

机器人手臂控制器:EMC电磁兼容解决(一)

一、机器人手臂控制器行业标准剖析 GB/T 39004—2020《工业机器人电磁兼容设计规范》 GB/T 37283-2019 服务机器人 电磁兼容 通用标准 抗扰度要求和限值 GB/T 39785-2021 服务机器人 机械安全评估与测试方法 GB/T 40014-2021 双臂工业机器人 性能及其试验方法 GB/T 40013-…...

Qt进阶开发:QSS常用的语法介绍和使用

文章目录 一、什么是QSS?二、QSS的基本语法三、QSS 的使用方式3.1 在代码中设置 QSS3.2 加载外部 QSS 文件四、QSS中选择器的介绍和使用4.1 Type Selector(类型选择器)4.2 ID Selector(ID 选择器)4.2.1 仅使用 ID(常见写法)4.2. 2 类型 + ID(更精确匹配)4.3 Class Sel…...

qemu学习笔记:QOM

2.4 QOM介绍 说明&#xff1a;小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。 参考&#xff1a; 《QEMU&KVM源码解析与应用》作者&#xff1a;李强 Qemu - 百问网嵌入式Linux wiki QOM 定义&#xff1a;QEMU Object Model&#xff0c;是 Q…...

Spring AI开发跃迁指南(第二章:急速上手3——Advisor核心原理、源码讲解及使用实例)

1.Advisor简介 Spring AI 中的 Advisor 是一种核心机制&#xff0c;用于拦截和增强 AI 应用程序中的请求与响应流。其设计灵感来源于 Spring AOP&#xff08;面向切面编程&#xff09;中的切面&#xff08;Aspect&#xff09;概念&#xff0c;但专门针对 AI 交互场景进行了优化…...