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

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series

摘要

  • 这段文字介绍了一个名为TS2Vec的通用框架,用于学习时间序列数据的表示,可以在任意语义层次上进行。与现有方法不同,TS2Vec通过对增强的上下文视图进行层次化的对比学习,这使得每个时间戳都能获得一种稳健的上下文表示。此外,为了获取时间序列中任意子序列的表示,我们可以简单地对相应时间戳的表示进行聚合。

  • 为了评估时间序列表示的质量,研究者进行了广泛的时间序列分类任务实验。结果显示,TS2Vec在125个UCR数据集和29个UEA数据集上,相较于现有的无监督时间序列表示方法取得了显著的提升。学到的时间戳级别表示也在时间序列预测和异常检测任务中获得了优越的成绩。一个在学习到的表示基础上训练的线性回归模型,其性能超过了之前时间序列预测的最好结果。进一步地,研究者展示了一种简单的方法,用于将学习到的表示应用于无监督异常检测,并在文献中设定了新的最佳结果。此外,相关源代码已经公开在GitHub上供大家使用。

Introduction

  • 时间序列的重要性:时间序列数据在多个领域内扮演着核心角色,能够帮助进行预测和模型构建。

  • 现有研究的局限:许多研究专注于学习整体的实例级表示,这对于聚类和分类等任务非常有效。然而,对于需要细粒度表示的任务,如时间序列预测和异常检测,这些表示可能不够充分。

  • 对比损失的使用:最近的研究开始使用对比损失来学习时间序列的内在结构,但现有方法仍然存在限制,例如不能区分不同粒度的多尺度上下文信息。

  • 多尺度特征的重要性:尺度不变的信息是时间序列任务成功的关键,但少数现有方法考虑到了这一点。多尺度特征能提供不同层次的语义,并改善学到的表示的泛化能力。

  • 领域偏差的问题:现有无监督时间序列表示方法多受计算机视觉和自然语言处理领域的启发,这些领域的假设(如变换不变性)可能不适用于时间序列建模。

  • TS2Vec框架的贡献:为了解决这些问题,提出了TS2Vec框架,它利用层次化对比学习在不同时间维度上区分正负样本,通过对应时间戳的最大池化来获取任意子序列的整体表示,从而能在多个分辨率捕捉时间数据的上下文信息,并生成任何粒度的细粒度表示。此外,TS2Vec的对比目标基于增强的上下文视图,以确保相同子序列在不同上下文中的表示一致性

论文的主要贡献

  • 提出TS2VEC框架:作者提出了一个统一的框架,TS2VEC,用于学习时间序列任意子序列的上下文表示,覆盖各种语义,这是首次提出的一种通用的表示方法,适用于时间序列领域的所有任务,包括但是不限于分类,预测和异常检测
  • 创新设计:
    • 层次化的对比方法:为了捕获多尺度的上下文信息,TS2VEC采用一个实力层面和时间维度上的层次化对比方法,这种方法有助于更准确地反映时间序列数据的内在结构和动态变化
    • 上下文一致性的正样本选择:和TS2VEC提出上下文一致性的概念来选择正样本,这对于具有多样分布和尺度的时间序列数据来说更合适,通过实验证明,该方法对于具有缺失值的时间序列具有较高的鲁棒性,而且通过剖析研究验证了层次化对比和上下文一致性的有效性
    • TS2Vec在三个基准时间序列任务(分类、预测和异常检测)上超越了现有的最佳方法。例如,在125个UCR数据集上平均提高了2.4%的准确率,在29个UEA数据集上提高了3.0%

Method

定义

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模型架构

  • 架构概述:TS2Vec框架的核心是通过编码器从输入时间序列中提取表示,该过程涉及时间对比损失和实例对比损失的联合优化。整体目标是通过层次化框架在多个尺度上求和总损失,以增强不同子序列间的一致性
  • 编码器组成:
    • 输入投影层:这是一个全连接层,负责将观测到的每一个时间戳xi,t的数据映射到高维潜在向量Zi,t
    • 时间戳掩蔽模块:该模块再随机选择的时间戳处掩蔽潜在向量,生成增强的上下文视图,选择掩蔽潜在向量而不是原始值是因为时间需里的值范围可能是无界的,难以为原始数据找到一个特殊的标记
    • 扩张卷积神经网络:包括是个残差块,每一个快包含两层一维卷积层,具有扩张参数,扩张卷积通过增加感受野来加强对不同领域的表达能力
  • 操作机制:通过这些组件,TS2VEC能够处理和分析输入时间序列,抽取每一个时间戳处的上下文表示,

正样本对构建

  • 正样本对的构建:
    • 子序列一致性:鼓励时间序列的表示和采样子序列的表示更接近
    • 时间一致性:通过选择相邻段作为正样本来强制表示的局部平滑性
    • 变换一致性:通过对输入序列应用不同的变换,来促使模型学习到不变性表示
    • 子序列一致性存在水平位移时受到影响
    • 时间一致性在出现异常时导致假的正样本的问题
  • 上下文一致性策略
    • 将两个增强上下文中相同时间戳的视为正样本,通过使用时间戳掩蔽和随机裁剪来生成上下文
    • 优势:掩蔽和裁剪不会改变时间序列的幅度,这对时间序列分析比较重要,这些分析通过强制每一个时间戳在不同上下文中重建自己,一高学习表示的鲁棒性
    • 在训练阶段,随机掩蔽实例的时间戳来产生新的上下文视图。具体而言,掩蔽在输入投影层后得到的潜在向量,使用二元掩码(从伯努利分布中独立采样,p=0.5)沿时间轴进行。
    • 随机裁剪:同样在训练阶段使用,随机选择两个重叠的时间段,确保在重叠部分的上下文表示一致。随机裁剪有助于学习位置不敏感的表示,避免表示塌陷
  • 上下文一致性策略为时间序列的对比学习提供了一种有效的正样本对构建方式,有助于提升模型的泛化能力和鲁棒性

层次换对比损失的计算过程

  • 层次换对比损失旨在使得编码器能够在多种尺度上学习表示

  • 层次化对比损失的计算过程

    • 初始化损失:计算输入r和参考输入r0之间的对比损失Ldual(r,r0)
    • 迭代最大池化:
      • 在时间轴上对r和ro进行最大池化,使用的核大小是2,这一步骤逐渐降低时间序列的时间维度,从而在更高的语义层次上对时间序列进行编码
      • 在每一次池化过后,重新计算这两个池化之后的表示之间的对比损失,并且累加到总存世Lhier
      • 归一化损失:完成所有池化步骤之后,将累计的损失除以池化次数d,以得到平均化的层次对比损失
  • 对比其他工作:

    • 与T-Loss比较:仅仅在实例层面执行对比,没有考虑时间戳层面的对比
    • 与TS-TCC对比:TS-TCC仅仅在时间戳层面上执行对比,没有涵盖更高的语义层次
    • 与TNC比较:TNC鼓励在特定粒度层面上的时间局部平滑性,但是没有想TS2VEC封装不同层次的表示
  • 通过结合实例级和时间级的对比损失,TS2Vec的模型能够更好地编码时间序列的分布,这在所有的粒度层面上进行

两种对比损失

  • 时间对比损失

    • 专注于时间序列的同一个时间戳上面,从两个不同的视角的表示作为正样本,而不同的时间戳的表示作为负样本
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 实例对比损失

    • 实例对比损失在时间戳t上面,将来自同一时间序列的不同实例的表示作为负样本

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 综合这两种损失,时间对比损失帮助模型学习时间动态,而实例对比损失帮助模型区分不同实例之间的差异

实验

分类

  • 数据集:使用UCR归档(128个单变量数据集)和UEA归档(30个多变量数据集)进行评估。
  • 对比方法:TS2Vec与其他几种无监督时间序列表示学习方法进行比较,包括T-Loss、TS-TCC、TST和TNC
  • 性能提升:TS2Vec在UCR和UEA数据集上都显示出了显著的改进。具体来说,在125个UCR数据集上平均提高了2.4%的分类准确率,在29个UEA数据集上提高了3.0%。
  • 统计测试:通过使用Nemenyi测试的Critical Difference图来展示不同分类器在所有数据集上的平均排名情况,验证了TS2Vec在平均排名上显著优于其他方法。
  • 训练时间:在NVIDIA GeForce RTX 3090 GPU上,TS2Vec显示出了所有方法中最短的训练时间。这得益于其在一个批次内跨不同粒度应用对比损失,大大提高了表示学习的效率

时间预测

  • 数据集和比较模型:TS2Vec的性能与现有的SOTA方法在四个公开数据集上进行了比较,包括三个ETT数据集和Electricity数据集。比较的模型包括Informer, LogTrans, LSTnet, TCN(适用于单变量和多变量设置),N-BEATS(仅单变量设置),以及StemGNN(仅多变量设置)。
  • 评估指标:使用均方误差(MSE)和平均绝对误差(MAE)来评估预测性能。详细的预测结果(单变量和多变量预测的MSE和MAE)由于篇幅限制在附录中报告
  • 性能提升:TS2Vec在多数情况下建立了新的SOTA,平均MSE在单变量设置下降了32.6%,在多变量设置下降了28.2%。
    表示的通用性:学习到的表示只需为每个数据集学习一次,便可以直接应用于不同的预测范围 H,这通过线性回归模型实现,展示了学习表示的通用性。
  • 效率对比:在使用NVIDIA GeForce RTX 3090 GPU时,TS2Vec的训练和推断时间与Informer进行了比较。TS2Vec在训练阶段包括两个步骤:学习时间序列表示和为每个 训练一个线性回归器。推断阶段也包括两个步骤:对应时间戳的表示推断和通过训练好的线性回归器进行预测。TS2Vec的表示模型只需训练一次即可适用于不同的预测范围,无论是在训练还是推断阶段,TS2Vec都展示了优于Informer的效率。

检测

  • 在异常检测任务中,目标是判断时间序列中最后一个点xt是否为异常
  • TS2Vec通过比较掩蔽与未掩蔽输入得到的表示之间的差异来定义异常得分
  • 具体操作是:对于一个输入序列,TS2VEC会进行两次前向传播:第一次掩蔽最后一个观测值xt,第二次不进行掩蔽
  • 实验设置:每个时间序列样本按时间顺序分为两半,前半部分用于无监督训练,后半部分用于评估。
  • 性能比较:在正常设置中,TS2Vec在Yahoo数据集上的F1得分提高了18.2%,在KPI数据集上提高了5.5%。在冷启动设置中,F1得分在Yahoo数据集上提高了19.7%,在KPI数据集上提高了1.0%

消融实验

  • 验证不同组件的有效性进行的实验设计和结果

    • 不包含时间对比损失
    • 不包含实例对比损失
    • 不包含层次对比
    • 不适用随机裁剪
    • 不适用时间戳掩蔽
    • 不包含输入投影曾
  • 比较正样本对选择策略

    • 时间一致性:将一定距离内的时间戳作为正样本
    • 子序列一致性:随机选取同一时间序列的两个子序列作为正样本
  • 实验中还尝试将数据增强技术(如抖动、缩放和置换)应用于输入时间序列的不同视图。这些增强假设时间序列数据遵循某些不变性,但在多样化且不断变化的时间序列分布中,这种假设并不成立,因此增加这些增强后观察到性能下降。

  • 最后,为了验证模型架构的选择,研究者将扩张卷积神经网络(Dilated CNN)替换为LSTM和Transformer(参数大小相当)。结果显示,无论是LSTM还是Transformer,准确率都显著下降,证明了扩张CNN是处理时间序列的有效架构选择

缺失数据的鲁棒性

  • 时间戳掩蔽:这一策略使得网络能够在不完整的上下文中推断出表示,相当于在训练过程中模拟了缺失数据的情况,从而增强了模型对实际缺失情况的适应性。
  • 层次对比:此策略引入了长距离信息,帮助模型在周围信息不完整的情况下预测缺失的时间戳,这对于处理大量缺失值至关重要

总结

  • 层次化对比学习:TS2Vec采用层次化对比学习方法,能够在不同的尺度上捕捉和学习时间序列的关键特征,这种方法通过处理增强的上下文视图来学习尺度不变的表示。
  • 时间序列分类:通过将时间序列映射到有意义的空间中,TS2Vec改进了时间序列数据的分类准确性。
  • 时间序列预测:TS2Vec提供了有效的表示,这些表示有助于预测未来的时间序列值。
  • 异常检测:框架能够识别时间序列中的异常点,这对于许多实际应用如故障检测非常重要。
  • 数据的不完整性:在处理不完整数据时,TS2Vec展示了稳定的性能,其中层次化对比损失和时间戳掩蔽是保持性能的关键因素
  • 表示的可视化:通过可视化学习到的表示,验证了TS2Vec捕捉时间序列动态的能力。这种可视化有助于更好地理解模型如何处理和解释时间数据

相关文章:

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series 摘要 这段文字介绍了一个名为TS2Vec的通用框架,用于学习时间序列数据的表示,可以在任意语义层次上进行。与现有方法不同,TS2Vec通过对增强的上下文视图进行层次化…...

windows驱动开发-DMA技术(一)

DMA(Direct Memory Access)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载,否则CPU 需要从设备缓存中把每一页的数据复制到缓存中,然后把它们再次写入到新的地方,在这个过…...

实用的Chrome命令

以下是一些实用的Chrome命令及其用途: --allow-outdated-plugins:允许浏览器使用过期的插件,这在开发过程中可能会用到,以便测试兼容性。chrome://downloads:打开Chrome的下载页面,查看和管理你的下载文件…...

数据库(MySQL)基础:约束

一、概述 1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2.目的:保证数据库中数据的正确、有效性和完整性。 3.分类 约束描述关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该字段的所有数据都是唯一…...

ControlNet作者放大招!IC-Light:控制生成图片光照效果!

ControlNet作者张吕敏近日又开源了一项新的工作:IC-Light (Impose Constant Light),在不改变图片内容的条件下,可以控制生成图片的光照效果。 作者发布了两种类型的模型:文本条件重打光模型和背景条件重打光…...

【Java】Java中类的初始化顺序(静态方法,静态块,非静态块,最后有流程图)

📝个人主页:哈__ 期待您的关注 目录 一、无继承关系类的初始化 1、静态变量k被初始化 2、静态变量t1初始化 3、静态变量 t2初始化 4、静态变量i初始化 5、静态变量n初始化 6、静态块初始化 7、非静态块初始化 8、非静态属性初始化 9、执行构造…...

在RK3588开发板使用FFMpeg 结合云服务器加SRS实现摄像头数据推流到云端拱其他设备查看

今天测试了一把在开发板把摄像头数据推流到云端服务器,然后给其他电脑通过val软件拉取显示摄像头画面,浅浅记录一下大概步骤 1.开发板端先下载ffmpeg apt install ffmpeg2.云服务器先安装SRS的库 云服务器我使用ubuntu系统,SRS是个什么东西&…...

elasticsearch搭建教程

主要参看这里就行,需要特别注意其中报错的解决方案:搭建elasticsearch 单机节点里,按照上述教程搭建只能开放本地访问,如果需要其他机器访问,需要在elasticsearch.yml里新增几个配置: node.name: node-1 network.host…...

c++ 归并排序

归并排序是一种遵循分而治之方法的排序算法。它的工作原理是递归地将输入数组划分为较小的子数组并对这些子数组进行排序,然后将它们合并在一起以获得排序后的数组。 简单来说,归并排序的过程就是将数组分成两半,对每一半进行排序&#xff0c…...

基于vs和C#的WPF应用之动画3

注&#xff1a;1、在内部和外部使用缓动函数 <Grid.Resources> <PowerEase x:Key"powerease" Power"3" EasingMode"EaseInOut"/> </Grid.Resources> <DoubleAnimation EasingFunction"{StaticResource powerease}&quo…...

Python import 必看技巧:打造干净利落的代码结构

大家好,学习Python你肯定绕不过一个概念import,它是连接不同模块的桥梁,是实现代码复用和模块化的关键。本文将带你深入探索Python中import的原理,并分享一些实用的导入技巧。 1. import 原理 导入机制概述 在Python中,模块(module)是一种封装Python代码的方式,它允许…...

计算机视觉(CV)(Computer Vision)

计算机视觉技术&#xff08;Computer Vision&#xff09;&#xff0c;解决的是什么&#xff1f; 图片和视频是非结构化数据&#xff0c;机器如果要理解某一图片或视频表达的内容&#xff0c;是无法直接分析的&#xff0c;这种情况&#xff0c;就需要有计算机视觉技术&#xff…...

python:画折线图

import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 设置新宋体字体的路径 font_path D:/reportlab/simsun/simsun.ttf# 加载新宋体字体 prop FontProperties(fnamefont_path)""" # 读取 xlsx 文件 d…...

Spring Data JPA 与 MyBatisPlus的比较

前言 JPA&#xff08;Java Persistence API&#xff09;和MyBatis Plus是两种不同的持久化框架&#xff0c;它们具有不同的特点和适用场景。 JPA是Java官方的持久化规范&#xff0c;它提供了一种基于对象的编程模型&#xff0c;可以通过注解或XML配置来实现对象与数据库的映射…...

【C++】STL-list的使用

目录 1、list的使用 1.1 list的构造 1.2 list的遍历 1.3 list capacity 1.4 list element access 1.5 容量相关 list是一个带头双向循环链表 1、list的使用 1.1 list的构造 1.2 list的遍历 list只有两种遍历方式&#xff0c;因为没有operator[] 因为list的双向链表&am…...

进度条(小程序)

缓冲区的概念 缓冲区是内存中的一个临时存储区域&#xff0c;用来存放输入或输出数据。在标准 I/O 库中&#xff0c;缓冲区的使用可以提高数据处理的效率。例如&#xff0c;当向终端输出文本时&#xff0c;字符通常存储在缓冲区中&#xff0c;直到缓冲区满或者遇到特定条件时才…...

PyCharm安装教程(超详细图文教程)

一、下载和安装 1.进入PyCharm官方下载&#xff0c;官网下载地址&#xff1a; https://www.jetbrains.com/pycharm/download/ 专业版安装插件放网盘了&#xff0c;网盘下载即可&#xff1a;itcxy.xyz/229.html2.安装 1.下载后找到PyCharm安装包&#xff0c;然后双击双击.ex…...

金蝶BI应收分析报表:关于应收,这样分析

这是一张出自奥威-金蝶BI方案的BI应收分析报表&#xff0c;是一张综合运用了筛选、内存计算等智能分析功能以及数据可视化图表打造而成的BI数据可视化分析报表&#xff0c;可以让企业运用决策层快速知道应收账款有多少&#xff1f;账龄如何&#xff1f;周转情况如何&#xff1f…...

salmon使用体验

文章目录 salmon转录本定量brief模式一&#xff1a;fastq作为输入文件需要特别注意得地方 模式二&#xff1a; bam文件作为输入 salmon转录本定量 brief 第一点是&#xff0c;通常说的转录组分析其中有一项是转录本定量&#xff0c;这是一个很trick的说话&#xff0c;说成定量…...

Ubuntu 20.04 安装 Ansible

使用官方的 Ubuntu PPA 更新包列表&#xff1a; apt update安装软件属性常用命令 apt install software-properties-common添加 Ansible PPA 到系统&#xff1a; add-apt-repository --yes --update ppa:ansible/ansible再次更新包列表以包括新添加的 PPA&#xff1a; apt …...

TypeScript学习笔记:强类型JavaScript的优雅之旅

在前端开发领域&#xff0c;JavaScript以其灵活性和广泛的支持度成为无可争议的王者。然而&#xff0c;随着项目规模的增长&#xff0c;JavaScript的动态类型特性开始暴露出一些问题&#xff0c;比如代码的可维护性、类型错误难以提前发现等。为了解决这些问题&#xff0c;Micr…...

监控异地组网怎么组网?

监控异地组网是指在不同地域的网络环境下&#xff0c;实现对监控设备的远程访问和管理。在传统的网络环境下&#xff0c;由于网络限制和设备配置等问题&#xff0c;监控设备的远程访问往往受到一定的限制和困扰。为了解决这个问题&#xff0c;引入了天联组网技术&#xff0c;实…...

将本地托管模型与 Elastic AI Assistant 结合使用的好处

作者&#xff1a;来自 Elastic James Spiteri, Dhrumil Patel 当今公共部门组织利用生成式人工智能解决安全挑战的一种方式。 凭借其筛选大量数据以发现异常模式的能力&#xff0c;生成式人工智能现在在帮助团队保护其组织免受网络威胁方面发挥着关键作用。 它还可以帮助安全专…...

Linux的内核态和用户态

一、Linux操作系统运行在两种不同的运行模式下&#xff1a;内核态&#xff08;Kernel Mode&#xff09;和用户态&#xff08;User Mode&#xff09; 内核态&#xff08;Kernel Mode&#xff09;&#xff1a; 内核态也称为特权模式或系统模式&#xff0c;是操作系统内核执行代码…...

springboot利用Redis的Geo数据类型,获取附近店铺的坐标位置和距离列表

文章目录 GEO介绍GEO命令行应用添加地理坐标位置获取指定单位半径的全部地理位置列表springboot 的实际应用 GEO介绍 在Redis 3.2版本中&#xff0c;新增了一种数据类型&#xff1a;GEO&#xff0c;它主要用于存储地理位置信息&#xff0c;并对存储的信息进行操作。 GEO实际上…...

Vitis HLS 学习笔记--理解串流Stream(2)

目录 1. 简介 2. 极简的对比 3. 硬件模块的多次触发 4. 进一步探讨 do-while 5. 总结 1. 简介 在这篇博文中《Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER-CSDN博客》&#xff0c;我分享了关于 AXI Stream 接口的实际应用案例。然而&#xff0c;尽管文章中提供了代码示例&…...

Golang | Leetcode Golang题解之第80题删除有序数组中的重复项II

题目&#xff1a; 题解&#xff1a; func removeDuplicates(nums []int) int {n : len(nums)if n < 2 {return n}slow, fast : 2, 2for fast < n {if nums[slow-2] ! nums[fast] {nums[slow] nums[fast]slow}fast}return slow }...

uniapp自定义websocket类实现socket通信、心跳检测、连接检测、重连机制

uniapp自定义websocket类实现socket通信、心跳检测、检测连接、重连机制&#xff0c;仿vue-socket插件功能实现发送序列号进行连接检测&#xff0c;发送消息时42【key,value】格式&#xff0c;根据后端返回数据和需要接收到的数据做nsend与onSocketMessage的修改 //使用socket…...

Hive UDTF之explode函数、Lateral View侧视图

Hive UDTF之explode函数 Hive 中的 explode() 函数是一种用于处理数组类型数据的 User-Defined Table-Generating Function (UDTF)。它将数组拆分成多行&#xff0c;每个数组元素对应生成的一行数据。这在处理嵌套数据结构时非常有用&#xff0c;例如处理 JSON 格式的数据。 …...

智慧公厕打造智慧城市新标杆

公共厕所作为城市基础设施的重要组成部分&#xff0c;直接关系到市民的生活品质和城市形象。传统的公厕管理方式存在着许多问题&#xff0c;如环境脏乱、清洁不及时等&#xff0c;给市民带来了诸多不便和不满。而智慧公厕作为一种全新的管理模式&#xff0c;通过物联网、大数据…...

上海市工商网站官网/免费拓客软件

使用范围&#xff1a; OA、MIS、ERP等信息管理类的项目&#xff0c;暂时不考虑网站。 遇到的问题&#xff1a; 完成一个项目&#xff0c;往往需要引用很多js文件&#xff0c;比如jQuery.js、easyUI等。还有自己写的一些列js文件&#xff0c;那么这些文件如何方便的加载&#xf…...

做公司网站棋牌/购买友情链接

今天说说以***者的角度去谈谈服务器被干掉后&#xff0c;我们该做的哪些防护和检查工作&#xff0c;高手的话都比较熟悉系统加固和安全的问题&#xff0c;对于我等初学者来说&#xff0c;没有做过从事过安全方面工作&#xff0c;所以只能从***者的角度去说说相对立的工作。因为…...

深圳律师网站建设/网络推广优化是干啥的

转载于:https://www.cnblogs.com/bokeyuan11/p/9183990.html...

网站建设规划书模板/重庆高端品牌网站建设

题目描述 伦敦奥运会要到了&#xff0c;小鱼在拼命练习游泳准备参加游泳比赛&#xff0c;可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。这一天&#xff0c;小鱼给自己的游泳时间做了精确的计时&#xff08;本题中的计时都按24小时制计算&#xff09;&#xff0c;它发现自己…...

天津综合网站建设商店/360优化大师下载安装

0、写在前面的话关于索引的内容本来是想写的&#xff0c;大概收集了下资料&#xff0c;发现并没有想象中的简单&#xff0c;又不想总结了&#xff0c;纠结了一下&#xff0c;决定就大概写点浅显的&#xff0c;好吧&#xff0c;就是懒&#xff0c;先挖个浅坑&#xff0c;以后再挖…...

携程网站建设目的/在哪个平台做推广比较好

简介&#xff1a;SaltStack是 一个服务器基础架构集中化管理平台&#xff0c;具备配置管理、远程执行、监控等功能&#xff0c;一般可以理解为简化版的puppet和加强版的func。SaltStack基 于Python语言实现&#xff0c;结合轻量级消息队列&#xff08;ZeroMQ&#xff09;与Pyth…...