当前位置: 首页 > news >正文

【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索

在这里插入图片描述
在这里插入图片描述

文章目录

    • 引言
    • 第一章:机器学习在时间序列分析中的应用
      • 1.1 数据预处理
        • 1.1.1 数据清洗
        • 1.1.2 数据归一化
        • 1.1.3 数据增强
      • 1.2 模型选择
        • 1.2.1 自回归模型
        • 1.2.2 移动平均模型
        • 1.2.3 长短期记忆网络
        • 1.2.4 卷积神经网络
      • 1.3 模型训练
        • 1.3.1 梯度下降
        • 1.3.2 随机梯度下降
        • 1.3.3 Adam优化器
      • 1.4 模型评估与性能优化
        • 1.4.1 模型评估指标
        • 1.4.2 超参数调优
        • 1.4.3 增加数据量
        • 1.4.4 模型集成
    • 第二章:时间序列分析的具体案例分析
      • 2.1 股票价格预测
        • 2.1.1 数据预处理
        • 2.1.2 模型选择与训练
        • 2.1.3 模型评估与优化
      • 2.2 气象预报
        • 2.2.1 数据预处理
        • 2.2.2 模型选择与训练
        • 2.2.3 模型评估与优化
    • 第三章:性能优化与前沿研究
      • 3.1 性能优化
        • 3.1.1 特征工程
        • 3.1.2 超参数调优
        • 3.1.3 模型集成
      • 3.2 前沿研究
        • 3.2.1 强化学习在时间序列分析中的应用
        • 3.2.2 联邦学习与隐私保护
        • 3.2.3 自监督学习在时间序列分析中的应用
    • 结语

引言

时间序列分析是统计学和机器学习中的一个重要领域,旨在对时间序列数据进行建模和预测。时间序列数据在金融市场预测、气象预报、经济指标分析和工业设备监测等领域广泛存在。随着深度学习技术的发展,机器学习在时间序列分析中的应用越来越广泛。本文将详细介绍机器学习在时间序列分析中的应用,包括数据预处理、模型选择、模型训练和性能优化。通过具体的案例分析,展示机器学习技术在时间序列分析中的实际应用,并提供相应的代码示例。
在这里插入图片描述

第一章:机器学习在时间序列分析中的应用

1.1 数据预处理

在时间序列分析应用中,数据预处理是机器学习模型成功的关键步骤。时间序列数据通常具有时间依赖性和噪声,需要进行清洗、归一化和数据增强等处理。

1.1.1 数据清洗

数据清洗包括处理缺失值、异常值和噪声等。

import pandas as pd
import numpy as np# 加载时间序列数据
data = pd.read_csv('timeseries_data.csv', index_col='date', parse_dates=True)# 处理缺失值
data.fillna(method='ffill', inplace=True)# 处理异常值
data = data[(np.abs(data - data.mean()) <= (3 * data.std()))]# 去除噪声
data['smoothed'] = data['value'].rolling(window=5).mean()
1.1.2 数据归一化

数据归一化可以消除不同时间序列之间的量纲差异,使模型更容易学习。

from sklearn.preprocessing import MinMaxScaler# 数据归一化
scaler = MinMaxScaler()
data_normalized = scaler.fit_transform(data[['value']])
data['normalized'] = data_normalized
1.1.3 数据增强

数据增强通过对训练数据进行随机变换,如时间平移、缩放等,增加数据的多样性,提高模型的泛化能力。

def add_noise(data, noise_level=0.1):noise = np.random.randn(len(data)) * noise_levelreturn data + noise# 数据增强
data['noisy'] = add_noise(data['normalized'])

1.2 模型选择

在时间序列分析中,常用的机器学习模型包括自回归模型(AR)、移动平均模型(MA)、长短期记忆网络(LSTM)和卷积神经网络(CNN)等。不同模型适用于不同的任务和数据特征,需要根据具体应用场景进行选择。

1.2.1 自回归模型

自回归模型(AR)适用于线性时间序列数据,通过历史数据的线性组合进行预测。

from statsmodels.tsa.ar_model import AutoReg# 训练自回归模型
model = AutoReg(data['value'], lags=5)
model_fit = model.fit()# 预测
predictions = model_fit.predict(start=len(data), end=len(data)+10)
print(predictions)
1.2.2 移动平均模型

移动平均模型(MA)适用于线性时间序列数据,通过历史预测误差的线性组合进行预测。

from statsmodels.tsa.arima_model import ARMA# 训练移动平均模型
model = ARMA(data['value'], order=(0, 5))
model_fit = model.fit(disp=False)# 预测
predictions = model_fit.predict(start=len(data), end=len(data)+10)
print(predictions)
1.2.3 长短期记忆网络

长短期记忆网络(LSTM)适用于处理序列数据,能够捕捉时间序列中的长距离依赖关系,适用于非线性时间序列数据。

from keras.models import Sequential
from keras.layers import LSTM, Dense# 数据准备
def create_dataset(data, look_back=1):X, Y = [], []for i in range(len(data)-look_back-1):a = data[i:(i+look_back), 0]X.append(a)Y.append(data[i + look_back, 0])return np.array(X), np.array(Y)look_back = 3
X, Y = create_dataset(data_normalized, look_back)# 数据分割
X_train, X_test = X[:int(len(X)*0.8)], X[int(len(X)*0.8):]
Y_train, Y_test = Y[:int(len(Y)*0.8)], Y[int(len(Y)*0.8):]# 构建LSTM模型
model = Sequential()
model.add(LSTM(50, input_shape=(look_back, 1)))
model.add(Dense(1))# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X_train, Y_train, epochs=100, batch_size=1, validation_data=(X_test, Y_test))
1.2.4 卷积神经网络

卷积神经网络(CNN)能够捕捉时间序列中的局部模式,适用于具有局部依赖关系的时间序列数据。

from keras.layers import Conv1D, MaxPooling1D, Flatten# 构建CNN模型
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=2, activation='relu', input_shape=(look_back, 1)))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(50, activation='relu'))
model.add(Dense(1))# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X_train, Y_train, epochs=100, batch_size=1, validation_data=(X_test, Y_test))

1.3 模型训练

模型训练是机器学习的核心步骤,通过优化算法最小化损失函数,调整模型参数,使模型在训练数据上表现良好。常见的优化算法包括梯度下降、随机梯度下降和Adam优化器等。

1.3.1 梯度下降

梯度下降通过计算损失函数对模型参数的导数,逐步调整参数,使损失函数最小化。

import numpy as np# 定义损失函数
def loss_function(y_true, y_pred):return np.mean((y_true - y_pred) ** 2)# 梯度下降优化
def gradient_descent(X, y, learning_rate=0.01, epochs=1000):m, n = X.shapetheta = np.zeros(n)for epoch in range(epochs):gradient = (1/m) * X.T.dot(X.dot(theta) - y)theta -= learning_rate * gradientreturn theta# 训练模型
theta = gradient_descent(X_train, Y_train)
1.3.2 随机梯度下降

随机梯度下降在每次迭代中使用一个样本进行参数更新,具有较快的收敛速度和更好的泛化能力。

def stochastic_gradient_descent(X, y, learning_rate=0.01, epochs=1000):m, n = X.shapetheta = np.zeros(n)for epoch in range(epochs):for i in range(m):gradient = X[i].dot(theta) - y[i]theta -= learning_rate * gradient * X[i]return theta# 训练模型
theta = stochastic_gradient_descent(X_train, Y_train)
1.3.3 Adam优化器

Adam优化器结合了动量和自适应学习率的优点,能够快速有效地优化模型参数。

from keras.optimizers import Adam# 编译模型
model.compile(optimizer=Adam(learning_rate=0.001), loss='mean_squared_error')# 训练模型
model.fit(X_train, Y_train, epochs=100, batch_size=1, validation_data=(X_test, Y_test))

1.4 模型评估与性能优化

模型评估是衡量模型在测试数据上的表现,通过计算模型的均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)等指标,评估模型的性能。性能优化包括调整超参数、增加数据量和模型集成等方法。

1.4.1 模型评估指标

常见的模型评估指标包括均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)等。

from sklearn.metrics import mean_squared_error, mean_absolute_error
import math# 预测
y_pred = model.predict(X_test)# 计算评估指标
mse = mean_squared_error(Y_test, y_pred)
rmse = math.sqrt(mse)
mae = mean_absolute_error(Y_test, y_pred)print(f'MSE: {mse}')
print(f'RMSE: {rmse}')
print(f'MAE: {mae}')
1.4.2 超参数调优

通过网格搜索(Grid Search)和随机搜索(Random Search)等方法,对模型的超参数进行调优,找到最优的参数组合。

from sklearn.model_selection import GridSearchCV# 定义超参数网格
param_grid = {'batch_size': [1, 16, 32],'epochs': [50, 100, 200],'optimizer': ['adam', 'sgd']
}# 网格搜索
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(X_train, Y_train)# 输出最优参数
best_params = grid_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = model.set_params(**best_params)
model.fit(X_train, Y_train, epochs=100, validation_data=(X_test, Y_test))
1.4.3 增加数据量

通过数据增强和采样技术,增加训练数据量,提高模型的泛化能力和预测性能。

from imblearn.over_sampling import SMOTE# 数据增强
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, Y_train)# 训练模型
model.fit(X_resampled, y_resampled, epochs=100, validation_data=(X_test, Y_test))
1.4.4 模型集成

通过模型集成的方法,将多个模型的预测结果进行组合,提高模型的稳定性和预测精度。常见的模型集成方法包括Bagging、Boosting和Stacking等。

from sklearn.ensemble import VotingRegressor# 构建模型集成
ensemble_model = VotingRegressor(estimators=[('ar', AutoReg(data['value'], lags=5)),('ma', ARMA(data['value'], order=(0, 5))),('lstm', model)
])# 训练集成模型
ensemble_model.fit(X_train, Y_train)# 预测与评估
y_pred = ensemble_model.predict(X_test)

第二章:时间序列分析的具体案例分析

2.1 股票价格预测

股票价格预测是时间序列分析中的经典问题,通过分析历史价格数据,预测未来的价格走势。以下是股票价格预测的具体案例分析。

2.1.1 数据预处理

首先,对股票价格数据进行预处理,包括数据清洗、归一化和数据增强。

# 加载股票价格数据
data = pd.read_csv('stock_prices.csv', index_col='date', parse_dates=True)# 数据清洗
data.fillna(method='ffill', inplace=True)# 数据归一化
scaler = MinMaxScaler()
data_normalized = scaler.fit_transform(data[['close']])
data['normalized'] = data_normalized# 数据增强
data['noisy'] = add_noise(data['normalized'])
2.1.2 模型选择与训练

选择合适的模型进行训练,这里以LSTM为例。

# 数据准备
look_back = 3
X, Y = create_dataset(data_normalized, look_back)# 数据分割
X_train, X_test = X[:int(len(X)*0.8)], X[int(len(X)*0.8):]
Y_train, Y_test = Y[:int(len(Y)*0.8)], Y[int(len(Y)*0.8):]# 构建LSTM模型
model = Sequential()
model.add(LSTM(50, input_shape=(look_back, 1)))
model.add(Dense(1))# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X_train, Y_train, epochs=100, batch_size=1, validation_data=(X_test, Y_test))
2.1.3 模型评估与优化

评估模型的性能,并进行超参数调优和数据增强。

# 评估模型
y_pred = model.predict(X_test)
mse = mean_squared_error(Y_test, y_pred)
rmse = math.sqrt(mse)
mae = mean_absolute_error(Y_test, y_pred)print(f'MSE: {mse}')
print(f'RMSE: {rmse}')
print(f'MAE: {mae}')# 超参数调优
param_grid = {'batch_size': [1, 16, 32],'epochs': [50, 100, 200],'optimizer': ['adam', 'sgd']
}
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(X_train, Y_train)
best_params = grid_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = model.set_params(**best_params)
model.fit(X_train, Y_train, epochs=100, validation_data=(X_test, Y_test))# 数据增强
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, Y_train)
model.fit(X_resampled, y_resampled, epochs=100, validation_data=(X_test, Y_test))

2.2 气象预报

气象预报通过分析历史气象数据,预测未来的天气变化,广泛应用于农业、交通和防灾减灾等领域。以下是气象预报的具体案例分析。

2.2.1 数据预处理
# 加载气象数据
data = pd.read_csv('weather_data.csv', index_col='date', parse_dates=True)# 数据清洗
data.fillna(method='ffill', inplace=True)# 数据归一化
scaler = MinMaxScaler()
data_normalized = scaler.fit_transform(data[['temperature']])
data['normalized'] = data_normalized# 数据增强
data['noisy'] = add_noise(data['normalized'])
2.2.2 模型选择与训练

选择合适的模型进行训练,这里以CNN为例。

# 数据准备
look_back = 3
X, Y = create_dataset(data_normalized, look_back)# 数据分割
X_train, X_test = X[:int(len(X)*0.8)], X[int(len(X)*0.8):]
Y_train, Y_test = Y[:int(len(Y)*0.8)], Y[int(len(Y)*0.8):]# 构建CNN模型
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=2, activation='relu', input_shape=(look_back, 1)))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(50, activation='relu'))
model.add(Dense(1))# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X_train, Y_train, epochs=100, batch_size=1, validation_data=(X_test, Y_test))
2.2.3 模型评估与优化

评估模型的性能,并进行超参数调优和数据增强。

# 评估模型
y_pred = model.predict(X_test)
mse = mean_squared_error(Y_test, y_pred)
rmse = math.sqrt(mse)
mae = mean_absolute_error(Y_test, y_pred)print(f'MSE: {mse}')
print(f'RMSE: {rmse}')
print(f'MAE: {mae}')# 超参数调优
param_grid = {'batch_size': [1, 16, 32],'epochs': [50, 100, 200],'optimizer': ['adam', 'sgd']
}
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(X_train, Y_train)
best_params = grid_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = model.set_params(**best_params)
model.fit(X_train, Y_train, epochs=100, validation_data=(X_test, Y_test))# 数据增强
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, Y_train)
model.fit(X_resampled, y_resampled, epochs=100, validation_data=(X_test, Y_test))

第三章:性能优化与前沿研究

3.1 性能优化

3.1.1 特征工程

通过特征选择、特征提取和特征构造,优化模型的输入,提高模型的性能。

from sklearn.feature_selection import SelectKBest, f_classif# 特征选择
selector = SelectKBest(score_func=f_classif, k=10)
X_selected = selector.fit_transform(X, y)
3.1.2 超参数调优

通过网格搜索和随机搜索,找到模型的最优超参数组合。

from sklearn.model_selection import RandomizedSearchCV# 随机搜索
param_dist = {'n_estimators': [50, 100, 150],'max_depth': [3, 5,7, 10],'min_samples_split': [2, 5, 10]
}
random_search = RandomizedSearchCV(estimator=RandomForestClassifier(), param_distributions=param_dist, n_iter=10, cv=5, scoring='accuracy')
random_search.fit(X_train, y_train)
best_params = random_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = RandomForestClassifier(**best_params)
model.fit(X_train, y_train)# 预测与评估
y_pred = model.predict(X_test)
3.1.3 模型集成

通过模型集成,提高模型的稳定性和预测精度。

from sklearn.ensemble import StackingRegressor# 构建模型集成
stacking_model = StackingRegressor(estimators=[('ar', AutoReg(data['value'], lags=5)),('ma', ARMA(data['value'], order=(0, 5))),('lstm', model)
])# 训练集成模型
stacking_model.fit(X_train, Y_train)# 预测与评估
y_pred = stacking_model.predict(X_test)

3.2 前沿研究

3.2.1 强化学习在时间序列分析中的应用

强化学习通过与环境的交互,不断优化策略,在动态系统和实时决策中具有广泛的应用前景。

3.2.2 联邦学习与隐私保护

联邦学习通过在不交换数据的情况下进行联合建模,保护用户数据隐私,提高时间序列分析系统的安全性和公平性。

3.2.3 自监督学习在时间序列分析中的应用

自监督学习通过生成伪标签进行训练,提高模型的表现,特别适用于无监督数据的大规模训练。

结语

机器学习作为时间序列分析领域的重要技术,已经在多个应用场景中取得了显著的成果。通过对数据的深入挖掘和模型的不断优化,机器学习技术将在时间序列分析中发挥更大的作用,推动预测与决策技术的发展。

以上是对机器学习在时间序列分析中的理论、算法与实践的全面介绍,希望能够为从事相关研究和应用的人员提供有益的参考。

相关文章:

【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在时间序列分析中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 自回归模型1.2.2 移动平均模型1.2.3 长短期记忆网络1.2.4 卷积神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 A…...

执行力不足是因为选择模糊

选择模糊&#xff1a;执行力不足的根源 选择模糊是指在面对多个选项时&#xff0c;缺乏明确的目标和方向。这种模糊感会导致犹豫不决&#xff0c;进而影响我们的执行力。 选择模糊的表现&#xff1a; 目标不明确&#xff0c;不知道应该做什么。优先级混乱&#xff0c;不清楚…...

力扣 225题 用队列实现栈 记录

题目描述 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素…...

中英双语介绍意大利(Italy):有哪些著名景点、出名品牌?

中文版 意大利概述 意大利&#xff0c;位于欧洲南部&#xff0c;是一个以其悠久的历史、丰富的文化遗产和美丽的自然风光而闻名的国家。意大利不仅是文艺复兴的发源地&#xff0c;还拥有众多世界著名的城市、景点和品牌。 著名城市 罗马&#xff08;Rome&#xff09;&#x…...

Python【打包exe文件两步到位】

Python打包Exe 安装 pyinstaller&#xff08;pip install pyinstaller&#xff09; 执行打包命令&#xff08;pyinstaller demo.py&#xff09; 打完包会生成 dist 文件夹&#xff0c;如下如...

基于模型预测控制的PMSM系统速度环控制理论推导及仿真搭建

模型预测控制&#xff08;Model Predictive Control, MPC&#xff09;是一种先进的控制策略&#xff0c;广泛应用于工业控制中。它可以看作是一种最优控制方法&#xff0c;利用对象的动态模型来预测其状态的未来行为&#xff0c;并根据每个采样时间点特定性能目标函数的优化来确…...

【PYG】GNN和全连接层(FC)分别在不同的类中,使用反向传播联合训练,实现端到端的训练过程

文章目录 基本步骤GNN和全连接层&#xff08;FC&#xff09;联合训练1. 定义GNN模型类2. 定义FC模型类3. 训练循环中的联合优化解释完整代码 GNN和全连接层&#xff08;FC&#xff09;分别使用不同的优化器和学习率分别进行参数更新解释 基本步骤 要从GNN&#xff08;图神经网…...

vue3使用方式汇总

1、引入iconfont阿里图库图标&#xff1a; 1.1 进入阿里图标网站&#xff1a; iconfont阿里&#xff1a;https://www.iconfont.cn/ 1.2 添加图标&#xff1a; 1.3 下载代码&#xff1a; 1.4 在vue3中配置代码&#xff1a; 将其代码复制到src/assets/fonts/目录下&#xff1…...

Turborepo简易教程

参考官网&#xff1a;https://turbo.build/repo/docs 开始 安装全新的项目 pnpm dlx create-turbolatest测试应用包含&#xff1a; 两个可部署的应用三个共享库 运行&#xff1a; pnpm install pnpm dev会启动两个应用web(http://localhost:3000/)、docs(http://localhost…...

初中物理知识点总结(人教版)

初中物理知识点大全 声现象知识归纳 1 .声音的发生&#xff1a;由物体的振动而产生。振动停止&#xff0c;发声也停止。 2.声音的传播&#xff1a;声音靠介质传播。真空不能传声。通常我们听到的声音是靠空气传来的。 3.声速&#xff1a;在空气中传播速度是&#xff1a;340…...

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体&#xff08;Agent&#xff09;构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…...

【开源项目】LocalSend 局域网文件传输工具

【开源项目】LocalSend 局域网文件传输工具 一个免费、开源、跨平台的局域网传输工具 LocalSend 简介 LocalSend 是一个免费的开源跨平台的应用程序&#xff0c;允许用户在不需要互联网连接的情况下&#xff0c;通过本地网络安全地与附近设备共享文件和消息。 项目地址&…...

ARM/Linux嵌入式面经(十一):地平线嵌入式实习

地平线嵌入式实习面经 1.自我介绍 等着,在给大哥们准备了。 2.spi与iic协议可以连接多个设备吗?最多多少个?通讯时序。 这是几个问题,在回答的时候。不要一问就开口,花几秒钟沉吟思考整理一下自己的思路。 这个问题问了几个点?每个点的回答步骤。 是我的话,我会采用以…...

基于Redis的分布式锁

分布式场景下并发安全问题的引发 前面通过加锁解决了单机状态下一人一单的问题&#xff0c;但是当出现了分布式&#xff0c;前面的加锁形式不再适用 &#xff0c;每个jvm有一个自己的锁监视器&#xff0c;只能被内部线程获取&#xff0c;其他jvm无法使用&#xff0c;那么多台j…...

如何将 Apifox 的自动化测试与 Jenkins 集成?

CI/CD &#xff08;持续集成/持续交付&#xff09; 在 API 测试 中的主要目的是为了自动化 API 的验证流程&#xff0c;确保 API 发布到生产环境前的可用性。通过持续集成&#xff0c;我们可以在 API 定义变更时自动执行功能测试&#xff0c;以及时发现潜在问题。 Apifox 支持…...

【FFmpeg】av_write_frame函数

目录 1.av_write_frame1.1 写入pkt&#xff08;write_packets_common&#xff09;1.1.1 检查pkt的信息&#xff08;check_packet&#xff09;1.1.2 准备输入的pkt&#xff08;prepare_input_packet&#xff09;1.1.3 检查码流&#xff08;check_bitstream&#xff09;1.1.4 写入…...

【算法专题】双指针算法

1. 移动零 题目分析 对于这类数组分块的问题&#xff0c;我们应该首先想到用双指针的思路来进行处理&#xff0c;因为数组可以通过下标进行访问&#xff0c;所以说我们不用真的定义指针&#xff0c;用下标即可。比如本题就要求将数组划分为零区域和非零区域&#xff0c;我们不…...

Lock与ReentrantLock

在 Java 中&#xff0c;Lock 接口和 ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例&#xff1a; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExample {pr…...

ARM/Linux嵌入式面经(十三):紫光同芯嵌入式

static关键字 static关键字一文搞懂这个知识点,真的是喜欢考!!! stm32启动时如何配置栈的地址 在STM32启动时配置栈的地址是一个关键步骤,这通常是在启动文件(如startup_stm32fxxx.s,其中xxx代表具体的STM32型号)中完成的。 面试者回答: STM32启动时配置栈的地址主…...

名企面试必问30题(二十四)—— 说说你空窗期做了什么?

回答示例一 在空窗期这段时间&#xff0c;我主要进行了两方面的活动。 一方面&#xff0c;我持续提升自己的专业技能。我系统地学习了最新的软件测试理论和方法&#xff0c;深入研究了自动化测试工具和框架&#xff0c;例如 Selenium、Appium 等&#xff0c;并通过在线课程和实…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...