【数据挖掘】时间序列预测-常用序列预测模型
常用序列预测模型
- (1)AR(自回归)模型
- (2)ARIMA模型
- (3)Prophet模型
- (4)LSTM模型
- (5)Transformer模型
- (6)模型评估
- 6.1 MAE(平均绝对误差)
- 6.2 MSE(均方误差)
- 6.3 RMSE(均方根误差)
(1)AR(自回归)模型
AR(自回归)模型,全称Autoregressive model,是统计上一种处理时间序列数据的方法。这个模型主要是利用同一变量的过去值(即滞后值)来预测该变量的未来值,并假设这些变量之间存在线性关系。
p阶自回归模型表示为AR§,数学表达式如下:
- c是常数
- φi 是自相关系数
- ε是时间t处的随机误差(或称为白噪声)
- xt−1,xt−2,…,xt−p 为滞后值
AR模型处理过程如下:
-
非平稳序列的识别
-
- 首先,通过观察时间序列图或进行统计测试(如ADF检验)来识别序列是否平稳。非平稳序列通常具有随时间变化的均值或方差。
-
差分法使序列平稳
-
- 对于非平稳序列,一个常见的平稳化方法是进行一阶差分。即,计算每个时刻的观测值与前一时刻观测值之间的差。差分后的序列通常具有更稳定的均值和方差。 假设原始非平稳序列为{Xt},则一阶差分序列为{ΔXt = Xt - Xt-1}。
-
应用AR(1)模型
-
- 在差分后的平稳序列上应用AR(1)模型。 在差分后的序列上,我们可以使用历史数据来估计模型的参数(c和φ),然后使用这些参数来预测未来的值。
-
预测与评估
-
- 使用估计的AR(1)模型对差分后的序列进行预测,然后将预测值转换回原始尺度(通过累加差分)。评估预测的准确性可以使用各种统计指标,如均方误差(MSE)或平均绝对误差(MAE)。
AR模型的优点是模型简单,可以用自身变数数列来进行预测。缺点是这种方法受到一定的限制,它要求数据必须具有自相关性,否则预测结果可能不准确。
举例:假设我们有一个非平稳的时间序列数据,例如某商品的销售量数据。这个序列可能存在某种趋势或季节性模式,使得它不是平稳的。
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.ar_model import AutoReg# 创建一个简单的非平稳时间序列数据(带有线性趋势)
np.random.seed(0)
n_samples = 100
time = np.arange(n_samples)
x = 0.5 * time + np.random.normal(size=n_samples)# 使用一阶差分使序列平稳
diff_x = np.diff(x)# 绘制原始非平稳序列和差分后的平稳序列
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(time, x, label='Original Non-Stationary Series')
plt.title('Original Non-Stationary Series')
plt.xlabel('Time')
plt.ylabel('Value')
plt.subplot(2, 1, 2)
plt.plot(time[:-1], diff_x, label='First Order Difference')
plt.title('First Order Difference (Stationary Series)')
plt.xlabel('Time')
plt.ylabel('Value')
plt.show()# 使用AutoReg来拟合AR(1)模型
model = AutoReg(diff_x, lags=1)
model_fit = model.fit()# 打印模型摘要
print(model_fit.summary())# 预测差分后的序列
forecast_steps = 5
forecast_index = np.arange(len(diff_x), len(diff_x) + forecast_steps)
forecast_values = model_fit.predict(start=len(diff_x), end=len(diff_x) + forecast_steps - 1)# 逆差分运算 + 加上最后一个原始值
cumulative_forecast = np.cumsum(forecast_values) + x[-1]# 绘制预测结果
plt.figure(figsize=(12, 6))
plt.plot(time, x, label='Original')
plt.plot(time[1:], np.cumsum(diff_x), label='Differenced & Cumulated')
plt.plot(forecast_index, cumulative_forecast, label='Forecast', linestyle='--')
plt.title('Forecast of the Stationarized Series')
plt.xlabel('Time')
plt.ylabel('Value')
plt.legend()
plt.show()
预测的效果看上去还是不错的。作为示例,这里没有提供真实走势的对比,也没有提供预测误差参数评估。
(2)ARIMA模型
ARIMA模型,全称为自回归整合移动平均模型(Autoregressive Integrated Moving Average Model)。ARIMA(p,d,q)中,AR代表“自回归”,p为自回归项数;MA代表“滑动平均”,q为滑动平均项数;d为使数据成为平稳序列所做的差分次数(阶数)。
ARIMA模型的核心思想:通过分析时间序列数据的历史信息,识别数据的内在规律和趋势,进而对未来进行预测。具体来说,ARIMA模型通过对数据的自回归部分(AR)、差分部分(I)和滑动平均部分(MA)进行建模,来捕捉数据的动态特性。
相比AR模型,ARIMA模型是一种更为复杂和灵活的时间序列预测方法,它结合了自回归、移动平均和差分三个部分,适用于各种类型的时间序列数据。而AR模型则是一种较为简单的方法,仅利用历史数据进行建模,适用于具有明显线性关系的平稳时间序列数据。
举例:本例是一个股票模拟的案例。
import numpy as np
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt# 模拟时间序列数据(股票价格)
np.random.seed(0) # 为了可复现性
dates = pd.date_range(start='2020-01-01', periods=100, freq='B') # 每周五的数据
prices = np.cumsum(np.random.randn(100) * 100 + 5) + 100 # 模拟的股票价格
data = pd.DataFrame(prices, index=dates, columns=['Close'])# ARIMA模型建模
# 1. 平稳性检验(这里省略,因为是模拟数据)
# 2. 确定模型的阶数(这里我们选择p=1, d=1, q=1作为示例)
p, d, q = 1, 1, 1# 3. 建模
model = ARIMA(data['Close'], order=(p, d, q))
model_fit = model.fit()# 4. 预测
n_steps = 10 # 预测未来10个时间点的值
forecast_steps = model_fit.get_forecast(steps=n_steps)
forecast_values = forecast_steps.predicted_mean
conf_int = forecast_steps.conf_int()# 创建一个新的日期范围用于绘制预测值
forecast_dates = pd.date_range(start=data.index[-1] + pd.DateOffset(days=1), periods=n_steps, freq='B')# 绘制原始数据
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(data.index, data['Close'], label='Original Data')
plt.title('Simulated Stock Price Data')
plt.xlabel('Date')
plt.ylabel('Close Price')# 绘制预测结果
plt.subplot(2, 1, 2)
plt.plot(data.index, data['Close'], label='Original Data')
plt.plot(forecast_dates, forecast_values, label='Forecast', color='red')# 绘制置信区间
plt.fill_between(forecast_dates, conf_int.iloc[:, 0], conf_int.iloc[:, 1], color='m', alpha=.15)# 添加图例、标题、轴标签等
plt.title('Simulated Stock Price Data - ARIMA Model Forecast')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.legend()
plt.show()
预测的效果看上去还是不错的。作为示例,这里没有提供真实走势的对比,也没有提供预测误差参数评估。
(3)Prophet模型
Prophet模型是由Meta公司开发并开源的一个时间序列预测算法。该模型适用于具有明显周期性和季节性特征的时间序列数据,能够准确地进行短期到中期的预测。
Prophet模型将时间序列分解为趋势(trend)、季节性(seasonality)、节假日效应(holidays)以及剩余部分(remainder)。每一部分都有特定的应用场景。
- 趋势(trend):这是时间序列的长期走势。我们可以用它来理解数据的基本走向,比如增长或减少的趋势。在商业分析中,趋势可以帮助预测未来的销售量、用户数等。
- 季节性(seasonality):这是在固定周期内重复出现的模式。例如,某些产品在一年中的某些月份销量会更高,这就是年度季节性;而一周中的某几天销量更高,则是周度季节性。季节性可以帮助我们了解业务的周期性波动,从而制定更有效的策略。
- 节假日效应(holidays):这是特定日期对数据的影响。例如,圣诞节、黑色星期五等特殊日子可能会导致销售量的显著增加。节假日效应可以帮助我们理解特殊事件对业务的影响。
- 剩余部分(remainder):这是模型无法解释的部分,通常包含了随机噪声和模型的误差。剩余部分可以帮助我们理解模型的拟合程度,以及是否存在未被模型捕捉到的模式。
下方是一个简单的示例
import numpy as np
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as pltnp.random.seed(0)
trend = np.linspace(100, 200, 120) # 线性趋势
seasonal = [40, 30, 24, 20] * 30 # 季度季节性
irregular = np.random.normal(0, 5, 120) # 随机不规则成分
data = trend + seasonal + irregular# 生成pandas序列
index = pd.date_range(start='2020-01-01', periods=120, freq='M')
data = pd.DataFrame({'y': data}, index=index)
data = data.reset_index()
data = data.rename(columns={'index': 'ds'})data.plot(x='ds',y='y', kind='line')
plt.title('Date vs Y Value')
plt.xlabel('Date')
plt.ylabel('Y Value')
plt.show()m = Prophet()
m.fit(data)# 创建未来的数据框架并预测
future = m.make_future_dataframe(periods=30)
forecast = m.predict(future)# 绘制预测组件图
fig1 = m.plot_components(forecast)
plt.show()# 绘制预测与原始数据的对比图
fig2 = m.plot(forecast)# 提取原始数据的时间序列和预测值
original_data = data.set_index('ds')
forecast_data = forecast[['ds', 'yhat']].set_index('ds')# 绘制原始数据
ax = fig2.gca()
original_data['y'].plot(ax=ax, color='blue', label='Actual')
# 绘制预测值
forecast_data['yhat'].plot(ax=ax, color='orange', label='Forecast', alpha=0.7)
# 添加图例
ax.legend()
# 显示图表
plt.show()
原始数据序列。
用Prophet模型将序列分解为trend和seasonality。
用Prophet模型预测序列未来30天走势,如黄色曲线所示。
(4)LSTM模型
LSTM 是一种特殊的循环神经网络(RNN),旨在解决传统 RNN 在处理长序列时遇到的梯度消失或梯度爆炸问题。LSTM 通过其内部的“门”结构(如输入门、遗忘门和输出门)来记住长期依赖关系,并有效地忽略不相关的信息。这种特性使得 LSTM 在处理时间序列数据时具有天然的优势,因为它可以捕捉数据中的长期和短期模式。
LSTM网络在时间序列预测中的主要优势包括:
- 捕捉长期依赖关系:传统的RNN在处理长序列时容易遇到梯度消失或梯度爆炸的问题,这限制了它们捕捉长期依赖关系的能力。而LSTM通过其内部的“门”结构(输入门、遗忘门和输出门)以及记忆单元,能够记住并有效地利用过去的重要信息,从而捕捉到时间序列数据中的长期依赖关系。
- 处理变长的输入序列:时间序列数据的一个特点是其长度通常是可变的。LSTM网络能够处理任意长度的输入序列,而不需要像传统神经网络那样需要固定大小的输入。这使得LSTM能够灵活地适应不同长度的时间序列数据。
- 减轻过拟合问题:LSTM网络中的多个参数和门结构使得它能够学习复杂的模式,同时也具有一定的正则化效果,从而减轻了过拟合问题。这意味着LSTM网络可以在较小的数据集上训练,而不需要大量的数据来避免过拟合。
- 适应非线性关系:时间序列数据中的变量之间通常存在非线性关系。LSTM网络作为一种深度学习模型,具有强大的非线性映射能力,能够处理这种复杂的非线性关系。
LSTM模型在金融领域,可以用于预测股票价格或货币汇率;在气象领域,它可以用于预测未来的天气模式;在交通领域,它可以用于预测交通流量或拥堵情况等。
(5)Transformer模型
Transformer模型是作为一种序列到序列(sequence-to-sequence)的模型提出的,主要用于自然语言处理(NLP)任务,如机器翻译。由于其强大的序列建模能力,Transformer模型也被广泛应用于各种序列预测任务中。
Transformer模型用于序列预测的优势如下:
- 长距离依赖建模:Transformer通过自注意力(self-attention)机制能够直接捕获输入序列中任意两个位置之间的依赖关系,这对于长序列预测非常有帮助。
- 并行计算:Transformer在编码器和解码器中都使用了自注意力机制,这使得模型可以并行处理整个输入序列,从而提高了计算效率。
- 灵活性:Transformer模型可以通过改变输入和输出的长度来适应不同的序列预测任务。此外,它还可以与各种其他模型或技术(如卷积神经网络、循环神经网络等)结合使用。
- 强大的表示能力:Transformer的多个自注意力层可以学习到输入序列的复杂表示,这对于提高预测准确性至关重要。
(6)模型评估
对于时间序列预测模型,常用的评估指标包括以下几种:
6.1 MAE(平均绝对误差)
MAE(Mean Absolute Error,平均绝对误差)是预测值与真实值之间的绝对差值的平均值。它给出了预测误差的平均大小,而不考虑误差的方向。
其中 yi 是第i个观测的真实值, yi~ 是对应的预测值,n是观测的数量。
MAE的优点是它对异常值不那么敏感,因为它使用的是绝对值。缺点是它对误差的惩罚不如MSE或RMSE严厉,因此在一些应用中可能无法充分反映预测误差的重要性。
6.2 MSE(均方误差)
MSE是预测值与真实值之间的差值的平方的平均值。它强调了大误差的重要性,因为误差被平方了,所以MSE对大的预测误差更为敏感。
MSE的优点是它对误差的大小有更强的敏感度,这使得它在模型优化时更偏向于减少大的误差。缺点是它对异常值的敏感度高,异常值的存在可能导致MSE值的大幅波动。
6.3 RMSE(均方根误差)
RMSE是MSE的平方根,它将MSE的单位恢复到了原始数据的单位,使得RMSE的值与数据本身在相同尺度上,更易于解释。
RMSE继承了MSE的所有特点,但它提供了与原始数据单位一致的误差度量,使得比较不同尺度的数据时更加直观。RMSE同样对大的预测误差敏感。
相关文章:
【数据挖掘】时间序列预测-常用序列预测模型
常用序列预测模型 (1)AR(自回归)模型(2)ARIMA模型(3)Prophet模型(4)LSTM模型(5)Transformer模型(6)模型评估6.…...
将你的本地项目发布到 GitHub (新手指南)
目录 第 1 步:在 GitHub 上创建新的仓库 (Repository)第 2 步:将本地仓库连接到 GitHub 远程仓库第 3 步:(可能需要) 重命名你的默认分支第 4 步:将本地代码推送到 GitHub第 5 步:在 GitHub 上检查结果后续工作流程 你…...
[论文梳理] 足式机器人规划控制流程 - 接触碰撞的控制 - 模型误差 - 自动驾驶车的安全合规(4个课堂讨论问题)
目录 问题 1:足式机器人运动规划 & 控制的典型流程 (pipline) 1.1 问题 1.2 目标 1.3 典型流程(Pipeline) 1.3.1 环境感知(Perception) 1.3.2 高层规划(High-Level Planning) 1.3.3 …...
初中级前端面试全攻略:自我介绍模板、项目讲解套路与常见问答
为了给面试官留下专业而亲切的第一印象,自我介绍要突出与岗位相关的技能和项目经验,同时以自己擅长的领域开放式结尾。通常可以按照以下思路组织自我介绍内容:首先简单介绍个人信息和工作年限,然后列出精通的前端技术栈…...
Android开发中svg转xml工具使用
要使用 svg2vector-cli 工具通过命令行将 SVG 文件转换为 Android 可用的 XML 矢量图标文件,可以单个文件转换或者整个文件夹批量转换,以下是详细的步骤和说明: 1. 准备工作 1.1 下载工具 首先需要下载 svg2vector-cli-1.0.0.jar 或更高版本…...
爬虫技术入门:基本原理、数据抓取与动态页面处理
引言 在当今数据驱动的时代,网络爬虫技术已成为获取和分析互联网数据的重要手段。无论是搜索引擎的网页收录、竞品数据分析,还是学术研究的语料收集,爬虫技术都发挥着关键作用。本文将深入浅出地讲解爬虫的基本原理,分析它能获取…...
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年4月27日第65弹
从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀6-8个和值,可以做到100-300注左右。 (1)定…...
服务器数据备份,服务器怎么备份数据呢?
企业数据量呈指数级增长,服务器数据备份已成为保障业务连续性、抵御勒索攻击与合规审查的核心技术环节。当前,服务器数据备份方案需兼顾数据完整性、恢复时效性、存储经济性三大核心诉求,其实现路径可根据技术架构、数据规模及容灾等级划分为…...
语音识别质量的跟踪
背景 这个项目是用来生成结构化的电子病历的。数据的来源是医生的录音。中间有一大堆的处理,语音识别,关键字匹配,结构化处理,病历编辑......。最多的时候给上百家医院服务。 语音识别质量的跟踪 一、0225医院的训练后的情况分…...
【数据挖掘】时间序列预测-时间序列的平稳性
时间序列的平稳性 (1)平稳性定义(2)平稳性处理方法2.1 差分法2.2 季节调整(Seasonal Adjustment)2.3 趋势移除(Detrending)2.4 对数转换(Logarithmic Transformation&…...
成都蒲江石象湖旅游攻略之石象湖郁金香最佳观赏时间
石象湖坐落于成都蒲江,拥有绝美的郁金香花海,吸引了很多的游客。如果大家想要观赏比较诱惑人的郁金香,那自然就应该知道正确的观赏时间。 心想郁金香合适的时间是每年的3月份到3月底。石象湖会还会举办盛大的郁金香节,在花园内有数…...
大模型、知识图谱和强化学习三者的结合,可以形成哪些研究方向?
大模型(Large Language Models, LLMs)、知识图谱(Knowledge Graph, KG)与强化学习(Reinforcement Learning, RL)作为人工智能领域的三大核心技术,其融合正推动着认知智能迈向新高度。本文结合2023-2025年的最新研究成果,系统梳理三者结合的七大科研方向及其技术路径。 …...
Linux文件操作
在C语言中,我们已经学习了文件相关的知识,那么在Linux中我们为什么还要再来学习文件呢?这是因为C语言中和Linux中,"文件"是2个不同的概念。所以我们要来学习Linux中对文件的操作。 在学习之前,我们先来回顾一…...
PostSwigger Web 安全学习:CSRF漏洞3
CSRF 漏洞学习网站:What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy CSRF Token 基本原理 CSRF Token 是服务端生成的唯一、随机且不可预测的字符串,用于验证客户端合法校验。 作用:防止攻击…...
【Node.js 】在Windows 下搭建适配 DPlayer 的轻量(简陋)级弹幕后端服务
一、引言 DPlayer官网:DPlayer 官方弹幕后端服务:DPlayer-node MoePlayer/DPlayer-node:使用 Docker for DPlayer Node.js 后端(https://github.com/DIYgod/DPlayer) 本来想直接使用官网提供的DPlayer-node直接搭建…...
淘宝tb.cn短链接生成
淘宝短链接简介 1. 一键在线生成淘宝短链接tb.cn,m.tb.cn等 2. 支持淘宝优惠券短链接等淘宝系的所有网址 3. 生成的淘宝短链接是官方的,安全稳定有保证 4.适合多种场景下使用,如:网站推广,短信推广 量大提供api接口࿰…...
在web应用后端接入内容审核——以腾讯云音频审核为例(Go语言示例)
腾讯云对象存储数据万象(Cloud Infinite,CI)为用户提供图片、视频、语音、文本等文件的内容安全智能审核服务,帮助用户有效识别涉黄、违法违规和广告审核,规避运营风险。本文以音频审核为例给出go语言示例代码与相应结…...
优化无头浏览器流量:使用Puppeteer进行高效数据抓取的成本降低策略
概述 使用 Puppeteer 进行数据抓取时,流量消耗是一个重要考虑因素。特别是在使用代理服务时,流量成本可能显著增加。为了优化流量使用,我们可以采用以下策略: 资源拦截:通过拦截不必要的资源请求来减少流量消耗。请求…...
【C语言】fprintf与perror对比,两种报错提示的方法
它们的主要区别在于 信息来源 和 自动包含的系统错误详情。 1. fprintf(stderr, "自定义错误信息\n"); 功能: 这是标准库中的一个通用格式化输出函数。你可以用它向任何文件流(包括 stdout 标准输出, stderr 标准错误, 或任何用 fopen 打开的文件&#x…...
C语言复习笔记--内存函数
在复习完字符函数和字符串函数之后,今天让我们复习一下内存函数吧.这一块的东西不太多,并且与之前的字符串函数有一些地方很相似,所以这里应该会比较轻松. memcpy使用和模拟实现 老规矩,先看函数原型 void * memcpy ( void * destination, const void * source, size_t num );…...
前端面试高频算法
前端面试高频算法 1 排序算法;1.1 如何分析一个排序算法1.1.1 执行效率3.1.2 内存消耗1.1.3 稳定性 1.2 冒泡排序(Bubble Sort)1.3 插入排序(Insertion Sort)1.4 选择排序(Selection Sort)1.5 归…...
云原生--核心组件-容器篇-4-认识Dockerfile文件(镜像创建的基础文件和指令介绍)
1、Dockerfile的定义与作用 定义: Dockerfile是一个文本文件,包含一系列Docker指令,用于自动化构建Docker镜像。Docker 在构建镜像时会按照Dockerfile中的指令逐步执行,每一行指令都会生成一个新的镜像层(layer&#x…...
13.组合模式:思考与解读
原文地址:组合模式:思考与解读 更多内容请关注:7.深入思考与解读设计模式 引言 在软件开发中,是否曾经遇到过这样一种情况:你有一个对象,它本身很简单,但是它包含了其他类似的对象。随着系统变得越来越复…...
Pycharm(十七)生成器
一、生成器介绍 1.1 概述 生成器指的是Generator对象,它不再像以往一样,一次性生成所有的数据,而是用一个,再生成一个,基于用户写的规则(条件)来生成数据,如果条件不成立ÿ…...
盛元广通实验材料管理系统-实验室管理系统-LIMS
一、引言 在当下科学研究及各类实验日益频繁的背景下,实验材料管理成为实验室高效运作的核心环节。从“人工低效”到“智能自动化”,盛元广通可覆盖实验材料的采购、存储、使用、追踪等全流程,从功能适配性、技术性能、成本效益、供应商服务…...
检查 NetCDF Fortran的版本
执行 nf-config --all命令后,它会输出一堆信息,大致像这样: This netCDF-Fortran version: 4.6.0 netCDF-Fortran installation dir: /usr/local/netcdf4 Fortran compiler: gfortran Fortran compiler flags: -g -O2 Fortran preprocesso…...
MySQL 存储引擎与服务体系深度解析
一、存储引擎核心概念 基本定义 存储引擎:MySQL服务的核心组件,负责数据的存储、检索和管理版本演进: MySQL 5.0/5.1 默认使用MyISAM引擎MySQL 5.5/5.6+ 默认采用InnoDB引擎关键特性 不同存储引擎采用不同的数据存储结构和处理机制直接影响表的CRUD操作性能和数据安全特性作…...
乐企数电发票分布式发票号码生成重复的问题修复思路分享
文章目录 1.前言2.解决思路2.1错误姿势2.2歪打正着2.3正确姿势 3.总结 1.前言 由于之前接了乐企数电开票,服务上线之后,使用的公司少没有啥问题,后面切换了两家日开票量大的公司上线之后,就发现发票号码生成重复了,后面…...
多级缓存架构设计与实践经验
多级缓存架构设计与实践经验 在互联网大厂Java求职者的面试中,经常会被问到关于多级缓存的架构设计和实践经验。本文通过一个故事场景来展示这些问题的实际解决方案。 第一轮提问 面试官:马架构,欢迎来到我们公司的面试现场。请问您对多级…...
LCD1602液晶显示屏详解(STM32)
目录 一、介绍 二、传感器原理 1.原理图编辑 2.接口说明 三、程序设计 main文件 lcd1602.h文件 lcd1602.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 LCD1602A字符型液晶显示模块是专门用于显示字母、数字元、符号等的点阵型液晶显示模块。分4位和8位数据…...
Golang | 集合求交
文章目录 bitmap求交集2个有序链表多个有序链表跳表 bitmap求交集 2个有序链表 多个有序链表 为什么非最大的所有都要往后移动呢?因为现在已经知道交集即使有,也最小都是这个目前最大的了,其他不是最大的不可能是交集,所有除了最大…...
手机充电进入“秒充“时代:泡面刚下锅,电量已满格
现代人的生活节奏越来越快,手机充电技术也在飞速发展。从最初的"充电一整晚"到如今的"秒充"时代,充电效率的提升正在悄然改变着我们的生活习惯。最新数据显示,目前最快的手机充电技术仅需4分30秒就能充满一部手机的电量&…...
网站字体文件过大 导致字体从默认变成指定字体的时间过长
1.选择字体中只用到的字符集较小的包 只用到了数字,所以使用了 xx-sans.ttf的版本(86kb) 2.转换ttf格式为woff2 转换后26kb 3.使用字体 // 定义字体 font-face {font-family: "myFont";src: url(/assets/fonts/myFont.woff2) format(woff2);font-weigh…...
WPF常用技巧汇总 - Part 2
WPF常用技巧汇总-CSDN博客 主要用于记录工作中发现的一些问题和常见的解决方法。 目录 WPF常用技巧汇总-CSDN博客 1. DataGrid Tooltip - Multiple 2. DataGrid Tooltip - Cell值和ToolTip值一样 3. DataGrid Tooltip - Cell值和ToolTip值不一样 4. DataGrid - Ctrl A /…...
C++中析构函数
析构函数 析构函数(Destructor)是类的一种特殊成员函数,用于在对象的生命周期结束时执行清理操作,他的主要作用是释放对象占用资源,例如动态分配的内存,文件句柄或网络连接等。 特点 名称与类名称相同 单…...
树莓派超全系列教程文档--(44)如何在树莓派上编译树莓派内核
如何在树莓派上编译树莓派内核 构建内核下载内核源代码 本地构建内核构建配置使用 LOCALVERSION 自定义内核版本构建安装内核 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 构建内核 操作系统预装的默认编译器和链接器被配置为构建在该操作系统…...
flask返回文件的同时返回其他参数
参考:flask实现上传文件与下载文件_flask 文件上传和下载-CSDN博客 在 Flask 中,返回文件的同时附加额外参数(如处理时间)可以通过 自定义 HTTP 响应头 或 返回 JSON 数据与文件结合 的方式实现。以下是具体方法和示例: 方法 1:通过 HTTP 响应头 附加参数(推荐) 将参…...
C++23 std::move_only_function:一种仅可移动的可调用包装器 (P0288R9)
文章目录 一、定义与基本概念1.1 定义1.2 基本概念 二、特点2.1 仅可移动性2.2 支持多种限定符2.3 无target_type和target访问器2.4 强前置条件 三、使用场景3.1 处理不可复制的可调用对象3.2 性能优化3.3 资源管理 四、与其他可调用包装器的对比4.1 与std::function的对比4.2 …...
Zookeeper实现分布式锁实战应用
Zookeeper实现分布式锁实战应用示例 1. 分布式锁概述 在分布式系统中,当多个进程或服务需要互斥地访问共享资源时,就需要分布式锁来协调。Zookeeper因其强一致性和临时节点特性,非常适合实现分布式锁。 2. Zookeeper实现分布式锁的核心原理…...
使用 Playwright 构建高效爬虫:原理、实战与最佳实践
随着网站前端技术日益复杂,传统的基于请求解析(如 requests、BeautifulSoup)的爬虫在处理 JavaScript 渲染的网站时变得力不从心。Playwright,作为微软推出的一款强大的自动化浏览器控制框架,不仅适用于自动化测试,也成为了处理现代网站爬取任务的利器。 本篇文章将带你…...
ComfyUI for Windwos与 Stable Diffusion WebUI 模型共享修复
#工作记录 虽然在安装ComfyUI for Windwos时已经配置过extra_model_paths.yaml 文件,但升级ComfyUI for Windwos到最新版本后发现原先的模型配置失效了,排查后发现,原来是 extra_model_paths.yaml 文件在新版本中被移动到了C盘目录下&#x…...
【RabbitMQ消息队列】详解(一)
初识RabbitMQ RabbitMQ 是一个开源的消息代理软件,也被称为消息队列中间件,它遵循 AMQP(高级消息队列协议),并且支持多种其他消息协议。 核心概念 生产者(Producer):创建消息并将其…...
【MySQL数据库入门到精通-08 约束】
文章目录 4、约束4.1 概述4.2 约束演示1. 根据需求,完成表的创建2. SQL数据库3. 结果 4.3 外键约束4.3.1 介绍1. 根据需求,完成表的创建2. SQL数据库3. 结果4.3.2 外键约束建立1. 语法2. SQL语句3. 现象4.3.3 外键删除更新行为1. 知识点2.SQL3.结果 4、约…...
C++笔记-模板进阶和继承(上)
一.模板进阶 1.1非模板类型参数 那之前学过的stack举例,在这之前我们如果要用N,就要用宏来定义,但是宏毕竟有局限性: 如果我要用到两个stack,一个要求10个空间,另一个要求100空间呢? 这时候…...
云计算赋能质检LIMS的价值 质检LIMS系统在云计算企业的创新应用
在云计算技术高速发展的背景下,实验室信息化管理正经历深刻变革。质检LIMS(实验室信息管理系统)作为实验室数字化转型的核心工具,通过与云计算深度融合,为企业提供了高弹性、高安全性的解决方案。本文将探讨质检LIMS在…...
2025系统架构师---数据抽象(Data Abstraction)与面向对象架构风格
引言 在软件系统复杂度与规模不断攀升的今天,如何设计出可扩展、易维护且能快速响应需求变化的架构,是每一位系统架构师面临的挑战。数据抽象(Data Abstraction)与面向对象架构风格(Object-Oriented Architectu…...
[python] 基于WatchDog库实现文件系统监控
Watchdog库是Python中一个用于监控文件系统变化的第三方库。它能够实时监测文件或目录的创建、修改、删除等操作,并在这些事件发生时触发相应的处理逻辑,因此也被称为文件看门狗。 Watchdog库的官方仓库见:watchdog,Watchdog库的官…...
缺省处理、容错处理
布尔判定 假:false 0 null undefined NaN 可选符.?和?? let obj {name: jim,data: {money: 0,age: 18,fn(a){return a}} }1、如果左侧的值为null或者undefined,则使用右侧值。需要使用"??" obj?.data?.a…...
Taro on Harmony :助力业务高效开发纯血鸿蒙应用
背景 纯血鸿蒙逐渐成为全球第三大操作系统,业界也掀起了适配鸿蒙原生的浪潮,用户迁移趋势明显,京东作为国民应用,为鸿蒙用户提供完整的购物体验至关重要。   去年 9 月,京东 AP…...
Java基础——排序算法
排序算法不管是考试、面试、还是日常开发中都是一个特别高频的点。下面对八种排序算法做简单的介绍。 1. 冒泡排序(Bubble Sort) 原理:相邻元素比较,每一轮将最大元素“冒泡”到末尾。 示例数组:[5, 3, 8, 1, 2] pub…...