Quic如何实现udp可靠传输
QUIC(Quick UDP Internet Connections)是由 Google 设计并被 IETF 标准化的传输层协议,它基于 UDP 实现,但提供了类似 TCP 的可靠性和更高级的功能(如多路复用、0-RTT 握手、TLS 加密等)。
尽管 UDP 是不可靠的,QUIC 实现了自己的机制来提供:
✅ 可靠传输、顺序保证、流控、拥塞控制、加密通信
🚀 一句话理解:
QUIC 在 UDP 之上自己造了一个“更好的 TCP”,通过用户态实现可靠传输。
🧩 QUIC 如何在 UDP 上实现可靠传输?
下面是 QUIC 提供可靠性的核心机制:
✅ 1. 数据分片与多路复用(Streams)
-
QUIC 使用 Stream 概念将数据拆分成多个逻辑流,每个流有自己的 ID 和顺序控制。
-
每个数据包中可能包含多个流的数据片段。
-
每个 Stream 保持自己的有序性和重传机制,互不影响,解决了 TCP 的“队头阻塞(Head-of-line blocking)”问题。
✅ 2. ACK 机制与重传
-
每个 QUIC 包都有一个唯一的包序号(Packet Number)。
-
接收方会通过 ACK frame 显式告诉发送方收到了哪些包(可能是一个范围段,例如
ACK [5,6,7,9]
)。 -
发送方根据 ACK 结果进行 选择性重传(Selective Retransmission),而不是像 TCP 那样使用窗口回退(Go-Back-N)。
✅ 3. 流控(Flow Control)
QUIC 实现了两级流控:
类型 | 控制内容 |
---|---|
连接级流控 | 控制整个连接中所有数据的大小 |
流级流控 | 控制单个 Stream 可发送的字节量 |
避免发送方淹没接收方,防止内存爆炸。
QUIC 实现流控(Flow Control)是为了防止发送方发送太多数据而压垮接收方的内存,确保 发送速度与接收能力匹配。
QUIC 的流控机制比 TCP 更灵活,它支持:
连接级流控(Connection-level) + 流级流控(Stream-level)
✅ 一句话总结:
QUIC 使用
MAX_DATA
和MAX_STREAM_DATA
帧,让接收方“显式告诉”发送方它还能接受多少数据,从而实现精细的流控。
🔍 QUIC 的两个流控层次
类型 | 控制范围 | 控制方式 |
---|---|---|
连接级流控 | 控制整个连接总共能发多少数据 | 使用 MAX_DATA 帧通知 |
流级(单条流)流控 | 控制某条 stream 能发多少数据 | 使用 MAX_STREAM_DATA 帧通知 |
🧩 工作机制详解
1. 🚦 初始窗口(Initial Flow Control Window)
-
每当连接或某个 stream 建立时,接收方通过
Transport Parameters
告诉发送方:initial_max_data = 65536 # 整个连接最多能发 64KB initial_max_stream_data = 32768 # 每个 stream 最多能发 32KB
2. 📤 发送方:按窗口大小发数据
-
每个 packet 中的数据都有位置偏移(offset)
-
发送方不能发送超过
offset > max_data
的内容 -
如果快达到限制,就暂停发送,等接收方“放行”
3. 📥 接收方:接收 + 消费数据后,发送 MAX_*
帧
当接收方:
-
消费了部分数据(应用层读取了),或者
-
有更多缓冲空间
就会发以下帧通知发送方放宽限制:
帧类型 | 作用 |
---|---|
MAX_DATA | 提高连接级可发送总量 |
MAX_STREAM_DATA | 提高某个 stream 的可发送数据量 |
📝 例子:
MAX_STREAM_DATA(StreamID=5, MaximumData=64000)
MAX_DATA(MaximumData=128000)
4. 🚧 如果发送方超过限制会怎样?
-
接收方会直接 丢弃该数据包
-
并可能发送
FLOW_CONTROL_ERROR
帧,强制断开连接
🔁 动态调整窗口(流控窗口增长)
QUIC 支持动态调整窗口大小,类似 TCP 的“滑动窗口”机制,但更灵活:
-
接收方可以基于自身处理速度、缓冲区情况等策略动态调整
-
应用层可参与窗口策略调整(QUIC 是用户态协议)
📊 示例图:QUIC 流控流程简图
[Sender] [Receiver]│ ││───── Data (offset: 0~32767) ─────▶│ ✅ 在窗口范围内│───── Data (offset: 32768~65535) ─▶│ ❌ 超出流窗口限制│ ││◀───── MAX_STREAM_DATA (64000) ────│ ✅ 允许再发更多
✅ 总结:QUIC 的流控机制比 TCP 更灵活的地方
特性 | TCP | QUIC |
---|---|---|
支持多路复用下的流控 | ❌ 需应用层实现 | ✅ 原生支持 per-stream 流控 |
流控信息粒度 | 每个连接一组窗口 | 每个流都有单独窗口 |
流控窗口通告方式 | 被动通告(ACK + 窗口值) | 主动通告(MAX_* 帧) |
动态扩展 | 有,但实现不易 | 简洁灵活,用户态易扩展 |
✅ 4. 拥塞控制(Congestion Control)
-
QUIC 可复用 TCP 的拥塞控制算法(如 Reno、CUBIC、BBR 等)。
-
因为 QUIC 完全在用户态,所以可以快速升级/切换拥塞算法,而不需要内核修改。
✅ 5. 加密与握手(TLS 1.3)
🧵 四、多路复用避免队头阻塞,加速整体数据流
TCP 中多个逻辑流复用一个连接时,某个小包丢失可能导致整个流被阻塞(队头阻塞)。
QUIC 的解决方式:
📶 五、QUIC 支持连接迁移,减少断线重连时间
🔚 小结一句话:
QUIC + UDP 快的根本原因在于它跳过了 TCP 的繁琐握手、内核开销和流阻塞,通过用户态协议 + 0-RTT 加密通信让“发第一个字节”变得更快。
✅ 总结对比表
项目 | TCP + TLS | QUIC + UDP |
---|---|---|
握手延迟 | 至少 1~2 RTT | 最快 0-RTT,首次仅需 1 RTT |
加密 | TLS 分层 | 内建 TLS 1.3,第一包就加密 |
队头阻塞 | 存在 | 消除(Stream 级别传输) |
连接状态 | 内核态管理 | 用户态管理,效率高 |
多路复用 | 需要上层协议实现 | 协议原生支持 |
连接迁移 | 不支持 | 原生支持 Connection ID 迁移 |
适合移动网络 | 一般 | 非常适合(连接迁移 + 0-RTT) |
-
所有 QUIC 数据包(除了第一个)都是 强加密 的。
-
基于 TLS 1.3 实现握手和密钥协商,合并传输和加密握手,支持 0-RTT 和 1-RTT 连接建立。
-
避免了 TCP + TLS 的多轮握手,提高首次连接速度。
-
🔍 详细原因分析(按阶段分解)
🟡 一、TCP + TLS 的握手流程 = 至少 3 次往返
传统的 TCP 连接建立 + TLS 加密握手如下:
1. TCP 三次握手(1.5 RTT):Client → SYNServer → SYN-ACKClient → ACK2. TLS 1.2(或 1.3)握手(再来 1~2 RTT)3. 才能发送加密数据
即:首次连接至少耗时 1~2 RTT(往返时间)
🟢 二、QUIC 将 握手和加密合并在一次往返中
QUIC 的握手流程使用 TLS 1.3 直接集成在传输协议中:
-
首次连接(1-RTT):
-
Client → Initial Packet(携带 TLS Client Hello) ← 第一次发包就带加密握手← Server Hello + 加密信息(+ 证书等) Client → Finished(+ 应用数据)
-
重连(0-RTT):
-
Client → 数据 + 加密握手(直接发数据!) ← ★ 零延迟
👉 QUIC 可以实现 “0-RTT 数据传输”,几乎是立即发送第一条消息。
🔧 三、UDP 不需要内核状态建立连接,QUIC 在用户态实现更灵活
-
TCP 是 面向连接的:需要在内核里维护连接状态(socket 状态机)。
-
UDP 是无连接协议,QUIC 在用户态自己管理连接状态,避免了内核/用户态频繁切换。
-
用户态连接管理允许更快的上下文切换、更容易多路复用。
-
每个 stream 有独立的传输/重传机制
-
某一 stream 丢包不会阻塞其他流,数据能更快抵达
-
QUIC 连接绑定在 Connection ID,而不是 IP + Port
-
移动设备换网(如从 Wi-Fi 切 4G)时无需重新建立连接,延迟更小
✅ 6. 包编号与重排重组
-
QUIC 的包编号是严格递增的,不可重用。
-
即使包乱序到达,也可通过包号重排序。
-
QUIC 自己实现了类似 TCP 的
SACK(Selective ACK)
功能。
✅ 7. 头部校验和加密保护
-
包头也经过加密处理,防止中间人攻击(如修改流量控制字段等)。
📦 总结:QUIC 如何在 UDP 上“可靠传输”
技术点 | 实现作用 |
---|---|
Stream(多路复用) | 消除队头阻塞、实现数据隔离 |
Packet Number + ACK | 保证数据到达与丢包检测 |
重传机制 | 实现可靠交付 |
流控 + 拥塞控制 | 限制数据发送速度,防止拥堵 |
TLS1.3 加密 | 确保安全性和身份验证 |
用户态实现 | 更灵活,可快速迭代 |
📌 简图:QUIC vs TCP(在可靠性层面)
┌──────────────┐ ┌──────────────┐│ 应用层 │ │ 应用层 │└────┬──────▲──┘ └────┬──────▲──┘▼ │ ▼ │┌──────────────┐ ┌──────────────┐│ QUIC 协议 │ │ TCP 协议 │└────┬──────▲──┘ └────┬──────▲──┘▼ │ ▼ │┌──────────────┐ ┌──────────────┐│ UDP/IP │ │ IP层 │└──────────────┘ └──────────────┘
QUIC + UDP 连接更快,是因为它在 连接建立阶段(握手)和数据传输机制方面做了大量优化,特别针对 TCP 的延迟瓶颈进行了设计改进。
✅ 简要结论:
QUIC 比 TCP 快,主要因为它省掉了握手轮次 + 消除了 TCP+TLS 分层带来的延迟 + 更高效的连接复用。
相关文章:
Quic如何实现udp可靠传输
QUIC(Quick UDP Internet Connections)是由 Google 设计并被 IETF 标准化的传输层协议,它基于 UDP 实现,但提供了类似 TCP 的可靠性和更高级的功能(如多路复用、0-RTT 握手、TLS 加密等)。 尽管 UDP 是不可…...
本地文件操作 MCP (多通道处理) 使用案例
## 概述 文件操作 MCP (Multi-Channel Processing) 是一种用于高效处理本地文件的框架和库,它提供了并行处理、批量操作、监控和异常处理等功能。通过多通道架构,MCP 能够显著提高大规模文件操作的效率,特别适用于需要处理大量文件或大型文件…...
Blender 入门教程(三):骨骼绑定
一、前言 不知道大家有没有玩过一些单机游戏的 Mod,比如《侠盗猎车》里主角变成奥特曼,各种新能源汽车乱入等等。 这些都是别人对原有模型就行修改换皮,并重新绑定骨骼完成的,所以如果会了骨骼绑定后,你也就可以自己…...
Java 异常处理之 BufferOverflowException(BufferOverflowException 概述、常见发生场景、避免策略)
一、BufferOverflowException 概述 BufferOverflowException 是 Java NIO 包中的一个运行时异常,是 RuntimeException 的子类 public class BufferOverflowException extends RuntimeException {... }# 继承关系java.lang.Object-> java.lang.Throwable-> j…...
密码学实验:凯撒密码
密码学实验:凯撒密码 一、实验目的 掌握凯撒密码的数学原理:理解字符移位与模运算的结合,实现加解密算法。理解暴力破解本质:通过穷举有限密钥空间,掌握利用语言特征破解密文的方法。编程实践:用Python实…...
C40-指针
一 指针的引入 什么是指针:指针是一个变量,其值是另一个变量的内存地址 简单的使用地址输出一个变量: 代码示例 #include <stdio.h> int main() {int a10;printf("a的地址是:%p\n",&a);printf("a%d\n",*(&a)); //*号是取值运算符…...
Cloudflare防火墙拦截谷歌爬虫|导致收录失败怎么解决?
许多站长发现网站突然从谷歌搜索结果中“消失”,背后很可能是Cloudflare防火墙误拦截了谷歌爬虫(Googlebot),导致搜索引擎无法正常抓取页面。 由于Cloudflare默认的防护规则较为严格,尤其是针对高频访问的爬虫IP&…...
3.3 掌握RDD分区
本实战任务旨在掌握Spark RDD 的分区操作,包括理解 RDD 分区的概念、作用、分区数量的确定原则以及如何通过自定义分区器来优化数据处理。通过创建一个 Maven 项目并编写 Scala 代码,实现了一个自定义的科目分区器 SubjectPartitioner,该分区…...
以项目的方式学QT开发(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
API 描述 函数原型 参数说明 push_back() 在 list 尾部 添加一个元素 void push_back(const T& value); value :要添 加到尾部的元 素 这个示例演示了如何创建 std::list 容器,并对其进行插入、删除和迭代操作。在实际应用中&am…...
linux备份与同步工具rsync
版权声明:原创作品,请勿转载! 文章目录 版权声明:原创作品,请勿转载! 实验环境介绍: 1.工具介绍 2.详细介绍 2.1 本地模式(用得少) 2.2 远程模式 2.3 守护进程模式…...
Ascend的aclgraph(九)AclConcreteGraph:e2e执行aclgraph
1回顾 前面的几章内容探讨了aclgraph运行过程中的涉及到的关键模块和技术。本章节将前面涉及到的模块串联起来,对aclgraph形成一个端到端的了解。 先给出端到端运行的代码,如下: import torch import torch_npu import torchair import log…...
2025 OceanBase 开发者大会全议程指南
5 月 17 日,第三届 OceanBase 开发者大会将在广州举办。 我们邀请数据库领军者与AI实践先锋,与开发者一起探讨数据库与 AI 协同创新的技术趋势,面对面交流 OceanBase 在 TP、AP、KV 及 AI 能力上的最新进展,深度体验“打破技术栈…...
【深度学习之四】知识蒸馏综述提炼
知识蒸馏综述提炼 目录 知识蒸馏综述提炼 前言 参考文献 一、什么是知识蒸馏? 二、为什么要知识蒸馏? 三、一点点理论 四、知识蒸馏代码 总结 前言 知识蒸馏作为一种新兴的、通用的模型压缩和迁移学习架构,在最近几年展现出蓬勃的活力…...
Java大师成长计划之第23天:Spring生态与微服务架构之服务发现与注册中心
📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4-turbo模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 在微服务架构中,服务发现…...
list简单模拟实现
成员变量迭代器(重点)ListIterator运算符重载begin、end 插入、删除inserterase头插、尾插、头删、尾删 operator->const_iterator拷贝构造operator析构函数完整代码 由于前面已经模拟实现了vector,所以这里关于一些函数实现就不会讲的过于…...
undefined reference to `typeinfo for DeviceAllocator‘
出现“undefined reference to typeinfo”链接错误的原因及解决方法如下: class DeviceAllocator { public:explicit DeviceAllocator(DeviceType device_type){};virtual void* allocate(size_t n) 0;virtual void deallocate(void* p) 0;~DeviceAllocator() d…...
动态规划问题 -- 多状态模型(买股票的最佳时机II)
目录 动态规划分析问题五步曲题目概述利用状态机推导状态转移方程式代码编写 动态规划分析问题五步曲 不清楚动态规划分析问题是哪关键的五步的少年们可以移步到 链接: 动态规划算法基础 这篇文章非常详细的介绍了动态规划算法是如何分析和解决问题的 题目概述 链接: 买股票的最…...
【落羽的落羽 C++】进一步认识模板
文章目录 一、非类型模板参数二、模板的特化1. 函数模板特化2. 类模板特化 三、模板的编译分离 一、非类型模板参数 模板参数可以分为类型参数和非类型参数。我们之前使用的都是类型参数,即出现在模板参数列表中,跟在class或typename之类的参数类型名称…...
Java爬虫能处理京东商品数据吗?
Java爬虫完全可以处理京东商品数据。通过Java爬虫技术,可以高效地获取京东商品的详细信息,包括商品名称、价格、图片、描述等。这些信息对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。以下是一个完整的Java爬虫示例,展…...
#跟着若城学鸿蒙# web篇-初探
前言 先看下官方介绍,这里总结了比较重要的几点Web组件基础:加载与渲染网页全面解析Web组件是现代应用开发中不可或缺的重要元素,它允许开发者在原生应用中无缝集成Web内容。本文将全面介绍Web组件的基本功能,包括多种内容加载方…...
Top-p采样:解锁语言模型的创意之门
Top - p采样 是什么:核采样:排序,累计到0.7,随机选择 在自然语言生成和大规模语言模型推理中,Top - p采样(又叫核采样,Nucleus Sampling)是一种基于累积概率的采样策略。 Top - p介…...
周赛好题推荐
这周周赛很有质量的,上了一个很有意思的数学题目,推了半天..... 给定一个区间[l,r],求出区间内所有满足x mod 2^i !k的所有正整数(最后全部进行异或) 首先我们不妨先算出[l,r]区间所有数字的异或,然后在算…...
【RabbitMQ】实现RPC通信的完整指南
文章目录 RPC 通信创建相关队列客户端代码声明队列发送请求接收响应完整代码 服务端代码设置同时只能获取一个消息接收消息完整代码 运行程序启动客户端启动服务端 RPC 通信 RPC (Remote Procedure Call), 即远过程调用。它是一种通过网络从远程计算机上请求服务,而…...
CK3588下安装linuxdeployqt qt6 arm64
参考资料: Linux —— linuxdeployqt源码编译与打包(含出错解决) linux cp指令报错:cp: -r not specified; cp: omitting directory ‘xxx‘(需要加-r递归拷贝) CMake Error at /usr/lib/x86_64…...
滑动窗口之二(优先队列)
原本滑动窗口的板子用的是数组和双指针模拟,我嫌麻烦还不好懂找了双端队列。但其实还是不太好使,比如今天的这道题就处理起来很麻烦。但是如果用优先队列的话就可以一直保证整个窗口是有序的,只需判断一下是否在窗口内即可。但是!…...
小刚说C语言刷题—1088求两个数M和N的最大公约数
1.题目描述 求两个正整数 M 和 N 的最大公约数(M,N都在长整型范围内) .输入 输入一行,包括两个正整数。 输出 输出只有一行,包括1个正整数。 样例 输入 45 60 输出 15 2.参考代码(C语言版) #include <stdio.h> …...
pytorch训练可视化工具---TensorBoard
一、目的:为什么使用 TensorBoard 调控模型 使用 TensorBoard 可以帮我们: 实时查看 loss / acc 曲线 → 判断是否过拟合、欠拟合; 对比不同模型或超参数的效果; 可视化模型结构 → 帮助调试模型设计; 查看权重/梯…...
丝杆升降机限位失灵深度剖析:从故障机理到智能监测方案
在工业自动化与精密机械传动领域,丝杆升降机凭借高精度、大推力的特性,成为产线设备的核心执行部件。然而,限位系统的可靠性直接决定设备安全运行与生产连续性。本文将从技术原理、故障诊断到智能监测方案,系统性解析丝杆升降机限…...
系统集成项目管理工程师学习笔记
第九章 项目管理概论 1、项目基本要素 项目基础 项目是为创造独特的产品、服务或成果而进行的临时性工作。 项目具有临时性、独特性、渐进明细的特点。项目的“临时性”是指项目只有明确的起点和终点。“临时性”并一定意味着项目的持续时间短。 项目可宣告结束的情况&…...
RDD的自定义分区器-案例
对电商订单数据进行处理,订单数据包含用户 ID 和订单金额,不同地区的用户有不同的 ID 范围。我们会按照地区对订单数据进行分区,这样做能让相同地区的订单数据处于同一分区,便于后续按地区进行统计金额分析。 订单数据如下&#x…...
牛客网NC231954:斐波那契数列 (简单的数列问题)
牛客网NC231954:斐波那契数列 (简单的数列问题) 题目描述 本题要求我们计算斐波那契数列的第n项,斐波那契数列定义如下: f(1) 1f(2) 1f(n) f(n-1) f(n-2),当n ≥ 3 给定整数n,求f(n)的值。 算法思路 斐波那契…...
中国近代史3
辛亥革命 1.同盟会:建立 1905年,东京,第一个全国性的资产阶级革命政党;同盟会纲领“驱除鞑虏,恢复中华,建立民国,平均地权” “民族”“民生”“民权” 2.武昌起义 ①爆发:1911.10…...
晶振的核心参数
目录 1.简介 2.晶振核心参数详解 3.晶振的抖动(jitter) 4.抖动的三种测量方式 5.抖动的其他资料 1.简介 再看一些晶振的手册时,经常遇到一些类似或相近的参数,今天借此机会,做一个小姐。 2.晶振核心参数详解 1…...
北京孙河傲云源墅:限量典藏的主城墅居臻品
在限墅令的背景下,北京主城的墅居产品日益稀缺,而傲云源墅作为孙河墅区的杰出之作,凭借其独特的价值,成为了众多高端置业者的理想选择。 傲云源墅所处的孙河地区,是北京公认的高价值板块。其地位在 2025 年孙河 2902 …...
驱动-Linux定时-timer_list
了解内核定时相关基础知识 文章目录 简要介绍timer_list 特点API 函数实验测试程序 - timer_mod.c编译文件-Makefile实验验证 注意事项总结 简要介绍 硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始…...
从理论到实战:模糊逻辑算法的深度解析与应用实践
从理论到实战:模糊逻辑算法的深度解析与应用实践 一、模糊逻辑的核心概念与数学基础 模糊逻辑(Fuzzy Logic)是一种处理不确定性的数学工具,其核心思想是将传统布尔逻辑的“非黑即白”扩展为连续的隶属度函数。例如,在…...
涨薪技术|0到1学会性能测试第65课-SQL捕获阻塞事件
前面的推文我们掌握了JVM调优技术。今天给大家分享MS SQL数据库监控与调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。 01SQL捕获阻塞事件 在SQL Server 2005之前的版本,分析哪些进程产生阻塞以及哪些进程被阻塞,都需要使用脚…...
SQL实战:06交叉日期打折问题求解
文章目录 概述题目:交叉打折问题求解题解第一步:使用滑动窗口统计当前活动前的最大结束日期步骤二:拆分出交叉部分步骤三:计算每次活动的持续天数步骤四:分组统计最终结果完整SQL 概述 最近刷题时遇到一些比较有意思的…...
Linux云计算训练营笔记day09(MySQL数据库)
Linux云计算训练营笔记day09(MySQL数据库) 目录 Linux云计算训练营笔记day09(MySQL数据库)外键约束数据的导入和导出数据的导出数据的导入 DQL 数据查询语言查指定字段查所有字段where 过滤条件and 和 orin 和 not inbetween...an…...
docker 学习记录
docker pull nginx docker 将本地nginx快照保存到当前文件夹下 docker save -o nginx.tar nginx:latestdocker 将本地nginx 加载 docker load -i nginx.tar docker运行nginx在80端口 docker run --name dnginx -p 80:80 -d nginxredis启动 docker run --name mr -p 6379:6379 -…...
Kind方式部署k8s单节点集群并创建nginx服务对外访问
资源要求 请准备好doker环境,尽量用比较新的版本。我的docker环境如下 docker 环境: Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3 安装kind kind表现上就是一个二进制程序,下载对应版本并增加执行权限即可: cu…...
Da14531蓝牙特征值1读没有回调解决
一. 我们调试中发现user_peripheral.c中的回调,一直都没有回调。(大家可以通过打印去排查) void user_catch_rest_hndl(ke_msg_id_t const msgid, void const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { //此处省…...
journal of Electronic Imaging(JEI)投稿咨询
研究生投的第二篇论文-CV方向,由于太菜了,到处被拒,最后选择了Journal of Electronic Imaging(JEI) 审稿了三个月,最近突然变了状态,之前催稿说才一个审稿人,这样子是不是要被拒了,有没有知道的…...
upload-labs靶场通关详解:第6-9关
目录 第六关:大小写绕过 一、分析源代码 二、解题思路 三、解题步骤 第七关:空格绕过 一、分析源代码 二、解题思路 三、解题步骤 第八关:点号绕过 一、分析源代码 二、解题思路 三、解题步骤 第九关:::$DATA字符串绕…...
算法图表总结:查找、排序与递归(含 Mermaid 图示)
算法图表总结:查找、排序与递归(含 Mermaid 图示) 分类标签:算法、数据结构、Mermaid、技术图表 关键词: 算法可视化、Mermaid 图表、数据结构、二分查找、快速排序、递归树 摘要: 本文通过 Mermaid 图表…...
在文件检索方面doris和elasticsearch的区别
apache Doris 与 Elasticsearch 在文件检索领域的差异源于技术架构与定位目标的本质区别,以下从核心维度对比分析二者的技术特性: 一、 架构设计与定位差异 维度Apache DorisElasticsearch核心架构分布式 MPP 列式分析引擎,面向 OLAP 优化分布式倒排索…...
linux系统服务
Linux 系统服务(System Services) 是在后台持续运行的进程(守护进程,即 daemon),用于提供核心功能或支持其他应用程序(如网络管理、日志记录、定时任务等)。它们通常在系统启动时自动…...
大语言模型三大演进方向:记忆增强、工具集成与多模态突破
目录 一、方向演进:从通用模型到记忆增强系统 1.1 技术瓶颈分析 1.2 记忆增强技术路径 1.3 企业级应用架构 二、工具调用:从语言理解到行动执行 2.1 工具调用协议演进 2.2 工具编排范式比较 三、多模态突破:跨模态统一建模 3.1 多模态架构演进 3.2 医学多模态应用…...
嵌入式学习笔记DAY21(双向链表、Makefile)
一、双向链表 1.概念 双向链表(Doubly Linked List) 是一种链式数据结构,每个节点包含 两个指针(前驱指针 prev 和后继指针 next),分别指向 前一个节点 和 后一个节点,形成双向连接。 头节点&…...
Vue 学习随笔系列二十三 -- el-date-picker 组件
el-date-picker 组件 文章目录 el-date-picker 组件el-date-picker 只有某些日期可选 el-date-picker 只有某些日期可选 <template><div><el-form ref"form" size"mini":model"form" :rules"rules"label-width"8…...