深度学习里 的informer是什么?和LSTM什么关系?

时间: 2023-12-24 20:39:40 浏览: 331

Informer是一种用于时间序列预测任务的深度学习模型,它被设计用于处理具有多个时间尺度的时间序列数据。与传统的LSTM(长短期记忆)模型相比,Informer具有更强大的建模能力和更好的预测性能。

LSTM是一种经典的循环神经网络(RNN)模型,用于处理序列数据。它通过引入门控机制来解决传统RNN的梯度消失和梯度爆炸问题,从而使得模型能够更好地捕捉长期依赖关系。LSTM在处理时间序列数据方面取得了很好的效果,并成为了许多序列预测任务的常用模型。

而Informer则是在LSTM的基础上进行了改进和扩展。它引入了Self-Attention机制和Encoder-Decoder结构来处理时间序列数据中的多个时间尺度,从而更好地捕捉不同时间尺度上的依赖关系。Informer还使用了自适应长度预测(ALP)策略,可以在输入序列长度变化时进行有效预测,这对于实际应用中的不确定长度数据非常重要。

总的来说,Informer是一种优化了的深度学习模型,专门用于时间序列预测任务,并在多个时间尺度上具有较好的建模能力。相比于传统的LSTM模型,Informer更适用于处理复杂的时间序列数据,并在许多时间序列预测任务中表现出更好的性能。

相关问题

lstm-informer

LSTM与Informer在时间序列预测中的实现和应用

LSTM模型简介

长期短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的循环神经网络(RNN),能够学习长时间依赖关系,广泛应用于自然语言处理、语音识别等领域。对于时间序列数据而言,LSTM可以捕捉到不同时间节点之间的关联特性[^1]。

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM

def build_lstm_model(input_shape):
    model = Sequential()
    model.add(LSTM(units=50, return_sequences=True, input_shape=input_shape))
    model.add(LSTM(units=50))
    model.add(Dense(1))

    model.compile(optimizer='adam', loss='mean_squared_error')
    
    return model

这段代码展示了如何构建一个简单的两层LSTM结构用于回归任务。input_shape参数指定了输入特征的数量以及时间步长大小;两个隐藏层都含有50个单元,并且第一个LSTM层设置了return_sequences=True以便传递完整的输出给下一层;最后通过全连接层映射至单维输出作为预测结果。

Informer模型概述

随着深度学习的发展,自注意力机制(Self-Attention Mechanism)逐渐成为解决各种NLP问题的有效工具之一。然而传统Transformer架构下的标准多头自注意模块(Multi-head Attention Module)存在着计算量巨大等问题。为此,研究人员提出了ProbSparse策略来优化这一过程,在保持原有性能的同时大幅降低了资源消耗。具体来说就是只保留那些最有可能影响当前时刻状态的历史位置来进行加权求和操作,从而使得整个算法的时间复杂度降低到了O(L log L)[^2]。

class ProbSparseSelfAttention(nn.Module):
    def __init__(self, d_k, n_heads, factor=5, attention_dropout=0.1):
        super().__init__()
        
        self.d_k = d_k
        self.n_heads = n_heads
        
        # Other initialization code...
    
    def forward(self, queries, keys, values):
        B, T_q, _ = queries.size()  # batch size, query length, embedding dimension
        _, T_k, _ = keys.size()

        scores = torch.einsum('bqd,bkd->bqk', [queries.view(B,-1,self.d_k), 
                                               keys.view(B,-1,self.d_k)])
        
        top_k_indices = torch.topk(scores.abs(), k=int(T_k//factor)).indices
        
        sparse_scores = torch.zeros_like(scores).scatter_(-1, top_k_indices, scores.gather(-1,top_k_indices))
        
        attn_weights = F.softmax(sparse_scores / math.sqrt(self.d_k), dim=-1)

        context_vectors = torch.bmm(attn_weights.unsqueeze(dim=1),
                                    values.reshape(B*T_v,T_v,d_v)).reshape(B,T_q,d_v*n_heads)
                                    
        output = self.fc_out(context_vectors)
        
        return output

上述代码片段定义了一个基于PyTorch框架的概率稀疏化自注意力类ProbSparseSelfAttention。该函数接收查询向量(queries)、键向量(keys) 和 值向量 (values)三个张量作为输入,并返回经过变换后的上下文表示形式。其中最关键的部分在于利用绝对值最大的前几个得分项构造新的评分矩阵sparse_scores,进而得到最终的注意力权重分布attn_weights并完成后续的信息聚合工作。

应用场景对比

当面对大规模高频率采样的工业监控系统所产生的海量历史记录时,采用更高效的Informer显然更加合适。因为这类应用场景往往伴随着极高的维度数(即时间跨度非常广),如果继续沿用传统的RNN/LSTM方案,则很可能面临训练效率低下甚至无法收敛的情况。相反地,得益于改进版自注意力机制带来的显著提速效果,Informer可以在合理时间内获得高质量的结果,满足实际业务需求。

而对于一些相对简单的小型项目或是初学者练习环境里,由于缺乏足够的硬件支持或者其他因素制约,选择易于理解和上手的传统方法如LSTM仍然是明智之举。毕竟后者拥有成熟的理论基础和完善的技术文档可供参考查阅,有助于快速入门掌握基本原理和技术要点。

lstm-informer轴承

使用 LSTM-Informer 模型进行轴承故障预测与状态监测

轴承故障预测的重要性

机械系统的可靠性对于工业生产至关重要,而轴承作为旋转机械设备中的关键部件之一,其健康状况直接影响到整个设备的安全性和效率。因此,及时准确地检测并预警潜在的轴承故障具有重要意义。

LSTM-Informer 模型简介

LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN),擅长处理长时间依赖关系的数据序列;Informer 则是在 Transformer 架构基础上改进而来的时间序列预测模型,在长周期趋势捕捉方面表现优异。两者结合形成的 LSTM-Informer 综合了两者的优点,既保留了 LSTM 对局部特征的有效提取能力,又借助 Informer 实现更高效的全局模式识别[^3]。

数据预处理

为了使输入数据适合于 LSTM-Informer 的训练需求,通常需要执行如下操作:

  • 清洗原始振动信号或其他传感器采集得到的时间序列数据;
  • 将连续测量值转换成固定长度的历史窗口片段;
  • 归一化数值范围以便加速收敛过程;
  • 添加额外维度如时间戳、位置编码等辅助信息来增强表达力。
import pandas as pd
from sklearn.preprocessing import StandardScaler

def preprocess_data(df, window_size=100):
    scaler = StandardScaler()
    scaled_df = df.copy()
    
    # 特征缩放
    features_to_scale = ['vibration', 'temperature']  # 假设这些列名存在
    scaled_features = scaler.fit_transform(scaled_df[features_to_scale])
    scaled_df.loc[:, features_to_scale] = scaled_features
    
    X, y = [], []
    for i in range(len(scaled_df)-window_size):
        X.append(scaled_df.iloc[i:i+window_size].values)
        y.append(1 if any(scaled_df['fault_flag'][i:i+window_size]) else 0)

    return np.array(X), np.array(y).reshape(-1, 1)

模型构建与训练

采用 PyTorch 或 TensorFlow 等深度学习框架定义 LSTM 层和 Informer 结构,并通过反向传播算法调整权重直至达到满意的性能指标为止。

class LSTMinformer(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim, num_layers):
        super(LSTMinformer, self).__init__()
        
        self.lstm = nn.LSTM(input_dim, hidden_dim, num_layers, batch_first=True)
        self.fc_out = nn.Linear(hidden_dim, output_dim)
        # 这里省略了具体的 informer 部分实现
        
    def forward(self, x):
        lstm_output, _ = self.lstm(x)
        prediction = self.fc_out(lstm_output[:,-1,:])
        return torch.sigmoid(prediction)

model = LSTMinformer(input_dim=2, hidden_dim=64, output_dim=1, num_layers=2)
criterion = nn.BCELoss()  # 二分类交叉熵损失函数
optimizer = optim.Adam(model.parameters(), lr=0.001)

for epoch in range(num_epochs):
    model.train()
    optimizer.zero_grad()

    outputs = model(train_X.float())
    loss = criterion(outputs, train_y.float())

    loss.backward()
    optimizer.step()

性能评估与调优

完成初步训练之后,应当利用独立测试集检验泛化能力和稳定性,必要时可通过超参数搜索等方式继续优化最终版本前的表现效果。


向AI提问 loading 发送消息图标

相关推荐

大学生入口

最新推荐

recommend-type

基于三菱PLC和触摸屏的停车场智能管理系统设计与实现

内容概要:本文详细介绍了基于三菱PLC和三菱触摸屏构建的停车场智能管理系统。系统分为入口、出口和管理中心三大部分,分别负责车辆身份识别、车位检测、道闸控制、缴费结算等功能。三菱PLC作为核心控制器,通过梯形图编程实现了车辆检测、道闸控制等关键逻辑;三菱触摸屏提供人机交互界面,支持参数设置、状态监控等功能。文中还讨论了PLC与触摸屏之间的通信配置,以及如何通过物联网技术将系统接入云端。 适合人群:从事智能交通系统开发的技术人员,尤其是熟悉三菱PLC编程和触摸屏应用的工程师。 使用场景及目标:适用于新建或改造停车场项目,旨在提高停车场管理效率和服务质量,减少人工干预,实现智能化运营。 其他说明:文中提供了具体的硬件配置建议、PLC编程实例、触摸屏界面设计指南及通信协议解析,有助于读者快速理解和实施类似项目。
recommend-type

自动化生产领域:汇川AM系列PLC在全自动N95口罩机中的高级编程与控制应用

内容概要:本文深入探讨了基于汇川AM401/AM403系列PLC和CODESYS高级编程模式构建的全自动N95口罩机控制系统。该系统涵盖了多个关键技术,包括轴控制(如绝对定位、相对定位)、凸轮同步控制、超声波焊接机控制、放卷张力控制、封边轴焊耳轴随动跟随控制、高速低速切换控制、步进电机精细控制等。此外,还介绍了IT7070系列触摸屏提供的友好交互界面及其产量统计功能。文章详细解析了各部分的具体实现方式,如通过ST语言编写复杂的控制逻辑,利用CAM_Profile生成器动态调整凸轮曲线,以及通过PID算法实现张力控制等。同时,强调了程序的模块化设计和详细的注释,便于维护和扩展。 适合人群:从事自动化生产设备开发的技术人员,尤其是熟悉PLC编程和CODESYS平台的工程师。 使用场景及目标:适用于希望深入了解全自动N95口罩机控制系统设计和实现的专业人士。主要目标是展示如何通过先进的编程技术和控制策略提升口罩生产的效率和质量。 其他说明:文中提到的实际案例和技术细节有助于读者更好地理解和应用相关技术,同时也为类似项目的开发提供了宝贵的参考资料。
recommend-type

【嵌入式开发】Linux内核移植全流程解析:从准备工作到问题解决的详细指南

内容概要:本文详细介绍了Linux内核移植在嵌入式开发中的重要性及其具体实施步骤。首先,强调了Linux内核移植作为连接硬件与软件桥梁的重要性,特别是在智能穿戴设备、工业自动化控制系统等广泛应用中的角色。文章随后解析了Linux内核移植的主要步骤,包括准备阶段(选择合适的内核版本、获取源码、配置交叉编译环境)、内核源码修改(硬件平台支持、时钟调整、机器码适配)、内核配置(通过make config、make menuconfig或make xconfig进行配置)、内核编译与安装。此外,还探讨了常见的移植问题及其解决方案,如串口打印异常、文件系统挂载故障和驱动适配难题。最后,通过一个具体的ARM架构开发板移植案例,展示了整个移植流程的实际操作,并展望了Linux内核移植技术的发展趋势。 适合人群:具备一定嵌入式开发基础,特别是对Linux内核有一定了解的研发人员和技术爱好者。 使用场景及目标:①帮助开发者理解Linux内核移植的基本概念和流程;②指导开发者在实际项目中进行Linux内核移植,解决常见问题;③为从事嵌入式系统开发的人员提供理论支持和技术参考。 其他说明:Linux内核移植是一项复杂但极具价值的任务,不仅需要扎实的理论知识,还需要丰富的实践经验。随着技术的进步,Linux内核移植技术也在不断发展,未来的方向将更加注重自动化和智能化,以提高移植效率和成功率。建议读者在学习过程中结合实际案例进行练习,逐步积累经验,掌握这一关键技术。
recommend-type

识别多项式模型:项生成、结构检测、参数估计和动态验证

实现全面的系统表征,包括候选项生成、结构检测、参数估计以及动态和静态模型验证。该软件包特别适用于分析具有固有噪声和误差的流动工厂系统,这些系统被建模为受白噪声破坏的二次多项式。 主要特点: 动态数据分析:处理输入和输出的时间序列数据,并验证数据集以进行识别和验证。 结构检测:删除不合适的聚类,并应用AIC和ERR等优化算法来细化模型结构。 参数估计:使用扩展最小二乘(ELS)或受限扩展最小二乘(RELS)计算模型参数。 模型验证:通过残差分析和相关系数评估模型性能。 静态模型仿真:生成静态响应并模拟各种输入条件下的系统行为。 方法概述: 该类包括支持识别过程的几种方法: generateCandidateTerms:构造一个用于系统特征描述的候选术语矩阵。 detectStructure:应用算法精确识别模型结构。 estimateParameters ELS:使用扩展最小二乘法估计动态模型参数。 estimateParameters RELS:使用受限扩展最小二乘法计算参数。 validateModel:分析模型准确性并验证残差行为。 buildStaticResponse:模拟静态模型对不同输入的响应。 displayModel:以文本和面板格式显示已识别的动态模型。 displayStaticModel:展示静态模型及其仿真结果。
recommend-type

COMSOL变压器模型:时域与频域分析及磁致伸缩、噪声和洛伦兹力的多物理场仿真

内容概要:本文详细介绍了如何使用 COMSOL Multiphysics 对变压器进行时域和频域分析,探讨了磁致伸缩、噪声和洛伦兹力的影响。文中通过具体的代码示例展示了如何设置时域和频域的边界条件,定义磁致伸缩系数,计算洛伦兹力,并通过多物理场耦合模拟变压器的振动和噪声。此外,还讨论了一些常见的仿真技巧和注意事项,如相位对齐、材料非线性特性和边界条件设置等。 适合人群:从事电力系统研究、变压器设计和仿真的工程师和技术人员。 使用场景及目标:适用于希望深入了解变压器内部物理机制及其对外界因素响应的专业人士。通过掌握这些方法,可以优化变压器设计,减少噪声,提升电力系统的稳定性和可靠性。 其他说明:文章不仅提供了理论背景,还给出了实用的代码片段和仿真技巧,帮助读者更好地理解和应用 COMSOL 进行变压器建模。
recommend-type

QtAV 1.12.0版本发布:Qt音视频编程核心更新

标题“QtAV-1.12.0.tar.gz”指出我们正在讨论的文件是一个压缩包,其文件名为QtAV-1.12.0,其中包含了QtAV的源代码。QtAV是一个基于Qt框架开发的音视频处理库,版本号为1.12.0。在深入介绍之前,有必要先简要了解一下Qt和QtAV的基础知识。 Qt是一个跨平台的C++应用程序框架,由Trolltech公司开发。Qt用于开发GUI应用程序,同时也广泛用于开发非GUI程序,例如命令行工具和服务器。Qt最显著的特点是其跨平台能力,它能够在各种操作系统上运行,包括但不限于Linux、Windows、Mac OS X、Android和iOS。Qt支持多种编程语言,其中C++是官方支持的最佳方式。 QtAV则是建立在Qt框架上的一个音视频播放和处理库,它利用了Qt的跨平台能力,为开发者提供了一个简单而强大的音视频处理解决方案。QtAV 1.12.0作为版本号,表示这是该库的一个具体版本。 在介绍QtAV之前,我们先梳理下标题和描述中提到的几个重要概念: 1. **基于Qt的音视频代码**: 这意味着QtAV是使用Qt框架来构建的,它会利用Qt的信号和槽机制、事件处理、图形界面设计等特性。开发者可以借助Qt的这些特性来实现复杂的音视频处理应用。 2. **音视频处理**: 音视频处理涵盖从简单的媒体文件播放到复杂的音视频流处理、编辑、转换和输出的完整范畴。一个成熟的音视频处理库通常需要支持多种音视频格式和编解码器,处理视频渲染,以及实现各种音视频效果。 3. **QtAV-1.12.0.tar.gz**: 这个压缩包包含了QtAV库的源代码,对于开发者来说,这是一个可以编译、定制和扩展的代码集合。使用tar.gz格式打包意味着它是一个Linux或Unix系统下的压缩文件,通常可以通过命令行工具来解压缩和管理。 4. **【压缩包子文件的文件名称列表】**: 这里虽然只提供了一个文件名"QtAV-1.12.0",但它指明了压缩包中包含了哪些内容。在解压缩后,开发者可以期待找到源代码文件、可能的文档、构建脚本以及其他必要的资源文件。 在QtAV-1.12.0中,你可能会找到如下的文件结构和内容: - **构建系统文件**:Qt使用qmake作为其主要的构建系统,QtAV项目会提供相应的.pro文件,用于定义如何编译和链接整个项目。 - **源代码文件**:项目的主要源代码文件,通常以.cpp和.hpp(或.h)结尾,分别包含C++源代码和头文件。 - **资源文件**:可能包括QML文件、图像、音频、视频或其他媒体资源,QtAV可以用来演示如何在应用程序中使用这些资源。 - **文档**:可能包括README文件、API文档、开发者指南等,用于说明如何使用QtAV库。 - **测试文件**:为了确保库的稳定性,QtAV可能包括一套自动化测试用例,以便在开发过程中进行功能和性能测试。 QtAV项目的具体内容和结构可能会随着版本的更新而发生变化,但总体上会保持类似上述的文件组织方式。 从技术角度看,QtAV 1.12.0版本将包含许多改进和新特性,例如: - **支持更多的音视频格式**:QtAV能够处理广泛流行的音视频格式,例如MP4、AVI、MKV、FLV等。 - **集成现代编解码器**:为提高播放质量和减少资源消耗,QtAV可能集成了如H.264, H.265, VP8等现代编解码器。 - **性能优化**:随着时间的发展,QtAV可能对视频渲染性能和音频处理进行了优化,改善了播放时的流畅性和响应速度。 - **接口和API的更新**:为了简化开发流程,QtAV可能更新了其API,使其更加直观易用,同时保持与Qt框架的无缝集成。 - **跨平台支持**:作为Qt项目的一部分,QtAV致力于在不同的操作系统上提供一致的体验,因此它可能支持了新的操作系统或对已有系统的支持做了优化。 - **文档和示例**:为了帮助开发者学习如何使用QtAV,新版本可能添加了更完整的文档和示例代码。 QtAV适用于多种音视频应用场景,从简单的播放器到复杂的媒体处理程序。例如,开发者可以使用QtAV快速搭建一个视频播放器应用,也可以使用它的媒体处理功能实现视频剪辑和格式转换等高级功能。 总而言之,QtAV-1.12.0.tar.gz文件代表了一个强大的开源库,它能够极大简化在基于Qt的项目中处理音视频内容的复杂性,提供给开发者一个稳定、高效的音视频处理解决方案。对于那些想要在他们的应用程序中加入丰富多媒体体验的开发者来说,QtAV是一个值得探索的项目。
recommend-type

集成电路制造中的互扩散效应分析:理论与实验的融合

# 摘要 互扩散效应是影响集成电路性能的关键因素之一,涉及材料中的物质如何通过扩散过程影响彼此的分布和浓度。本文首先概述了互扩散效应的基本理论,
recommend-type

HC05AT指令

<think>好的,用户现在想查找HC-05蓝牙模块的AT指令列表及使用方法,并且可能与STM32单片机通信相关。我需要结合之前的对话和用户提供的三个引用内容来回答这个问题。 首先,用户之前询问了STM32的串口通信,现在转向HC-05的AT指令,可能是在项目中需要将STM32通过蓝牙模块与其他设备通信。用户需要具体的AT指令列表和使用方法,特别是与STM32配合使用的部分。 根据引用内容,用户提供的三个引用都涉及HC-05的AT指令配置,包括主从设置、配对方法、波特率调整等。需要将这些信息整合,并补充一些常见的AT指令,比如查询名称、地址,设置密码等。同时,用户可能需要知道如何在STM3
recommend-type

泡泡堂单机版模拟源代码完整解析

从给定的文件信息中,我们可以提炼出一系列相关的知识点,围绕“泡泡堂单机版[模拟] 源代码”进行展开。以下内容将详细介绍涉及到的关键概念和技术点。 ### 知识点1:游戏编程基础 游戏编程是计算机编程领域的一个分支,专注于开发视频游戏和游戏引擎。游戏程序员使用多种编程语言和游戏开发框架来创建游戏。在该文件提供的信息中,“源代码”表示实现“泡泡堂单机版”游戏功能的原始程序文本。 - **控件(Controls)**:在游戏编程中,控件通常指的是用户界面元素,如按钮、文本框等,它们允许玩家与游戏进行交互。在“泡泡堂单机版”中,可能会使用到的控件包括角色控制按钮、地图选择器、得分板等。 - **游戏引擎**:游戏引擎是用于创建视频游戏的一套软件组件,通常包括图形渲染、物理模拟、声音播放等功能模块。文件中的“源码”可能是基于某款特定游戏引擎开发的,例如DirectX Graphics(DXG)。 ### 知识点2:DirectX和游戏开发 在文件中提到了“gameRes.dxg”和“dxgEdit.exe”,这些文件名暗示了可能用到了DirectX图形(DXG)技术。 - **DirectX**:DirectX是微软开发的一系列用于处理多媒体内容(包括图形、声音、输入设备等)的API集合。它为游戏开发提供了丰富的功能,特别是图形渲染能力。 - **dxgEdit.exe**:这很可能是一个使用DirectX图形技术开发的工具程序,用于编辑游戏资源,例如游戏中的地图、角色、动画等。 ### 知识点3:游戏模拟 “模拟”这一术语表明所讨论的“泡泡堂单机版”是一个模拟了原始网络游戏“泡泡堂”游戏体验的单机游戏。 - **单机游戏与网络游戏**:单机游戏是指不需要网络连接即可独立运行的视频游戏。而网络游戏则需要玩家通过互联网连接进行互动。模拟原始网络游戏的一个挑战是准确地重现多人在线环境下的互动体验。 ### 知识点4:资源管理 资源管理在游戏开发中至关重要,指的是对游戏运行所需的所有非代码元素的组织、加载和维护。 - **gameRes.dxg**:这个文件可能包含了游戏资源,例如图像、音效、关卡设计等,它们都是游戏体验不可或缺的一部分。 - **地图编辑器(Map Editor)**:一个专门用于创建和编辑游戏地图的工具。在文件名“bnb2MapEditor.dpr”中,DPR可能指的是一种Delphi项目文件,说明该编辑器可能是用Delphi语言编写的。 ### 知识点5:开发文档和日志 - **开发日志.txt**:这是记录游戏开发过程中每个阶段的详细信息,包括遇到的问题、解决方案、设计决策等。开发日志对于理解程序架构和代码结构非常重要。 - **2ccc.com.nfo**:这可能是一个包含项目相关信息的NFO文件,NFO文件通常用于提供版权声明、注册信息、技术支持等。 ### 知识点6:文件和数据管理 - **res文件夹**:通常在软件开发中,存放资源文件的目录命名为res,用于放置程序运行时所需要的静态数据,如图片、声音文件、文本文件等。 - **游戏执行文件**:列表中的“单机泡泡.exe”和“地图编辑器.exe”是程序的可执行文件,分别用于运行游戏和编辑器。 ### 结论 通过分析文件信息,我们可以得知“泡泡堂单机版[模拟] 源代码”涉及了游戏编程、资源管理、DirectX图形技术、模拟开发和文件数据管理等领域的知识。此文件集合包含的游戏代码、编辑器、资源和文档,共同构成了一个游戏项目的完整开发资料。对于游戏开发者而言,这些资源不仅有助于理解游戏的具体实现,而且可以作为学习和参考的宝贵资料。
recommend-type

外延工艺改进:提升集成电路制造效率的秘籍

# 摘要 集成电路制造是现代电子工业的基石,而外延工艺作为其核心环节,对于集成电路的性能和质量具有决定性作用。本文综述了集成电路外延工艺的理论基础、实践技术及优化策略,并探讨了制造效率提升的途径。通过对外延层生长机制、技术分类及其质量评估方法的分析,深入讨论了提升外延层均匀性和缩短工艺周期的技术手段。此外,本文还讨论了新兴技术对外延工艺的影响,行业
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部