【24华为杯数模研赛赛题思路已出】国赛B题思路丨附参考代码丨免费分享

news2024/9/22 18:00:10

2024年华为杯研赛B题解题思路

B题 WLAN组网中网络吞吐量建模

问题1

请根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息,分析其中各参数对AP发送机会的影响,并给出影响性强弱的顺序。通过训练的模型,预测每个AP的发送机会,即发送数据帧序列的总时长(seq_time),并通过测试集 test_set_1_2ap和test_set_1_3ap(仅提供模型输入信息)预测AP发送数据帧序列的总时长。可按照同频AP个数分类分析和分别建模,也可统一分析和建模。

除了发送机会外,WLAN网络吞吐量还取决于发送时所选用的PHY Rate以及数据帧的比特数。AP给不同STA发送数据所选用的(MCS, NSS),即PHY Rate,受传输方式和干扰情况影响。以两个AP传输一段时间为例,有以下三种情形:

a)仅有同步传输时,两个AP交替抢到信道,偶然同时发送。因此,STA接收数据时的干扰主要来自环境底噪,因而SINR高,AP选用的(MCS, NSS)较高,PHY Rate高。

b)当两个AP总是不互听时,STA接收数据时可能受到较小的邻区干扰和环境底噪。分析时,假设环境底噪可忽略,则STA的SINR为关联AP到该STA的RSSI与邻区AP到该STA的RSSI之差。以图3.1中AP1与AP2为例,AP1发送数据给STA1-2,AP2发送数据给STA2-1,那么STA1-2在接收来自AP1的信号时,受到来自AP2的干扰,其SINR为AP1到STA1-2的RSSI与AP2到STA1-2的RSSI之差,STA2-1同理。AP发送数据选用的(MCS, NSS)与SINR相关。

c)当两个AP的RSSI处于[PD, ED]或[NAV, PD]时,传输中出现由于错过Preamble而导致的异步传输,与同步传输混合。那么在同步传输阶段,STA接收数据时受到的干扰只有环境底噪,在异步传输阶段,干扰来自邻区AP和环境底噪。

可见,AP的AMC所选用的(MCS, NSS)不仅与SINR相关,同时也与AP的传输方式相关。

1.1题目分析

问题 1:分析并预测AP发送机会(发送时长)

分析:

本题要求根据实测数据中的网络拓扑、业务流量、节点间的RSSI信息等,分析哪些因素对AP发送机会的影响,并通过训练模型预测AP发送数据的帧序列总时长(seq_time)。这里的“发送机会”可以通过AP发送数据时长来表征。由于WLAN中AP竞争信道资源,随机回退机制和信道条件(RSSI、CCA门限)对AP的发送机会影响很大。

初步思路:

  1. 数据预处理:提取影响发送机会的关键参数,如RSSI、信道门限、流量类型等。需要处理并清洗数据,尤其是RSSI信息。
  2. 特征分析:利用相关分析或统计方法,分析不同特征(RSSI、业务流量、信道门限等)对发送时长的影响,得出特征的重要性排序。
  3. 模型构建:可以选择机器学习算法(如随机森林、XGBoost)进行建模,训练模型预测AP的发送时长。由于AP数量不同,可能需要对同频AP数量进行分类建模。
  4. 模型验证:通过测试集对模型进行验证,评估预测精度。

1.2解题思路

1. 问题分析与特征选择

我们要根据WLAN的实际测量数据,分析影响AP发送机会的因素,并建立模型来预测AP的发送时长。首先,从数据集可以获得的主要特征包括:

  • RSSI (Received Signal Strength Indication):表示接收信号强度,是影响信道质量的重要因素。
  • 协议类型 (TCP/UDP):不同的协议可能影响数据包的发送时机和丢包率。
  • 包长度 (Packet Length):数据包的大小可能影响传输时长。
  • 竞争窗口 (Contention Window):AP竞争信道的时间与AP的发送机会直接相关。
  • NAV(Network Allocator Vector)门限:表示静默时长,可能对AP的信道使用机会产生影响。
  • 干扰情况 (Interference):AP之间的相互干扰影响各自的发送机会。

2. 发送机会的数学描述

AP的发送时长可以通过多个因素的函数来描述。假设AP的发送时长与信道空闲时间、AP间的干扰、竞争窗口、RSSI等因素相关,我们可以将AP发送时长建模为这些变量的函数。

令:

3. 竞争窗口的建模

AP 发送数据之前,需要通过竞争窗口机制进行信道争夺。竞争窗口的大小 CWi 是由AP 的竞争机制决定的,若碰撞发生,则CWi 逐渐增大。

竞争窗口可以描述为:

其中, k 是连续碰撞的次数, CWmin为竞争窗口的最小值。

AP 发送机会与竞争窗口大小成反比:

即,竞争窗口越大,发送机会越小。

4. 干扰的建模

AP 之间的干扰直接影响发送成功率。

假设AP 之间的干扰强度由AP i 和 AP j 的RSSI 之差决定。

干扰强度可以表示为:

当干扰强度较大时,AP 的发送时长将减少,因此:

5. 信道竞争时间的建模

信道竞争时间 Ti 是AP 为争夺信道所用的时间。这个时间由信道的空闲状态决定。当信道空闲时,AP 可以直接发送数据帧。

信道空闲的概率可以通过Poisson 分布建模:

其中,λ是信道繁忙的到达率, t 是时间。

信道空闲时间与AP 发送时长正相关:

6. 模型的构建

综合上述因素,AP i 的发送时长模型可以写为:

其中,α是一个待定系数,结合实际数据进行回归分析确定。

7. 数据处理与建模步骤

数据预处理

    • 处理缺失值,去除异常值。
    • 对连续型变量进行标准化处理(如RSSI、竞争窗口、干扰强度等)。
    • 对分类变量(如协议类型、包长度)进行one-hot编码。

特征选择

    • 使用相关性分析或特征重要性评估,确定对发送时长影响较大的特征。

模型训练

    • 使用多元线性回归、随机森林、XGBoost等机器学习算法对发送时长进行建模。
    • 使用训练数据集进行模型训练,调整参数使得模型预测效果最佳。

模型验证

    • 使用测试集对模型进行验证,评估模型的预测效果,常用指标包括均方误差 (MSE)、R平方等。

结果分析

    • 通过模型得到AP的发送机会(即发送时长),并通过特征重要性分析,得出影响发送时长的主要因素。

8. 模型评估方法

使用累积分布函数 (CDF) 来评估模型精度。计算预测误差,并绘制误差的CDF曲线,取误差为90%时的值作为模型的误差评估值。

1.3参考代码

# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.preprocessing import StandardScaler

# 读取数据(替换为你的文件路径)
data = pd.read_csv('/mnt/data/training_set_2ap_loc0_nav82.csv')

# 展示数据基本信息
print(data.info())
print(data.head())

# 选择相关的特征,去掉不必要的列
features = ['test_dur', 'pkt_len', 'pd', 'ed', 'nav', 'ap_from_ap_x_sum_ant_rssi', 
            'sta_from_ap_x_sum_ant_rssi', 'num_ampdu', 'mcs', 'nss', 'per']
target = 'seq_time'

# 去除空值
data = data[features + [target]].dropna()

# 进行特征标准化
scaler = StandardScaler()
X = data[features]
y = data[target]
X_scaled = scaler.fit_transform(X)

# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)

# 使用随机森林模型
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 预测
y_pred_train = model.predict(X_train)
y_pred_test = model.predict(X_test)

# 模型评估
train_mse = mean_squared_error(y_train, y_pred_train)
test_mse = mean_squared_error(y_test, y_pred_test)
train_r2 = r2_score(y_train, y_pred_train)
test_r2 = r2_score(y_test, y_pred_test)

print(f"训练集均方误差: {train_mse:.4f}, R2: {train_r2:.4f}")
print(f"测试集均方误差: {test_mse:.4f}, R2: {test_r2:.4f}")

# 可视化真实值与预测值的对比
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred_test, alpha=0.6, color='b')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=3)
plt.xlabel('真实发送时长')
plt.ylabel('预测发送时长')
plt.title('真实值与预测值对比')
plt.grid(True)
plt.show()

# 特征重要性
importances = model.feature_importances_
indices = np.argsort(importances)[::-1]
feature_names = np.array(features)

# 可视化特征重要性
plt.figure(figsize=(10, 6))
sns.barplot(x=importances[indices], y=feature_names[indices], palette="coolwarm")
plt.title('特征重要性')
plt.xlabel('重要性得分')
plt.ylabel('特征')
plt.grid(True)
plt.show()

# 信道空闲时间分析 (假设到达率 lambda)
lambda_rate = 0.5
t = np.linspace(0, 10, 100)
P_idle = np.exp(-lambda_rate * t)

# 可视化信道空闲概率
plt.figure(figsize=(8, 5))
plt.plot(t, P_idle, 'b-', label=f'Poisson分布 $\lambda={lambda_rate}$')
plt.fill_between(t, P_idle, alpha=0.3, color='blue')
plt.xlabel('时间')
plt.ylabel('空闲概率')
plt.title('信道空闲概率')
plt.grid(True)
plt.legend()
plt.show()

问题2

请根据附件提供的实测训练集中的测试基本信息,特别是节点间RSSI信息和门限信息,结合问题1中对AP发送机会的分析,对测试中AP发送数据选用最多次数的(MCS, NSS)进行建模,并通过测试集 test_set_2_2ap和test_set_2_3ap(仅提供模型输入信息)预测(MCS, NSS)。(AP在AMC算法下自适应调节发送速率,过程中可能采用多个(MCS, NSS),AMC算法收敛速度快,故其中选用最多次数的(MCS, NSS)反映了SINR水平)。

2.1题目分析

问题 2:预测发送速率使用最多的PHY Rate (MCS NSS)

分析:

本题要求根据节点间的RSSI、信道信息和发送机会分析,预测AP在传输数据时选择的PHY速率(MCS NSS)。WLAN采用自适应调制编码(AMC)算法,根据SINR动态调整PHY速率,影响发送速率的主要因素是RSSI和干扰情况。

初步思路:

  1. 特征提取:重点关注RSSI、信道条件、AP之间的干扰等影响SINR的参数。基于问题1中的发送时长结果,进一步挖掘影响PHY速率的特征。
  2. 模型选择:利用机器学习或回归模型,基于RSSI和干扰情况,预测AP选择的(MCS NSS)。

结果分析:通过对测试集进行预测,验证模型的准确性,评估模型对不同AP之间干扰的适应性。

2.2解题思路

1. 问题分析与特征选择

PHY速率的选择与多个因素相关,尤其是RSSI(接收信号强度)、信道门限、干扰强度等。在WLAN环境中,AP的PHY速率取决于信道质量和干扰条件。因此,主要特征包括:

  • RSSI:接收信号强度指示,是一个关键因素。较高的RSSI通常意味着可以使用更高的PHY速率。
  • 信道门限:包括包检测门限(PD)、能量检测门限(ED)和NAV门限,这些门限会影响信道的可用性和干扰情况。
  • 干扰强度:表示AP之间的相互干扰。较高的干扰会降低AP的PHY速率。

2. 调制编码方案 MCS 与 SINR 关系建模

PHY速率受信干噪比(SINR, Signal to Interference plus Noise Ratio)的影响,SINR反映了信号与干扰加噪声的比率。PHY速率通常随着SINR的增加而提升。

3. PHY速率的建模

PHY速率由MCS(调制和编码方案)和NSS(空间流数量)共同决定。我们需要分别建立MCS和NSS的预测模型,基于RSSI、SINR、干扰等特征预测它们的值。

MCS选择模型

  • MCS反映了调制方案和编码率,决定了PHY速率的精细程度。可以将MCS建模为RSSI和SINR的函数:
  • 假设MCS随SINR线性增长,MCS阶数与SINR成正比:

其中, k 和 b 是待定的回归系数。

此公式表明,随着SINR 的增加,AP 可以选择更高的MCS 阶数。

NSS 选择模型

NSS表示空间流的数量。NSS的选择受RSSI和干扰情况影响。

NSS与RSSI和干扰强度的非线性关系可以用Sigmoid函数建模:

这个公式表明,当RSSI较高且干扰较小时,AP可以使用更多的空间流。

4. 信道干扰与PHY 速率的关系

AP 之间的干扰会直接影响PHY 速率。

假设AP 之间的干扰强度与RSSI 的差值成正比:

5. PHY 速率的整体建模

综合以上分析,PHY 速率与RSSI、SINR 和干扰强度的关系可以总结为:

6. 模型验证

通过对模型的回归分析,可以验证预测MCS 和NSS 的效果。

利用均方误差(MSE)和R^2 系数对模型进行评估:

2.3参考代码

# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.preprocessing import StandardScaler

# 读取数据(请替换为你的数据路径)
data = pd.read_csv('/mnt/data/training_set_2ap_loc0_nav82.csv')

# 展示数据基本信息
print(data.info())
print(data.head())

# 选择相关的特征
features = ['rssi', 'pd', 'ed', 'nav', 'interference', 'protocol']  # 假设数据集中有这些特征
target_mcs = 'mcs'  # MCS作为目标变量
target_nss = 'nss'  # NSS作为目标变量

# 去除空值
data = data[features + [target_mcs, target_nss]].dropna()

# 进行特征标准化
scaler = StandardScaler()
X = data[features]
y_mcs = data[target_mcs]
y_nss = data[target_nss]
X_scaled = scaler.fit_transform(X)

# 分割训练集和测试集
X_train, X_test, y_train_mcs, y_test_mcs = train_test_split(X_scaled, y_mcs, test_size=0.3, random_state=42)
X_train_nss, X_test_nss, y_train_nss, y_test_nss = train_test_split(X_scaled, y_nss, test_size=0.3, random_state=42)

# 使用随机森林回归模型预测MCS
model_mcs = RandomForestRegressor(n_estimators=100, random_state=42)
model_mcs.fit(X_train, y_train_mcs)

# 预测MCS
y_pred_mcs_train = model_mcs.predict(X_train)
y_pred_mcs_test = model_mcs.predict(X_test)

# 使用随机森林回归模型预测NSS
model_nss = RandomForestRegressor(n_estimators=100, random_state=42)
model_nss.fit(X_train_nss, y_train_nss)

# 预测NSS
y_pred_nss_train = model_nss.predict(X_train_nss)
y_pred_nss_test = model_nss.predict(X_test_nss)

# 评估MCS模型
train_mse_mcs = mean_squared_error(y_train_mcs, y_pred_mcs_train)
test_mse_mcs = mean_squared_error(y_test_mcs, y_pred_mcs_test)
train_r2_mcs = r2_score(y_train_mcs, y_pred_mcs_train)
test_r2_mcs = r2_score(y_test_mcs, y_pred_mcs_test)

print(f"MCS模型 - 训练集均方误差: {train_mse_mcs:.4f}, R²: {train_r2_mcs:.4f}")
print(f"MCS模型 - 测试集均方误差: {test_mse_mcs:.4f}, R²: {test_r2_mcs:.4f}")

# 评估NSS模型
train_mse_nss = mean_squared_error(y_train_nss, y_pred_nss_train)
test_mse_nss = mean_squared_error(y_test_nss, y_pred_nss_test)
train_r2_nss = r2_score(y_train_nss, y_pred_nss_train)
test_r2_nss = r2_score(y_test_nss, y_pred_nss_test)

print(f"NSS模型 - 训练集均方误差: {train_mse_nss:.4f}, R²: {train_r2_nss:.4f}")
print(f"NSS模型 - 测试集均方误差: {test_mse_nss:.4f}, R²: {test_r2_nss:.4f}")

# MCS预测可视化
plt.figure(figsize=(10, 6))
plt.scatter(y_test_mcs, y_pred_mcs_test, alpha=0.6, color='g')
plt.plot([y_test_mcs.min(), y_test_mcs.max()], [y_test_mcs.min(), y_test_mcs.max()], 'r--', lw=3)
plt.xlabel('真实MCS值')
plt.ylabel('预测MCS值')
plt.title('MCS真实值与预测值对比')
plt.grid(True)
plt.show()

# NSS预测可视化
plt.figure(figsize=(10, 6))
plt.scatter(y_test_nss, y_pred_nss_test, alpha=0.6, color='b')
plt.plot([y_test_nss.min(), y_test_nss.max()], [y_test_nss.min(), y_test_nss.max()], 'r--', lw=3)
plt.xlabel('真实NSS值')
plt.ylabel('预测NSS值')
plt.title('NSS真实值与预测值对比')
plt.grid(True)
plt.show()

# 可视化MCS的特征重要性
importances_mcs = model_mcs.feature_importances_
indices_mcs = np.argsort(importances_mcs)[::-1]
feature_names = np.array(features)

plt.figure(figsize=(10, 6))
sns.barplot(x=importances_mcs[indices_mcs], y=feature_names[indices_mcs], palette="viridis")
plt.title('MCS特征重要性')
plt.xlabel('重要性得分')
plt.ylabel('特征')
plt.grid(True)
plt.show()

# 可视化NSS的特征重要性
importances_nss = model_nss.feature_importances_
indices_nss = np.argsort(importances_nss)[::-1]

plt.figure(figsize=(10, 6))
sns.barplot(x=importances_nss[indices_nss], y=feature_names[indices_nss], palette="viridis")
plt.title('NSS特征重要性')
plt.xlabel('重要性得分')
plt.ylabel('特征')
plt.grid(True)
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

撤销与恢复的奥秘:设计模式之备忘录模式详解

备忘录模式 🎯 备忘录模式(Memento Pattern)简介 备忘录模式 是一种行为型设计模式,用于保存对象的某一时刻状态,以便稍后可以恢复到该状态,而不破坏对象的封装性。备忘录模式将对象的状态封装在一个独立的…

技术周总结 09.16~09.22 周日(架构 C# 数据库)

文章目录 一、09.16 周一1.1)问题01: 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么?1.2)问题02: 软件质量属性中…

机器学习(1)sklearn的介绍和六个主要模块、估计器、模型持久化

文章目录 1.sklearn介绍2.sklearn的模块3.监督学习和无监督学习1. 监督学习 (Supervised Learning)例子 2. 无监督学习 (Unsupervised Learning)例子 4.估计器估计器的主要特性和方法包括:估计器的类型:示例:使用 scikit-learn 中的估计器 5.…

用最通俗易懂的语言和例子讲解三维点云

前言: 我整体的学习顺序是看的按B站那“唯一”的三维点云的视频学习的(翻了好久几乎没有第二个...)对于深度学习部分,由于本人并没有进行学习,所以没有深究。大多数内容都进行了自己的理解并找了很多网络的资源方便理解…

JavaScript可视化示例

JavaScript 可视化是指使用 JavaScript 编程语言来创建和操作图形、图表、动画等视觉元素的过程。以下是一些常见的 JavaScript 可视化库和工具,以及它们的主要特点: 1. D3.js 特点: D3.js(Data-Driven Documents)是一个非常强大…

MySQL高阶之存储过程

什么是存储过程? 存储过程可称为过程化SQL语言,是在普通SQL语句的基础上增加了编程语言的特点,把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中,通过逻辑判断、循环等操作实现复杂计算的程序语言。 换句话说,存储过程其实…

Linux常用命令 笔记

Linux常用指令 查看命令ls 列出指定路径下的文件和目录cd 切换目录绝对路径相对路径 pwd 查看当前路径的绝对路径touch 创建空文件cat 显示文件内容echo 显示内容 & 写入文件vim 文本编辑器打开文件编辑文件保存退出 mkdir 创建目录rm 删除文件&目录删除文件删除目录 定…

java重点学习-设计模式

十三 设计模式 工厂模式:spring中使用(目的是:解耦) 1.简单工厂 所有的产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则是一种编程习惯,可以借鉴这种编程思路 2.工厂方…

分布式锁优化之 防死锁 及 过期时间的原子性保证(优化之设置锁的过期时间)

文章目录 1、AlbumInfoApiController --》testLock()2、AlbumInfoServiceImpl --》testLock()3、问题:可能会释放其他服务器的锁。 在Redis中设置一个名为lock的键,值为111,并且只有在该键不存在时才设置(即获取锁)。同…

为解决bypy大文件上传报错—获取百度云文件直链并使用Aria2上传文件至服务器

问题描述 一方面组内的服务器的带宽比较小,另一方面使用bypy方式进行大文件(大于15G)上传时会报错(虽然有时可以成功上传,但是不稳定): 解决方式 总体思路: 获得云盘需要下载文件的直链复制直链到服务器中使用自带…

Selenium with Python学习笔记整理(网课+网站持续更新)

本篇是根据学习网站和网课结合自己做的学习笔记,后续会一边学习一边补齐和整理笔记 官方学习网站在这获取: https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱的博客文章来进行环境配置,具…

OpenCV运动分析和目标跟踪(3)计算图像序列的加权平均值函数accumulateWeighted()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 更新一个运行平均值。 该函数计算输入图像 src 和累积器 dst 的加权和,使得 dst 成为帧序列的运行平均值: dst ( x , y…

CANopen通讯协议笔记

CANopen通讯协议笔记 CANopen 通信对象编号CANopen整体框架网络管理(NMT)主要任务上线报文心跳报文过程数据对象(PDO)SDO服务数据对象对象字典概述 CANopen 通信对象编号 CANopen报文传输采用 CAN 标准帧格式。 这里的CAN-ID也叫…

ARM(Day 2)

一、作业 (1)汇编代码 .text.globl _start_start:mov r0, #0x5mov r1, #0x10比较r0,r1 是否相等 相等执行stop 不相等执行下一步比较( r0 > r1 ?)cmp r0, r1 比较实际在做减法 (YES NO )subhi r0, r0, r1 r0 > r1 …

浅谈Spring Cloud:OpenFeign

RestTemplate 方式调用存在的问题: String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class); 这是通过URL地址来访问的。但是: 代码可读性差,编程体验不统一参数复…

NCNN 源码(1)-模型加载-数据预处理-模型推理

参考 ncnn 第一个版本的代码。 0 整体流程 demo:squeezenet ncnn 自带的一个经典 demo:squeezenet 的代码: // 网络加载 ncnn::Net squeezenet; squeezenet.load_param("squeezenet_v1.1.param"); squeezenet.load_model("squeezenet_…

对象关系映射ORM

目录 ORM【重要】 1、 什么是ORM 2、 实体类 3、 ORM改造登录案例 ORM【重要】 1、 什么是ORM 目前使用JDBC完成了CRUD,但是现在是进行CRUD,增删改方法要设计很多参数,查询的方法需要设计集合才能返回. 在实际开发中,我们需要将零散的数据封装到对象处理. ORM (Object Rela…

在曲线图上最值和极值点位置进行适当标注

1、首先生成一组0-100的随机数,组内共有100个数据; yyrandi([0,100],[1,100]); 2、求这组数据的功率谱密度,并绘图; msize(yy,2); xdft fft(yy); % 计算功率谱密度 psd (1/m) * abs(xdft).^2; x1:m; loglog(x,psd,Linewid…

恶意windows程序

Lab07-01.exe分析(DOS攻击) 1.当计算机重启后,这个程序如何确保它继续运行(达到持久化驻留)? 创建Malservice服务实现持久化 先分析sub_401040桉函数 尝试获取名为HGL345互斥量句柄,如果不存在则直接结束流程;如果存…

【设计模式】万字详解:深入掌握五大基础行为模式

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 【设计模式】&#xf…