keep the pipe Just full But no fuller - BBR 与尘封 40 年的求索
推荐一部短视频 Keep the pipe just full, but no fuller,作者就是大名鼎鼎的 L. Kleinrock,现代分组交换网的奠基人,这里有关于他这个人的介绍:
https://www.lk.cs.ucla.edu/index.html
https://en.wikipedia.org/wiki/Leonard_Kleinrock
这视频对应的论文是 Keep the Pipe Just Full, But No Fuller。
我写这篇推荐的缘由有几个:
- 我曾推荐过 Jaffe 的论文,证明最佳操作点不可达,但 BBR 获得了突破,就想挖一下坟;
- 我对排队论非常感兴趣,那就必须读 Kleinrock,他恰是用排队论建模网络的泰山北斗;
- 我迷历史,从 Kleinrock 处可以学到很多,自古看今知未来,这对设计更好的技术有用;
- 我曾经写过好多论证和寻找 “最佳操作点” 的博客,是时候总结一下了;
- 我很喜欢摆弄坐标系;
- …
作为始于 1960 年代的互联网奠基者,Kleinrock 目睹了一切(自他发表论文到他母亲扎进互联网直到 90 多岁高龄去世),我们耳熟能详的另外几个创造者都是他的同事或学生,他抱怨道,互联网上后来出现了很多拥塞控制算法用来避免崩溃,但无论哪种,全部呈现了某种锯齿形态,不断碰到天花板,又不断跌落,同时引入大量延迟,这种情况已经持续了 40 年。如下图所示,他表示这些算法都围绕在 α 附近折腾 buffer,正确的操作点应该在 β:
Kleinrock 坦言来自 Google 的 BBR 在 40 年后开始改变这一切,但紧接着,Kleinrock 略带自夸的口吻宣传,BBR 的点子自己早在 1978 年就找到了,他找到了如今被称作 kleinrock’s operating point,即最佳操作点,但却无人问津,因为另一个叫做 Jaffe(也是一位大佬) 的人否定了它:
Jaffe 的论文如下:Flow Control Power is Nondecentralizable:
这导致拥塞控制研究方向的改变,从分布式流控转向了 AIMD 收敛,这就是那些锯齿算法的渊源。
随后,Kleinrock 给出了 BBR 的方法,核心点在于 BBR 采用了状态机管理了两个滑动窗口,分别控制 maxbw(BltBw) 和 minrtt(RTprop):
再往后的内容是一个理论体系,即如何用排队论建模,证明最佳操作点的存在,它的性质,以及找到它的方法。
Kleinrock 提出一个功率 P(即 Power) 概念,其最大值作为我们应追求的理想指标,该指标脱离了如吞吐,时延等单一指标的不可同时测量性,将整个网络作为一个排队系统整体全盘考虑。
P 的大意是让相互交易掣肘的,作为分子越大越好的收益和作为分母越小越好的成本相除,求整体的最大值,这就是最佳操作点,如下截图给个梗概:
我将用文字表述如下。这部分也是我个人的总结,此前零散分布在各处。本文我将用自己的逻辑将这些东西串起来。
按照排队论约定, λ \lambda λ 表示到达率, μ \mu μ 表示服务率, ρ = λ μ \rho=\dfrac{\lambda}{\mu} ρ=μλ 表示资源利用率,设等待时间为 T ( ρ ) T(\rho) T(ρ),归一化消除单位后为 μT(ρ),表示 1 个任务在系统中消耗的时间相当于多少个服务周期。
现在着手建立资源利用率 ρ \rho ρ 和归一化等待时间 μ T ( ρ ) \mu T(\rho) μT(ρ) 的关系。按照 Kleinrock 的定义,功率 P 如下表示:
P ( ρ ) = ρ μ T ( ρ ) = ρ T n o r m a l i z e d ( ρ ) P(\rho)=\dfrac{\rho}{\mu T(\rho)}=\dfrac{\rho}{T_{\mathrm{normalized}}(\rho)} P(ρ)=μT(ρ)ρ=Tnormalized(ρ)ρ
跟我的定义 “效能 E” 一致,分母越大越好,分子越小越好,我们希望 P 尽可能大。
不对系统做任何假设,对于任意系统 P ′ ( ρ ) = 0 P'(\rho)=0 P′(ρ)=0 处取得最值,按求导法则一步一步走(参见我的另一篇总结,写于 2018 年的 BBR 数学解释),在 P ′ ( ρ ) = 0 P'(\rho)=0 P′(ρ)=0 处需满足:
T n o r m a l i z e d ( ρ ) = ρ ⋅ d T n o r m a l i z e d ( ρ ) d ρ T_{\mathrm{normalized}}(\rho)=\rho\cdot\dfrac{\mathrm{d}T_{\mathrm{normalized}}(\rho)}{\mathrm{d\rho}} Tnormalized(ρ)=ρ⋅dρdTnormalized(ρ)
整理得到:
T n o r m a l i z e d ( ρ ) ρ = d T n o r m a l i z e d ( ρ ) d ρ \dfrac{T_{\mathrm{normalized}}(\rho)}{\rho}=\dfrac{\mathrm{d}T_{\mathrm{normalized}}(\rho)}{\mathrm{d\rho}} ρTnormalized(ρ)=dρdTnormalized(ρ)
左边是 T n o r m a l i z e d ( ρ ) T_{\mathrm{normalized}}(\rho) Tnormalized(ρ) 上任意一点到原点的直线斜率,右边是 T n o r m a l i z e d ( ρ ) T_{\mathrm{normalized}}(\rho) Tnormalized(ρ) 上任意一点切线的斜率,两个斜率相等,意味着经过原点,与 T n o r m a l i z e d ( ρ ) T_{\mathrm{normalized}}(\rho) Tnormalized(ρ) 相切的切点处取得 P 的最大值。
这是一个普遍的惊人结论,对任意排队系统均适用,推导过程不依赖任何具体表达式。现在来看看它的直观意义。
求 P 的极值,几何等价于求原点连接切点得切线斜率,定量化则等价于求曲线 T n o r m a l i z e d ( ρ ) T_{\mathrm{normalized}}(\rho) Tnormalized(ρ) 上任意一点横坐标和纵坐标商的极值,以更具普遍性的 M/G/1 排队系统量化它是高尚的。由 Pollaczek-Khinchine 公式,M/G/1 平均响应时间 T(ρ) 为:
T n o r m a l i z e d ( ρ ) = μ T ( ρ ) = 1 + ρ ( 1 + C b 2 ) 2 ( 1 − ρ ) T_{\mathrm{normalized}}(\rho)=\mu T(\rho)=1+\dfrac{\rho(1+C_b^2)}{2(1-\rho)} Tnormalized(ρ)=μT(ρ)=1+2(1−ρ)ρ(1+Cb2)
其中 C b C_b Cb 为变异系数。以更熟悉的 x,y 表示,等价于:
P = y = x ( 1 + x ( 1 + a ) / ( 2 − 2 x ) P=y=\dfrac{x}{(1+x(1+a)/(2-2x)} P=y=(1+x(1+a)/(2−2x)x
求助 DS,当 P 取最大值时,P = y = x²,仔细看这意味着什么。
根据 Liittle’s law,系统中任务数 N = λ ⋅ W = ρ ⋅ μ T ( ρ ) N=\lambda\cdot W=\rho\cdot\mu T(\rho) N=λ⋅W=ρ⋅μT(ρ),如果 P 取最大值 x²,则 μ T ( ρ ) = 1 ρ \mu T(\rho)=\dfrac{1}{\rho} μT(ρ)=ρ1 带入 N 得到 N = 1.
这证明了当 P 最大时,系统中只有 1 个任务,这就是 “最佳操作点”,也叫最佳工作点,换句话说,系统中只有 1 个任务,不排队就最高效。
用经典得 M/M/1 系统验算一下。
归一化等待时间在 M/M/1 系统为 μ T ( ρ ) = 1 1 − ρ \mu T(\rho)=\dfrac{1}{1-\rho} μT(ρ)=1−ρ1,因此 P = ρ μ T ( ρ ) = ρ ⋅ ( 1 − ρ ) P=\dfrac{\rho}{\mu T(\rho)}=\rho\cdot(1-\rho) P=μT(ρ)ρ=ρ⋅(1−ρ),这是个二次曲线, ρ = 0.5 \rho=0.5 ρ=0.5 时,系统中平均有 1 个任务,P 取最大值 0.25。
仔细观察 M/M/1 验算式,P 表达式的是 “系统在利用率 ρ \rho ρ 下的 ‘有效吞吐效率’”,即服务器繁忙且系统未拥塞的概率,对应恰好有 1 个顾客的概率。这个概率表明,资源利用率被均匀摊派在等待时间中,等待时间越久,单位时间利用率越低。
M/M/1 系统的 P 取最大值时,有效利用率相比服务率降低了 0.5,而等待时间却增加了 1 倍,这多少有点反直觉,但却很容易直观理解。
M/M/1 系统泊松分布可以看作一个对称的钟形,下图解释了为什么利用率降低了一半,等待时间增加了一倍:
统计复用系统中平均 1 个任务和恰好 1 个任务很不同, ρ = 0.5 \rho=0.5 ρ=0.5,意味着有一半时间系统中少于 1 个任务,浪费的那一半资源服务时间无法积累,另一半时间系统中多于 1 个任务,排队时间又无法预支,这一拉一推的坏事叠加,就是统计系统的代价。
再用 BBR 验算。BBR 的 P 定义为 P = bw/rtt,显然,当 bw = maxbw,rtt = minrtt = RTprop 时,P 取最大,该操作点就是不排队的最优操作点。实际上 BBR 模型去除了网络的统计波动从而简化了问题,以至于用排队论解释, BBR 就是一个 D/D/1 排队系统的描述。
在 Kleinrock 的论文中,BBR 作为有限资源确定性模型(Finite Resource Deterministic Model) 的实例呈现:
Kleinrock 在坐标系中给出了变异系数不同的各类 M/G/1 排队系统的 ρ ∼ μ T ( ρ ) \rho\sim \mu T(\rho) ρ∼μT(ρ) 曲线,展示了其共性,即 “在平均任务 N* = 1 处获得最大功率 P”:
为了在一张图中直观地看到任意变异系数排队系统的最佳操作点以求得对应的 ρ \rho ρ,Kleinrock 巧妙地做了坐标变换,将归一化的纵坐标取倒数,形成 ρ ∼ 1 μ T ( ρ ) \rho\sim \dfrac{1}{\mu T(\rho)} ρ∼μT(ρ)1 坐标系,将整个所有排队系统的最佳操作点优化图景压缩在 1 x 1 方块中:
以上这两个图没有本质区别,只是后者更加一目了然。与 ρ ∼ μ T ( ρ ) \rho\sim \mu T(\rho) ρ∼μT(ρ) 坐标用切线斜率最小值寻址 P 最大值不同, ρ ∼ 1 μ T ( ρ ) \rho\sim \dfrac{1}{\mu T(\rho)} ρ∼μT(ρ)1 坐标用曲线和 1 μ T ( ρ ) = ρ \dfrac{1}{\mu T(\rho)}=\rho μT(ρ)1=ρ 的交点横坐标直接寻址 P 的最大值。
任意分布的排队系统 ρ ∼ 1 μ T ( ρ ) \rho\sim \dfrac{1}{\mu T(\rho)} ρ∼μT(ρ)1 曲线均与 y = x 相交,交点就是最佳操作点,典型的横竖颠倒,柳暗花明的方法论。简单总结一下:
- ρ ∼ μ T ( ρ ) \rho\sim \mu T(\rho) ρ∼μT(ρ) 坐标系,乘积为矩,商为功率 P,求斜率最值;
- ρ ∼ 1 μ T ( ρ ) \rho\sim \dfrac{1}{\mu T(\rho)} ρ∼μT(ρ)1 坐标系,乘积为功率 P,商为矩,求面积最值。
外面狂风暴雨,据说是个江淮气旋,挺爽。既然写到了这里,尚无困意,就把今天中午休息时看得另一个 Kleinrock 被采访的短视频再次分享一下:UCLA’s Leonard Kleinrock on packet switching, early Internet。
我们需要一种方法来允许其他人在我们不使用该通信链接时使用它,我称之为资源共享。我们会根据需求共享这些资源:当我有东西要发送时,系统会发送,当我没有任何东西时,其他人可以使用它,网络不断地为他们分配访问权限。
大致解释一下这些话,这么多人需要发送信息的时间分布,就是排队论描述的排队系统的输入,而分组交换网络设计的工作就是给出该排队系统一个输出,让该网络能高效公平满足所有人的发送需求。
大约同一时间,我与 10000 名观众以及计算机工作者和电话工作者举行了大型会议,我首先问:“您能提供一些良好的通信网络吗?” 这些人会说:“看,美国是一个铜矿,到处都是铜线,请使用电话线。” 我当时想,“不,他们不明白。他们打电话只需 35 秒,却向我收取至少三分钟的费用,而我想发送 100 秒的数据。” 他的回答是:“孩子,走开,就像他们说这行不通的原因一样。”数据通信没有收入,没有数据可发送,所以从短期来看他们是对的,这不是收入来源,从长远来看,这将带来一场革命…
Kleinrock 意识到了大型分组交换网络系统的两个核心,资源共享和分布式控制:
- 网络传输的时间片尺度比人们打字或语音听说快得多,这意味着使用的人越多,资源利用率越高;
- 网络必须保证将所有小数据片段到达正确目标,工作量比电话交换机高几个数量级,不能通过控制中心完成。
论动机,因为是所有人都使用的大型网络系统,所以需要分布式控制和资源共享,这篇划时代的论文最开始叫《大型网络中的数据流》,论实际,论文题目改为了《带存储的网络中的消息延迟》,它包含了底层数学理论的发展和应用,即用排队论建模网络。
挖一下这篇 1961 年的论文:Information Flow in Large Communication Nets,然而已经什么都看不清了:
当被问道 “你曾料到互联网如今天之所见吗?”,Kleinrock 回答 “是也不是,我一开始就料到互联网将无处不在,它将连接一切,始终在线,就像电一样无形,但我没有想到我的母亲也能在线上应对自如,直到她去年去世,享年 99 岁。”
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:
keep the pipe Just full But no fuller - BBR 与尘封 40 年的求索
推荐一部短视频 Keep the pipe just full, but no fuller,作者就是大名鼎鼎的 L. Kleinrock,现代分组交换网的奠基人,这里有关于他这个人的介绍: https://www.lk.cs.ucla.edu/index.html https://en.wikipedia.org/wiki/Leonard…...
《React Native热更新实战:用Pushy打造无缝升级体验》
《React Native热更新实战:用Pushy打造应用“空中加油”,实现无缝升级体验》 写在前面:当你的APP需要"空中加油"时… 想象一下这样的场景:凌晨2点,你的React Native应用刚上线就爆出重大BUG,用户差评如潮水般涌来,应用商店审核至少需要3天…此刻你多么希望能…...
【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控
📁【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码࿰…...
第四章:基于langchain构造一个完整RAG系统
文章目录 引言一、RAG的基本原理1.1 什么是RAG?1.2 RAG的应用场景 二、RAG系统的构建步骤2.1 环境准备2.2 加载和处理文档2.2.1 文档加载2.2.2 文本分割 2.3 构建嵌入模型2.4 创建向量存储与检索器2.5 检索与生成2.5.1 检索相关文档2.5.2 生成答案 三、完整代码示例…...
uniapp|实现多终端视频弹幕组件、内容轮询、信息表情发送(自定义全屏半屏切换、弹幕启用)
基于UniApp框架实现跨终端视频弹幕组件的开发,结合CSS3动画与setInterval轮询机制,完成弹幕从右向左的动态滚动效果,针对交互需求,设计弹幕启用开关、全屏/半屏模式切换功能,并利用cover-view组件解决原生层级覆盖问题。 目录 引言视频弹幕的交互价值与多终端适配需求Un…...
数据结构(四)——栈的应用—数制转换
利用栈进行数制转换: 十进制转换八进制:先将十进制数除以八得到余数,余数入栈,然后将得到的商继续除以八,直到商为零 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 100//数制转换//定义链表节…...
flinksql bug : Max aggregate function does not support type: CHAR
这个问题是flink中 CHAR 存在语义歧义,主要涉及到位数的关系,这里不做多讨论。 这个问题已经有人提了pr,新版本可以关注是否有解决 这个报错发生在 max(测试字段) ,这个测试字段如果是char 就会报错不支持 解决办法:…...
解决社区录音应用横屏状态下,录音后无法播放的bug
最近看到社区有小伙伴反映,社区录音应用横屏时,录音后无法播放的问题。现分享解决办法。 社区录音应用的来源:https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-5.0.2-Release/code/SystemFeature/Media/Recorder …...
【MySQL】存储引擎 - InnoDB详解
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
软件工程之形式化说明技术深度解析
按照形式化的程度,可以把软件工程使用的方法划分成非形式化、半形式化和形式化3种。用自然语言描述需求规格说明书,是典型的非形式化方法。用数据流图或实体-联系图建立模型,是典型的半形式化方法。 所谓形式化方法,是描述系统性…...
Nacos源码—6.Nacos升级gRPC分析一
大纲 1.Nacos 2.x版本的一些变化 2.客户端升级gRPC发起服务注册 3.服务端进行服务注册时的处理 4.客户端服务发现和服务端处理服务订阅的源码分析 1.Nacos 2.x版本的一些变化 变化一:客户端和服务端的交互方式由HTTP升级为gRPC Nacos 1.x服务端会提供一系列的…...
使用 React 实现语音识别并转换功能
在现代 Web 开发中,语音识别技术的应用越来越广泛。它为用户提供了更加便捷、自然的交互方式,例如语音输入、语音指令等。本文将介绍如何使用 React 实现一个简单的语音识别并转换的功能。 功能概述 我们要实现的功能是一个语音识别测试页面࿰…...
2.5 点云数据存储格式——大型点云传输格式
通常,进行大型点云数据传输时,一般采用一种后缀为bin的文...
Windows系统下使用Kafka和Zookeeper,Python运行kafka(一)
下载和安装见Linux系统下使用Kafka和Zookeeper 配置 Zookeeper Zookeeper 是 Kafka 所依赖的分布式协调服务。在 Kafka 解压目录下,有一个 Zookeeper 的配置文件模板config/zookeeper.properties,你可以直接使用默认配置。 启动 Zookeeper 打开命令提示符(CMD),进入 K…...
数据结构(三)——栈和队列
一、栈和队列的定义和特点 栈:受约束的线性表,只允许栈顶元素入栈和出栈 对栈来说,表尾端称为栈顶,表头端称为栈底,不含元素的空表称为空栈 先进后出,后进先出 队列:受约束的线性表࿰…...
零基础入门Hadoop:IntelliJ IDEA远程连接服务器中Hadoop运行WordCount
今天我们来聊一聊大数据,作为一个Hadoop的新手,我也并不敢深入探讨复杂的底层原理。因此,这篇文章的重点更多是从实际操作和入门实践的角度出发,带领大家一起了解大数据应用的基本过程。我们将通过一个经典的案例——WordCounter&…...
在Postman中高效生成测试接口:从API文档到可执行测试的完整指南
引言 在API开发与测试流程中,Postman是一款高效的工具,能将API文档快速转化为可执行的测试用例。本文以《DBC协议管理接口文档》为例,详细讲解如何通过Postman实现接口的创建、配置、批量生成及自动化测试,帮助开发者和测试人员提升效率,确保接口质量。 一、准备工作:理…...
飞云分仓操盘副图指标操作技术图文分解
如上图,副图指标-飞云分仓操盘指标,指标三条线蓝色“首峰线”,红色“引力1”,青色“引力2”,多头行情时“首峰线”和“引力1”之间显示为红色,“引力1”和“引力2”多头是区间颜色显示为紫色。 如上图图标信…...
K8s中的containerPort与port、targetPort、nodePort的关系:
pod中的containerPort与service中的port、targetPort、nodePort的关系: 1、containerPort为pod的配置,对应pod内部服务监听的具体端口,例如nginx服务默认监听80端口,那么nginx的pod的containerPort应该配置为80,例如m…...
jquery+ajax+SpringBoot实现前后端分离技术
一、前端方面: 第1步,在前端HTML页面的头部引入jquery <head><meta http-equiv"Content-Type" content"text/html;charsetUTF-8"><title>XXX</title><link rel"stylesheet" type"text/…...
阀门产业发展方向报告(石油化工阀门应用技术交流大会)
本文大部分内容来自中国通用机械工业协会副会长张宗列在“2024全国石油化工阀门应用技术交流大会”上发表的报告。 一、国外阀门产业发展 从全球阀门市场分布看,亚洲是最大的工业阀门市场,美洲是全球第二大工业阀门市场,欧洲位列第三。 从国…...
华为云Astro后端开发中对象、事件、脚本、服务编排、触发器、工作流等模块的逻辑关系如何?以iotDA数据传输过程举例演示元素工作过程
目录 🏭 类比总览:低代码平台就像一座自动化工厂 🧱 1. 对象(Object) = 工厂里的“原材料仓库” 🧱 2. 结构体(Structure) = 自定义的“装配模具” 🔔 3. 事件(Event) = 触发的“感应器” ✍️ 4. 脚本(Script) = 后台的“逻辑处理代码” ⚙️ 5. 服务编…...
面向小型企业顶点项目的网络安全咨询人机协作框架
1. 简介 1.1. 背景和动机 由于小型企业无法访问结构化系统,且缺乏大型组织通常拥有的专用资源,它们经常面临巨大的网络安全挑战 [ [1 ]。为大型企业设计的网络安全框架通常对小型企业来说过于复杂且不切实际,导致它们容易受到复杂的网络威胁 2 ]。这种复杂性可能导致小型…...
RSAC 2025观察:零信任+AI=网络安全新范式
2025年4月28日~5月1日,全球最具影响力的网络安全盛会RSAC 2025在美国旧金山举办,吸引了全球44,000名网络安全从业者参与。大会以“Many Voices. One Community.”为主题,聚焦AI安全、供应链风险、零信任等核心议题。其中,AI Agent…...
ruoyi-flowable-plus 前端框架启动报错修复
版本 1. ruoyi-flowable-plus 前端框架启动报错修复 启动时设置环境变量 "scripts": {"dev": "SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve","build:prod": "vue-cli-service build",&qu…...
安全可控·高效响应|北峰智能互通矿业通信系统解决方案
项目概况 随着矿业行业工作环境日益复杂,涵盖地下开采、露天挖掘、矿物运输及深加工等多个环节,作业区域呈现广阔且分散的特点,往往存在诸多安全风险。当面临突发事故,由于应急救援体系不完善,救援通信系统相对落后&a…...
ubuntu查看安装的软件包的位置
在 Ubuntu 中,libcli11-dev 是一个 头文件库(header-only),因此它不会像动态库(.so 文件)那样有明确的下载路径。但你可以通过以下方法查看它的安装位置: 1. 查看 libcli11-dev 安装的文件 使用…...
【金仓数据库征文】金仓数据库 KES 助力企业数据库迁移的实践路径
在企业数字化转型浪潮的强力推动下,数据库迁移已成为企业升级 IT 架构、提升数据管理能力的关键环节。从 MySQL 到金仓数据库 KingbaseES(KES)的迁移方案,为企业提供了一条高效、可靠的数据库升级路径。 一、迁移挑战与金仓数据…...
Nginx1.26.2安装包编译安装并配置stream模块
准备nginx安装文件:nginx-1.26.2.tar.gz cd /usr/local wget http://nginx.org/download/nginx-1.26.2.tar.gz tar -zxvf nginx-1.26.2.tar.gz && cd nginx-1.26.2 1.创建安装目录 mkdir nginx 2.解压安装文件nginx-1.26.2.tar.gz tar -zxvf nginx-1.26…...
kotlin @JvmStatic注解的作用和使用场景
1. JvmStatic 的作用 JvmStatic 是 Kotlin 提供的一个注解,用于在 JVM 上将伴生对象(companion object)中的方法或属性暴露为 Java 静态方法或字段。 作用对象:只能用在 companion object 中的函数或属性。效果: 在 …...
Blind SSRF with Shellshock exploitation过关
Blind SSRF with Shellshock exploitation 生活就像一杯咖啡,苦与甜都是必需的,关键是要学会享受每一口。 先说通关方法: 1.首先在bp的扩展商店安装插件 Collaborator Everywhere 2.进入靶场首页 复制url https://0af600d3048daad080e6…...
2025-05-08 Unity 网络基础9——FTP通信
文章目录 1 FTP1.1 工作原理1.2 传输模式 2 搭建 FTP 服务器2.1 启用服务2.2 配置站点2.3 设置防火墙2.4 指定用户登录 3 常用 API3.1 NetworkCredential3.2 FtpWebRequest3.3 FtpWebResponse 4 实战操作4.1 上传文件4.2 下载文件4.3 删除文件4.4 获取文件大小4.5 创建文件夹4.…...
3.2.3 掌握RDD转换算子 - 5. 合并算子 - union()
在本节课中,我们学习了Spark RDD的union()算子,它能够将两个数据类型一致的RDD合并为一个新的RDD,主要用于整合不同数据源。通过案例演示,我们成功将两个简单的数字RDD合并,直观地看到合并结果是按原顺序纵向拼接&…...
数据来源合法性尽职调查:保障权益的关键防线
首席数据官高鹏律师团队 在当今数字化时代,数据已成为企业和个人最为宝贵的资产之一。然而,伴随着数据的广泛应用与流通,其来源的合法性问题愈发凸显,犹如隐藏在暗处的礁石,稍不留神就可能让涉事主体陷入法律的漩涡。…...
sui在windows虚拟化子系统Ubuntu和纯windows下的安装和使用
一、sui在windows虚拟化子系统Ubuntu下的安装使用(WindowsWsl2Ubuntu24.04) 前言:解释一下WSL、Ubuntu的关系 WSL(Windows Subsystem for Linux)是微软推出的一项功能,允许用户在 Windows 系统中原生运行…...
springmvc的入门案例
springmvc的概述 SpringMVC的概述 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架…...
【MCP】为什么使用Streamable HTTP: 相比SSE的优势与实践指南
在现代Web开发中,实时通信已经成为许多应用的核心需求。从聊天应用到股票市场更新,从游戏服务器到AI模型通信,各种技术应运而生以满足这些需求。最近,Model Context Protocol (MCP) 引入了一种新的传输机制 —— Streamable HTTP&…...
CentOS的防火墙工具(firewalld和iptables)的使用
CentOS的防火墙工具因版本不同而异,以下是具体操作步骤: 一、firewalld(CentOS 7及以上默认工具) 1、安装与启动: 安装:sudo yum install firewalld 启动服务:sudo systemctl start fir…...
解析小米大模型MiMo:解锁语言模型推理潜力
一、基本介绍 1.1 项目背景 在大型语言模型快速发展的背景下,小米AI团队推出MiMo系列模型,突破性地在7B参数规模上实现卓越推理能力。传统观点认为32B以上模型才能胜任复杂推理任务,而MiMo通过创新的训练范式证明:精心设计的预训练和强化学习策略,可使小模型迸发巨大推理…...
web 自动化之 Selenium 元素定位和浏览器操作
文章目录 一、元素定位的八大方法1、基于 id/name/class/tag_name 定位2、基于 a 标签元素的链接文本定位3、基于xpath定位4、css定位 二、浏览器操作1、信息获取2、 浏览器关闭3、 浏览器控制 一、元素定位的八大方法 web 自动化测试就是通过代码对网页进行测试,在…...
vscode如何使用 GitHub Copilot
1.在vscode中扩展工具栏搜索“copilot”,选择GitHub Copilot安装。 2.使用快捷键CtrlAltI 打开聊天界面,输入问题后回车即可使用。 注意: 使用copilot需要使用GitHub账号先登录,如果打不开登录页面,需要修改host文件&a…...
AWS之存储服务
存储术语 分类 接口/技术类型 应用场景特点 关系及区别 机械硬盘接口 IDE(Integrated Drive Electronics) 早期用于个人电脑,现已逐渐淘汰 机械硬盘接口、固态硬盘接口是硬盘与主机或其他设备连接的物理和协议规范; FC - …...
安装 Docker
一、CentOS 系统安装 Docker 1. 卸载旧版本(如有) sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2. 安装依赖工具 sudo yum install -y…...
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
在现代网络中,代理服务器是一种常见的工具,用于提高安全性、匿名性和访问速度。常见的代理协议包括HTTP、HTTPS和SOCKS5。本文将详细解析这三种代理协议,并帮助您根据具体需求选择最合适的代理协议。 一、HTTP代理 1.1 特点 用途广泛&…...
用于构建安全AI代理的开源防护系统
大家读完觉得有帮助记得及时关注!!! 大型语言模型(LLMs)已经从简单的聊天机器人演变为能够执行复杂任务的自主代理,例如编辑生产代码、编排工作流程以及基于不受信任的输入(如网页和电子邮件&am…...
CTF-DAY10
[SWPUCTF 2021 新生赛]zipbomb 题目描述: 请注意,不要以任何方式尝试完全解压该文件,运存被塞满后果自负。请尝试分析该文件。 使用WinRAR解压打开 CTFSHOW刷题 crypto11 密文:a8db1d82db78ed452ba0882fb9554fc 提交 flag{明…...
WHAT - react-query(TanStack Query) vs swr 请求
文章目录 react-query什么是 TanStack Query(原 React Query)核心特性 TanStack Query vs SWR 对比具体特性对比哪个更适合你 总结 react-query react-query(现已更名为 TanStack Query)和 SWR 一样,都是专注于 远程数…...
WebFlux与HttpStreamable关系解析
1-Streamable 1-WebFlux与HttpStreamable关系解析2-MCP协议Streamable HTTP 2-参考网址 MCP协议Streamable HTTPMCP协议重大升级,Spring AI Alibaba联合Higress发布业界首个Streamable HTTP实现方案 3-WebFlux与HttpStreamable关系解析 WebFlux 和 HttpStreamabl…...
深度学习工程化:基于TensorFlow的模型部署全流程详解
深度学习工程化:基于TensorFlow的模型部署全流程详解 引言 在深度学习项目中,模型训练只是第一步,将模型成功部署到生产环境才是真正创造价值的关键。本文将全面介绍TensorFlow模型从训练到部署的完整工程化流程,涵盖多种部署场…...
RAG技术在测试用例生成中的应用
测试用例中的 RAG 通常指 Retrieval-Augmented Generation(检索增强生成) 在测试领域的应用,是一种结合检索与生成的技术方法,用于自动化生成或优化测试用例。 核心概念 RAG 技术背景: • RAG 最初由 Meta 提出…...