DDos系列攻击原理与防御原理
七层防御体系
静态过滤
命中黑名单
- 对确定是攻击的流量直接加入黑名单(源地址命中黑名单直接丢弃,缺乏机动性和扩展性)
畸形报文过滤
畸形报文攻击
- TCP包含多个标记位,排列组合有规律
• 现象:TCP标记位全为1
- 报文被分片后,重组计算无法进行
- 攻击者使用源地址为127.0.0.0网段的地址,对攻击主机发起流量,被攻击主机对127.0.0.0回应报文,导致某些系统处理127.0.0.0的地址会出错,导致系统访问缓慢。
扫描窥探报文过滤
扫描窥探攻击
- 探测网络中存在的某些主机的IP地址以及开放的端口号,为进一步的攻击提供前提条件
- 防御手段:监控某个目的主机在单位时间内端口和地址变化的阈值。
源合法认证检测机制
虚假源流量
- 通过大量伪造的地址去想被攻击主机发起流量
基于会话检测机制
异常连接威胁
- 报文在交互过程中,某些标记不符合协议工作机制的报文进行拦截
- 防范手段:检测报文序列号、确认号等信息从而判断是否是异常连接。
特征识别过滤
具有明显攻击特征的流量
- 针对操作系统或者应用程序的漏洞流量进行丢弃,需要防火墙能对协议特征进行识别。
流量整形
突发流量
DDoS攻击防范技术
1、首包丢弃
有些攻击是不断变换源IP地址或者源端口号发送攻击报文,通过首包丢弃,可以有效拦截这部分流量。首包丢弃与源认证结合使用,防止虚假源攻击。
处理过程:(根据三元组实现)
(1)、开启首包丢弃功能后,SYN、TCP、DNS、UDP、ICMP各类流量超过阈值后,设备会丢弃报文首包。
(2)、基于三元组(源IP地址、源端口和协议)来匹配报文,并通过报文的时间间隔来判断首包。
(3)、当报文没有匹配到任何二元组时,认为该报文是首包,将其丢弃。
(4)、当报文匹配到某三元组,则计算该报文与匹配该三元组的上一个报文到达的时间间隔。
(5)、如果时间间隔低于设定的下限,或者高于设定的上限,则认为是首包,将其丢弃:如果时间间隔落在配置的上限和下限之间,则认为是后续包,将其放行。
2、阻断和限流
通过服务学习或经验发现网络中根本没有某种服务或某种服务流量很小,则可以分别采用阻断和限流方法来防御攻击。
(1)阻断:在自定义服务策略中表示将匹配自定义服务的报文全部丢O弃;在默认防御策略中表示将自定义服务以外的此协议报文全部丢弃。
(2)限流:在自定义服务策略中表示将匹配自定义服务的报文限制在0阌值内,丢弃超过闽值的部分报文;在默认防御策略中表示将自定义服务以外的此协议报文限制在阈值内,丢弃超过阈值的部分报文。
3、静态指纹过滤
通过配置静态指纹,对命中指纹的报文进行相应的处理,从而对攻击流量进行防御。
(1)、TCP/UDP/自定义服务可基于载荷(即报文的数据段)提取指纹。
(2)、DNS报文针对域名提取指纹。
(3)、HTTP报文针对通用资源标识符URI(Uniform Resource Identifier)提取指纹。
- TCP源检测技术能探测访问者是否是真实可用的源,UDP不包含三次握手,基于UDP的DDoS攻击需要使用“指纹”来实现防范,UDP的DDoS报文载荷内容相对固定
- DNS协议的流量重要又特殊,工作在两种传输层协议之上(既可以用TCP又可以用UDP),通常就是根据DNS行为来做防御处理
基于TCP的DDoS攻击
TCP正常建立连接和断开连接的过程
• 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
(1)第一次握手:建立连接时,客户端发送SYN包(SYN=J)到服务器,并进入SYN SENT状 态,等待服务器确认。
(2)第二次握手:服务器收到SYN包,必须发出ACK包(ACK=J+1)来确认客户端的SYN包,同时自己也发送一个SYN包(SYN=K),即SYN-ACK包,此时服务器进入SYN RCVD状态。
(3)第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK(ACK=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。如果服务器发出的SYN-ACK包异常,客户端会发送一个RST包给服务器,服务器重新回到LSTEN监听状态。
• TCP采用四次握手来关闭一个连接。第一次握手:客户端发送FIN包(FIN=M)到服务器,表示客户端没有数据要向服务器发送了,同时进入FIN WAIT 1状态,等待服务器确认。第二次握手:服务器收到FIN包,必须发送ACK包(ACK=M+1)来确认客户端的FIN包,但服务器数据还没传完,所以不发送FIN包,此时服务器进入LAST WAIT状态。第三次握手:当服务器没有数据要向客户端发送时,服务器发送FIN包(FIN=N)到客户端,并进入LAST ACK状态,等待客户端最终确认。第四次握手:客户端收到FIN包,发出ACK包(ACK=N+1)来确认服务器的FIN包,进入TIME WAIT状态,等待连接完全断掉。此包发送完毕,服务器进入CLOSED状态完成四次握手,双方连接断开。
- TCP的确认机制+1规律太好找,容易被伪造,就进行了一个伪随机的确认,每一次发送的序列号+这一个报文的PDU,就是下一次发送报文的序列号,只能建立会话的这两台主机才能找到这个规律。
4、SYN Flood攻击(TCP握手第一个报文)
- 攻击者会大量伪造源地址是假的(第一次SYN攻击),如果没有抗DDos设备,服务器回第二个握手连接,这个时候服务器会缓存大量的TCP半开连接(消耗服务器资源)
- 防御机制:基于传输层协议的源合法性验证技术
• 利用TCP协议原理,针对TCP类Flood进行检测和防御。用户进行TCP连接,清洗设备回应经过构造的SYN-ACK报文,通过用户的反应来判断此用户是否正常。主要用于来回路径不一致的情况下。
• 只是抗DDos设备把流量抗下来了,链路带宽还是会受到影响的,DDos只能是把危害降到最低,不能完全解决。
5、SYN-ACK Flood攻击(TCP握手第二个报文)
- 被攻击对象接收大量SYN-ACK,会检查自己会话表,是自己哪个会话响应报文,这个查会话表对服务器性能有影响。
- 防御机制:清洗设备基于目的地址对SYN-ACK报文速率进行统计,当SYN-ACK报文速率超过阈值时,启动源认证防御
6、ACK Flood攻击(TCP握手第三个报文)
- 如果端系统在收到一个ACK报文时,如果目的端口未开放,那么端系统会直接向源IP发送RST报文。如果端系统的相关端口是对外开放的,那么其在收到ACK报文时,首先会检查这个ACK报文是否属于TCP连接表中的一个已有连接(这个过程会对端系统主机CPU资源造成一定的消耗),如果是的话,则正常处理如果不属于任何一个已有连接,那么端系统会向源IP发送RST报文
- 攻击原理:攻击者利用僵尸网络发送大量的ACK报文,冲击网络带宽,造成网络链拥塞;同时被攻击服务器接收到攻击报文后需要检查会话以确认报文是否属于某个会话,如果攻击报文数量庞大,服务器处理性能耗尽,从而拒绝正常服务。
- 防御原理:
- (1)、当ACK报文速率超过阈值时,启动会话检查。
- (2)、如果清洗设备检查到ACK报文没有命中会话,则有两种处理模式:
- 1)、“严格模式”:直路部署组网中建议采用”严格模式”。如果清洗设备没有检查到已经建立的会话,直接丢弃报文。
- 2)、“基本模式”:旁路部署动态引流时,对于引流前已经建立的会话,清洗设备上会检查不到会话,此时建议采用“基本模式”,即当连续一段时间内ACK报文速率超过阈值时,启"基本模式动会话检查,设备会先让几个ACK报文通过,建立会话,然后对会话进行检查确定是否丢弃报文。
- (3)、如果清洗设备检查到ACK报文命中会话,则检查会活创建原因。
- (4)、如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。
- (5)、如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,列号正确的报文允许通过,不正确的报文则被丢弃。
- (6)、载荷检查是清洗设备对ACK报文的载荷进行检查,如果载荷内容全一致(载荷内容全为1等),则丢弃该报文。
- (7)、只有启用了"会话检查”,才能启用”载荷检查”,对会话检查通过的报文进行载荷检查。
7、FIN/RST Flood攻击(存在故意捣乱行为)
- FIN断开TCP连接RST进行TCP重连
- 攻击原理
- 防御FIN/RST攻击的方法就是进行会话检查
防御原理:当FIN/RST报文速率超过阈值时,启动会话检查。
(1)、如果清洗设备检查到FIN/RST报文没有命中会话,直接丢弃报文。
(2)、如果清洗设备检查到FIN/RST报文命中会话,则检查会话创建原因。
(3)、如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。
(4)、如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,序列号正确的报文允许通过,不正确的报文则被丢弃。
基于UDP的DDoS攻击
8、UDP Flood关联TCP类服务攻击
- 当UDP流量与TCP类服务有关联时,通过防御TCP类服务来防御UDP Flood。
- 攻击原理:攻击者通过僵尸网络向目标服务器发起大重的UDP报文,这种UDP报文通常为大包且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
- 防御原理
• 针对TCP流量进行源检测,源认证通过后,后续这个源地址发送的UDP报文进行放行。
- 很多流量都是由手机端发起的,手机端应用先用TCP做身份验证后再用UDP交互数据。
• UDP与TCP流量关联
9、载荷检查和指纹学习
- 使用载荷检查和指纹学习方法防御具有规律的UDPFlood攻击。
- 大多数UDP的DDoS载荷比较固定单一
- 攻击原理攻击者通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
- 防御原理:
- (1)、载荷检查:当UDP流量超过阈值时,会触发载荷检查。如果UDP报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
- (2)、指纹学习:当UDP流显超过阈值时,会触发指纹学习,指纹由清洗设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。
- UDP包通常比较大,速度比较快,可以针对UDP报文做限速,一个服务器既能支持TCP服务又支持UDP服务,TCP和UDP其中一个过多都会影响另一方。
基于DNS的DDoS攻击
DNS交互过程
- 1、客户端访问某个域名,发送DNS请求信息(带有解析的域名信息)。
- 2、本地DNS服务器收到请求后,先在自己缓存中找对应IP地址:
- 1)、本地缓存有的话直接回应解析过程就完毕了。
- 2)、本地缓存没有的话,缓存服务器就不是对应域的解析服务器(不负责对请求域名做解析),DNS服务器会向上级授权服务器为用户提交域名解析请求。授权服务器有的话会针对缓存服务器回应DNS请求,缓存服务器会记录这个域名的DNS信息,把应答结果告诉用户。
• 这个过程会发生很多攻击比如:1、客户端发起大量乱七八糟的域名解析请求,缓存服务器本地没有就会都丢给授权服务器。
- DNS是互联网中很重要的基础服务
- 如果DNS受到了DDoS,无法进行域名解析,客户端就无法访问域名的业务。
当用户上网访问某个网站时,会向DNS缓存服务器发出该网站的域名,以请求其IP地址,当DNS缓存服务器查找不到该域名与IP地址对应关系时,它会向授权DNS服务器发出域名查询请求,为了减少Interet上DNS的通信量,DNS缓存服务器会将查询到的域名和IP地址对应关系存体在自己的本地缓存中。后续再有主机清求该域名时,DNS缓存服务器会直接用缓存区中的记录信息回应,直到该记录老化,被删除。
1、缓存服务器比较常见的攻击包括:
(1)、DNS Request Flood攻击
(2)、DNS Reply Flood攻击
(3)、未知域名攻击
(4)、DNS缓存投毒攻击
(5)、异常DNS报文攻击
2、授权服务器比较常见的攻击包括:
(1)、DNS Request Flood攻击
(2)、未知域名攻击
(3)、DNS缓存投毒攻击
10、DNS Request Flood攻击
- 攻击原理:。针对缓存服务器攻击。针对授权服务器攻击DNS Request Flood攻击源可能是虚假源,也可能是真实源针对不同类型的攻击源,采取的防御方式也不同。
- DNS这种协议,工作可以基于TCP也可以基于UDP。TCP:可以判断是真实还是虚假。UDP:不太好判断是真实还是虚假。
• 使用UDP的场景
• 默认情况下解析DNS是用UDP解析,UDP解析速度快,效率高。DNS本身报文也小。
• DNS主辅同步技术,避免DNS单点失效,主DNS和辅DNS进行数据库同步的时候使用TCP。
- 针对虚假源攻击防御
• 基本模式:抗DDoS设备让客户端和自己使用TCP进行解析,发TCP的RST让客户端与真实DNS服务器进行重连使用“基本模式”
• 这样正常客户端会使用TCP和DNS服务器建立会话,会导致DNS服务器维护大量会话,消耗资源。
• 增强模式:抗DDoS设备将真实客户端的TCP报文转发给DNS服务器的时候使用UDP报文方式进行,DNS服务器发UDP的应答给抗DDoS,抗DDoS的设备相当于做了代理(TCP和UDP之间代理)。
• 这样的话缓存都让抗DDoS设备抗下来了。
- 针对真实源攻击防御
• 针对真实源攻击:如果是真实源攻击,经过上述防御过程后,通过的DNS报文还很大,则可以继续采用以下方式进行防御:
1、DNS请求报文限速
(1)、指定域名限速
(2)、源IP限速
2、Anti-DDoS设备还支持对异常DNS报文的检查,根据预定义的规则分别从以下三个方面进行检测:
(1)、DNS报文的格式
(2)、DNS报文的长度
(3)、DNS报文的TTL
HTTP&HTTPS类报文攻击防御
HTTP类型报文攻击与防御
- 防御HTTP Flood攻击的方法包括源认证、目的IP的URI检测和指纹学习。
- 攻击原理:攻击者通过代理或僵尸向目标服务器发起大量的HTTP报文,请求涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。
- 防御原理:
- (1)、HTTP Flood源认证
- (2)、目的IP的URI检测
- (3)、指纹学习
11、HTTP慢速攻击
- 攻击原理:HTTP慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。
• (1)、HTTP愠速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽是长时间保持该连接,不释放,达到对HTTP服务器的攻击。常见的攻击有两种:
1)、S1ow POST:攻击者发送Post报文向服务器清求提交数据,将总报文长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样导致服务器端一直等待攻击者发送数据。
2)、Slow headers:攻击者通过GET或者POST向服务器建立连接,但是HTTP头字段不发送结束符,之后发送其他字段进行保活。服务器会一直等待头信息中结束符而导致连接始终被占用。
- 防御原理:
- (1)、针对HTTP慢速攻击的特点,Anti-DDoS设备对每秒钟HTTP并发连接数进行检查,当每秒钟HTTP并发连接数超过设定值时,会触发HTTP报文检查,检查出以下任意一种情况,都认定受到HTTP慢速连接攻击,则将该源IP地址判定为攻击源,加入动态黑名单,同时断开此IP地址与HTTP服务器的连接。
- (2)、连续多个HTTP POST报文的总长度都很大,但是其HTTP载荷长度都很小。
- (3)、连续多个HTTP GET/POST报文的报文头都没有结束标识。
- HTTP能建立起来的一定源IP是真实的。
HTTPS类型报文攻击与防御
- 通过源认证方法来防御HTTPS Flood攻击。
- 攻击原理:攻击者通过代理、僵尸网络或者直接向目标服务器发起大量的HTTPS连接,造成服务器资源耗尽,无法响应正常的请求。
- 防御原理:通过源认证对HTTPS攻击进行防御,清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御。
12、SSL DoS攻击
- 通过源认证和SSL防御结合防御SSL DoS攻击。
- 攻击原理SSL握手的过程中,在协商加密算法时服务器CPU的开销是客户端开销的15倍左右。攻击者利用这一特点,在一个TCP连接中不停地快速重新协商。
- 防御原理:
- (1)、清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御和SSL防御:
- 1)、源认证
- 2)、SSL防御
• SSL防御:在检查周期内,如果某个源IP地址到目的IP地址的协商次数超过最大值,则将此会话标记为异常会话,在异常会活检查周期内,如果异常会话数超过最大值时,判定该源IP地址异常,将该源IP地址加入黑名单。
DDoS的流量不能百分百防御,设备存在漏判误判的情况。
相关文章:

DDos系列攻击原理与防御原理
七层防御体系 静态过滤 命中黑名单 对确定是攻击的流量直接加入黑名单(源地址命中黑名单直接丢弃,缺乏机动性和扩展性) 畸形报文过滤 畸形报文攻击 TCP包含多个标记位,排列组合有规律 • 现象:TCP标记位全为1 …...

Python拆分PDF、Python合并PDF
WPS能拆分合并,但却是要输入编辑密码,我没有。故写了个脚本来做拆分,顺便附上合并的代码。 代码如下(extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…...
SqlServer(4)经典总结大全-技巧总结-数据开发-基本函数-常识整理-经典面试题
六、技巧 1、11,12的使用,在SQL语句组合时用的较多 “where 11” 是表示选择全部 “where 12”全部不选, 如: if strWhere !‘’ begin set strSQL ‘select count(*) as Total from [’ tblName ] where ’ strWhere …...

ArcGIS矢量裁剪矢量
一、利用相交工具 Arctoolbox工具一分析工具一叠加分析一相交...

pygame用chatgpt绘制3d沿x轴旋转的
import pygame from pygame.locals import * import sys import mathpygame.init()width, height 800, 600 screen pygame.display.set_mode((width, height))vertices [(0, 100, 0), (100, 200, 0), (300, 100, 0)]angle 0 rotation_speed 2 # 可根据需要调整旋转速度 c…...
golang大小写规则的影响
目录 golang大小写的规则: 1、可见性(visibility): 2、包的导入和调用: 3、json序列化和反序列化: 4、结构体字段的导出和可见性: 5、方法和函数的导出和可见性 : 6、常量和变…...

基于Java在线考试系统系统设计与实现(源码+部署文档)
博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…...
如何应对复杂软件工程的开发流程?
应对复杂软件工程的开发流程通常需要一个结构化和系统化的方法。这种方法不仅包括采用合适的技术和工具,还涉及到项目管理、团队协作、需求分析、设计、实施、测试、部署和维护等多个方面。以下是一些关键步骤,以及如何将这些步骤应用于使用LabVIEW进行软…...

JAVA的NIO和BIO底层原理分析
文章目录 一、操作系统底层IO原理1. 简介2. 操作系统进行IO的流程 二、BIO底层原理1. 什么是Socket2. JDK原生编程的BIO 三、Java原生编程的NIO1. 简介2. NIO和BIO的主要区别3. Reactor模式4. NIO的三大核心组件5. NIO核心源码分析 一、操作系统底层IO原理 1. 简介 IO&#x…...

Python学习从0到1 day18 Python可视化基础综合案例 1.折线图
我默记这段路的酸楚,等来年春暖花开之时再赏心阅读 —— 24.3.24 python基础综合案例 数据可视化 — 折线图可视化 一、折线图案例 1.json数据格式 2.pyecharts模块介绍 3.pyecharts快速入门 4.数据处理 5.创建折线图 1.json数据格式 1.什么是json 2.掌握如何使用js…...

HTML网站的概念
目录 前言: 1.什么是网页: 2.什么是网站: 示例: 3.服务器: 总结: 前言: HTML也称Hyper Text Markup Language,意思是超文本标记语言,同时HTML也是前端的基础&…...

【微服务】Nacos(配置中心)
文章目录 1.AP和CP1.基本介绍2.说明 2.Nacos配置中心实例1.架构图2.在Nacos Server加入配置1.配置列表,加号2.加入配置3.点击发布,然后返回4.还可以编辑 3. 创建 Nacos 配置客户端模块获取配置中心信息1.创建子模块 e-commerce-nacos-config-client50002…...

比较AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer
主流的几个AI智能编程代码助手包括Github Copilot、Codeium、Tabnine、Replit Ghostwriter和Amazon CodeWhisperer。 你可能已经尝试过其中的一些,也可能还在不断寻找最适合自己或公司使用的编程助手。但是,这些产品都会使用精选代码示例来实现自我宣传…...

顺应互联网发展大潮流,红河农资招商火爆开启
顺应互联网发展大潮流,红河农资招商火爆开启 进入新世纪,生态农业建设成为了影响和改变农村、农业工作的重要领域。尤其是在互联网的快速发展之下,实现农业结构调整,推动互联网模式的发展,成为了当前生态农业发展的主流…...

网络七层模型之传输层:理解网络通信的架构(四)
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
微信小程序实现图片懒加载的4种方案
实现图片懒加载的意义 实现图片懒加载可以提高小程序的性能和用户体验,是微信小程序开发中非常重要的一项优化手段。微信小程序实现图片懒加载的目的主要有以下几点: 提高页面加载速度:图片通常是页面中最耗时的资源,如果一次性…...

各大pdf转word软件都用的哪家的ocr引擎?
国内一般的PDF软件一般都调用某国际PDF原厂的OCR接口,但这家公司是主要做PDF,在OCR方面并不专注,一些不是很复杂的场景还能应付得过来,复杂一点的效果就强差人意了,推荐用金鸣表格文字识别系统,它主要有以下…...
学习没有速成可言
那些声称几天就能让你精通软件的书籍,往往是夸大其词的宣传。学习软件需要时间和实践,没有什么快速的捷径可以让你在短时间内成为专家。 对于速成软件书,我个人持保留态度。它们可能提供一些基础知识和技巧,可以给初学者一个入门…...

快速上手Pytrch爬虫之爬取某应图片壁纸
一、前置知识 1 爬虫简介 网络爬虫(又被称作网络蜘蛛、网络机器人,在某些社区中也经常被称为网页追逐者)可以按照指定的规则(网络爬虫的算法)自动浏览或抓取网络中的信息。 1.1 Web网页存在方式 表层网页指的是不需要提交表单&…...

如何在Apache Arrow中定位与解决问题
如何在apache Arrow定位与解决问题 最近在执行sql时做了一些batch变更,出现了一个 crash问题,底层使用了apache arrow来实现。本节将会从0开始讲解如何调试STL源码crash问题,在这篇文章中以实际工作中resize导致crash为例,引出如何…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...