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

详解传输层协议TCP/UDP

传输层

传输层是OSI模型的第四层,主要负责端到端的数据传输,确保数据可靠、有> 序地从源设备传送到目标设备。其主要功能包括:

  • 端到端通信:在源和目标设备之间建立连接,确保数据准确传输。
  • 数据分段与重组:将数据分割成适合网络传输的较小单元(如TCP段或UDP数据报),并在接收端重新组合。
  • 错误检测与恢复:通过校验和、确认机制等检测并纠正传输中的错误。
  • 流量控制:调节数据传输速率,防止接收方过载。
  • 拥塞控制:在网络拥堵时减少数据发送量,避免进一步恶化。

OSI模型
在这里插入图片描述

常见的传输层协议

UDP

UDP是工作在OSI(开放系统互连,Open Systems Interconnection)模型中传输层的协议。它使用IP作为底层协议,是为应用程序提供一种以最少的协议机制向其他程序发送消息的协议。其主要特点是无连接,不保证可靠传输和面向报文。RFC 768为IETF(互联网工程部,Internet Engineering Task Force)
提供的UDP标准。

UDP协议的特点:

  1. 无连接:知道对端的IP和端口号就直接发送报文,不管是否建立连接
  2. 不可靠:没有确认机制,如果因为网络的问题没有发送到对端,不会给应用层返回任何的错误信息。
  3. 面相数据报:应用层不能够灵活的控制读写的次数。

UDP报头

在这里插入图片描述

  • 16为长度表示报头+数据的总长度,因此UDP一次能够发送的最大长度是2^16字节,也就是64KB左右,因此,UDP更适合较短的数据的发送。
  • 16校验位,如果校验出错,报文会被直接丢弃。

UDP接口

在这里插入图片描述
在绑定套接字的时候,使用SOCK_DGRAM

TCP(重点,难点)

TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它位于OSI模型的第四层(传输层),主要用于在不可靠的互联网上提供可靠的数据传输服务。

TCP的主要特点:

  1. 面向连接:通信前需要通过“三次握手”建立连接,通信结束后通过“四次挥手”断开连
  2. 可靠性:通过确认机制、重传机制、校验和等方式确保数据准确无误地传输。
  3. 有序性:数据按发送顺序到达接收端,TCP会对数据包进行排序。
  4. 流量控制:通过滑动窗口机制防止发送方发送数据过快导致接收方无法处理。
  5. 拥塞控制:通过慢启动、拥塞避免等算法防止网络过载。

下面我们会分别谈论TCP这些特点

TCP连接管理机制

TCP协议本身就是面相连接的,意味着在进行通信的时候,首先要将两台主机进行连接,这里就引入我们下面将要谈论的三次握手四次挥手
在这里插入图片描述
三次握手
假设我们的客户端请求访问服务器的例子。服务器将特定的端口绑定后就会进入监听(Listen状态),等待我们的客户端进行访问。我们客户端调用connect函数,之后服务器就会收到SYN=1的请求报头,表示请求连接,我们客户端的accept函数,会返回ACK=1表示确认连接的返回报头,但是TCP是全双工,因此,我们的服务器也要发送SYN=1的请求连接的请求报头,这个时候,为了简化,最终服务器会发送ACK=1&&SYN=1的报头,客户端接收到了之后,返回ACK=1的报头,表示针对服务器建立连接的请求表示同意。
当完成这些之后,我们客户端就可以通过套接字进行通信了。

图解
在这里插入图片描述

四次挥手
假设我们的客户端请求断开连接,这个时候,我们的客户端会处于FIN_WAIT_I的状态,发送FIN=1的报头给服务器,表示请求断开连接,服务器现在肯定阻塞等待哪里,因为我们服务器正在等待客户端发送的信息,这个时候,服务器会结束read,直接返回0,表示客户端断开,这个时候,我们单方面解开了和客户端的连接(表示客户端不能发送信息给我们了,但是我们还能发送信息给客户端)。这个时候,我们在编写服务器代码的时候,进行判断,if(read() = 0) close(sockfd),关闭通信套接字,这个时候我们发送FIN=1的报头给客户端,客户端接收到了之后,返回ACK=1,这个时候四次挥手完全结束,客户端和服务器的连接完全断开了。
图解
在这里插入图片描述
在这里插入图片描述

TCP的确认应答和超时重传

TCP面向连接,保证了可靠性,因此,每个发送的报文,对端都会返回ACK=1的报文,表示接收到了你的报文。
在上面提到的三次握手四次握手中我们以及能够或多或少的感觉到这一点了。
因此,当我们发送方发送报文后长时间没有接收到ACK的时候,发送方就会进行超时重传

TCP TIME_WAIT状态引起的绑定失败

通过上面四次挥手的图中,可以看到,对端发送FIN的时候,最开始的请求方会进入FIN_WAIT的状态,这种状态下,我们的请求方会在一定时间内拒绝你对当前的端口的bind,他的目的是防止历史遗留在路由器上的报文,在干扰下一次的连接。
但是在一些场景下这种机制是不合理的
比如一些不活跃的用户,我们的的服务器应该对其进行清理,这种时候我们会出现大量TIME_WAIT状态的链接,在高并发的情况下,这种会影响服务器的性能。
解决方法
在这里插入图片描述
利用setsockopt接口,通过SO_REUSEADDR套接字选项,通知内核,某个Listen状态的套接字可以重复使用。

TCP报头

在这里插入图片描述
下面我会根据TCP报头的这些字段详细解释其他TCP处理的机制

TCP滑动窗口机制(确认序号 + 序号)

TCP滑动窗口机制又这里的32确认序号和32为序号保证,我们知道TCP会进行确认应答,但是如何更加合理和高效的确认应答就是利用这里的32为序号和确认序号。
确认序号的机制:表示当前数字之前的报文都已经接收到了,比如确认序号为1001返回给发送端,发送端就知道0~1000都已经接受到了。
滑动窗口

滑动窗口:和算法中的滑动窗口的思想一样我们每次发送方将窗口中的内容依次发送给对端,对端接收到了之后返回确认序号,如果确认序号为2001,我们的窗口的左侧就可以直接移动到2001,窗口的右侧也可以移动到6001,表示5001~6001也可以发送。
在这里插入图片描述
在这里插入图片描述
我们通过确认序号的机制,就可以确认报文是否发送成功了。

URG | ACK | PSH | RST | SYN | FIN
  • URG : 紧急指针是否有效。

TCP紧急指针是TCP协议中的一个重要概念,用于处理紧急数据。紧急数据是一种需要优先处理的数据,通常用于发送一些重要的通知或控制信息。
紧急指针的作用:
当TCP报文的URG标志位被置为1时,TCP头部的紧急指针字段会记录一个偏移量,指向紧急数据的最后一个字节的下一个字节
这意味着紧急指针只能标识一个字节的数据。紧急数据的字节号可以通过以下公式计算:

  • ACK : 确认应答
  • PSH : 提醒我们的应用层应该及时将缓冲区中发送的报文取走。
  • RST : 请求重新建立连接。
  • SYN : 请求建立连接。
  • FIN : 请求断开连接。
紧急指针,上面已经介绍
16位窗口大小

我们知道TCP中的缓冲区是定长的,因此,16窗口大小表示当前缓冲区的剩余量。

16位校验

保证数据的可靠性,如果校验失败,报文会被直接丢弃。

4位首部长度

由于我们的报头有参数字段,因此报头的具体长度是不确定的,这个时候四位首部长度表示[0,15]这个大小,但是我们首部长度的基本单位是四字节,所以四位首部长度可以表示[0,60]这个大小,如果参数为空,报头的长度为20字节,因此,四位首部长度具体能够表示[20,60]。

源端口和目的端口

这个不用解释

流量控制

TCP的缓冲区是定长的,因此,如果用户突然发送大量的数据可能直接导致缓冲区溢出的问题,因此TCP还要处理拥塞的问题。
解决方式:这个问题的解决方式解释我们报头中的窗口大小,发送端在收到确认应答的时候同时会受到接收端目前窗口的信息,这个时候,通过调整发送方滑动窗口的大小就可以减少发送量,是不是逻辑的闭环。

拥塞控制

虽然 TCP 有了滑动窗口这个大杀器, 能够高效可靠的发送大量的数据. 但是如果在刚开
始阶段就发送大量的数据, 仍然可能引发问题.
因为网络上有很多的计算机, 可能当前的网络状态就已经比较拥堵. 在不清楚当前网络
状态下, 贸然发送大量的数据, 是很有可能引起雪上加霜的.

TCP 引入 慢启动 机制, 先发少量的数据, 探探路, 摸清当前的网络拥堵状态, 再决定按
照多大的速度传输数据。
在这里插入图片描述
当 TCP 开始启动的时候, 慢启动阈值等于窗口最大值。

  • 在每次超时重发的时候, 慢启动阈值会变成原来的一半, 同时拥塞窗口置回 1;
    少量的丢包, 我们仅仅是触发超时重传; 大量的丢包, 我们就认为网络拥塞;
  • 当 TCP 通信开始后, 网络吞吐量会逐渐上升; 随着网络发生拥堵, 吞吐量会立刻下降;
    拥塞控制, 归根结底是 TCP 协议想尽可能快的把数据传输给对方, 但是又要避免给网络
    造成太大压力的折中方案
    慢启动的本质就是对当前网络环境进行探测
    这样的好处就是最后发送的大小取决于网络的能力 && 接收方窗口的大小

面相字节流

建一个 TCP 的 socket, 同时在内核中创建一个 发送缓冲区 和一个 接收缓冲区

  • 调用 write 时, 数据会先写入发送缓冲区中;
  • 如果发送的字节数太长, 会被拆分成多个 TCP 的数据包发出;
  • 如果发送的字节数太短, 就会先在缓冲区里等待, 等到缓冲区长度差不多了, 或
    者其他合适的时机发送出去;
  • 接收数据的时候, 数据也是从网卡驱动程序到达内核的接收缓冲区;
  • 然后应用程序可以调用 read 从接收缓冲区拿数据;
  • 另一方面, TCP 的一个连接, 既有发送缓冲区, 也有接收缓冲区, 那么对于这一
    个连接, 既可以读数据, 也可以写数据. 这个概念叫做 全双工

这个时候就会出现经典的粘包问题,TCP区别于UDP他是面相字节流,UDP是面相数据报,面相字节流其实和文件操作很像,我们需要通过我们事先商量好的协议进行读取,比如HTTP协议或者我们程序员自己制定的协议,我们需要通过各种高级语言(c/c++,Java,Python…)通过字符串操作,让他的报文能够完整的显现出来。
面相字节流只是TCP的特性,并不是缺点,就和虽然UDP能够减少字符串处理,但是UDP发送的内容有限。这都是协议的特性,并不能说是缺点。

总结

传输层协议(TCP/UDP)是网络通信中的核心,负责在源主机和目标主机之间提供可靠或高效的数据传输服务。TCP(传输控制协议)通过三次握手建立连接,确保数据的可靠性和顺序,适用于对数据完整性要求高的场景,如网页浏览和文件传输。UDP(用户数据报协议)则提供无连接服务,传输速度快但不可靠,适合实时性要求高的应用,如视频流和在线游戏。两者各有优劣,选择时需根据具体需求权衡可靠性与效率。

相关文章:

详解传输层协议TCP/UDP

传输层 传输层是OSI模型的第四层,主要负责端到端的数据传输,确保数据可靠、有> 序地从源设备传送到目标设备。其主要功能包括: 端到端通信:在源和目标设备之间建立连接,确保数据准确传输。数据分段与重组&#xff1…...

案例|某开关站室外轮式巡检机器人解决方案

随着电网规模的扩大和复杂性的增加,传统的GIS开关设备巡视工作面临着巨大的挑战。人工巡视不仅劳动强度大、效率低,而且难以保证巡视的准确性和全面性。此外,GIS设备通常位于复杂的环境中,如高海拔、高湿度、强电磁干扰等&#xf…...

穿越虚拟与现实:解密Linux进程的地址空间

在 Linux 操作系统中,每个进程都有独立的虚拟地址空间。虚拟地址空间是操作系统为每个进程提供的抽象内存模型,它使得每个进程都觉得自己拥有独立的内存,而不需要关心物理内存的具体布局。本文将深入探讨 Linux 进程的虚拟地址空间及其管理机…...

什么是MySql的主从复制(主从同步)?

主页还有其他面试题总结,有需要的可以去看一下,喜欢的就留个三连再走吧~ 1.什么是MySql的主从复制原理? 主从复制的核心就是二进制binlog(DDL(数据定义语言)语句和DML(数据操纵语言&#xff09…...

C++面向对象编程技术研究

一、引言 面向对象编程(OOP)是一种程序设计方法,它将现实世界中的实体抽象为“对象”,并通过类和对象来实现程序的设计。OOP的核心思想包括封装、继承和多态,这些特性使得程序更加模块化、易于扩展和维护。C作为一种支…...

MySQL 连表查询:原理、语法与优化

目录 引言 什么是连表查询? 连表查询的类型 1. 内连接(INNER JOIN) 2. 左连接(LEFT JOIN) 3. 右连接(RIGHT JOIN) 4. 全连接(FULL JOIN) 5. 交叉连接(…...

力扣2382. 删除操作后的最大子段和

力扣2382. 删除操作后的最大子段和 题目 题目解析及思路 题目要求找到每次删除一个元素的最大字段和 因为删除不好做,可以转删除为添加,用并查集维护当前子段和 两部分合并(两个并查集),三部分求和(两个并查集和一个元素) 代码 class S…...

PMP--题库--一模--纯问题

文章目录 单选题 (每题1分,共170道题)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用…...

C++核心指导原则: 错误处理

C Core Guidelines 整理目录 哲学部分接口(Interface)部分函数部分类和类层次结构部分枚举部分资源管理部分性能部分错误处理 E: Error handling E.1: Develop an error-handling strategy early in a design 翻译: 在设计早期制定一个错误处理策略。原因: 为确保代码的健壮…...

豆包、扣子等产品如何与CSDN合作?

要实现CSDN开发者社区与豆包、扣子等产品的深度合作,构建创作者Agent生态体系,可通过以下结构化方案实现技术、生态与商业价值的闭环(含具体实施路径与数据指标): 一、战略合作框架搭建 开放平台互通 建立三方API网关&…...

C#开发——ConcurrentDictionary集合

ConcurrentDictionary<TKey, TValue> 是 C# 中一个专为多线程场景设计的线程安全字典集合&#xff0c;位于 System.Collections.Concurrent 命名空间中。它允许多个线程同时对字典进行读写操作&#xff0c;而无需额外的同步措施。 一、集合特征 此集合有如下特征…...

CSS `transform` 属性详解:打造视觉效果与动画的利器

CSS transform 属性详解&#xff1a;打造视觉效果与动画的利器 引言一、transform 属性简介二、平移&#xff08;Translation&#xff09;三、旋转&#xff08;Rotation&#xff09;四、缩放&#xff08;Scale&#xff09;五、倾斜&#xff08;Skew&#xff09;六、组合变换&am…...

Python 进阶特性深度解析:从语法糖到内存管理的统一视角

生成式(推导式)的用法与内存效率分析 Python 的推导式不仅仅是语法糖,它们在内存管理和性能方面有着深刻的影响。理解推导式的工作原理,有助于我们写出更高效的代码。 推导式的内存模型分析 列表推导式在 CPython 解释器中的实现实际上比等价的 for 循环更为高效: # 列…...

eclipse配置Spring

1、从eclipse下载Spring工具 进入 help – install new software… &#xff0c;如下图&#xff1a; 点击 add &#xff0c;按以下方式输入&#xff1a; Name : Spring Location : http://dist.springsource.com/release/TOOLS/update/e4.10/ 之后点击 add &#xff0c;等待…...

属性绑定

双大括号不能在html属性中使用&#xff0c;想要响应式地绑定一个属性&#xff0c;应用v-bind指令 <script > export default{data(){return{dynamicId:"appid",dynamicClass:"appclass"}} } </script><template><div v-bind:id"…...

深入讲解微信小程序 <canvas> 标签的 type=“2d“属性

在微信小程序开发中&#xff0c;<canvas> 组件是一个非常强大的工具&#xff0c;允许开发者创建动态图形和动画。然而&#xff0c;正确设置 <canvas> 的 type 属性是确保其正常工作的关键之一。本文将深入探讨 type"2d" 属性的重要性、使用场景及其在实际…...

基于PSO-LSTM长短期记忆神经网络的多分类预测【MATLAB】

一、研究背景与意义 在时间序列分类、信号识别、故障诊断等领域&#xff0c;多分类预测任务对模型的时序特征捕捉能力提出了极高要求。传统LSTM网络虽能有效建模长程依赖关系&#xff0c;但其性能高度依赖超参数的选择&#xff0c;例如隐含层神经元数量、学习率、迭代次数等。…...

Linux----线程

一、基础概念对比 特性进程 (Process)线程 (Thread)资源分配资源分配的基本单位&#xff08;独立地址空间&#xff09;共享进程资源调度单位操作系统调度单位CPU调度的最小单位创建开销高&#xff08;需复制父进程资源&#xff09;低&#xff08;共享进程资源&#xff09;通信…...

自注意力机制和CNN的区别

CNN&#xff1a;一种只能在固定感受野范围内进行关注的自注意力机制。​CNN是自注意力的简化版本。自注意力&#xff1a;具有可学习感受野的CNN。自注意力是CNN的复杂形态&#xff0c;是更灵活的CNN&#xff0c;经过某些设计就可以变为CNN。 越灵活、越大的模型&#xff0c;需要…...

【qt链接mysql】

首先根据自己qtcreater 下载mysql安装包 将mysql安装目录下的如下目录中的xxx\MySQL\MySQL Server 5.7\lib\libmysql.dll 拷贝到QT目录C:\Qt\5.7\mingw53_32\bin 下&#xff08;当前这个也是我电脑上的Qt路径&#xff0c;请找到你Qt对应的bin路径&#xff09; 直接在文win11上…...

Parameter 与 Param 有什么区别

Parameter 与 Param Parameter 与 Param 意思相同&#xff0c;在大多数情况下可以互换使用&#xff0c;它们在用法和语境有一些细微的区别 1、Parameter Parameter 是一个完整的单词&#xff0c;是正式术语&#xff0c;广泛用于数学、统计学、计算机科学、工程等领域 在数学…...

【前端】【功能函数】treeMapEach,对每个节点进行自定义转换的实用函数

一、功能说明 这是一个递归遍历树形结构数据&#xff0c;并对每个节点进行自定义转换的实用函数。它会对原始树中的每个节点执行 conversion 函数&#xff0c;最终生成一个包含转换后结果的新树结构。 二、核心作用 树形结构遍历&#xff1a;深度优先递归遍历所有子节点数据…...

C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南

一、变量类型转换&#xff1a;隐式与显式的门道 &#xff08;一&#xff09;隐式转换&#xff1a;编译器的 “贴心小助手” 隐式转换是编译器自动进行的类型转换&#xff0c;无需开发者手动干预。这种转换通常发生在将取值范围小的数据类型赋值给取值范围大的数据类型时&#…...

初步学习java 动态代理

前言 在学习 动态代理知识之前&#xff0c;可以先了解 反射 反射的复习-CSDN博客 场景 我们知道&#xff0c;一些大明星开演出会&#xff0c;要收门票&#xff0c;准备场景啥的。但很显然 明星&#xff0c;他们主要还是 唱歌&#xff0c;跳舞&#xff0c;和粉丝互动。那么 其…...

QT 基础知识点

1.基础窗口类QMainWindow qDialog Qwidget 随项目一起创建的窗口基类有三个可选QMainWindow qDialog Qwidget 1.1 Qwidget 是所有窗口的基类&#xff0c;只要是他的子类&#xff0c;或子类的子类&#xff0c;都具有他的属性。 右键项目 Add New -> Qt qt设计师界面类&am…...

unity学习53:UI的子容器:面板panel

目录 1 UI的最底层容器&#xff1a;canvas 1.1 UI的最底层容器&#xff1a;canvas 1.2 UI的合理结构 2 UI的子容器&#xff1a;面板panel 2.1 创建panel 2.2 面板的本质&#xff1a; image &#xff0c;就是一个透明的图片&#xff0c;1个空容器 3 面板的属性 4 面板的…...

Qt如何将数据传入labview,Qt又如何从labview中读取数据?

Qt如何将数据传入labview,Qt又如何从labview中读取数据? Qt如何将数据传入labviewQt如何从labview中读取数据 Qt如何将数据传入labview Qt如何从labview中读取数据...

JWT使用教程

目录 JWT (JSON Web Token)1. JWT简介(1) 什么是JWT(2) JWT有什么用(3) JWT认证方式 2. JWT的组成部分3. 签名的目的4. JWT与Token的区别5 JWT的优势6 JJWT签发与验证token(1) 引入依赖(2) 创建 Token(3) 解析Token(4) 设置过期时间(5) 自定义claims 7. JWT自定义工具类 JWT (J…...

数据结构——静态顺序表,动态顺序表

线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的 数据结构&#xff0c;常⻅的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的⼀条直线。但是在…...

前端Sass面试题及参考答案

目录 什么是 Sass? Sass 和 CSS 的主要区别是什么? Sass 中如何处理列表? Sass 中如何处理映射(map)? Sass 中如何使用函数? Sass 中如何使用内置函数? Sass 中如何设置默认值? Sass 中的 @function 和 @mixin 有什么区别? Sass 中如何实现模块化? Sass 中…...

ubuntu20.04音频aplay调试

1、使用指定声卡&#xff0c;aplay 播放命令 aplay -D plughw:1,0 test2.wav2、 录音 arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav3、各个参数含义 -D 指定声卡编号 plughw:0,0 //0,0代表card0,device0&#xff0c;可以通过arecord -l获取 -f 录音格式 S16_LE…...

比特信噪比与信噪比SNR的换算公式

在无线通信系统中&#xff0c;比特信噪比与信噪比&#xff08;SNR&#xff0c;通常指符号信噪比Es/N0&#xff09;的换算&#xff1a; 核心公式 E b N 0 SNR R ⋅ log ⁡ 2 M \boxed{ \frac{E_b}{N_0} \frac{\text{SNR}}{R \cdot \log_2 M} } N0​Eb​​R⋅log2​MSNR​​ 或…...

RTSP场景下RTP协议详解及音视频打包全流程

RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系 RTSP&#xff1a;负责媒体会话控制&#xff08;DESCRIBE、SETUP、PLAY、PAUSE&#xff09;&#xff0c;通过SDP协商传输参数&#xff08;端口、编码格式、封装模式&#xff09;。RTP&#xff1a;实际传输音视频数…...

java练习(39)

ps:题目来自力扣 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以…...

2.24DFS和BFS刷题

洛谷P2895&#xff1a;用BFS走出危险区域&#xff0c;危险区域存在时间&#xff0c;我们用ma记录最快变成危险区域的时间&#xff0c; 然后每次枚举时间1然后跟ma数组比较看能不能走&#xff0c;然后时间复杂度为O(305^2)。 #include<iostream> #include<cstring>…...

基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

赛前启航 | 三场重磅直播集结,予力微软 AI 开发者挑战赛!

随着微软 AI 开发者挑战赛的火热进行&#xff0c;赛前指导直播已成为众多参赛者获取技术干货、灵感碰撞和实战技巧的绝佳平台。继前两期的精彩呈现&#xff0c;第三、四、五期直播即将接连登场&#xff0c;为开发者们带来更加深入的 AI 技术剖析和项目实战指引。无论你是想进一…...

MySQL数据库连接池泄露导致MySQL Server超时关闭连接

前言 最近做项目&#xff0c;发现老项目出现xxx&#xff0c;这个错误其实很简单&#xff0c;出现在MySQL数据库Server端对长时间没有使用的client连接执行清楚处理&#xff0c;因为是druid数据库&#xff0c;且在github也出现这样的issue&#xff1a;The last packet successf…...

Deepseek和Grok 3对比:写一段冒泡排序

1、这是访问Grok 3得到的结果 2、grok3输出的完整代码&#xff1a; def bubble_sort(arr):n len(arr) # 获取数组长度# 外层循环控制排序轮数for i in range(n):# 内层循环比较相邻元素&#xff0c;j的范围逐渐减少for j in range(0, n - i - 1):# 如果当前元素大于下一个元…...

EX_25/2/22

找到第一天mystring练习&#xff0c;实现以下功能 mystring str "hello" mystring ptr "world" str str ptr; str ptr str[0] H #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #in…...

el-select滚动获取下拉数据;el-select滚动加载

el-select下拉获取数据 1.解决问题2.封装MyScrollSelect组件3.使用MyScrollSelect组件 1.解决问题 场景&#xff1a;下拉数据量过大&#xff0c;后端提供一个分页查询接口&#xff1b;需要每次滚动加载下一页的下拉数据 且单选的状态&#xff0c;需要支持回显&#xff0c;通过n…...

Spring Boot面试题

Spring Boot面试题 基础概念 Q1: Spring Boot的核心特性有哪些&#xff1f; public class SpringBootBasicDemo {// 1. 自动配置SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class…...

STM32-智能小车项目

项目框图 ST-link接线 实物图&#xff1a; 正面&#xff1a; 反面&#xff1a; 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 一、让小车动起来 新建文件夹智能小车项目 在里面复制19-串口打印功能 重命名为01-让小车动起来 新建文件夹motor&…...

SAP-ABAP:ABAP第一代增强详解

在SAP ABAP开发中&#xff0c;第一代增强&#xff08;First-Generation Enhancement&#xff09; 是早期用于扩展标准程序功能的传统技术&#xff0c;主要通过预定义的增强点&#xff08;Enhancement Points&#xff09;实现。以下是详细解析&#xff1a; 一、第一代增强的核心…...

20分钟 Bash 上手指南

文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号&#xff08;过滤条件&#xff09;重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…...

地铁站内导航系统:基于蓝牙Beacon与AR技术的动态路径规划技术深度剖析

本文旨在分享一套地铁站内导航系统技术方案&#xff0c;通过蓝牙Beacon技术与AI算法的结合&#xff0c;解决传统导航定位不准确、路径规划不合理等问题&#xff0c;提升乘客出行体验&#xff0c;同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文…...

WordPress R+L Carrier Edition sql注入漏洞复现(CVE-2024-13481)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

滴水逆向_引用_友元函数_运算符重载

作业&#xff1a; 运算符号重载实现。 struct Person { public:int x;int y; public:Person(){this->x 10;this->y 20;}Person(int x, int y){this->x x;this->y y;}//申明友元函数void Printf(const Person& p){printf("%d %d",p.x,p.y);}/…...

git中,如何查看具体单个文件的log

在 Git 中&#xff0c;可以使用多种方式查看单个文件的提交日志&#xff08;Log&#xff09;&#xff0c;以下详细介绍不同场景下的查看方法&#xff1a; 目录 一、基本命令查看文件的完整提交日志 二、查看文件提交日志并显示差异内容 三、限制显示的提交日志数量 四、按…...

如何生成traceid以及可视化展示

根据你的需求&#xff0c;以下是一些可以生成唯一 traceId 并用于分布式链路追踪的工具和项目&#xff0c;这些项目支持生成唯一的 traceId&#xff0c;并将其用于日志记录和分布式追踪&#xff1a; 1. OpenTelemetry OpenTelemetry 是一个开源的观测框架&#xff0c;支持生成…...