news 2026/10/9 10:40:05

小波神经网络预测太阳辐照强度:时频分析提升非平稳信号预测精度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小波神经网络预测太阳辐照强度:时频分析提升非平稳信号预测精度

简介:面向光伏发电、电力系统调度与机器学习应用领域的研究者和工程师,这是一份基于小波神经网络的太阳辐照强度预测方法论文PDF。针对太阳能间歇性、随机性带来的并网安全与负荷预测难题,内容系统展现了结合小波分析时频特性和神经网络非线性建模能力的预测思路,并专门按春、夏、秋、冬四个季节分别建模,筛选历史辐照、经纬度、海拔、天气类型、日照时数、温湿度、气压等关键因子,采用L-M训练实现分钟级预测且与传统BP网络做了对比验证。资源为单文件PDF,大小446KB,包含全文图表与公式,便于直接阅读引用。文中还讨论了细化天气分类对提高预测精度的作用,适合需要开展光伏功率预测、毕业论文设计或相关课题研究的读者参照学习。目前已有96人学习浏览。

1. 小波神经网络预测太阳辐照强度:把非平稳信号交给时频分析,比纯 BP 网络更稳

做光伏电站功率预测的人都有这个体会:太阳辐照强度曲线看着平滑,实际上藏着大量突变——云层掠过、天气转换、季节更替,都让数据呈现明显的非平稳特性。单纯用 BP 神经网络去拟合这种信号,非常容易陷入局部极小,而且隐含层节点数基本靠猜,训练速度也让人着急。这篇论文提出的方案,是把小波分析的时频局部化能力和神经网络的自学习非线性映射能力拼在一起,用 Mexican Hat 小波基替代 Sigmoid 激活函数,对宁夏吴忠第七光伏电站的辐照强度做 min 级预测,四类特殊天气下与 BP 网络对比,RMSE 优势明显。适合正在做光伏短期预测、辐照度建模,或者想给小波神经网络找实际落点的人读——它不是纯理论推导,有完整的特征筛选、结构寻优和训练参数记录,可以直接复现。

2. 输入变量怎么选:皮尔逊相关系数加曲线估计,特征筛选这步别省

2.1 为什么输入变量筛选直接决定预测精度上限

太阳辐照强度的影响因素很多:经纬度、海拔高度、天气类型、日照时数、温度、相对湿度、大气压强、空气密度……全塞进模型,输入层维度增大,样本需求量指数上升,训练时间变长,而且变量之间的耦合作用会引入冗余信息,反而干扰映射关系的学习。论文的做法是先做相关性分析,再做曲线估计,双重验证后才确定模型输入,不是凭经验拍脑袋选特征。

具体的数据样本划分方式值得注意:辐照强度与天气类型的相关性分析,取的是 2012 到 2014 年每天同一时间段(12:00)的数据,共 731 个样本;与日照时间、大气压强的相关性分析,取的是月平均数据,共 24 个样本;与温度、相对湿度的相关性分析,是在四个季节中随机筛选同一时刻的数据,共 173 个样本。样本量差异很大,但这恰恰反映了工程上的实际情况——气象数据不是均匀可得的,不同数据源的采样频率和积累时长本来就不同。做相关性分析时,样本数只要满足统计显著性要求即可,不必强求各变量都对齐到同一数量级。

2.2 皮尔逊相关系数的工程判断阈值

论文给出的相关系数判断标准是:r 绝对值大于 0.8 为高度相关,0.5 到 0.8 为中度相关,0.3 到 0.5 为低度相关,小于 0.3 为不相关。显著性检验以 p<0.05 为有相关性。这个标准是统计学教科书级别的常用划分,工程上可以直接套用,但要注意:相关系数只反映线性相关程度,非线性关系会被低估。所以论文才额外做了曲线估计图——把辐照强度与各因素的散点分布画出来,看是否存在明显的曲线规律。

分析结果是:辐照强度与日照时数是正强相关,与天气类型、大气压强、温度是中度正相关,与相对湿度是负中度相关。这个结果符合物理直觉——日照时数直接决定太阳辐射累积量,天气类型影响云层遮挡程度,温度与辐射强度有正向耦合,相对湿度高意味着云量多、水汽吸收增强,辐射自然下降。空气密度和相对湿度的含义类似,论文直接剔除了空气密度,只保留相对湿度,这就是特征冗余消除的典型操作。

2.3 用 Python 复现相关性分析的操作流程

论文用的是 SPSS 类工具做相关性分析和曲线估计,实际工程中我用 Python 也能完整复现。核心代码框架如下:

import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt # 假设 df 是包含辐照强度和候选特征的数据集 # 列名: ['irradiance', 'weather_type', 'sunshine_hours', # 'max_temp', 'min_temp', 'humidity', 'pressure'] def pearson_analysis(df, target='irradiance'): results = {} for col in df.columns: if col == target: continue # 计算皮尔逊相关系数和 p 值 r, p_value = stats.pearsonr(df[col].dropna(), df.loc[df[col].notna(), target]) # 按论文阈值判断相关强度 abs_r = abs(r) if abs_r > 0.8: strength = '高度相关' elif abs_r > 0.5: strength = '中度相关' elif abs_r > 0.3: strength = '低度相关' else: strength = '不相关' results[col] = { 'r': round(r, 4), 'p_value': round(p_value, 4), 'strength': strength, 'valid': p_value < 0.05 } return pd.DataFrame(results).T df = pd.read_csv('solar_data.csv') # 替换为你的数据文件 result_df = pearson_analysis(df) print(result_df)

这段代码做的事情是:遍历除目标变量外的所有特征列,逐列计算与辐照强度的皮尔逊相关系数和显著性 p 值,再按论文的阈值标准划分相关强度等级。有两个细节容易踩坑:一是要dropna处理缺失值,否则相关系数计算会因NaN直接返回nan;二是stats.pearsonr要求两组数据长度一致,所以这里用df.loc做了布尔索引对齐,而不是简单地对两列分别dropna——后者会导致配对错位,算出的相关系数是错的。

曲线估计的复现更简单,就是画散点图加拟合曲线:

# 辐照强度与日照时数的关系可视化 fig, ax = plt.subplots() x = df['sunshine_hours'].values y = df['irradiance'].values ax.scatter(x, y, alpha=0.5, s=10) # 线性拟合 coef = np.polyfit(x, y, 1) x_line = np.linspace(x.min(), x.max(), 100) y_line = np.polyval(coef, x_line) ax.plot(x_line, y_line, 'r-', label=f'linear fit (r={np.corrcoef(x, y)[0,1]:.3f})') ax.set_xlabel('日照时数 (h)') ax.set_ylabel('辐照强度 (W/m²)') ax.legend() plt.show()

散点图的意义在判断非线性关系上比相关系数更直观——如果散点呈现明显的曲线趋势,比如指数衰减或对数增长,即使线性相关系数不高,也应该保留这个特征作为模型输入。论文后续建模时把历史辐照强度、经度、纬度、海拔高度、天气类型、日照时数、最高温度、最低温度、相对湿度、大气压强共 10 个变量作为输入,可见筛选结论是:物理位置信息(经纬度海拔)和相关性强且统计显著的气象因素全部保留。

3. 小波神经网络结构设计:Mexican Hat 基函数、三层网络、23 个隐含层神经元

3.1 为什么激活函数换成小波基函数

常规 BP 网络的隐含层激活函数是 Sigmoid 或 Tanh,这种全局性激活函数的响应范围覆盖整个输入空间,对信号的局部突变捕捉能力弱。小波神经网络做的事情是把激活函数替换成小波基函数,每个隐含层节点对应一个小波函数,有自己的尺度因子 a 和平移因子 b,可以分别控制频率分辨率和时间位置。这样网络就具备了时频局部化特性——对平稳段用宽时窗获取整体趋势,对突变段用窄时窗锁定细节特征。

论文用的是 Mexican Hat 小波,也就是 Ricker 小波,数学形式是 [ \psi(x) = \frac{1}{\sqrt{2\pi}}(1-x^2)e^{-x^2/2} ],它在时域和频域都有较好的局部化特性。对比 Morlet 小波(复值小波,常用于连续小波变换的时频分析),Mexican Hat 是实值小波,形状关于零点对称,适合拟合实值的辐照强度曲线,而且不会引入复数运算,训练效率更高。选它做激活函数的另一个物理原因是它满足零均值条件,即满足恒等分辨条件中的容许性要求,这对信号重构的稳定性很重要。

3.2 网络结构输出公式与参数含义

论文的网络结构是三层:输入层、单隐含层、输出层。隐含层第 i 个节点的输出是小波基函数作用在加权输入上的结果,网络总输出由所有隐含层节点加权求和得到。核心公式是:

[ y(i) = \sum_{i=1}^{l} \omega_i \psi\left(\frac{\sum_{j} w_{ij} x_j - b_i}{a_i}\right) ]

这里的参数含义要说明白:( w_{ij} ) 是输入层第 j 个变量到隐含层第 i 个节点的连接权值,作用是输入特征的线性组合;( b_i ) 是第 i 个小波基函数的平移因子,控制小波在输入空间的位置;( a_i ) 是尺度因子,控制小波在输入空间的宽度——a 越大时窗越宽,频率分辨率越高;( \omega_i ) 是隐含层第 i 个节点到输出层的连接权值。整个模型要优化的参数就是这三组:输入层到隐含层的权值矩阵、隐含层到输出层的权值向量、以及每个小波基函数的 a 和 b。

3.3 隐含层神经元数的自动寻优策略

隐含层节点数(也就是小波基函数的个数)是网络结构的关键超参数。论文的方法是最小均方误差能量函数法,思路很务实:设定一个拟合误差阈值 R,从 1 个小波基函数开始逐步增加,每增加一个就训练网络、计算均方误差 E,直到小波基个数为 f 时 E<R,而继续加到 f+1 时误差反而变大,那 f 就是最优个数。这个策略的本质是结构风险最小化——在拟合精度和模型复杂度之间取平衡点。

最终确定隐含层神经元数为 23 个。这个数比一般 BP 网络手调的经验值(2n+1 或 n 的倍数,n 为输入维度 10,约 21)略大,因为小波基函数需要额外参数(尺度和平移)来拟合信号的局部特征,容量需求略高。实际操作时,不必完全复现自动寻优的完整循环,可以先按经验值设 21-25 区间,用交叉验证比较不同节点数下的验证集误差,选择误差最小的值。但要注意:小波神经网络对隐含层节点数比 BP 敏感得多,节点数过少时高频细节拟合不上,过多时容易把噪声也拟合进去,泛化能力下降。

3.4 L-M 训练算法与参数设置

训练算法选的是 Levenberg-Marquardt,这个选择对预测精度和收敛速度都有直接影响。L-M 方法结合了梯度下降的全局搜索特性(前期大步探索)和高斯-牛顿法的局部收敛特性(后期精确逼近),利用二阶导数信息更新权值,收敛速度比标准 BP 的梯度下降法(利用一阶导数)快很多,论文里用的具体参数设置如下:

% MATLAB 实现小波神经网络训练的核心参数配置 net.trainFcn = 'trainlm'; % L-M 训练算法 net.trainParam.epochs = 150; % 训练步长(最大迭代次数) net.trainParam.time = 50; % 训练时间上限(秒) net.trainParam.lr = 0.001; % 学习速率 net.trainParam.goal = 0.00001; % 误差目标值(终止条件阈值) net.trainParam.min_grad = 1e-6; % 最小梯度,梯度低于此值停止 net.trainParam.mu = 0.001; % L-M 算法的阻尼因子初始值 net.trainParam.mu_dec = 0.1; % 阻尼因子衰减系数 net.trainParam.mu_inc = 10; % 阻尼因子增长系数

每个参数的实际意义:

  • epochs=150:L-M 算法迭代一次的计算量远大于梯度下降(需要计算雅可比矩阵),150 次对这个规模的问题通常够用,如果数据量大或输入维度高可以适当放宽到 300
  • lr=0.001:L-M 算法的阻尼因子μ 会动态调节学习率,但初始学习率的设置仍然重要。0.001 偏保守,可以保证前期稳定,代价是收敛稍慢
  • goal=0.00001:这是训练终止的均方误差阈值,论文里训练的终止条件就是网络误差小于 0.00001,这个值对应归一化后的精度,不是原始辐照强度单位的误差
  • mu和mu_dec/mu_inc:L-M 的核心机制——误差下降时减小μ(更接近高斯-牛顿法),误差上升时增大μ(退化为梯度下降),保证全局收敛

归一化这一步论文明确说了用 MATLAB 处理,把所有数据映射到 [0,1] 区间。公式是 ( x_i'(t) = \frac{x_i(t) - x_{min}(t)}{x_{max}(t) - x_{min}(t)} ),x_min 和 x_max 是原始数据的最大值和最小值。这一步的目的是防止不同量纲的输入变量(比如大气压强上千、相对湿度几十、辐照强度几百)在网络映射中被大数值变量淹没,导致小数值变量对预测结果没有贡献。反归一化则是预测完成后,把 [0,1] 区间的输出值还原成真实的辐照强度单位。

4. 避坑指南:小波神经网络预测辐照强度的五个典型问题

4.1 天气类型编码不够细,雨天预测全线崩溃

现象:按气象部门的 33 种天气类型编码建模,雨天和小雨天预测结果严重偏高,偏差超过 40%。

原因:33 种天气类型没有覆盖雨转晴、晴转小雨这样的组合型天气,模型在训练阶段没见过这种模式,预测时只能按最近的晴雨类型映射,导致辐照强度被高估。论文明确指出雨转晴天这类天气类型没有定义,后来增加了 12 种组合型天气,共 45 种,基本涵盖常见出现的气象状态。

解决:把天气类型的编码粒度细化,组合天气单独编码,不要简单归为「雨」或「晴」。实测中天气类型越全面,预测精度越高。如果数据源里没有组合天气类标签,可以用小时级别的云量数据辅助判断,或者用最近 N 小时的天气变化序列(比如晴→多云→阴)作为特征输入。

4.2 归一化用的最大最小值没保存,反归一化后输出错位

现象:训练完模型做预测,输出的辐照强度数值离谱,出现负值或超过 2000 W/m²。

原因:训练时对数据做了归一化,预测时网络输出的是 [0,1] 区间的值,反归一化需要用训练集的 x_min 和 x_max 做逆变换。很多人直接调用了mapminmax的函数,但没有保存训练时的 x_min/x_max,预测时用了新数据的极值,导致还原后的数值完全错位。

解决:归一化的参数(最大最小值)保存在模型文件里,预测时用训练集统计的极值做反归一化,不要用预测时刻的实际极值。写成代码就是:

% 训练阶段 [X_norm, ps] = mapminmax(X_train, 0, 1); save('ps_params.mat', 'ps'); % 预测阶段 load('ps_params.mat'); Y_pred = net(X_norm_test); Y_real = mapminmax('reverse', Y_pred, ps);

ps结构体里存的就是归一化时计算的 xmin 和 xmax,反向变换时直接用。训练和预测各做各的归一化,不动ps,输出就永远对得上。

4.3 隐含层神经元数设小了,晴天预测曲线抖动剧烈

现象:隐含层神经元数设成 12 个,训练误差收敛到目标值,但预测出的晴天辐照曲线出现高频抖动,完全不像实际辐照强度曲线。

原因:12 个神经元对应 12 个小波基函数,虽然均方误差指标达标,但每个小波基函数被分配了过多的高频细节拟合任务,导致基函数之间发生「竞争」——个别基函数为了拟合一个局部突变,伸缩因子被压缩到极小,在预测区间内产生边界振荡。

解决:用论文的逐步检验法重新搜索最优节点数。具体做法是:从 12 开始按步长 2 递增,每个节点数训练 5 次(L-M 算法对初值敏感,取平均),记录验证集 RMSE。选取验证集误差最小的节点数。一般 20-25 区间内能找到合适值。论文最终在 23 层取得最优,可以参考这个数量级,但要结合自己的输入维度和数据量微调。

4.4 训练误差很好但预测误差大,可能是样本划分出了问题

现象:训练集 RMSE 非常小(比如 1%),但预测集 RMSE 很高(超过 30%)。

原因:典型的过拟合,或者说是样本划分没有做好时间对齐。辐照强度数据天然有周期性——春季和秋季的辐照强度相近,夏季和冬季差异大。如果随机打乱数据集做训练集/测试集划分,模型「见过」了测试集对应的时间段分布,测试集失去了独立验证的意义。论文采用按季节分别建 4 个模型的设计,就是为了规避这个问题。

解决:按时间顺序划分数据集,用前 70% 的历史数据训练,后 30% 做验证测试,不用随机采样。同时按季节分别建模,每个季节的数据独立训练自己的 WNN 模型,避免春、秋季数据在训练时相互干扰。

4.5 L-M 算法在小批量数据上的收敛悖论:训练时间越短越要警惕

现象:用 L-M 算法训练小规模数据集(几千条样本),训练时间只有几秒就收敛,但多次运行结果不稳定——每次收敛到不同的误差值。

原因:L-M 算法利用二阶导数信息,在小样本情况下损失函数表面本身就存在多个局部最优解。L-M 收敛速度快,恰恰是因为它容易在早期就锁定一个局部最优区域,全局探索不足。

解决:离线分析场景用 L-M 没问题,但论文的方法是重复训练多次取最优(逐步检验法本质上做了多次训练)。我一般建议:如果数据集小于 5000 条,先降低学习率到 0.0005,或者改用带动量项的梯度下降法跑一轮粗训练,把 L-M 的结果当作精调。另一种做法是初始化多个小波基函数的 a 和 b——用 K-Means 对输入数据做聚类,把聚类中心的距离作为初始平移因子,尺度因子取类内方差的倒数,这样初始结构更接近最优解,L-M 收敛也更稳定。

5. 复现评估与扩展验证:RMSE 对比要按天气类型分开算才说实话

5.1 RMSE 的定义和计算方式

论文用 RMSE(均方根误差)作为评价指标,公式是:

[ RMSE = \sqrt{\frac{1}{n}\sum_{t=1}^{n}(Y_{t}^{pred} - Y_{t}^{real})^2} ]

n 为预测点数量,Y_pred 和 Y_real 分别是预测值与实测值。论文用百分比表示 RMSE,说明是做了相对化处理——归一化到 [0,1] 区间后计算,再乘 100% 表示。这样可以消除不同季节辐照强度绝对值的差异,让春、夏、秋、冬四类模型的误差可比。自己做复现时要注意:对比结果时统一用同一种归一化方式,否则夏季辐照强度绝对值大,RMSE 天然比冬季高,这是物理特性导致的,不是模型差。

5.2 论文对比结果中的边界信息

论文给出 WNN 与 BP 神经网络在不同季节、不同天气类型下的 RMSE 对比。虽然论文没有列出全部数据表中的具体数值,但结论明确:WNN 在四种特殊天气类型下预测结果的 RMSE 都低于 BP 网络,尤其是晴天场景下 WNN 的精度优势最明显,而特殊天气类型(小雨、晴转多云、多云转小雪)下的预测也能与实测曲线保持趋势一致。这符合小波神经网络的理论特性——晴天辐照强度曲线平滑但存在细微波动,小波基函数的时频局部化特性可以精确捕捉这些细节;特殊天气的突变信号,BP 网络容易平滑过度,小波网络则有能力锁定突变区域。

5.3 复现时要建立「苹果对苹果」的对比协议

如果你要复现并与 BP 网络对比,有几个协议必须提前建立好:

import numpy as np from sklearn.metrics import mean_squared_error def rmse_percent(y_true, y_pred): """ 计算百分比形式的 RMSE(论文口径) 要求 y_true 和 y_pred 都已完成 [0,1] 归一化 """ rmse = np.sqrt(mean_squared_error(y_true, y_pred)) return rmse * 100 # 转为百分比 # 按天气类型分组计算 RMSE def evaluate_by_weather(df, weather_col='weather_type', pred_col='pred', true_col='real'): results = {} for weather in df[weather_col].unique(): subset = df[df[weather_col] == weather] rmse_val = np.sqrt(mean_squared_error( subset[true_col].values, subset[pred_col].values )) results[weather] = round(rmse_val * 100, 2) return results # 假设 df 包含 season, weather_type, pred, real 四列 # 按季节+天气类型交叉分组对比 season_weather_rmse = df.groupby(['season', 'weather_type']).apply( lambda g: np.sqrt(mean_squared_error(g['real'], g['pred'])) * 100 ).round(2) print(season_weather_rmse)

对比时遵循三条原则:同一组测试数据、同一种归一化方式、同一个误差计算口径。论文里 WNN 和 BP 用的是同样的数据源和预测时间点,所以对比是公平的。你自己做对比实验时,如果 BP 网络换了一种归一化方式(比如 mapminmax 的默认范围是 [-1,1]),RMSE 结果就不可比,必须统一处理。

5.4 预测结果的可视化诊断:曲线套在图比数字指标更管用

RMSE 是一个综合数字,但辐照强度预测最怕的是「整体误差小、局部突变全miss」。论文给出了四张不同季节、不同天气类型的预测值 vs 实测值曲线图,这些图暴露的信息远比 RMSE 丰富:春季小雨的曲线贴合度高但幅值偏低,夏季晴天的曲线在中蕐时段有小幅超前偏移,秋季晴转多云的曲线在云层遮挡时段有明显凹陷(这是随机性最强的部分),冬季多云转小雪的曲线整体偏低但形状正确。

建议你自己复现时,除了输出 RMSE 表格,强制画两张图:一是全天 5 分钟粒度的预测曲线和实测曲线叠加图,标注日出日落时间;二是预测误差的时间分布散点图(横轴为时间点,纵轴为预测值减实测值)。第二张图能快速定位误差集中的时段——如果误差集中在上午 10 点到下午 2 点,说明模型对剧烈辐射变化的敏感度不够;如果误差集中在日出和日落时段,说明模型对低辐照强度段的拟合还有偏差。

5.5 更进一步的扩展方案:按季节分模型之后还能做什么

论文按季节建立了 4 个预测模型,这是对数据特性最朴素的切分方式,但不是最优的。从工程扩展角度,有两个改良方向可以考虑:

第一个是输入里加入云量预测因子。论文用的是 45 种天气类型编码,本质上是把云干扰离散化处理,但同一种天气类型下的云量分布差异很大(晴空指数不是 binary 变量)。如果数据源里有卫星云图或地基云量观测数据,作为连续变量输入,模型对云层遮挡的响应会更平滑。

第二个是尝试 wavenet-like 的多尺度结构。把输入做成多分辨率数组——原始辐照强度序列本身叠加上经小波分解后的低频分量(趋势项)和高频分量(细节项),让网络在小波域直接学习辐射的时序特性,而不是从原始序列里隐式提取。这和论文的单隐层 WNN 相比,是多层结构组合,精度还能提升,但训练复杂度也上去了。

从那以后我每次接手辐照强度预测的项目,都会强制走一遍流程:先做特征相关性分析和曲线估计,再按季节分模型,训练完第一件事画误差时间分布图,确认没有局部时段系统性偏移后,才敢把模型交给调度那边用。这种「先看曲线再信数字」的习惯,帮我挡掉过不少看起来指标很漂亮、实际局部时段完全不可用的模型。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 10:40:02

Python大括号{}完全指南:字典、集合、f-string与推导式

开头&#xff1a;先认个门&#xff0c;Python 里的大括号其实是个“三面人”聊到 Python 里的大括号{}&#xff0c;很多人第一反应是“这不就是字典吗&#xff1f;”这话对了一半。真正把 Python 用熟了你会发现&#xff0c;大括号这货在同一门语言里至少干了三份工&#xff1a…

作者头像 李华
网站建设 2026/10/9 10:39:50

词法分析从理论到代码:正则表达式、DFA与Python实现全解析

简介&#xff1a;西南科技大学编译原理实验报告围绕“设计词法分析程序”这一主题&#xff0c;完整记录了从实验目的、实验设计到实验过程、程序实现的全部环节&#xff0c;适合正在学习编译原理、准备期末课程设计或需要完成类似词法分析实验的学生参考。报告以TEST语言为研究…

作者头像 李华
网站建设 2026/10/9 10:39:31

Docker数据卷全解析:三种挂载方式与容器数据持久化实战

如果你第一次用Docker跑MySQL&#xff0c;大概率干过这么一件事&#xff1a; docker run -d mysql &#xff0c;往里灌一批业务数据&#xff0c;然后某天想升级镜像、换端口&#xff0c;或者只是为了清环境&#xff0c;手滑执行了一行 docker rm &#xff0c;再启动新容器的…

作者头像 李华
网站建设 2026/10/9 10:38:53

SSM+JSP母婴商城毕设项目实战:从环境搭建到部署全攻略

简介&#xff1a;基于SSM和JSP搭建的母婴用品网站&#xff0c;是面向Java毕业设计、课程设计场景的完整项目包。系统涵盖前台购物与后台管理&#xff0c;涉及商品展示、购物车、订单处理等核心模块&#xff0c;适合需要快速完成毕业设计或巩固SSM框架基础的初学者&#xff0c;也…

作者头像 李华
网站建设 2026/10/9 10:38:36

MPLS静态LSP配置与抓包验证:手写标签链路的完全指南

简介&#xff1a;面向网络工程师和MPLS初学者的实验资料&#xff0c;通过静态LSP单向/双向隧道拓扑配置与抓包分析&#xff0c;帮助理解标签添加、交换、移除的完整过程&#xff0c;适用于网络实验、课程设计或认证备考场景。压缩包共11个文件&#xff0c;以工程文件&#xff0…

作者头像 李华
网站建设 2026/10/9 10:38:24

Python中常用功能的实现代码分享

前言 这是一篇「常用代码片段」合集&#xff1a;日常写 Python 时反复要写的那几件事——交换变量、去重、扁平化、统计词频、合并字典、按值排序、成对遍历——都有比「你自己手写循环」更短、更清楚的现成写法。这些写法几乎都来自标准库&#xff0c;不需要装任何东西。 但要…

作者头像 李华