Python天气预测毕业设计:爬虫、LSTM与可视化完整实战
简介基于Python的天气预测和可视化项目是一套面向计算机专业毕业设计、课程设计与期末大作业的高分完整方案评审成绩达99分代码完整可运行适合从零开始实战项目的学生。压缩包共38个文件包含Python源码脚本、Jupyter笔记、训练好的模型权重与标准化器、天气数据集、城市字典以及详细文档说明整体仅12.17MB目录结构清晰。源码脚本覆盖全国天气爬取、临沧历史天气爬取、数据探索、气温预测模型与图形界面笔记文件呈现完整的分析与建模流程可对照复现。项目整合随机森林、线性回归、决策树、长短期记忆网络和三层多层感知机等算法并预置模型文件与标准化器可直接运行验证还提供正式版和简版图形界面直观展示预测效果。目前已有99人学习下载对有毕业设计或课程设计需求、希望掌握数据挖掘全流程的学习者是兼具参考与实操价值的资料包。1. 基于 Python 的天气预测与可视化从爬虫到多模型对比的完整毕业设计样本做 Python 课程设计或者毕业设计最怕的不是不会写模型而是交上去的东西像个半成品代码能跑但讲不清原理有结果但没过程。天气预测加可视化这条路线之所以值得拆是因为它天然覆盖了数据采集、数据清洗、特征工程、多模型训练、结果可视化的完整链路。这个高分项目评审 99 分就是围绕临沧市 2020 年 1 月到 2023 年 12 月的历史天气数据展开包含爬虫脚本、LSTM、3 层 MLP、随机森林等多个模型文件以及两个版本的 GUI 界面。对正在找 Python 毕业设计源码、或者刚入门想练手完整项目实战的同学来说它最大的价值不是某个模型多先进而是每一步都有对应代码和可视化输出能照着复现也能在答辩时讲清楚。2. 数据从哪来爬虫脚本、CSV 数据集与数据探索天气预测的第一步不是建模是拿到一份干净、连续、时间跨度够长的数据。很多 python 爬虫入门教程只教你抓一个页面但这里要抓的是 48 个月的连续数据。项目里有两个爬虫脚本全国天气信息爬取.py 负责抓全国城市基础信息生成 city_dict_1.json 和 all_county_dict.json 这类城市字典临沧历史天气爬取.py 才是真正按日期抓历史天气。一个抓有哪些城市一个抓城市每天什么天气两条线合起来就是完整的数据管道。2.1 临沧历史天气爬取requests BeautifulSoup 的常规打法写历史天气爬虫的核心思路是确认数据源是接口还是静态页面然后循环日期发请求解析出日期、最高温、最低温、天气现象、风向风向逐行写入 CSV。requests 负责 HTTP 请求BeautifulSoup 负责从 HTML 表格里抠字段再用 time.sleep 控制频率避免短时间请求过多被拒绝。import requests import time import csv from bs4 import BeautifulSoup def crawl_history_weather(city_code: str, year: int) - list: 按年份抓取历史天气返回 [日期, 最高温, 最低温, 天气, 风向] 行列表。 city_code 来自 city_dict_1.json例如临沧对应的行政区划代码。 rows [] headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)} for month in range(1, 13): url fhttps://weather-site.example/history/{city_code}/{year}{month:02d} try: resp requests.get(url, headersheaders, timeout10) soup BeautifulSoup(resp.text, html.parser) # 不同天气站的表格结构不一样这里需要按实际 class 调整选择器 for item in soup.select(table tr): tds item.find_all(td) if len(tds) 4: rows.append([tds[0].text.strip(), tds[1].text.strip(), tds[2].text.strip(), tds[3].text.strip()]) except Exception as e: print(f抓取失败 {year}-{month:02d}: {e}) time.sleep(1.5) # 单次请求间隔拉长降低被反爬的概率 return rows data crawl_history_weather(city_code_from_json, 2021) with open(history_2021.csv, w, newline, encodingutf-8) as f: writer csv.writer(f) writer.writerow([date, max_temp, min_temp, weather]) writer.writerows(data)这段代码里city_code 不能随便填它对应城市字典里的行政区划代码代码错了请求会直接 404。time.sleep(1.5) 看起来简单但决定了爬虫能不能跑完三年数据而不被中途拦截。解析部分是最脆弱的环节天气站页面结构改版之后table 选择器可能选不到任何节点这时候先抓单页调试别直接全量重启。项目里的临沧历史天气爬取.py 最后产出的就是 Lingcang202001-202312.csv从文件名能看出覆盖 2020 年 1 月到 2023 年 12 月。全国天气信息爬取.py 则负责把城市字典落到 JSON 文件方便后续 GUI 里做城市下拉框。2.2 两个 CSV 数据集字段含义与时间跨度Lingcang202001-202312.csv 是主训练集时间跨度 48 个月按天记录。WeatherData.csv 是天气汇总数据更适合做横向可视化。拿到 CSV 的第一步永远是读进来确认结构import pandas as pd df pd.read_csv(Lingcang202001-202312.csv, encodingutf-8) print(df.shape) # 看行数和列数确认数据量 print(df.head()) # 看前5行确认字段名 print(df.dtypes) # 确认日期列是否为 object、温度列是否为数值 # 如果没有解析成日期类型先手动转换 df[date] pd.to_datetime(df[date]) df[max_temp] pd.to_numeric(df[max_temp], errorscoerce) df[min_temp] pd.to_numeric(df[min_temp], errorscoerce)encoding 用 utf-8 是保留爬虫写入时的编码避免 Windows 下默认 gbk 读取乱码。errorscoerce 会把解析不了的温度值变成 NaN这样缺测值不会中断后续计算而是留给数据探索阶段统一处理。温度列的数值类型转换这一步很关键pandas 读 CSV 时如果遇到空字符串整列可能变成 object 类型后面画图、计算均值全都会出错。两个数据集的定位不同Lingcang 的是单城市长序列适合做 LSTM 和 MLP 的时间序列输入WeatherData 是全国多城市快照适合验证模型在不同气候区的表现也是可视化部分比较有话题度的素材。2.3 数据探索.py 里值得保留的分析维度数据探索不是走流程它要回答三个问题温度序列有没有明显趋势、季节周期性多强、缺测值怎么处理。临沧属于低纬度高海拔城市年较差比北方小干湿季分明这些气候特征会直接体现在数据分布里也是答辩时解释特征选择和模型差异的素材。我建议在数据探索阶段至少保留三样输出每月平均最高温和最低温的统计表、年度温度曲线叠加图、缺失值统计与插值方案说明。print(df.isna().sum()) # 统计每列缺失值数量 # 最简单的缺测处理向前填充 线性插值 df[max_temp] df[max_temp].ffill().interpolate()ffill 解决连续空值interpolate 对中间缺口做线性插值两步下来温度序列基本可用了。这个处理方式不难但要在答辩文档里写清楚因为很多评审老师第一个问题就是缺测数据你怎么处理的。3. 模型全家桶LSTM、3 层 MLP 与机器学习基线怎么选这个项目的 models 目录里躺着七类文件LSTM 的 h5、MLP 的 h5、随机森林的 pkl、决策树的 pkl、线性回归的 pkl外加两个 scaler 的 joblib。一眼就能看出这是个深度模型 传统模型对比的项目结构。对比不是凑数而是为了回答一个问题气温预测到底需不需要 LSTM 这种复杂模型答案要靠误差数据说话而不是靠直觉。3.1 LSTM 气温预测时间步长与归一化是关键取舍LSTM 在单变量气温序列上最常用的套路是滑动窗口用过去 n 天的温度预测下一天。n 太小学不到季节性n 太大训练样本变少还容易把模型拖入过拟合。我一般会先用 7、14、30 分别跑一遍看验证集的平均绝对误差再定窗口。import numpy as np from sklearn.preprocessing import MinMaxScaler # series 是从 CSV 提取的最高温序列 scaler MinMaxScaler(feature_range(0, 1)) scaled scaler.fit_transform(series.reshape(-1, 1)).flatten() def make_sequences(data, lookback14): X, y [], [] for i in range(len(data) - lookback): X.append(data[i:i lookback]) y.append(data[i lookback]) return np.array(X).reshape(-1, lookback, 1), np.array(y) X, y make_sequences(scaled, lookback14) split int(len(X) * 0.8) # 按时间顺序切分不能随机打乱 X_train, X_test X[:split], X[split:] y_train, y_test y[:split], y[split:]归一化必须只用训练集 fit再用同一个 scaler 转换测试集。如果对全量数据 fit等于把测试集的信息泄漏进训练过程评估结果会偏乐观。按时间顺序切分是时间序列问题的红线随机打乱会让模型隐式学到未来数据。模型结构在 LSTM气温预测.py 里典型写法是一层 LSTM 接全连接输出from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense model Sequential([ LSTM(64, input_shape(lookback, 1), return_sequencesFalse), Dense(16, activationrelu), Dense(1) ]) model.compile(optimizeradam, lossmse, metrics[mae]) model.fit(X_train, y_train, epochs50, batch_size32, validation_split0.1, verbose1)LSTM 隐藏单元 64 在这个数据量级约 1400 条样本够用。return_sequencesFalse 表示只输出最后一个时间步对应单步预测任务。loss 用 mse 是回归默认但评估时我会额外看 mae因为 mae 直接对应摄氏度的平均偏差。训练完保存成 LSTM_temperature_prediction_model.h5。h5 格式的好处是模型结构和权重一起打包换环境加载时不需要重新定义网络结构。提示scaler 和模型是一对一绑定的。预测时用错 scaler 不会报错但输出的数值会完全偏离真实量级。3.2 三层 MLP把它当作 LSTM 的对比参照系3层MLP气温预测.py 是三个全连接层的结构输入层接收展平的时间窗口两个隐藏层做非线性映射输出层输出温度。它的定位不是替代 LSTM而是提供对比参照如果 MLP 和 LSTM 误差接近说明这个数据集里序列依赖并不强选 MLP 反而更划算训练快、部署轻、答辩也好讲。from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout # 输入从 (batch, lookback, 1) 展平为 (batch, lookback) X_flat X_train.reshape(-1, lookback) mlp_model Sequential([ Dense(128, activationrelu, input_shape(lookback,)), Dropout(0.2), Dense(64, activationrelu), Dense(1) ]) mlp_model.compile(optimizeradam, lossmse, metrics[mae]) mlp_model.fit(X_flat, y_train, epochs80, batch_size32, validation_split0.1, verbose0) mlp_model.save(models/MPL_temperature_prediction_model.h5)Dropout(0.2) 放在第一个隐藏层后面作用是随机丢弃 20% 的神经元输出降低过拟合风险。MLP 训练完保存为 MPL_temperature_prediction_model.h5文件名的 MPL 其实是 MLP 的笔误项目里保留了原文件叫法使用的时候心里清楚就行。每次跑完两个深度模型我都会把验证集 mae 记下来。如果 LSTM 和 MLP 的 mae 差在 0.2 度以内我倾向选择 MLP 部署因为在真实使用场景里半度的精度差异远不如加载速度和部署简单性重要。3.3 随机森林、决策树、线性回归传统模型的定位models 目录里的 random_forest_model.pkl、decision_tree_model.pkl、linear_regression_model.pkl 构成第三个阵营。传统模型的输入不是时间窗口而是手工特征月份、日期序号、昨天最高温、前 7 天平均最高温、年份等。随机森林对周期特征拟合能力强决策树适合可视化和解释线性回归则提供最朴素的可解释性基线。import joblib from sklearn.ensemble import RandomForestRegressor # 特征月份、年内第几天、昨天最高温、前7天最高温均值、年份 features df[[month, dayofyear, prev_max, week_mean_max, year]].values target df[max_temp].values rf RandomForestRegressor(n_estimators200, max_depth10, random_state42) rf.fit(features[:-30], target[:-30]) # 留出最后30天做评估 print(rf.feature_importances_) # 看哪个特征对气温影响最大 joblib.dump(rf, models/random_forest_model.pkl)n_estimators200 是随机森林的常规配置再往上加对精度提升有限但推理变慢max_depth10 防止树把训练集背下来。feature_importances_ 输出能直接拿来解释模型比如月份和前 7 天均值权重高说明季节性和近期气温是主要影响因素。三个传统模型和两个深度模型放在一起正好做一张对比表模型输入形式保存格式定位LSTM时间窗口序列h5序列建模主力3层MLP展平时间窗口h5深度模型参照随机森林手工特征pkl机器学习基线决策树手工特征pkl可解释性对比线性回归手工特征pkl最简单基线答辩的时候这张表比任何代码都直观。五个模型跑同一个预测任务四组误差列出来评审老师一眼就能看出你怎么理解不同模型的差异。3.4 模型文件与 scaler 的对应关系项目里有 mlp_scaler.joblib 和 lstm_scaler.joblib 两个归一化器这是最容易用错的地方。MLP 和三个机器学习模型共用 mlp_scalerLSTM 用自己的 lstm_scaler因为两套模型的输入尺度和窗口形状不同。import joblib # 加载随机森林和对应的 scaler rf joblib.load(models/random_forest_model.pkl) scaler joblib.load(models/mlp_scaler.joblib) # 构造一条输入特征先归一化再预测 new_feature [[7, 185, 20.5, 19.8, 2023]] # 月份、天数、昨日高温、周均高温、年份 scaled scaler.transform(new_feature) pred rf.predict(scaled)[0]joblib 和 pickle 的差别在于对大 numpy 数组的序列化效率更高sklearn 官方也推荐用 joblib 存模型。但 joblib 加载对库版本敏感跨大版本反序列化偶尔会失败这个问题放到第 5 章展开。4. 结果可视化与 GUI把模型输出变成能展示的东西项目里有两个 GUI 文件、一个气温可视化 Notebook、一组 img 目录下的截图共同组成展示层。对一个毕设来说模型再准展示不出来等于白做。这一章拆 GUI 和可视化的关键点。4.1 GUI 正式版与最简版两个版本差在哪GUI最简版.py 和 GUI正式版.py 的定位完全不同。最简版通常是一个窗口、一个按钮、一张图验证交互逻辑能通就行正式版则加上了城市选择、模型选择、预测结果显示、历史曲线和预测曲线叠加是答辩时主演示的版本。正式版大概率基于 PyQt5 搭界面配合 matplotlib 的 FigureCanvas 嵌入图表。最简版到正式版的演进路径恰好能对应课程设计先跑通再完善的过程。import sys import joblib import numpy as np from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QComboBox from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure class WeatherWindow(QMainWindow): def __init__(self): super().__init__() self.model joblib.load(models/random_forest_model.pkl) self.scaler joblib.load(models/mlp_scaler.joblib) self.canvas FigureCanvas(Figure(figsize(6, 3))) self.setCentralWidget(self.canvas) def update_plot(self, city_code): features self.build_features(city_code) # 构造最近14天特征 scaled self.scaler.transform([features]) pred self.model.predict(scaled)[0] pred self.scaler.inverse_transform([[0, pred]])[0, 1] # 反归一化 ax self.canvas.figure.add_subplot(111) ax.plot(self.history, label历史温度) ax.plot([len(self.history), len(self.history) 1], [self.history[-1], pred], ro--, label预测) ax.legend() self.canvas.draw()反归一化的写法是最容易翻车的细节。scaler 在训练时是 fit 在二维数组上的inverse_transform 需要二维输入直接传入 float 会报维度错误。这里用 [[0, pred]] 凑成二维再取第 1 列绕开了这个限制。如果你只需要做课程设计GUI最简版.py 就够了结构清晰代码量小容易在答辩时现场改。正式版更像一个完整产品适合毕业设计这种需要演示完整功能的场景。两个版本共用同一套模型文件说明项目在设计上保留了清晰的演进路线这也是评审给高分的一个原因。4.2 气温可视化.ipynb答辩时最出效果的几张图气温可视化.ipynb 里通常包含几类图全年温度曲线最高温和最低温两条线、月度箱线图看分布和异常值、测试集真实值与预测值对比图、误差分布直方图。四张图各回答一个问题趋势、离散、拟合度、稳定性。画时间序列曲线时有个高频坑——日期刻度过密。如果把日期转成字符串再画图48 个月的刻度会全部挤在横轴上标签叠成一团。这就是典型的python画图横坐标太密集问题解法是用 matplotlib 的日期定位器控制刻度import matplotlib.pyplot as plt import pandas as pd from matplotlib.dates import MonthLocator, DateFormatter df pd.read_csv(Lingcang202001-202312.csv, parse_dates[date]) plt.figure(figsize(12, 4)) plt.plot(df[date], df[max_temp], labelmax_temp, lw0.8) plt.plot(df[date], df[min_temp], labelmin_temp, lw0.8) ax plt.gca() ax.xaxis.set_major_locator(MonthLocator(interval3)) # 每3个月标一个刻度 ax.xaxis.set_major_formatter(DateFormatter(%Y-%m)) plt.legend() plt.title(Lingcang Max/Min Temperature 2020-2023) plt.show()MonthLocator(interval3) 让 48 个月的曲线只出现 16 个刻度标签既不丢信息又不糊图。DateFormatter(%Y-%m) 把刻度显示成年月格式比默认的日期格式短得多。img 目录里的截图基本都是这几个图表的运行结果也有 GUI 界面的运行效果。对照截图跑能快速确认自己的环境输出是否正常——如果你的图和截图长得完全不一样通常是数据没读对或者 scaler 用错了。4.3 key_predictions.py 的完整预测链路key_predictions.py 是项目的对外接口GUI 和 Notebook 都复用它。它做的事情就是读取数据、加载模型、返回预测结果。因为不涉及训练启动和响应都很快适合做成命令行演示。key_predictions 和 GUI 的关系可以理解成 key_predictions 是引擎GUI 只是方向盘。如果引擎没调好方向盘打再准也没用。所以演示时我习惯先跑一次 key_predictions.py确认模型和 scaler 都加载正常再打开 GUI。如果模型路径写死出了问题命令行会直接暴露 traceback省得在 GUI 里排查。python key_predictions.py这一步输出会打印出模型加载状态和一组示例预测值。看到预测数值在合理气温范围内再进入 GUI 阶段能省下大量定位时间。5. 避坑与排查从依赖安装到预测结果跑偏的五个典型问题这个项目代码本身不难难的是复现环境。下面五个问题是我判断最容易卡住新手的地方每条按现象、原因、解决三步来写。5.1 现象pip 安装依赖时反复报错跑 requirements.txt 安装依赖在 Windows 上一半的概率会卡在 tensorflow 或 PyQt5。这也是很多 python 入门者第一次装环境翻车的地方。原因tensorflow 对 Python 版本有硬性要求Python 版本和 tensorflow 版本对不上就会安装失败PyQt5 在部分高版本 Python 上没有预编译 wheel只能源码编译很容易失败。解决先确认解释器版本再装对应依赖。我在 Python 3.9 环境里通常用这套组合python --version pip install tensorflow2.10.0 pip install PyQt55.15.9 pip install numpy pandas scikit-learn joblib matplotlib requests beautifulsoup45.2 现象joblib 加载模型或 scaler 报 ModuleNotFoundError加载 pkl 或 joblib 文件时报错说找不到某个模块或者直接反序列化失败。原因joblib 保存的对象带着库和类的路径信息比如 sklearn.ensemble.RandomForestRegressor。如果 scikit-learn 大版本升级类的内部路径可能变化旧文件就加载不回来。解决严格按照 requirements.txt 的版本建环境别用最新版硬载旧模型。血泪经验跨大版本强载模型文件这种事省下的时间会在排错上加倍还回去。5.3 现象爬虫脚本抓到的数据全是 0 或空行跑临沧历史天气爬取.pyCSV 里日期正常但温度一列全是 0 或空字符串。原因天气网站的页面结构改版了原来的 BeautifulSoup 选择器选不到温度节点。免费天气站的 DOM 结构经常变这是爬虫类毕设最常见的翻车点。解决打开开发者工具重新定位节点先单页调试确认能解析出温度再放量跑。解析代码里加兜底判断字段为空就跳过该行别把空数据写进 CSV。5.4 现象LSTM 的预测曲线比真实值滞后一天测试集评估 LSTM预测曲线和真实曲线形状几乎一样但整体向右偏移一天。第一次遇到的人都以为模型训练坏了其实这不是玄学而是时间序列预测的经典现象。原因MSE 损失下模型为了最小化平方误差倾向于输出接近最近时刻的值而不是预测突变。突发降温这类事件本质上很难从历史序列里推出来。解决把时间步长从 7 增大到 14 或 30让模型看到更长趋势评估指标不要只看 mse增加一个绝对误差超过 3 度的天数占比更能反映真实业务效果。答辩时主动讲出这个现象反而是理解深度的体现。5.5 现象GUI 启动后白屏或闪退GUI正式版.py 双击运行窗口闪一下就没了或者界面出来但图表不刷新。原因闪退多半是 PyQt5 缺失或模型文件路径写死图表不刷新是 Canvas 没有调用 draw。解决先用命令行运行看 tracebackpython GUI正式版.py产生的报错信息会直接指向具体代码行。模型路径用相对路径并加存在性判断import os assert os.path.exists(models/random_forest_model.pkl), 模型文件缺失请检查路径这样一个断言能挡住大半的启动失败问题。注意以上五个问题里5.1 和 5.2 本质是环境问题5.3 到 5.5 才是代码问题。排错顺序永远是从环境到代码别反着来。6. 换城市复现把临沧数据换成目标城市的四个步骤项目默认用的是临沧数据但换城市复现并不难难的是换完之后模型还能不能站得住。我从第一次复现走通到现在固定流程是四步第一步替换城市代码。临沧历史天气爬取.py 里的城市代码改成目标城市对应的代码city_dict_1.json 或 all_county_dict.json 里能找到映射关系。如果不想走爬虫也可以直接从天气网站手动下载目标城市近三年的历史数据整理成同样的 CSV 列名结构跳过爬虫环节。第二步统一数据格式。目标城市的 CSV 里字段顺序和类型必须和 Lingcang202001-202312.csv 对齐。日期解析成 datetime温度转成数值类型缺失值用 ffill 加 interpolate 处理。这一步做不好后面 LSTM 的窗口切分直接出问题。第三步重新训练模型。换城市意味着气候特征变了临沧训练出的 LSTM 权重基本不能直接沿用。至少要重新跑 3层MLP气温预测.py 和机器学习气温预测模型.py对比验证集误差。如果误差比临沧高很多优先怀疑数据跨度不够或特征没对齐不要急着调模型结构。第四步整理对比结果。把新城市和临沧的验证集误差放到一张表格里例如临沧基线 mae 在 1.8 度左右、新城市跑到 2.3 度再加上两地气候差异的解读这个对比就是答辩里的加分论据说明你理解模型在不同数据分布下的表现边界。从那以后我每次拿到这类天气预测项目第一件事不是打开模型文件而是先跑一遍依赖安装和数据探索确认环境和数据都对再碰模型。这个顺序帮我避开了大量模型加载失败的假问题。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

PNN在变压器故障诊断中的小样本鲁棒应用

PNN在变压器故障诊断中的小样本鲁棒应用

简介:本资源是一套基于MATLAB实现的概率神经网络(PNN)用于变压器故障诊断的完整实践方案,面向电力系统自动化、智能运维及人工智能应用方向的本科生、研究生与工程技术人员。项目聚焦于利用PNN对变压器运行状态进行分类识别&#…

2026/10/13 1:28:07 阅读更多 →
嵌入式转机器人岗位:简历筛选逻辑与技术栈补全指南

嵌入式转机器人岗位:简历筛选逻辑与技术栈补全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:27:07 阅读更多 →
交通标志识别毕业设计:Python+CNN从数据到部署全流程

交通标志识别毕业设计:Python+CNN从数据到部署全流程

简介:这份资源是Python实现的基于CNN深度学习网络的交通标志识别项目源码,面向计算机相关专业的毕业设计、课程设计与期末大作业需求者,也适合希望入门卷积神经网络图像分类的开发者。项目已通过导师指导并获得高分评价,下载后无需…

2026/10/13 1:27:07 阅读更多 →

最新新闻

Win11升级后应用打不开?从升级机制到修复方案全解析

Win11升级后应用打不开?从升级机制到修复方案全解析

最近一段时间,我这边处理最多的求助不是软件本身崩溃,而是同一句话:升完 Win11 之后,XX 应用打不开了。有的是设备厂商的配置工具,点开就没反应;有的是行业软件启动后直接闪退;还有的是虚拟机一…

2026/10/13 2:17:27 阅读更多 →
航空航天大文件可靠上传:分片、续传、校验与协议选型实战

航空航天大文件可靠上传:分片、续传、校验与协议选型实战

卫星过顶窗口就那么十几分钟,链路一抖,传了一半的遥感数据全部清零重来,这种滋味我体会过不止一次。航空航天领域的大文件上传,核心关键词就是可靠性——文件动辄几十GB甚至TB级,链路又是高延迟、易抖动的无线环境&…

2026/10/13 2:17:27 阅读更多 →
图片资产CLI管理工具ImgBin:设计、实操与踩坑全记录

图片资产CLI管理工具ImgBin:设计、实操与踩坑全记录

“ImgBin”这个名字,是我在 HagiCode 项目里给图片资产管理工具起的称号,初看像是“图片回收站”,实际却是一个给团队管图片的 CLI 终端程序。HagiCode 是一个对图片依赖很重的项目:界面要出设计稿,文档要写教程&#…

2026/10/13 2:17:27 阅读更多 →
VS2017专用预编译GDAL库:接入配置与避坑指南

VS2017专用预编译GDAL库:接入配置与避坑指南

简介:面向VS2017开发者的预编译GDAL库,省去了在VS2017环境下手动编译GDAL的繁琐过程。包体共6305个文件,以obj目标文件、cpp/c源码、h头文件为主,也包含lib/dll库文件与配置脚本,压缩包约103.88MB。目前已有2108人学习…

2026/10/13 2:17:27 阅读更多 →
排序链表 LeetCode 148:自底向上归并排序 O(1) 空间实现

排序链表 LeetCode 148:自底向上归并排序 O(1) 空间实现

1. 题目剖析:排序链表到底在考什么LeetCode Hot 100里的第148题“排序链表”,表面看起来就是一句话:给一个无序链表排个序。但做过的人都知道,这道题真正难的不是“排序”本身,而是题目附带的两个硬性约束——时间复杂…

2026/10/13 2:17:27 阅读更多 →
MAS v3.12 免费激活 Windows 与 Office 快速教程:一条命令去掉未激活水印

MAS v3.12 免费激活 Windows 与 Office 快速教程:一条命令去掉未激活水印

MAS v3.12 免费激活 Windows 与 Office 快速教程:一条命令去掉未激活水印 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced tro…

2026/10/13 2:16:27 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →