本文是对《Deep Learning for Anomaly Detection: A Review》的文字部分翻译,图表请参看原文。

深度学习进行异常检测:综述

  • 摘要
  • 1 引言
  • 2 异常检测:问题复杂性和挑战
    • 2.1 主要问题复杂性
    • 2.2 深度异常检测面临的主要挑战
  • 3 解决深度异常检测的挑战
    • 3.1 前言
    • 3.2 深度异常检测的分类
  • 4 用于特征提取的深度学习
  • 5 常态性的特征表示学习
    • 5.1 特征学习的一般常态
    • 5.2 异常度量独立特征学习
  • 6 端到端异常得分学习
    • 6.1 排序模型
    • 6.2 先验驱动模型
    • 6.3 软最大似然模型
    • 6.4 端到端一类分类
  • 7 算法和数据集
    • 7.1 代表性算法
    • 7.2 真实异常数据集
  • 8 结论与未来的机遇
    • 8.1 探测异常监控信号
    • 8.2 深度弱监督异常检测
    • 8.3 大规模正态学习
    • 8.4 复杂异常的深度检测
    • 8.5 可解释和可操作的深度异常检测
    • 8.6 新的应用与设置

摘要

异常检测,也称为离群点检测或新颖性检测,几十年来一直是各个研究社区中一个持久而活跃的研究领域。仍然存在一些独特的问题复杂性和挑战,需要采用先进的方法。近年来,支持深度学习的异常检测,即深度异常检测,已成为一个关键方向。本文以全面的分类法综述了深度异常检测的研究,涵盖了三个高级类别和11个细粒度类别的方法的进展。我们回顾了他们的主要动机、目标函数、基本假设、优势和劣势,并讨论了他们如何应对上述挑战。我们进一步讨论了一系列可能的未来机遇和应对挑战的新视角。

1 引言

异常检测,也称为离群点检测或新颖性检测,被称为检测与大多数数据实例显著偏离的数据实例的过程。几十年来,异常检测一直是一个活跃的研究领域,早期勘探可追溯到20世纪60年代。由于风险管理、合规性、安全、金融监控、健康和医疗风险以及人工智能安全等日益增长的需求和广泛领域的应用,异常检测发挥着越来越重要的作用,在包括数据挖掘、机器学习、计算机视觉和统计学在内的各个领域都得到了突出的应用。近年来,深度学习在学习高维数据、时间数据、空间数据和图形数据等复杂数据的表达特征方面显示了巨大的能力,突破了不同学习任务的界限。用于异常检测的深度学习,简称深度异常检测,旨在通过神经网络学习特征表示或异常分数,以便进行异常检测。已经引入了大量深度异常检测方法,证明在解决各种现实应用中的挑战性检测问题方面,其性能明显优于传统异常检测。这项工作旨在全面综述这一领域。我们首先讨论异常检测的问题性质和主要尚未解决的挑战,然后系统地回顾当前的深度方法及其解决这些挑战的能力,最后提出了一些未来机会。
作为一个热门领域,许多研究致力于异常检测技术的分类和综述。然而,它们都只关注传统的异常检测方法。与我们密切相关的一项工作是[26]。它很好地总结了深度异常检测的许多实际应用,但仅提供了技术选择类别的一些非常高层次的概述,从中很难(如果不是不可能)了解当前方法所采用的手段及其基本直觉。相比之下,本综述描述了当前深度检测方法的制定,以获得关于其直觉、内在能力和弱点的关键见解,从而解决异常检测中一些基本上未解决的挑战。这形成了对问题本质和最新技术的深刻理解,并带来了真正的开放机会。这也有助于解释为什么我们需要深度异常检测。
总之,这项工作做出了以下五大贡献:
问题性质和挑战。我们讨论了异常检测背后的一些独特问题复杂性,以及由此产生的基本上未解决的挑战。
分类和表述。我们将当前的深度异常检测方法归纳为三个原则框架:用于一般特征提取的深度学习、正常性的学习表示和端到端异常得分学习。基于11个不同的建模视角,提出了一种层次分类法来对这些方法进行分类。
全面的文献综述。我们回顾了几个相关社区的主要会议和期刊上的大量相关研究,包括机器学习、数据挖掘、计算机视觉和人工智能,以对研究进展进行全面的文献综述。为了提供深入的介绍,我们描述了基本假设、目标函数、关键直觉及其通过所有类别的方法解决上述挑战的能力。
未来机会。我们进一步讨论了一系列可能的未来机遇及其对应对相关挑战的影响。
•源代码和数据集。我们收集了几乎所有类型方法的公开可访问源代码,以及大量具有真实异常的真实数据集,以提供一些经验比较基准。

2 异常检测:问题复杂性和挑战

由于其独特的性质,异常检测呈现出与大多数分析和学习问题和任务不同的问题复杂性。本节总结了复杂异常数据中固有的复杂性和未解决的检测挑战。

2.1 主要问题复杂性

与大多数、规则或明显模式的问题和任务不同,异常检测处理少数、不可预测/不确定和罕见事件,导致所有(深度和浅层)检测方法的一些独特问题复杂性:
未知性。异常与许多未知因素有关,例如,具有未知突变行为、数据结构和分布的实例。在实际发生之前,如新的恐怖袭击、欺诈和网络入侵,它们仍然未知。
异构异常类别。异常是不规则的,因此,一类异常可能表现出与另一类异常完全不同的异常特征。例如,在视频监控中,异常事件抢劫、交通事故和入室盗窃在视觉上有很大不同。
稀有性和类别不平衡。异常通常是罕见的数据实例,与通常占数据绝大部分的正常实例相反。因此,即使不是不可能,也很难收集大量标记的异常实例。这导致在大多数应用中无法获得大规模标记数据。类别不平衡也是由于异常的错误分类通常比正常实例的成本高得多。
各种类型的异常。已经探索了三种完全不同的异常类型。点异常是指大多数其他个体情况下的异常,例如患者的异常健康指标。条件异常,又称上下文异常,也指特定上下文中的个别异常实例,即数据实例在特定上下文中是异常的,否则是正常的。在现实世界的应用中,上下文可能非常不同,例如,特定时间上下文中的突然温度下降/升高,或不寻常空间环境中的快速信用卡交易。组异常,也称为集合异常,是数据实例的子集,作为一个整体异常,而不是其他数据实例;集体异常的个体成员可能不是异常,例如,由社交网络中的假账户形成的异常密集的子图是异常集合,但这些子图中的个体节点可以与真实账户一样正常。

2.2 深度异常检测面临的主要挑战

上述复杂问题的性质导致了许多检测挑战。近年来,一些挑战,如可伸缩性像数据大小,已经得到了很好的解决,但以下问题在很大程度上尚未解决,深度异常检测可以在其中发挥一些重要作用。
CH1:低异常检测召回率。由于异常非常罕见且不均匀,很难识别所有异常。许多正常情况被错误地报告为异常,而真实但复杂的异常则被遗漏。尽管多年来引入了大量的异常检测方法,但目前最先进的方法,特别是无监督方法,仍然经常在真实数据集上产生高误报。如何减少误报并提高检测召回率是最重要但也是最困难的挑战之一,尤其是对于无法发现异常的巨大成本而言。
CH2:高维和或非独立数据中的异常检测。异常通常在低维空间中表现出明显的异常特征,但在高维空间中变得隐藏和不可见。高维异常检测一直是一个长期存在的问题。在原始特征或新构造特征的小子集所跨越的缩小的低维空间中执行异常检测是一种简单的解决方案,例如,在基于子空间的和基于特征选择的方法中。然而,在高维数据中,识别复杂(例如,高阶、非线性和异构)特征交互和耦合可能至关重要,但这仍然是异常检测的主要挑战。此外,如何保证新的特征空间为特定的检测方法保留适当的信息对于下游准确的异常检测至关重要,但由于上述未知和异常的异质性,这是一个挑战。此外,从可能相互依赖的实例(例如通过时间、空间、基于图的关系和其他相互依赖关系)中检测异常也是一项挑战。
CH3:正常/异常的数据有效学习。由于收集大规模标记异常数据的难度和成本,完全监督异常检测通常是不现实的,因为它假设正常和异常类别的标记训练数据都可用。在过去十年中,主要的研究工作集中在无监督异常检测上,不需要任何标记的训练数据。然而,无监督方法没有任何关于真实异常的先验知识。他们在很大程度上依赖于对异常分布的假设。另一方面,通常不难收集标记的正常数据和一些标记的异常数据。在实践中,通常建议尽可能多地利用这些易于访问的标记数据。因此,利用这些标记数据学习正常/异常的表达表示对于准确的异常检测至关重要。半监督异常检测,假设一组标记的正常训练数据,是致力于这一问题的研究方向。另一个研究方向是弱监督异常检测,它假设我们有一些异常类的标签,但类标签是部分/不完整的(即,它们不跨越整个异常类集合)、不精确的(即粗粒度标签)或不准确的(即某些给定的标签可能不正确)。两个主要挑战是如何学习具有少量标记异常数据的表达性常态/异常表示,以及如何学习被推广到给定标记异常数据所揭示的新异常的检测模型。
CH4:抗噪声异常检测。许多弱/半监督异常检测方法假设标记的训练数据是干净的,这可能容易受到错误地标记为相反类标签的噪声实例的影响。在这种情况下,我们可以使用无监督方法,但这无法利用真正的标记数据。此外,受污染和未标记数据往往存在大规模异常。抗噪声模型可以利用这些未标记数据进行更准确的检测。因此,这里的噪声可能是错误标记的数据或未标记的异常。主要的挑战是,噪声量可能与数据集显著不同,并且噪声实例可能不规则地分布在数据空间中。
CH5:检测复杂异常。现有的方法大多是针对点异常的,不能用于条件异常和组异常,因为它们表现出与点异常完全不同的行为。这里的一个主要挑战是将条件/组异常的概念纳入异常度量/模型。此外,当前的方法主要侧重于检测单个数据源的异常,而许多应用需要检测多个异构数据源(例如多维数据、图形、图像、文本和音频数据)的异常。一个主要挑战是,只有在考虑两个或多个数据源时才能检测到某些异常。
CH6:异常解释。在许多安全关键领域,如果将异常检测模型直接用作黑盒模型,可能会存在一些重大风险。例如,报告为异常的罕见数据实例可能导致对数据中呈现的少数群体的算法偏见,例如欺诈检测和犯罪检测系统中代表性不足的群体。缓解这类风险的一种有效方法是使用异常解释算法,该算法提供关于为什么特定数据实例被识别为异常的直观线索。然后,人类专家可以调查并纠正这种偏见。在某些应用中,提供这样的解释可能与检测精度一样重要。然而,大多数异常检测研究仅关注检测精度,忽略了对已识别异常的解释能力。从特定的检测方法推导异常解释仍然是一个很大程度上尚未解决的问题,特别是对于复杂模型。开发具有内在可解释性的异常检测模型也是至关重要的,但要很好地平衡模型的可解释性和有效性仍然是一个主要挑战。
深度方法可以实现整个异常检测管道的端到端优化,还可以学习专门为异常检测定制的表示。这两种能力对于解决上述六个挑战至关重要,但传统方法并不具备。特别是,它们有助于大大提高标记正常数据或某些标记异常数据的利用率,而不管数据类型如何,从而减少了对大规模标记数据的需求,如在完全监督的设置中(CH2,CH3,CH4,Ch5)。这随后导致更明智的模型,从而更好的召回率(CH1)。对于异常解释挑战,尽管深度方法通常是黑箱模型,但它们提供了将异常检测和解释统一到单个框架中的选项,从而对特定模型发现的异常进行更真实的解释(见第8.5节)。深度方法还擅长从不同类型的数据(如高维数据、图像数据、视频数据、图形数据等)中学习复杂的结构和关系。这种能力对于解决各种挑战(如CH1、CH2、CH3和CH5)非常重要。此外,它们提供了许多有效且易于使用的网络架构和原则框架,以无缝学习异构数据源的统一表示。这使得深度模型能够应对一些关键挑战,如CH3和CH5。虽然有浅层方法处理这些复杂数据,但它们通常比深度方法弱得多,适应性差。本次讨论的总结见表1。

3 解决深度异常检测的挑战

3.1 前言

深度神经网络利用可由计算图表示的线性/非线性函数的复杂组合来学习表达表示。深度学习的两个基本组成部分是激活函数和层。激活函数确定给定某些输入的计算图节点(即神经网络中的神经元)的输出。它们可以是线性或非线性函数。一些流行的激活函数包括线性、S形、tanh、ReLU(整流线性单元)及其变体。神经网络中的层是指以某种形式堆叠的一组神经元。常用的层包括完全连接的、卷积的&池化以及循环层。这些层可以用来构建不同的流行神经网络。例如,多层感知器(MLP)网络由全连接的层组成,卷积神经网络(CNN)由不同的卷积和池化层组成,和递归神经网络(RNN),例如朴素RNN、门控循环单元(GRU)和长短时记忆(LSTM),都建立在循环层之上。有关这些神经网络的详细介绍,请参见[49]。
给定一个数据集X={x1,x2,⋯,xN}\mathcal{X}=\{x_1,x_2,\cdots,x_N\}X={x1​,x2​,⋯,xN​}其中xi∈RD,x_i\in\mathbb{R}^D,xi​∈RD,让Z∈RK(K≪N)\mathcal{Z}\in\mathbb{R}^K(K\ll N)Z∈RK(K≪N)为一个表示空间,然后,深度异常检测旨在学习特征表示映射函数ϕ(⋅):X↦Z\phi(\cdot):\mathcal{X}\mapsto\mathcal{Z}ϕ(⋅):X↦Z或者异常得分学习函数τ(⋅):X↦R\tau(\cdot):\mathcal{X}\mapsto\mathbb{R}τ(⋅):X↦R,异常可以通过ϕ\phiϕ或者τ\tauτ函数很容易地与生成的空间中的正常数据实例区分开来,ϕ\phiϕ和τ\tauτ都是基于神经网络的映射函数,具有H∈NH\in\mathbb{N}H∈N个隐层及其权重矩阵Θ={M1,M2,⋯,MH}.\Theta=\{M^1,M^2,\cdots,M^H\}.Θ={M1,M2,⋯,MH}.在学习特征映射ϕ(⋅)\phi(\cdot)ϕ(⋅)的情况下,需要额外的步骤来计算新表示空间中每个数据实例的异常得分,而τ(⋅)\tau(\cdot)τ(⋅)可以直接推断原始数据输入的异常分数。更大的τ\tauτ 输出表明异常程度更大。

3.2 深度异常检测的分类

为了深入了解该领域,我们引入了一种层次分类法,从建模角度将深度异常检测方法分为三大类和11个细粒度类。这些方法的分类概述如图1所示。具体而言,深度异常检测由三个概念范式组成-用于特征提取的深度学习、正常性的特征表示学习和端到端异常得分学习。
这三种范式的过程如图2所示。如图2(a)所示,深度学习和异常检测在第一个主要类别(第4节)中完全分离,因此深度学习技术仅用作一些独立的特征提取器。这两个模块在图2(b)所示的第二个主要类别(第5节)中以某种形式相互依赖,目的是学习常态的表达表示。这类方法可以根据表示的学习方式进一步分为两个子类,即是否使用现有的浅层异常度量(例如,基于距离和聚类的度量)来指导学习。这两个子类别包含七个细粒度的方法类别,每个类别采用不同的方法来制定其目标函数。这两个模块完全统一在图2(c)所示的第三个主要类别(第6节)中,其中,这些方法专用于以端到端的方式通过神经网络学习异常分数。基于异常评分学习的公式,该类别进一步细分为四个子类别。在接下来的三节中,我们将详细回顾这三种范式。

4 用于特征提取的深度学习

这类方法旨在利用深度学习从高维和/或非线性可分离数据中提取低维特征表示,用于下游异常检测。特征提取和异常评分是完全分离的,彼此独立。因此,深度学习组件仅作为降维所用。形式上,该方法可以表示为
z=ϕ(x;Θ),(1)z=\phi(x;\Theta),\tag{1}z=ϕ(x;Θ),(1)
其中ϕ:X↦Z\phi:\mathcal{X}\mapsto\mathcal{Z}ϕ:X↦Z是一个基于深度神经网络的特征映射函数,其中X∈RD\mathcal{X}\in\mathbb{R}^DX∈RD,Z∈RK\mathcal{Z}\in\mathbb{R}^KZ∈RK,通常D≫KD\gg KD≫K。一种异常评分方法fff与特征映射ϕ\phiϕ没有关联然后应用于新空间以计算异常分数。
与异常检测中流行的降维方法如主成分分析(PCA)和随机投影相比,深度学习技术在提取语义特征和非线性特征关系方面表现出了更好的能力。
假设。深度学习模型提取的特征表示保留了有助于将异常与正常情况分离的区别信息。
一条研究路线是直接使用流行的预训练深度学习模型,如AlexNet、VGG和ResNet,来提取低维特征。在复杂高维数据(如图像数据和视频数据)中的异常检测中探索了这条线。这条线的一个有趣的工作是在线异常检测的非屏蔽框架。关键思想是迭代训练二元分类器,在滑动窗口中将一组视频帧与其后续视频帧分离,在每个迭代步骤中去除大部分鉴别特征。这类似于去掩码过程。该框架假设第一组视频帧是正常的,并评估其与后续视频帧的可分性。因此,如果随后的视频帧是异常的,则训练分类精度预期为高,否则会低。显然,去掩码框架的功能在很大程度上依赖于特征的质量,因此具有高质量特征来表示视频帧是至关重要的。在ILSVRC基准上预训练的VGG模型被证明能够有效地为此目的提取表达性外观特征。在[88]中,掩码框架被表述为两样本测试任务,以理解其理论基础。他们还表明,使用从动态更新的视频帧采样池中提取的特征可以提高框架的性能。此外,与许多其他任务类似,从源数据集上预训练的深度模型中提取的特征表示可以转移到目标数据集上的微调异常检测器。如[6]所示,一类支持向量机(SVM)可以首先用在ILSVRC上预训练的VGG模型初始化,然后进行微调,以改进MNIST数据的异常分类。类似地,在MNIST上预训练的ResNet模型可以在各种视频监控数据集中实现异常事件检测。
此类别中的另一条研究路线是显示训练深度特征提取模型,而不是下游异常评分的预训练模型。特别地,在[163]中,三个独立的自编码器网络被训练以学习用于视频异常检测的各个外观、运动和外观-运动联合表示的低维特征。三个一类SVM的集成在这些学习的特征表示中的每一个上独立地训练,以执行异常评分。与[163]类似,线性一类SVM用于对深度信念网络(DBN)产生的高维表格数据的低维表示进行异常检测。[65]中使用了无监督分类方法代替单类SVM,以实现投影空间中的异常评分。特别是,他们首先对卷积自编码器产生的视频帧的低维特征进行聚类,然后将聚类标签作为伪类标签进行一对一分类。分类概率用于定义逐帧异常分数。在图异常检测中也可以找到类似的方法,其中在潜在表示空间中使用基于无监督聚类的异常度量来计算图顶点或边的异常。为了学习图顶点的表达表示,以图顶点的一个热编码为输入,通过最小化基于自编码器的重构损失和相邻图顶点的成对距离来优化顶点表示。
优势。这种方法的优点如下。(i) 大量最先进(预训练)的深度模型和现成的异常检测器随时可用。(ii)深度特征提取比流行的线性方法提供了更强大的降维功能。(iii)鉴于深度模型和检测方法的公开可用性,易于实现。
缺点。它们的缺点如下。(i) 完全脱节的特征提取和异常评分常常导致次优的异常评分。(ii)预训练的深度模型通常限于特定类型的数据。
针对性挑战。这类方法将高维/非独立数据投影到低维空间,使现有的异常检测方法能够在更简单的数据空间中工作。低维空间通常有助于揭示隐藏的异常并减少误报(CH2)。然而,应注意,这些方法可能不会为异常检测保留足够的信息,因为数据投影与异常检测完全解耦。此外,该方法允许我们利用多种类型的特征并学习语义丰富的检测模型(例如[65、66、163]中的各种预定义图像/视频特征),这也有助于减少误报(CH1)。

5 常态性的特征表示学习

这类方法在某些方面将特征学习与异常评分相结合,而不是像上一节中那样完全解耦这两个模块。这些方法通常分为两类:一般特征学习和异常度量相关特征学习。

5.1 特征学习的一般常态

这类方法通过优化一般特征学习目标函数来学习数据实例的表示,该目标函数主要不是为异常检测而设计的,但所学习的表示仍然可以增强异常检测,因为它们被迫捕获一些关键的底层数据规则。形式上,该框架可以表示为
{Θ∗,W∗}=arg⁡min⁡Θ,W∑x∈Xℓ(ψ(ϕ(x;Θ);W)),(2)\{\Theta^*,W^*\}=\mathop{\arg\min}\limits_{\Theta,W} \sum_{x\in \mathcal{X}}\ell(\psi(\phi(x;\Theta);W)),\tag{2}{Θ∗,W∗}=Θ,Wargmin​x∈X∑​ℓ(ψ(ϕ(x;Θ);W)),(2)
sx=f(x,ϕΘ∗,ψW∗),(3)s_x=f(x,\phi_{\Theta^*},\psi_{W^*}),\tag{3}sx​=f(x,ϕΘ∗​,ψW∗​),(3)
其中ϕ\phiϕ将原始数据映射到表示空间Z\mathcal{Z}Z,ψ\psiψ由W参数化的是在Z\mathcal{Z}Z空间上操作的替代学习任务,并且专用于强制底层数据规则的学习,ℓ\ellℓ是相对于基础建模方法的损失函数,以及fff是一种利用ϕ\phiϕ和ψ\psiψ计算异常分数

Deep Learning for Anomaly Detection: A Review相关推荐

  1. Deep Learning for Anomaly Detection: A Review(翻译)

    前言 一.引言 二.异常检测:问题的复杂性和挑战 1.主要问题复杂性 2.深度异常检测所面临的主要挑战 三.用深度异常检测应对挑战 1.预备工作 2.深度异常检测方法的分类 四. 深度学习的特征提取 ...

  2. (ch9) Deep Learning for Anomaly Detection: A Survey

    Deep Learning for Anomaly Detection: A Survey https://www.researchgate.net/publication/330357393_Dee ...

  3. 【Paper】Deep Learning for Anomaly Detection:A survey

    论文原文:PDF 论文年份:2019 论文被引:253(2020/10/05) 922(2022/03/26) 文章目录 ABSTRACT 1 Introduction 2 What are anom ...

  4. 异常检测中的浅层模型与深度学习模型综述(A Unifying Review of Deep and Shallow Anomaly Detection)

    A Unifying Review of Deep and Shallow Anomaly Detection 异常检测中的浅层模型与深度学习模型综述 摘要:随着众多异常检测方法(基于生成模型,单分类 ...

  5. 变化检测综述 Deep learning for change detection in remote sensing images: comprehensive review and me

    Deep learning for change detection in remote sensing images: comprehensive review and meta-analysis ...

  6. CutPaste: Self-Supervised Learning for Anomaly Detection and Localization 全文翻译+详细解读

    CutPaste: Self-Supervised Learning for Anomaly Detection and Localization 全文翻译+详细解读 文章速览 全文翻译及详细解释 0 ...

  7. CutPaste:Self-Supervised Learning for Anomaly Detection and Localization 论文解读(缺陷检测)

    CutPaste:Self-Supervised Learning for Anomaly Detection and Localization CutPaste:用于异常检测和定位的自监督学习 文章 ...

  8. CutPaste Self-Supervised Learning for Anomaly Detection and Localization

    CutPaste: Self-Supervised Learning for Anomaly Detection and Localization 用于异常检测和定位的自监督学习 简洁版 问题:异常的 ...

  9. 【医学+深度论文:F18】2019 Robust optic disc and cup segmentation with deep learning for glaucoma detection

    18 2019 Computerized Medical Imaging and Graphics Robust optic disc and cup segmentation with deep l ...

最新文章

  1. HBase 数据导入功能实现方式解释
  2. “约见”面试官系列之常见面试题之第九十六篇之active-class是谁的属性(建议收藏)
  3. 微型计算机相关的英文文献,微型计算机控制系统--------外文文献翻译
  4. 世界首富比尔·盖茨的母亲有多厉害?
  5. linux lib目录找不到,linux中jpeglib库文件我安装了,但是我运行自己写的代码总是找不到这个库...
  6. 0923接口——练习题作业
  7. animation 先执行一次 在持续执行_FANUC机器人:先执行指令功能/后执行指令功能介绍与使用方法...
  8. windows11安装不了怎么回事,电脑如何安装win11
  9. RabbitMQ消费端自定义监听(九)
  10. 微信小程序云开发教程-小程序代码发布和上线运行
  11. java累积度分布,累积分布函数
  12. SQL注入之数据库判断
  13. 《Java核心技术36讲》读后
  14. 旅美见闻:美国贫民百姓众生相
  15. 云+社区杂货摊年终上新,定制礼盒发发发!
  16. 塑造元宇宙未来的5项技术
  17. LeetCode#2379. 得到 K 个黑块的最少涂色次数
  18. 制作apt-get本地源解决无网络情况下安装软件
  19. html无限弹窗关不掉,弹窗广告关不掉?这4种方法永久关闭电脑弹窗广告!
  20. python3 + pymysql 创建数据库

热门文章

  1. div在屏幕任意位置拖动
  2. 点阵字符和矢量字符的区别
  3. 计算机信息安全四大要素,信息安全技术题库:访问控制的基本要素包括以下( )。...
  4. 抖音最火html表白代码,抖音超火表白
  5. 如何在LaTex中输入度°
  6. lol韩服服务器满了显示什么意思,LOL韩服再次回收超级账号,“rank分出现问题,针对LPL的选手吗”...
  7. 《Sibelius 脚本程序设计》连载(十) - 1.7 关于颜色值
  8. NS2:架构(节点、链路、代理、应用层)
  9. Word2013文档打字如何设置插入模式与改写模式
  10. 导师互选系统 Alpha版冲刺总结