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

时间序列预测(十九)——卷积神经网络(CNN)在时间序列中的应用

有关CNN的介绍可以参考以下博文:

卷积神经网络(CNN)详细介绍及其原理详解-CSDN博客

三万字硬核详解:卷积神经网络CNN(原理详解 + 项目实战 + 经验分享)_cnn卷积神经网络-CSDN博客

CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络-CSDN博客

尽管 CNN 最初是为图像数据设计的,但它的特性(如局部感受野和权重共享)在捕捉时间序列数据中的局部模式和相邻关系时也非常有效。下面是 CNN 在时间序列分析中的应用详细介绍。

一、 为什么使用 CNN 处理时间序列?

CNN 的特点适合时间序列分析,主要原因有以下几点:

  • 局部特征提取:卷积核(filter)能够自动学习局部时间模式,如周期性波动或突变点,适合处理短期依赖的特征。
  • 权重共享:在时间序列中,相同的模式可能出现在不同的时间步。权重共享能够帮助 CNN 学习具有一致性的特征,同时减少参数数量。
  • 有效的降维:通过池化(Pooling)操作,CNN 可以减少数据量并提取关键特征,帮助防止过拟合,尤其在数据规模有限时。

二、 CNN 在时间序列中的架构设计

CNN 在时间序列中的架构设计通常包含卷积层、池化层、全连接层,以及可能的输出层。以下是一些关键组件的详细说明:

1 卷积层

在时间序列中,卷积操作将一个一维卷积核与输入序列进行卷积,提取相邻时间点的特征。卷积层的关键设计要素包括:

  • 卷积核大小:卷积核的长度决定了 CNN 感受的时间窗口的长度。较小的卷积核可以捕捉到短期特征,而较大的卷积核可以捕捉到长时依赖的特征。
  • 步长:卷积步长控制每次卷积滑动的时间步大小,较大的步长可以减少计算量,同时加速模型的训练过程。

例如:

输入序列:  [x1, x2, x3, x4, x5, x6, x7, x8]
卷积核:    [w1, w2, w3]
输出:      [y1, y2, y3, y4, y5]  (使用步长=1,卷积核大小=3)

对于每一个输出元素y_{i},卷积核会与输入序列的某一部分(窗口)进行逐元素相乘,并将乘积结果求和y_{i} =w_{1}\times x_{i} +w_{2}\times x_{i+1} +w_{3}\times x_{i+2}

2 池化层

池化层用于在卷积后进一步降维,并保留主要特征,从而防止过拟合。常见的池化方式有最大池化(Max Pooling)和平均池化(Average Pooling):

  • 最大池化:在一个窗口内提取最大值,保留最显著的特征。
  • 平均池化:在一个窗口内取平均值,更适合平滑的特征提取。

例如:

输入序列:  [x1, x2, x3, x4, x5, x6]
最大池化(步长=2): [max(x1,x2), max(x3,x4), max(x5,x6)] -> [x2, x4, x6]

3 扩展卷积(Dilated Convolution)

扩展卷积是一种特殊的卷积,允许在卷积操作时加入空洞,从而加大感受野,但不会增加计算量。这对于时间序列数据中的长时依赖(long-term dependencies)建模非常有帮助。扩展卷积的空洞率决定了卷积核的扩展程度,适合于提取多尺度的特征。

例如:

输入序列: [x1, x2, x3, x4, x5, x6]
扩展卷积(空洞率=2): [x1, 0, x3, 0, x5] (跳过每个中间的元素)
4 全局池化层

在时间序列的最后一层卷积之后,通常会加入全局池化层(如全局最大池化或全局平均池化),用来将所有时间步的特征压缩为一个固定大小的向量。这种方式可以减少特征的维度,增强特征的全局性。

例如:

输入序列: [x1, x2, x3, x4, x5]
全局池化: max([x1, x2, x3, x4, x5]) -> x_max
5 全连接层和输出层

卷积和池化层后接全连接层,通过将提取到的特征进一步整合用于分类或预测。全连接层后可以根据任务需求添加不同的输出层:

  • 对于分类任务,可以使用 Softmax 输出层。
  • 对于回归任务(如时间序列预测),可以使用线性激活函数。

三、CNN 在时间序列中的典型应用场景

CNN 在时间序列中的应用广泛,包括但不限于以下场景:

  • 时间序列分类:如识别行为模式(例如用户行为、心率信号等)。
  • 时间序列预测:如股票价格、气象数据的预测。
  • 异常检测:如检测系统或设备的异常波动。
  • 时间序列分段:如将连续时间序列分割为不同的事件片段,适用于生物医学信号分析和视频分析。

四、 CNN 在时间序列中的常见模型

4.1 一维 CNN (1D-CNN)

一维 CNN 是最基础的时间序列卷积模型,用于处理单变量时间序列,输入的形状会变成 (batch_size, 1, sequence_length)。当1D-CNN处理多变量时,可以被看作是多通道 CNN(Multi-Channel CNN)。

4.2 多通道 CNN(Multi-Channel CNN)

多通道 CNN 用于多变量时间序列预测,是将多个不同类型的输入(通道)结合在一起进行卷积处理。例如预测股票价格时利用多个经济指标。每个变量可以视为一个通道(channel),即每个通道单独进行卷积操作,随后合并各通道的特征用于进一步分析。

import torch
import torch.nn as nnclass MultiChannelCNN(nn.Module):def __init__(self, input_channels, output_size, kernel_size=3, stride=1, padding=1):""":param input_channels: 输入通道数目:param output_size: 输出大小:param kernel_size: 卷积核的大小:param stride: 卷积步长:param padding: 卷积的填充"""super(MultiChannelCNN, self).__init__()# 定义多个一维卷积层self.conv1 = nn.Conv1d(input_channels, 64, kernel_size, stride, padding)  # 第一个卷积层self.conv2 = nn.Conv1d(64, 128, kernel_size, stride, padding)  # 第二个卷积层self.conv3 = nn.Conv1d(128, 256, kernel_size, stride, padding)  # 第三个卷积层# 池化层self.pool = nn.MaxPool1d(2)  # 最大池化层,池化窗口大小为2# 全连接层,后续用来输出最终结果self.fc = nn.Linear(256 * 2, output_size)   #其中 256 来自最后一个卷积层的输出通道数# 假设时间序列长度为8,池化后为2的长度def forward(self, x):""":param x: 输入数据,形状为(batch_size, input_channels, sequence_length)"""# 通过第一个卷积层x = self.conv1(x)x = torch.relu(x)  # 激活函数x = self.pool(x)  # 池化层# 通过第二个卷积层x = self.conv2(x)x = torch.relu(x)x = self.pool(x)# 通过第三个卷积层x = self.conv3(x)x = torch.relu(x)x = self.pool(x)# 将输出展平,输入到全连接层x = x.view(x.size(0), -1)# 通过全连接层x = self.fc(x)return x# 示例:假设输入是一个具有3个通道,序列长度为8的时间序列
input_channels = 3
sequence_length = 8
output_size = 1  # 预测一个标量值(例如回归任务)# 创建模型
model = MultiChannelCNN(input_channels, output_size)# 输入形状为(batch_size, input_channels, sequence_length)
input_data = torch.randn(batch_size, input_channels, sequence_length)# 前向传播
output = model(input_data)
print(output)
4.3 混合模型:CNN-LSTM

CNN 和 LSTM 的混合模型利用 CNN 的局部特征提取能力和 LSTM 的长短期记忆能力,适合处理具有长时依赖特征的时间序列。典型架构是先用 CNN 提取局部特征,再将提取的特征输入 LSTM 进行全局特征建模。简化的架构图示例:

输入序列 (batch_size, sequence_length, input_size)|v
卷积层 (Conv1D) (batch_size, sequence_length, cnn_out_channels)|v
池化层 (Max Pooling) (batch_size, reduced_sequence_length, cnn_out_channels)|v
扩展卷积 (Dilated Conv) (batch_size, further_reduced_sequence_length, cnn_out_channels)|v
LSTM层 (batch_size, sequence_length, hidden_size)|v
全连接层 (Linear) (batch_size, output_size)|v
输出 (batch_size, output_size)
import torch
import torch.nn as nnclass CNN_LSTM_Net(nn.Module):"""CNN提取局部特征后,通过LSTM进行时间序列建模。"""def __init__(self, config):super(CNN_LSTM_Net, self).__init__()# 定义CNN部分# 卷积层,输入通道数为7,输出通道数为config.cnn_out_channels,卷积核大小为config.cnn_kernel_size,dilation=1 表示卷积核为常规卷积核,没有扩张效果。dilation > 1:表示扩展卷积(也叫膨胀卷积)# padding=1表示边缘填充,保证输出尺寸与输入相同self.conv1 = nn.Conv1d(in_channels=7, out_channels=config.cnn_out_channels, kernel_size=config.cnn_kernel_size, padding=1,dilation=1)self.conv2 = nn.Conv1d(in_channels=config.cnn_out_channels, out_channels=config.cnn_out_channels * 2, kernel_size=config.cnn_kernel_size, padding=1,dilation=1)# 池化层,用于减小特征维度self.pool = nn.MaxPool1d(kernel_size=2, stride=2)# 定义LSTM部分# LSTM层的输入是CNN提取的特征(shape: [batch_size, sequence_length, cnn_out_channels * 2]),# 隐藏单元大小为config.hidden_size,层数为config.model_layers,batch_first=True指定输入张量的第一个维度是批次大小self.lstm = nn.LSTM(input_size=config.cnn_out_channels * 2,hidden_size=config.hidden_size,num_layers=config.model_layers,batch_first=True,dropout=config.dropout_rate)# 定义全连接层# 全连接层将LSTM输出映射为目标输出,输出大小为config.output_sizeself.linear = nn.Linear(in_features=config.hidden_size, out_features=config.output_size)def forward(self, x, hidden=None):"""前向传播:param x: 输入数据,形状为 [batch_size, sequence_length, input_size]:param hidden: LSTM的初始隐藏状态和细胞状态:return: 模型的输出"""# CNN部分:使用卷积层提取特征x = x.permute(0, 2, 1)  # 将输入从 [batch_size, sequence_length, input_size] 转换为 [batch_size, input_size, sequence_length]x = self.pool(torch.relu(self.conv1(x)))  # 卷积 + ReLU激活 + 池化x = self.pool(torch.relu(self.conv2(x)))  # 卷积 + ReLU激活 + 池化# x的形状变为 [batch_size, cnn_out_channels * 2, new_sequence_length]# 在送入LSTM之前,需要将其变为 [batch_size, sequence_length, features]x = x.permute(0, 2, 1)  # 转换为 [batch_size, new_sequence_length, cnn_out_channels * 2]# LSTM部分:处理时间序列的长依赖lstm_out, hidden = self.lstm(x, hidden)# 提取LSTM的最后时间步的输出,输入到全连接层linear_out = self.linear(lstm_out[:, -1, :])return linear_out, hidden

对于之前的股票预测,这是CNN-LSTM的预测效果:

4.4 WaveNet

WaveNet 是一种特定类型的深度卷积神经网络,使用扩展卷积(dilated convolution)代替普通的卷积层以增加感受野。它可以捕捉更长的时间依赖关系,适合音频信号和复杂时序数据的处理。

五. 优缺点总结

1、优点

  • CNN 可以有效提取局部时序特征,适合模式识别和短期依赖特征的建模。
  • 权重共享和池化操作可以减少模型参数,缓解过拟合问题。
  • 可以与其他深度学习模型(如 LSTM)结合,用于复杂时序数据的处理。

2、缺点

  • CNN 难以捕捉长时间依赖关系,适合短期或局部特征的提取。
  • 参数调优较复杂,卷积核大小、步长、池化窗口等参数需要多次尝试。
  • 对非平稳时间序列的数据敏感,通常需要在预处理阶段去除趋势和季节性。

总结

CNN 在时间序列分析中展现了强大的特征提取能力,适用于分类、预测和异常检测等任务。尤其在短期模式识别和局部特征提取上效果显著。通过合理设计 CNN 架构,结合如 LSTM 等模型,还可以扩展其在长时依赖建模上的应用。

尽管CNN主要用于处理网格状的数据结构,如图像,但最近的研究表明CNN也可以有效应用于时间序列数据。CNN通过卷积层可以自动提取时间序列数据的局部特征。这些局部特征随后被用来进行更高层次的特征构造。

卷积神经网络(CNN)在处理时间序列数据时通常使用一维卷积层(1D convolutional layers),这种结构能够捕捉局部时间依赖关系。例如,在股票价格预测中,CNN可以用来捕捉价格在连续几个交易日内的波动模式。

相关文章:

时间序列预测(十九)——卷积神经网络(CNN)在时间序列中的应用

有关CNN的介绍可以参考以下博文: 卷积神经网络(CNN)详细介绍及其原理详解-CSDN博客 三万字硬核详解:卷积神经网络CNN(原理详解 项目实战 经验分享)_cnn卷积神经网络-CSDN博客 CNN笔记:通俗…...

uniapp-x js 限制

1.String(str) 不允许&#xff0c;android模拟室报错&#xff0c;找不到String 2.JSON.parse不接受泛类型 export const genData function<T> (initData:T) : T {return JSON.parse<T>(JSON.stringify(initData))!;//不可以&#xff0c;必须明确类型 } error: …...

Matlab 基于磁流变阻尼器的半主动车辆座椅悬架模糊控制研究

1、内容简介 略 Matlab 175-基于磁流变阻尼器的半主动车辆座椅悬架模糊控制研究 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

QQuick3D-Model的实例化

QQuick3D-Model的实例化 Model的实例化 Model类继承于Node类&#xff1b;如果想让一个Model&#xff08;模型&#xff09;可以渲染&#xff0c;至少需要一个Mesh(网格)和material&#xff08;材质&#xff09;Mesh(网格)&#xff1a;Qt内置了矩形&#xff08;Rectangle&#…...

二分算法刷题

1. 初识 总结&#xff1a;二分算法题的细节非常多&#xff0c;容易写出死循环。使用算法的条件不一定是数组有序&#xff0c;而是具有“二断性”&#xff1b;模板三种后面会讲。 朴素二分二分查找左端点二分查找右端点 2. 朴素二分 题目链接&#xff1a;704. 二分查找 - 力扣…...

# RAG 框架 # 一文入门 全链路RAG系统构建与优化 —— 架构、策略与实践

本文全面阐述了RAG系统从数据收集、数据清洗&#xff08;包括领域专有名词处理&#xff09;、智能数据分块与QA对生成&#xff0c;到向量化、向量数据库选择与配置&#xff0c;再到检索方式及重排序&#xff0c;直至整合输出、监控反馈和安全保障的全流程。通过这一完整方案&am…...

网络运维学习笔记(DeepSeek优化版) 017 HCIA-Datacom综合实验02

文章目录 综合实验2sw3sw4gwcore1&#xff08;sw1&#xff09;core2&#xff08;sw2&#xff09;ISP 综合实验2 sw3 vlan 2 stp mode stp int e0/0/1 port link-type trunk port trunk allow-pass vlan 2 int e0/0/2 port link-type trunk port trunk allow-pass vlan 2 int e…...

Flutter——Android与Flutter混合开发详细教程

目录 1.创建FlutterModule项目&#xff0c;相当于Android项目里面的module库&#xff1b;2.或者编辑aar引用3.创建Android原生项目3.直接运行跑起来 1.创建FlutterModule项目&#xff0c;相当于Android项目里面的module库&#xff1b; 2.或者编辑aar引用 执行 flutter build a…...

java手机号、邮箱、日期正则表达式

Java正则核心API Java中用 java.util.regex 包的两个类&#xff1a; Pattern&#xff1a;编译正则表达式Matcher&#xff1a;执行匹配操作 1. 验证手机号 String regex "1[3-9]\\d{9}"; boolean isValid "18812345678".matches(regex); // true2. 提取…...

0x04.若依框架微服务开发(含AI模块运行)

微服务本地开发硬件资源有限&#xff0c;所以会将核心微服务组件先部署在服务器上比如&#xff1a;mysql&#xff0c;redis&#xff0c;注册中心Nacos&#xff0c;网关Gateway&#xff0c;认证中心Auth和upms模块以及低代码生成模块。 mysql、redis部署前篇已讲&#xff0c;这…...

数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314)

数据库管理302期 2025-03-14 数据库管理-第302期 国产类RAC架构数据库网络连接方式&#xff08;20250314&#xff09;1 Oracle RAC2 DMDSC3 YAC4 KES RAC总结 数据库管理-第302期 国产类RAC架构数据库网络连接方式&#xff08;20250314&#xff09; 作者&#xff1a;胖头鱼的鱼…...

ctf web入门知识合集

文章目录 01做题思路02信息泄露及利用robots.txt.git文件泄露dirsearch ctfshow做题记录信息搜集web1web2web3web4web5web6web7web8SVN泄露与 Git泄露的区别web9web10 php的基础概念php的基础语法1. PHP 基本语法结构2. PHP 变量3.输出数据4.数组5.超全局变量6.文件操作 php的命…...

CSS3-流星雨

1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…...

【leetcode hot 100 199】二叉树的右视图

解法一&#xff1a;层级遍历&#xff0c;右侧看到的节点就是每一层最后一个元素 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }…...

Unity进阶课程【二】Mask 组件的使用 UI遮罩效果以及透明抠图效果

Unity组件讲解 Mask 时隔多年&#xff0c;今天咱们继续进阶课程&#xff0c;这几年变化很大&#xff0c;但是一直还是从事Unity行业&#xff0c;行业虽难&#xff0c;依旧坚持&#xff0c;以后会养成习惯&#xff0c;定期更新&#xff0c;希望小伙伴们监督&#xff0c;有想学习…...

本地部署Jina AI Reader:用Docker打造你的智能解析引擎

本地部署Jina AI Reader&#xff1a;用Docker打造你的智能解析引擎 &#x1f31f; 引言&#xff1a;为什么需要本地部署&#xff1f;&#x1f4cc; 场景应用图谱&#x1f527; 部署指南&#xff08;Linux环境&#xff09;1. 环境准备2. Docker部署3. 验证服务状态 &#x1f680…...

【MyBatis Plus 逻辑删除详解】

文章目录 MyBatis Plus 逻辑删除详解前言什么是逻辑删除&#xff1f;MyBatis Plus 中的逻辑删除1. 添加逻辑删除字段2. 实体类的配置3. 配置 MyBatis Plus4. 使用逻辑删除5. 查询逻辑删除的记录 MyBatis Plus 逻辑删除详解 前言 MyBatis Plus 是一个强大的持久化框架&#xf…...

Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流

GPT-SoVITS GPT-SoVITS- v2&#xff08;v3也可以&#xff0c;两者对模型文件具有兼容&#xff09; 点击后 会进入新的游览器网页 ----- 看了一圈&#xff0c;发现主要问题集中在模型的训练很需要CPU&#xff0c;也就是模型的制作上&#xff0c;问题很多&#xff0c;如果有现有…...

一次Linux下 .net 调试经历

背景&#xff1a; Xt160Api, 之前在windows下用.net调用&#xff0c;没有任何问题。 但是移植到Linux去后&#xff0c;.net程序 调用 init(config_path) 总是报错 /root/test 找不到 traderApi.ini (/root/test 是程序目录) 然后退出程序 解决过程: 于是考虑是不是参数传错了&…...

Manus 技术探索 - 使用 gVisor 在沙箱内运行 Ubuntu 容器并通过远程浏览器访问

在容器化技术中&#xff0c;gVisor 为运行不信任的工作负载提供了额外的安全隔离。本文将详细介绍如何利用 gVisor 运行带 GUI 的 Ubuntu 容器&#xff0c;并通过 VNC/NoVNC 实现远程浏览器访问&#xff0c;从而轻松控制容器内的桌面环境。 1. 安装 gVisor 如果你还没有安装 …...

PentestGPT 下载

PentestGPT 下载 PentestGPT 介绍 PentestGPT&#xff08;Penetration Testing GPT&#xff09;是一个基于大语言模型&#xff08;LLM&#xff09;的智能渗透测试助手。它结合了 ChatGPT&#xff08;或其他 GPT 模型&#xff09;与渗透测试工具&#xff0c;帮助安全研究人员自…...

Day07 -实例 非http/s数据包抓取工具的使用:科来 wrieshark 封包监听工具

引入&#xff1a;由于我们day06正确为模拟器配置好了抓包环境&#xff0c;现在用bp去抓取模拟器web包是可以抓取到的&#xff0c;但是某些小程序 & pc端的app 都是有走非http/https协议的数据包的&#xff0c;那么我们就需要用不同的工具去抓取这些其他协议的数据包。 工具…...

机器学习 [白板推导](三)[线性分类]

4. 线性分类 4.1. 线性分类的典型模型 硬分类&#xff1a;输出结果只有0或1这种离散结果&#xff1b; 感知机线性判别分析 Fisher 软分类&#xff1a;会输出0-1之间的值作为各个类别的概率&#xff1b; 概率生成模型&#xff1a;高斯判别分析GDA、朴素贝叶斯&#xff0c;主要…...

c# 查找相似颜色算法

下是一个基于欧几里得距离的C#颜色相似度查找算法实现,包含详细注释和优化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 颜色容器 - 使用字典存储颜色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…...

【数据分析】读取文件

3. 读取指定列 针对只需要读取数据中的某一列或多列的情况&#xff0c;pd.read_csv()函数提供了一个参数&#xff1a;usecols&#xff0c;将包含对应的columns的列表传入该参数即可。 上面&#xff0c;我们学习了读取 "payment" 和 "items_count" 这…...

全星研发管理APQP软件系统:助力汽车零部件企业高效研发,打造核心竞争力

在竞争日益激烈的汽车零部件行业&#xff0c;产品质量和研发效率直接影响企业的生存与发展。APQP&#xff08;先期产品质量策划&#xff09;作为行业的研发管理框架&#xff0c;能够有效提升产品质量和研发效率。然而&#xff0c;传统的APQP管理方式往往面临流程繁琐、信息分散…...

ccf3501密码

//密码 #include<iostream> #include<cstring> using namespace std; int panduan(char a[]){int lstrlen(a);int s0;int zm0,sz0,t0;int b[26]{0},c[26]{0},d[10]{0},e0,f0;while(s<l&&l>6){if(a[s]<Z&&a[s]>A){b[a[s]-A];zm;}if(a[s…...

kali之netdiscover

kali之netdiscover Netdiscover 是 Kali Linux 中一款用于网络发现和主机扫描的工具。它通过主动发送 ARP 请求来识别局域网中的活动主机&#xff0c;并显示它们的 IP 地址、MAC 地址和网卡厂商信息。Netdiscover 特别适用于局域网内的主机发现和网络映射。 1. Netdiscover 的…...

Leetcode-2272. Substring With Largest Variance [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-2272. Substring With Largest Variancehttps://leetcode.com/problems/substring-with-largest-variance/description/2272. 最大波动的子字符串 - 力扣&#xff08;LeetCode&#xff09;2272. 最大波动的子字符串…...

【AI】技术人如何系统学习AI大模型应用开发?

从理论认知到全栈落地的完整指南 一、认知突破&#xff1a;理解大模型的技术本质&#xff08;1-2周&#xff09; 1.1 基础理论筑基 必学内容 大模型演进脉络&#xff1a;从Transformer到GPT-4的技术跃迁核心机制解析&#xff1a;注意力机制、位置编码、自监督学习关键能力边界…...

级联树SELECTTREE格式调整

步骤&#xff1a; 1、将全部列表设置成Map<Long, List<Obejct>> map的格式&#xff0c;方便查看每个父级对应的子列表&#xff0c;减少循环次数 2、对这个map进行递归&#xff0c;重新进行级联树的集合调整&#xff0c;将子集放置在对应的childs里面。 public Dyna…...

深入理解静态与动态代理设计模式:从理论到实践

静态代理设计模式 1.为什么需要代理设计模式&#xff1f; javaEE分层开发中&#xff0c;哪个层次对于我们来讲最重要 DAO---->Service---->Controller JavaEE分层中&#xff0c;最为重要的是Service层 Service层包含了那些代码 Service层核心功能(几十行 上百代码) 额外…...

NET进行CAD二次开发之二

本文主要针对CAD 二次开发入门与实践:以 C# 为例_c# cad-CSDN博客的一些实践问题做一些补充。 一、DLL介绍 在 AutoCAD 中,accoremgd.dll、acdbmgd.dll 和 acmgd.dll 都是与.NET API 相关的动态链接库,它们在使用.NET 语言(如 C#、VB.NET)进行 AutoCAD 二次开发时起着关…...

PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码

以下是一个使用 PyTorch 实现 Conditional DCGAN&#xff08;条件深度卷积生成对抗网络&#xff09;进行图像到图像转换的示例代码。该代码包含训练和可视化部分&#xff0c;假设输入为图片和 4 个工艺参数&#xff0c;根据这些输入生成相应的图片。 1. 导入必要的库 import …...

c#:使用Modbus RTU协议

Modbus是一种广泛应用于工业自动化领域的通信协议&#xff0c;支持多种传输方式&#xff0c;如RTU、TCP等。其中&#xff0c;Modbus RTU是一种基于串行通信的协议&#xff0c;具有高效、可靠的特点。本文将详细介绍Modbus RTU协议的基本原理&#xff0c;并重点解析功能码0x03&a…...

设计模式(行为型)-备忘录模式

目录 定义 类图 角色 角色详解 &#xff08;一&#xff09;发起人角色&#xff08;Originator&#xff09;​ &#xff08;二&#xff09;备忘录角色&#xff08;Memento&#xff09;​ &#xff08;三&#xff09;备忘录管理员角色&#xff08;Caretaker&#xff09;​…...

基于yolo11+flask打造一个精美登录界面和检测系统

这个是使用flask实现好看登录界面和友好的检测界面实现yolov11推理和展示&#xff0c;代码仅仅有2个html文件和一个python文件&#xff0c;真正做到了用最简洁的代码实现复杂功能。 测试通过环境&#xff1a; windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.…...

【软考-架构】13.1、软件架构概述-构件技术

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 ✨【重点】系统架构设计软件架构概述软件架构设计与生命周期构件&#x1f31f;软件架构风格数据流风格调用/返回风格独立构件风格虚拟机风格仓库风格闭环控制风格C2体系结…...

RabbitMQ(补档)

RabbitMQ 是一个开源的消息队列软件&#xff08;有时也被称为消息代理&#xff09;&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。它主要用于应用程序之间&#xff0c;或者软件组件之间的消息通信。通过使用 RabbitMQ&#xff0c;可以实现异步的、可靠的…...

仿“东方甄选”直播商城小程序运营平台

在公域直播流量红利趋于饱和、流量成本大幅攀升的当下&#xff0c;私域直播为企业开辟了新的流量聚集和转化渠道&#xff0c;特别是对于那些希望在私域流量领域取得突破的品牌商家来说&#xff0c;直播场景以其独特的高频互动氛围&#xff0c;相比其他运营方式&#xff0c;展现…...

增量数据同步怎么做

增量数据同步怎么做&#xff1f;比如A系统里有母猪数据&#xff0c;新增了一头母猪&#xff0c;这条母猪数据要低延迟地同步到B系统。而不是A系统全表扫描一遍&#xff0c;然后全部同步到B系统。这种全扫描同步方法延迟非常大&#xff0c;尤其涉及到母猪大数据时&#xff0c;会…...

LeetCode 解题思路 18(Hot 100)

解题思路&#xff1a; 继承 LinkedHashMap&#xff1a; 内置双向链表&#xff0c;自动维护节点的插入顺序和访问顺序。LRU 淘汰逻辑&#xff1a; 覆盖 removeEldestEntry&#xff0c;当元素数量超过 capacity 时&#xff0c;移除最旧条目。removeEldestEntry 方法提供钩子&…...

基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Go红队开发—web网络编程

文章目录 web网络编程Req快速请求 调试DevModeDebugLogTraceInfo瓶颈分析 控制请求与响应控制请求的字段内容控制调试打印的内容分开dump请求与响应部分请求体设置 作用范围级别设置参数查询URL 路径参数表单请求设置请求头设置 判断响应状态码解析数据SetSuccessResultgjson响…...

ollama不安装到c盘,安装到其他盘

ollama 安装包默认安装到c盘&#xff0c;安装程序并没有提供选择文件夹安装功能&#xff0c;本来c盘就快满了&#xff0c;下几个模型c盘都快爆了&#xff0c;如何将ollma安装到其他盘呢&#xff1f; ollama 默认安装位置 C:\Users\Admin\.ollama 是 Ollama 用来放大模型的文件夹…...

【HTML】一、基础标签

文章目录 1、开发环境准备2、html介绍3、html基本骨架4、标签的关系5、常用标签5.1 标题5.2 段落5.3 换行与水平线5.4 文本格式化标签5.5 图像标签5.6 超链接标签5.7 音频标签5.8 视频标签 6、路径7、网页制作 1、开发环境准备 在编辑器中写代码&#xff0c;在浏览器中看效果 …...

NPU、边缘计算与算力都是什么啊?

考虑到灵活性和经济性&#xff0c;公司购置一台边缘计算机&#xff0c;正在尝试将PCGPU的计算机视觉项目转到边缘计算机NPU上。本文简单整理了三个概念&#xff0c;并试图将其做个概要的说明。 一、算力&#xff1a;数字世界的“基础能源” 1.1 算力是什么 **算力&#xff08…...

spring声明式事务原理01-调用第1层@Transactional方法(事务访问入口)

文章目录 【README】【步骤1】UserAppService调用userSupport.saveNewUser()【步骤2】获取到TransactionInterceptor【步骤3】chain不为空&#xff0c;接着执行CglibMethodInvocation#proceed方法【补充】AopContext作用 【步骤4】CglibMethodInvocation#proceed方法【步骤5】调…...

[MoeCTF 2021]babyRCE

打开题目在线环境可以看到&#xff1a; <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\>|\<|\|\"/i", $rce)) {system($rce);}else {echo "hhhhhhacke…...

【leetcode hot 100 114】二叉树展开为链表

解法一&#xff1a;执行一次先序遍历&#xff0c;把元素放入list中&#xff0c;然后放回root中 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { th…...