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

超低成本DDoS攻击来袭,看WAF如何绝地防护

一、DDoS攻击,不止于网络传输层

网络世界里为人们所熟知的DDoS攻击,多数是通过对带宽或网络计算资源的持续、大量消耗,最终导致目标网络与业务的瘫痪;这类DDOS攻击,
工作在OSI模型的网络层与传输层,利用协议特点构造恶意的请求载荷来达成目标资源耗尽的
1656398463_62baa27feb726141f43ea.png!small?1656398464903

除了这类在网络传输层大做文章的DDoS攻击,还有一类DDoS攻击把目光聚焦到了应用层。随着互联网的飞速发展,接入流量逐年攀高,承载这些流量的网络应用也被黑产、黑客们盯上,在DDoS攻击场景中也不例外。

由于应用层流量更贴近业务逻辑,在 应用层发起DDoS攻击可以同时对目标网络与目标服务器的稳定性造成威胁
。除此之外,攻击者往往只需较小的带宽成本,实现更大的破坏效果,这样的不对称性自然更受攻击者们的关注与青睐。

1656398475_62baa28be0fe1acc63915.png!small?1656398476404

Cloudflare在 [《DDoS Attack Trends for 2022
Q1》](https://blog.cloudflare.com/ddos-attack-trends-
for-2022-q1/)报告指出,全球范围内应用层DDoS攻击(主要是HTTP DDoS)呈现着持续增长的态势。 在俄乌的网络战争中,HTTP
DDoS攻击也扮演着重要的角色

1656558998_62bd1596951b6ff6a9184.png!small?1656558999104

与此同时,应用层DDoS攻击的攻击方式与手法在也在不断演进升级。
从集中式高频请求逐步演进为分布式低频请求,从请求报文中携带显著恶意特征变化为重放合法请求流量,伪造搜索引擎爬虫流量
等;而在攻击的频率与规模上,应用层DDoS攻击也呈现出不断增长的趋势。

针对攻击手法的升级变化,业务防护可以从两方面着手应对:一是在 运营对抗上
,在攻击发生的事前、事中和事后各阶段,通过梳理资产信息、分析攻击报文并进行特征提取、配置防护策略、复盘防护数据等手段不断提升防护对抗效果;
二是在防护能力建设上 ,可以引入支持多维度特征组合的限速功能、JS Challenge、验证码等功能模块来提升对高级复杂的应用层
DDoS攻击的识别处置能力。与此同时,在流量接入链路中与CDN、LB、AGW等各接入层产品进行联动合作,
通过在不同接入层级落地相关防护策略,实现攻击流量的分级收敛,在应对大规模应用层DDoS攻击时更能凸显防护效果

二、0门槛,高收益,一键发起攻击

上面提到的应用层DDoS攻击, 是通过向应用程序发送大量恶意请求实现攻击效果,以每秒请求数 (QPS) 来衡量攻击量级与规模 ;这类攻击也称为 7
层 DDoS 攻击,可针对和破坏特定的网络应用程序,而非整个网络。虽然这类 DDoS 攻击难以预防和抵御,但发动起来却相对比较容易,具体有多容易呢?

由于7层DDoS通常不需要过高的带宽成本,也无需构造复杂的协议利用报文,在黑灰产交易渠道,可以非常便捷地获取到发起7层DDoS的工具与服务。

1656398795_62baa3cbb5c8dd0135dc3.png!small?1656398796572

即便是知名、成熟的互联网应用,在这类攻击面前也存在被攻陷的可能与风险。

三、HTTP DDoS攻击的类型与特点

3.1 攻击类型

7层DDoS攻击中,瘫痪目标应用与服务是首要目标,根据HTTP DDoS(CC)攻击发起的原理与方式,可以总结以下攻击类型:

  • HTTP floods

这种攻击主要分为两种形式。第一种是HTTP GET request floods, 攻击者通过构造HTTP
GET请求报文,向目标服务器发送针对特定资源的大量请求

。在客户端执行一条HTTP请求的成本很低,但是目标服务器做出对应的响应成本却可能很高。比如加载一个网页,服务端通常需要加载多个文件、查询数据库等才能做出响应;例如在Web业务的防护中,对于有SSR(Server-
side rendering)功能页面的HTTP floods攻击,其量级与频率更加突出明显,也更容易对业务造成影响与危害。

第二种是HTTP POST request floods,与GET request floods的显著区别是,
POST请求往往需要携带表单参数或请求体信息,而这通常意味着服务端需要对请求内容进行相关解析处理,并将数据进行持久化(通常需要进行DB操作)
。发送POST请求一般仅需较小的计算与带宽成本,而服务端进行处理操作的过程往往消耗更高。可以说这种攻击形式下,形成这种请求响应间资源消耗差异的空间或可能性更大,更容易实现让服务器过载从而拒绝服务的目标。

1656398890_62baa42ad9eff0b7a17bb.png!small?1656398891405

  • Large Payload POST requests

这类攻击一般通过POST方法发送容量大、结构复杂的请求体到目标服务器,使得目标服务器在解析这些请求内容的过程发生过载(CPU或内存);一般而言,攻击者通过构造特定的序列化请求体,如xml、json等,在服务端执行反序列化操作时引起服务过载。

  • Asymmetric requests

这种类型的攻击顾名思义,利用的就是请求与响应的非对称性,请求的目标路径会执行高消耗操作而发起攻击请求轻而易举。通常来说,这类攻击需要对目标服务有一定的熟悉与了解,明确攻击目标哪些地方存在这种非对称性利用的可能及利用方式。比如通过从数据库服务器下载大型文件或大量执行数据库的查询等接口,就容易被这种类型攻击所利用。

  • Low &Slow attack(Slowloris/Slow Post/Read attack)

这种类型的攻击更多是面向连接层面,以基于线程的Web服务器为目标,通过慢速请求来捆绑每个服务器线程,从而消耗服务器的线程&连接资源,这类攻击中主要可分为Slowloris、Slow
Post/Read 几种攻击方式。

3.2 攻击特点

根据上述总结的HTTP DDoS攻击类型、原理与实现方式,可以总结出HTTP DDoS攻击具备以下特点:

  • 攻击门槛、成本低

相较于4层DDoS攻击,发起HTTP DDoS攻击往往无需构造复杂的攻击报文,仅需较少的带宽就能实现强大的攻击效果。

  • 攻击目标更精细

攻击的目标可以精细到服务接口粒度,例如直播页面等,而不需要瘫痪目标的网络也能让业务出现拒绝服务。

  • 破坏范围广,危害程度高

虽然HTTP DDoS攻击的首要目标是瘫痪目标服务,但并不意味着对目标网络的可用性没有威胁。当HTTP
floods量级到一定程度时,也存在瘫痪请求接入层网络的可能性。

  • 攻击源分布广,隐匿性强

实际的HTTP DDoS攻击中,攻击者常常利用规模庞大的肉鸡/代理IP,而HTTP
DDoS攻击报文中往往不具备或具备难以察觉的恶意特征。对这些攻击源进行封禁处置效果有限甚至有误报风险,攻击者却可以随时更换新一批攻击源。

  • 请求特征容易伪装,防护难度大

不同于Web注入攻击场景,HTTP
DDoS的攻击请求的报文特征常常处在一个难以判定好坏的区间,有时部分的异常特征不足以支撑执行拦截决策。攻击者可通过模拟、重放正常请求来发起攻击,即便在请求报文中某些特征被防护方捕获并针对性处置,攻击者也能感知到并作出调整。

总体而言,一起复杂的HTTP
DDoS攻击,通常不会使用畸形报文,也无需使用伪装技巧。对比其他类型的DDoS攻击需要更少的带宽成本就能瘫痪目标站点或服务,甚至特定的目标集群与接口。在影响目标业务可用性的同时,也可能对接入链路网络的稳定性构成威胁。
这类攻击往往通过使用大量的肉鸡+IP代理池发起,所以简单的封禁策略往往难以起到预期效果 。也正因为如此,在进行HTTP
DDoS攻击防护过程,要求对业务有更深入的理解,对于攻击定制针对性策略来实现误报与漏报的平衡,这也是HTTP DDoS难以检测防护的原因。

四、兵来将挡,WAF如何实现有效防护

根据上述HTTP DDoS的类型与特点,对于来势汹汹的攻击流量,WAF如何实现有效防护呢?

根据攻击的原理与类型,可以大致分为三个主要的防护场景:

4.1 连接型HTTP DDoS

这类型的HTTP DDoS攻击,对应上面提到的Low&Slow attack。由于
攻击是通过建立TCP连接后在传输HTTP报文的过程实现攻击效果,因此对于业务前面有7层接入层设备的业务(CDN、LB等),这类攻击会被前面的7层接入层设备所承载
。所以对于许多业务而言,这类型的攻击感知可能并不明显,但并不表明这类攻击的危害程度低。相反如果针对特定7层接入设备进行此类型攻击,可能造成的业务影响面会更加广泛。

1656398904_62baa4388aa97c8b25a3b.png!small?1656398905155

由于这类攻击的特点是“慢速”,
那么WAF可以对HTTP的请求header读取、请求、响应body的传输设置好超时时间。当触发超时策略时可断开相应的TCP连接,释放连接资源
。同时,可对于异常的header、body做检查与限制(如限制HTTP请求header的数量)。还可以通过HTTP层面的精细化访问控制来避免误伤场景(如正常业务的大文件传输场景)。

当然,要实现这些能力需要WAF与7层接入设备做好联动配合才能实现有效防护。

4.2 特征型HTTP DDoS

这类型的HTTP DDoS攻击,对应上面的Large Payload POST requests 和 Asymmetric
requests,他们的共同点是需要实现这类HTTP DDoS攻击,在HTTP请求报文中往往能够提取出关键异常特征。

例如,对于Large Payload POST requests,WAF可通过限制body长度,检查body内容合法性等手段来实现防护;

{ "title": "Liverpool FC (1 million more whitespace)", "contentFormat": "html", "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>", "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", "tags": ["football", "sport", "Liverpool"], "publishStatus": "public" }

``

``

例如针对上述的超大异常body,可通过WAF配置自定义策略限制body长度。

对于Asymmetric requests攻击,例如HTTP Range头利用的例子中, WAF可通过限制HTTP
Range头的分片策略实现异常检测与防护;对于一些漏洞利用,特别是业务使用的服务框架、中间件产生的漏洞造成的DDoS,利用WAF的Web漏洞检测防护能力便能实现有效防护

1656398920_62baa448a6be31e96af05.png!small?1656398921277

4.3 floods型HTTP DDoS

floods类型的HTTP DDoS在现实网络流量中更为主流与常见, 影响业务稳定性的风险更大,是需要重点关注的防护场景
;WAF在面对这类型攻击时,可根据floods类型HTTP DDoS攻击的特征、特点,分析拆解防护策略,通过以下手段、步骤来实现有效防护:

第一步:链路梳理,明确业务场景

当业务面临HTTP floods攻击防护需求时,首先需要梳理清楚业务的流量接入链路。因为HTTP floods通常具有持续、量级规模大的特点,
因此最佳的防护部署是首先通过在最外接入层实现(例如CDN)
,这样的优点很明显,能将恶意的攻击流量在最外层收敛,减少后续接入层的压力与成本。但这并不意味着后续接入层无需部署防护,由于防护的精准程度与防护成本往往是正相关关系,经过收敛的流量在贴近业务的接入层做更精细的检测、处置,往往收益更明显;

同时, 明确业务服务的使用场景在应对HTTP floods攻击时也非常关键且必要
,业务不同的host、path往往有不同的业务特征。比如后端负载能力、是否有登录态、WebApp还是Native
App、是否有API调用场景等,只有在明确业务场景后才能更好地制定精准、贴合业务需求的防护策略。

1656398967_62baa4774233c55e7bc13.png!small?1656398967662

业务链路梳理&防护部署

第二步:负载兜底,构建防护基线

在HTTP floods发生时,最基本的防护需求是要保证业务的可用性,不能出现因攻击而造成业务瘫痪的情况;在这个需求背景下,
最快速有效的策略便是为业务制定负载兜底策略 。与业务共同梳理清楚需要防护的目标资产(host、server
cluster、path等),根据业务场景先配置全局/粗粒度的限速策略,实现对攻击流量的初步防护收敛;

同时,在明确目标防护资产的负载能力后,进行更细粒度的限流/过载保护策略配置,在流量过载的极端情况下优先保证服务的可用性,构建一层基线防护能力。

第三步:特征分析,过滤恶意流量

采取上述策略手段实现初步防护后,需要对 HTTP floods流量进一步分析过滤 ,才能在保障正常业务流量的同时将恶意流量拒之门外。这里就需要
WAF提供基于HTTP请求、响应报文的多维组合、匹配能力 ,识别出报文中的异常特征并提供针对性的处置手段。例如,在对抗业务遭受的HTTP
floods恶意流量攻击过程中,除了提取常见的异常IP,Params,UA,Referer,Cookie等特征进行封禁或限速处置外,还会将相关特征进行组合关联,为策略统计与响应处置提供参考。

1656399321_62baa5d9a32ee2c290228.png!small?1656399322271

通过对攻击流量特征的分析统计,在WAF上进行组合策略配置

除了通过WAF丰富的特征分析能力识别恶意流量,在面临HTTP floods攻击时,提供丰富、梯度的处置动作对于在防护过程平衡误伤风险也非常关键。WAF可
提供封禁、限速、重定向、验证码、JS Challenge、自定义响应 等多种处置动作与特征识别能力配合,为防护的精准性提供保障。

第四步:能力联动,提升防护效果

对于专业的HTTP
floods攻击,攻击者会尽可能地模拟、重放正常的用户请求流量。因此从“HTTP报文特征”去识别防护恶意流量,可能还远不足以应对高级复杂的HTTP
floods攻击。对于HTTP floods攻击手法的持续升级演进,
除了从HTTP报文层面抽丝剥茧识别异常,还需要联动其他维度的信息与能力来提升防护效果 ,具体而言体现在以下方面:

  • 对于高级隐蔽的HTTP floods,攻击者必定需要充足的IP资源,这些IP往往来源于“肉鸡”IP或IP代理池,通过结合高质量的IP情报信息,可以在攻击发生时自动实时处置,实现精准防护;

  • 同时,专业的HTTP floods攻击离不开自动化工具的支持,这类工具往往具有BOT特征。通过对端侧信息的采集、校验,与每个请求进行关联,可以在攻击发生时自动识别恶意BOT流量,进一步提升防护效果。1656399355_62baa5fb944b6dca72429.png!small?1656399356146

WAF的JS Challenge功能,就是通过能力联动来提升防护效果的一个例子:

不同于对请求报文检测来识别异常这种“被动”的防护方式, JS Challenge功能通过在防护检测过程“主动”向客户端植入一段JS逻辑
。通过利用前端浏览器的JS渲染执行能力,实现对异常流量的识别;在具体的实现过程中,为了对抗重放攻击、减少绕过风险,可能会引入动态令牌机制;为了更全面地覆盖业务场景,减少误伤情况发生,可以利用JS
API调用判断浏览器环境与兼容性;为了对防护情况的实时掌控,还可能引入埋点、监控逻辑等。

在这些技术细节的实现过程中,WAF既需要联动端侧浏览器的能力,也需要联动CDN、LB等接入组件的能力,最终实现防护效果的进一步提升。

五、复盘反思,如何快人一步

WAF在对抗HTTP
DDoS攻击的过程中,不断建设、强化自身能力的同时,也需要不断复盘、反思防护情况,力求更完善、高效的应对思路与方案。具体可以总结成以下三点:

5.1 丰富特征维度

根据HTTP
DDoS攻击的特点可以得知,防护难点之一在于攻击流量特征难以捕捉。其中一个原因是依据现有的特征维度,攻击流量能实现高度的模拟伪装。从这个角度出发,从防护视角补充更多维度的特征,就更能识别检测恶意流量。

就WAF产品而言,可以从两方面着手推进: 一方面是丰富报文特征
,除了7层HTTP报文的特征提取,可以尝试结合4层报文的字段因子来实现对恶意流量的识别标记;另一方面是 丰富行为特征
,由于HTTP是无状态协议,单次请求响应的交互所携带的信息往往是有限的。通过关联、统计具有一定联系的请求,提取行为特征,也能为制定防护策略提供参考。

1656399364_62baa604c9d024140f531.png!small?1656399365531

5.2 提升BOT识别&对抗能力

对于BOT流量的识别对抗能力,在HTTP
DDoS攻击防护中,往往发挥着重要、关键的作用。但现实业务流量中往往也会混杂正常的BOT流量,这就要求不仅能识别出BOT流量,还能区分正常与恶意的BOT流量,
具备与恶意BOT流量的对抗处置能力

在落地相关方案时,也需要与业务场景紧密贴合。对于WebApp而言,正常流量多数通过浏览器发起,可以通过JS
Challenge的方式实现对端侧的校验与信息采集。通过该方案实现WebApp场景防护的同时,在技术实现上也需要不断迭代优化来满足更多元的业务场景需求。例如对于JS相关逻辑用更高效的混淆方式来避免绕过风险,对引入的JS资源做好缓存/优化策略提升业务性能与用户体验等。

对于NativeApp而言, 则可以通过SDK集成方式来验证、采集端侧信息
。但无论是哪种方式、场景,都需要有更完善的误伤评估、监控体系来保障防护的精准性。对于无法准确识别恶意BOT流量的情况,也需要更丰富的柔性处置策略,来实现对流量的进一步过滤校验。

5.3 策略事前布局

预防为主,防治结合,这是人类应对疾病威胁的重要方针,在网络安全世界中也同样适用。HTTP
DDoS攻击发生时往往来势汹汹,事先并没有任何征兆。这就意味着事中、事后的处置策略对当前攻击通常只能起到应急补救的效果。因此,对于存在攻击风险的业务,提前梳理业务资产,预先进行策略布局就显得更为重要。

为了实现这个目标可从两方面着手:一个是与业务团队紧密配合,做好宣传引导,在WAF产品中 对关键目标资产实现HTTP DDoS防护策略的事前配置
;另一个是强化WAF的自动化分析能力, 对承载业务的目标资产、负载能力、报文特征等数据进行自动化统计分析,输出对应的防护策略
,对生产的策略效果进行实时评估、校准,在提升防护效果的同时也能大幅降低策略运营成本。

起到应急补救的效果。因此,对于存在攻击风险的业务,提前梳理业务资产,预先进行策略布局就显得更为重要。

为了实现这个目标可从两方面着手:一个是与业务团队紧密配合,做好宣传引导,在WAF产品中 对关键目标资产实现HTTP DDoS防护策略的事前配置
;另一个是强化WAF的自动化分析能力, 对承载业务的目标资产、负载能力、报文特征等数据进行自动化统计分析,输出对应的防护策略
,对生产的策略效果进行实时评估、校准,在提升防护效果的同时也能大幅降低策略运营成本。

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

相关文章:

超低成本DDoS攻击来袭,看WAF如何绝地防护

一、DDoS攻击&#xff0c;不止于网络传输层 网络世界里为人们所熟知的DDoS攻击&#xff0c;多数是通过对带宽或网络计算资源的持续、大量消耗&#xff0c;最终导致目标网络与业务的瘫痪&#xff1b;这类DDOS攻击&#xff0c; 工作在OSI模型的网络层与传输层&#xff0c;利用协…...

CF1795E Explosions? (单调栈)

传送门 题意&#xff1a; 有 n 个怪兽需要消灭&#xff0c;它们的生命值分别是 h [1],h [2]......h [n]. 我们可以使用两种技能&#xff1a; 技能 1&#xff1a;选择任意一个怪兽&#xff0c;使其生命值降低 1 点&#xff0c;并且需要 1 点能量值. 技能 2&#xff1a;选择任意…...

C++——二叉树排序树

文章目录1 二叉搜索树概念2 二叉搜索树操作与模拟实现2.1 二叉搜索树的查找非递归版本递归版本2.2 二叉搜索树的插入非递归版本递归版本2.3 二叉搜索树的删除非递归版本递归版本3 二叉搜索树的应用&#xff08;K模型、KV模型&#xff09;4 二叉搜索树的性能分析1 二叉搜索树概念…...

深拷贝浅拷贝的区别?如何实现一个深拷贝?

一、数据类型存储 JavaScript中存在两大数据类型&#xff1a; 基本类型 Number String null Undefined Boolean symbol引用类型 array object function 基本类型数据保存在在栈内存中 引用类型数据保存在堆内存中&#xff0c;引用数据类型的变量是一个指向堆内存中实际对象的…...

Linux应用编程下连接本地数据库进行增删改查系列操作

文章目录前言一、常用SQL操作语句二、相关函数解析三、连接本地数据库四、编译运行五、程序源码前言 本篇为C语言应用编程下连接Linux本地数据库进行增删改查系列操作。 在此之前&#xff0c;首先当然是你需要具备一定的数据库基础&#xff0c;所以下面我先列出部分常用的SQL…...

图论学习03

图神经网络模型介绍 将图神经网络分为基于谱域上的模型和基于空域上的模型&#xff0c;并按照发展顺序详解每个类别中的重要模型。 基于谱域的图神经网络 谱域上的图卷积在图学习迈向深度学习的发展历程上起到了关键性的作用。三个具有代表性的谱域图神经网络 谱图卷积网络切…...

解决qt中cmake单独存放 .ui, .cpp, .h文件

设想 项目文件较多&#xff0c;全部放在一个目录下就像依托答辩。 希望能将头文件放入include&#xff0c;ui文件放入ui&#xff0c;源文件放入src。 为了将Qt代码和一般非Qt代码分离开&#xff0c;进一步地&#xff1a; 将Qt源文件放入qt_src&#xff0c;普通源文件放入sr…...

操作系统(day12)-- 基本分段存储,段页式存储

基本分段存储管理方式 不会产生内部碎片&#xff0c;会产生外部碎片 分段 按照程序自身的逻辑关系划分为 若干个段&#xff0c;每个段都有一个段名&#xff0c;每段从0开始编址 分段存储管理方式中一个段表项由段号&#xff08;隐含&#xff09;、段长、基地址 分段的段表项固…...

疯狂弹出请插入多卷集的最后一张磁盘窗口

整个人嘛了&#xff0c;今天插上U盘&#xff0c;跟tmd中了病毒一样&#xff0c; 屏幕疯狂弹出窗口&#xff0c; 提示请插入多卷集的最后一张磁盘&#xff01; 点确定之后他继续弹出&#xff0c;点取消它也继续弹出&#xff0c; 关掉一个又弹出来一个&#xff0c;妈的&#x…...

Spark12: SparkSQL入门

一、SparkSQL Spark SQL和我们之前讲Hive的时候说的hive on spark是不一样的。hive on spark是表示把底层的mapreduce引擎替换为spark引擎。而Spark SQL是Spark自己实现的一套SQL处理引擎。Spark SQL是Spark中的一个模块&#xff0c;主要用于进行结构化数据的处理。它提供的最核…...

show profile和trance分析SQL

目录 一.show profile分析SQL 二.trance分析优化器执行计划 一.show profile分析SQL Mysql从5.0.37版本开始增加了对show profiles和show profile语句的支持。show profiles能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。。 通过have_profiling参数&#xff0c;能够…...

[AI生成图片] 效果最好的Midjourney 的介绍和使用

Midjourney介绍&#xff1a; 是一个文本生成图片的扩散模型&#xff0c;能够根据输入的任何文本生成令人难以置信的图像&#xff0c;让数十亿人在几秒钟内创造惊人的艺术。为方便用户控制和快速生成图片&#xff0c;打开后在页面底部输入文本内容&#xff0c;稍等一小会&#…...

Vue.use( ) 的核心原理

首先来思考几个问题&#xff1a; Vue.use是什么&#xff1f; vue.use() 是vue提供的一个静态方法&#xff0c;主要是为了注册插件&#xff0c;增加vue的功能。 Vue.use( plugin ) plugin只能是Object 或 Function vue.use()做了什么工作&#xff1f; 该js如果是对象 该对象…...

idea同时编辑多行-winmac都支持

1背景介绍 idea编辑器非常强大&#xff0c;其中一个功能非常优秀&#xff0c;很多程序员也非常喜欢用。这个功能能够大大大提高工作效率-------------多行代码同时编辑 2win 2.1方法1 按住alt鼠标左键上/下拖动即可 这样选中多行后&#xff0c;可以直接多行编辑。 优点&a…...

亿级高并发电商项目-- 实战篇 --万达商城项目 十一(编写商品搜索功能、操作商品同步到ES、安装RabbitMQ与Erlang,配置监听队列与消息队列)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…...

数据结构概述和稀疏数组

数据结构和算法内容介绍 1&#xff09;算法是程序的灵魂&#xff0c;优秀的程序可以在海量数据计算时&#xff0c;仍然保持高速计算 数据结构和算法概述 1&#xff09;程序 数据结构算法 2&#xff09;学好数据结构可以编写出更加漂亮&#xff0c;更加有效率的代码 3&…...

宝塔搭建实战人才求职管理系统adminm前端vue源码(三)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上一期给大家分享骑士cms后台admin前端vue在本地运行打包、宝塔发布部署的方式&#xff0c;本期给大家分享&#xff0c;后台adminm移动端后台vue前端怎么在本地运行&#xff0c;打包&#xff0c;实现线上功能更新…...

服务器是干什么用的?

首先&#xff0c;什么是服务器&#xff1f;服务器是提供计算服务器和网络服务的设备。服务器和计算机由CPU、硬盘、内存、系统总线等组成。比如我们访问一个网站&#xff0c;点击这个网站会发出访问请求&#xff0c;服务器会响应服务请求&#xff0c;进行相应的处理&#xff0c…...

C++ 之结构体与共用体

文章目录参考描述结构体使用&#xff08;基本&#xff09;声明初始化先创建后初始化C 11 列表初始化使用&#xff08;进阶&#xff09;结构数组声明&#xff08;拓展&#xff09;声明及创建声明及初始化匿名结构体细节外部声明与内部声明成员赋值共用体存储空间匿名共用体同化尾…...

Java基础知识汇总(良心总结)

1. 前言 本文章是对Java基础知识进行了汇总&#xff0c;方便大家学习。 申明&#xff1a;文章的内容均来自黑马程序员&#xff0c;博主只是将其搬到了CSDN上以共享给大家学习 2. 目录 Day01 Java学习笔记之《开章》 Day02 Java学习笔记之《运算符》 Day03 Java学习笔记之《流程…...

InnoDB之Undo log格式

1. 前言 InnoDB有两大日志模块&#xff0c;分别是redo log和undo log。为了避免磁盘随机写&#xff0c;InnoDB设计了redo log&#xff0c;数据写入时只写缓冲页和redo log&#xff0c;脏页由后台线程异步刷盘&#xff0c;哪怕系统崩溃也能根据redo log恢复数据。但是我们漏了一…...

一问学习StreamAPI终端操作

Java Stream管道流是用于简化集合类元素处理的java API。 在使用的过程中分为三个阶段&#xff1a; 将集合、数组、或行文本文件转换为java Stream管道流管道流式数据处理操作&#xff0c;处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。管道流结果…...

在屎山代码中快速找到想要的代码法-锁表法(C#)

由于本人水平有限&#xff0c;文中有写得不对的地方请指正&#xff0c;本文的方法有些投机取巧&#xff0c;实在是没招的情况下可以酌情使用&#xff0c;如有侵权&#xff0c;请联系删除。 前几天接到一个需求&#xff0c;要在医嘱签署时对检验项目进行分方操作&#xff0c;分…...

网页设计html期末大作业

网页设计html期末大作业网页设计期末大作业-自制网站大一期末作业&#xff0c;外卖网站设计网页设计期末大作业-精美商城-首页框架网页设计期末大作业-自制网站 有导航栏&#xff0c;轮播图&#xff0c;按钮均可点进去&#xff0c;如下图所示 点我下载资源》》》》 大一期末…...

实战打靶集锦-006-Stapler

**写在前面&#xff1a;**记录博主的一次打靶经历。 目录1. 主机发现2. 端口发现3. 服务枚举4. 服务探查4.1 FTP探查4.1.1 匿名登录4.1.2 Elly用户4.1.3 John用户4.1.4 EXP搜索4.2 dnsmasq探查4.2.1 基础信息获取4.2.2 EXP搜索4.3 WEB应用探查4.3.1 浏览器访问4.3.2 目录扫描4.…...

致远OAA6版安装

准备工作&#xff0c;操作系统winserver2019&#xff0c;sqlserver2019。致远OA安装包0.SeeyonInstall.zip相关下载&#xff1a;winserver2019下载地址&#xff1a;cn_windows_server_2019_updated_july_2020_x64_dvd_2c9b67da.iso magnet:?xturn:btih:22A410DEA1B0886354A34D…...

python实用脚本(六)—— pandas库的使用(生成、读取表格)

本期主题&#xff1a; python的pandas使用 往期链接&#xff1a; python实用脚本&#xff08;一&#xff09;—— 批量修改目标文件夹下的文件名python实用脚本&#xff08;二&#xff09;—— 使用xlrd读取excelpython实用脚本&#xff08;三&#xff09;—— 通过有道智云AP…...

字符集、ASCII、GBK、UTF-8、Unicode、乱码、字符编码、解码问题等

编码解码一、背景二、字符的相关概念三、字符集3.1 ASCII[ˈski]3.1.1 ASCII的编码方式3.1.2 EASCII3.2 GBK3.2.1 GB 2312-803.2.2 GBK的制订3.2.3 GBK的实现方式3.3 Unicode&#xff08;统一码、万国码&#xff09;3.3.1 Unicode的出现背景3.3.2 Unicode的编写方式3.3.3 Unico…...

Java 布隆过滤器

你在么&#xff1f;在&#xff01;一定在么&#xff1f;不在&#xff01;一定不在么&#xff1f; 你想要100%的准去性&#xff0c;还是99%的准确性附带较高的速度和较小的资源消耗。 任何算法&#xff0c;任何经营收到的背后&#xff0c;都是时间效益 资源消耗 准确性的平衡&am…...

vscode连接服务器(腾讯云)

文章目录1. vscode远程总是报错2. vscode能连上腾讯云但密码不对或者登录后不能打开文件或文件夹1. vscode远程总是报错 报错如图所示 Could not establish connection to *** 过程试图写入的管道不存在。 在百度、csdn找了好久都是说删掉.ssh文件下的某个文件但我压根没有&a…...