写在前面:
本文翻译供个人研究学习之用,不保证严谨与准确
github链接:https://github.com/WithHades/network_traffic_classification_paper
本文原文:Zeng, Y., Gu, H., Wei, W., & Guo, Y. (2019). Deep-Full-Range: A Deep Learning Based Network Encrypted Traffic Classification and Intrusion Detection Framework. IEEE Access, 7, 45182–45190. https://doi.org/10.1109/ACCESS.2019.2908225

基于深度学习的网络加密流量分类与入侵检测框架

  • 基于深度学习的网络加密流量分类与入侵检测框架
    • I. 介绍
    • II. DFR框架
      • A. 预处理过程
      • B. DFR过程
        • 1. 基于一维CNN的DFR分类器
        • 2. 基于LSTM的DFR分类器
        • 3. 基于SAE的DFR分类器
        • 4. 选择与保存
    • III. 评估
      • A. 实验装置
        • 1. 评估数据集
        • 2. 实验设置
        • 3. 评价指标
      • B. 实验结果
        • 1. 加密流量分类效率
        • 2. 入侵检测效率
    • IV. 结论

基于深度学习的网络加密流量分类与入侵检测框架

摘要
  随着网络流量多样性的迅速发展,对网络流量的理解变得更加关键和强大。以前,流量分类和入侵检测需要专家对各种流量特征和与攻击相关的特征进行繁重的分析,甚至可能需要私有信息。然而,由于特征标签和隐私协议的过时,现有的方法可能不再适应不断变化的网络环境的特点。本文提出了一种基于深度学习的轻量级流量分类和入侵检测框架,称为深度全范围(DFR)。由于深度学习,DFR能够从原始流量中学习,而无需人工干预和私人信息。在这样的框架下,我们提出的算法与使用两个公共数据集的其他最新方法进行了比较。实验结果表明,该框架不仅在加密流量分类的F1-score平均为13.49%,入侵检测的F1分平均为12.15%,而且对存储资源的要求也大大降低。

  关键词: 加密流量分类网络入侵检测深度学习端到端

I. 介绍

  准确的流量分类是网络基本任务(如提供适当的服务质量(QoS)、网络入侵检测(NID)等)的前提,然而由于以下事实,流量分类变得越来越具有挑战性。第一个是流量的丰富性性和多样性。除此之外,越来越多的应用已经开始应用安全协议,如HTTPS、SSH、SSL等,对网络流量进行加密,以保护用户的隐私;第三个事实是,一些基本信息,如流量或流量持续时间,由于隐私协议和法律的原因,现在不易获取。简单地说,如何在没有私有信息的情况下实现高质量的流量识别,对网络的安全性和服务质量有着重要的影响。
  以往的流量分类方法,如基于端口号的方法和基于数据包检测(DPI)的方法[1],由于其对加密流量的限制,不足以适应现代的流量环境。最新一代的流量分类方法是基于流量统计和机器学习(ML)的,能够同时处理加密和正常的流量,如Atli工作中使用的K近邻(KNN)和决策树(DT)。
  然而,基于ML的方法的性能在很大程度上依赖于人工设计的特性和私有的流量信息。因此极大地限制了它们的准确性和可推广性。此外,基于ML的分类方法通常需要很高的存储和计算资源,这限制了在资源受限的节点(如车辆[3]、家庭网关和移动电话。一个实时的准确的网络流量分类器是网络管理任务和NID系统的基础,因此,迫切需要一种新的分类方法。
  基于深度学习(DL)的方法的特征提取与选择是通过训练自动完成的[4]。这种特性使得基于DL的方法成为一种非常理想的流量分类方法。基于DL的方法的另一个特点是,与传统的ML方法如随机森林、支持向量机和KNN相比,DL具有更高的学习能力。因此,他们需要学习高度复杂的模式,以便在一个框架内获得比以前具有更高准确性及更多功能(如NID、关键链接分析、流量分类等)的方法。考虑到这两个特点,作为一种端到端的方法,基于DL的方法能够有效地学习原始业务和相应的未来业务之间的关系,而不需要大量的劳动和私有信息。
  本文提出了一种新的网络加密流量分类和入侵检测框架,称为深度全范围(DFR),它采用了三种深度学习算法:卷积神经网络(CNN)[5]、长短期记忆网络(LSTM)[6]和stackedauto编码器(SAE)[7]。我们打算使用CNN从空间范围了解原始流量的特征。LSTM用于从与时间相关的方面学习特征。采用SAE从编码特征中提取特征。所有这三个方面结合起来,以获得对原始输入的深入和全面的理解。DFR具有全方位的所关注的结构,能够在一个框架内对加密流量和恶意软件流量进行分类,而无需人工帮助和私有细节。由于我们的框架只会保存在当前流量环境下最有效的模型,因此与以前的方法相比,存储资源需求大幅下降。
  本文的主要工作如下:1)提出了一种轻量级的分类和入侵检测框架DFR。在两个公共数据集上对完成这两项任务的有效性进行了评估,达到了显著的改进效果。2) DFR基于三个DL模型,可以获得对原始流量的深入而全面的理解。3) DFR是一个端到端的框架,不需要太多的人的帮助和数据的私有信息。
  本文的其余部分安排如下。第II节详细说明了DFR和各部分的方法。在第III节中我们通过比较两个公共数据集上的其他最新方法来评估这个框架。最后,第IV节给出了本文的结论性意见。

II. DFR框架

  在这一部分,我们将详细说明我们提出的网络加密流量分类和入侵检测框架。DFR框架可以分为两个功能模块,如图1所示:预处理过程,DFR过程。

图1 以ML分支为中心的流量分类方法概述

  表1列出了DFR模型中使用的一些参数的符号和定义。

表1 DFR模型中参数和符号的定义

A. 预处理过程

  在此过程中,我们提出的框架将原始网络流量数据转换为IDX格式,这是我们用作以下过程输入的格式。我们预处理原始数据的原因有三个。1)来自网络的原始数据长度不同,这不是DL模型的理想输入格式。2)原始数据包含一些可能影响结果的信息,比如端口号或MAC地址。3)一个统一的格式可以为添加更多的网络应用、维护过程等后续工作铺平道路。图2展示了预处理过程的概述,包括5个步骤。

图2 预处理过程总览

  包生成是通过包捕获工具Wireshark将连续原始流量数据拆分并另存为PCAP文件的步骤[8]。我们提出的方法将捕捉所有层的双向流,在[9]中,这是进行基于深度学习的流量分类最理想的流量形式。
  流量清洗是消除流量包中干扰数据的一个步骤。这包括TCP或UDP报头和数据链路层中一些与以太网相关的数据,例如MAC地址,因为它们不用于以下过程,甚至可能损害结果。
  流量优化将删除重复文件和空文件,因为这些文件只会损害我们框架的学习能力。
  长度统一将把长度大于900字节的文件修剪为900字节,并在长度小于900字节的文件末尾添加0x00s,以将其补充为900字节。
  IDX填充生成器将这些长度均匀的PCAP文件转换为30字节×30字节的二维格式IDX文件。IDX格式是DL字段[10]中常见的文件格式,对于我们的框架来说也是理想的。如果映射到[0,1],这些文件将被视为灰度图像。在图2中,我们可以看到预处理结果是灰度图像。
  在算法1中给出了预处理过程的进一步细节。在此过程之后,生成一个充满流量图的数据集以供将来使用。

算法1 预处理过程算法

B. DFR过程

  正如在图1中展示的,DFR过程是基于三个DL模型,包括CNN、LSTM以及SAE。我们之所以在所有模型中采用L1正则化[11],是因为L1正则化能够惩罚一些权重为0,而L2做不到这一点。这有助于机器学习哪些特征与分类无关,从而获得更好的结果。我们将在下一节中根据实验结果详细说明如何选择L1正则化。

1. 基于一维CNN的DFR分类器

  我们开发了第一个基于一维CNN的加密流量分类和入侵检测识别器。到目前为止,CNN主要应用于计算机视觉领域,如图像分类、目标检测等。CNN具有很强的逐像素学习图形空间特性的能力。我们打算使用CNN来寻找有助于机器从空间范围对流量进行分类的功能。我们选择1D-CNN而不是流行的2D版本,因为原始的流量格式是按层次结构组织的序列形式,而不是图像。基于CNN的流量分类相关工作[9]表明,1D-CNN比2D-CNN有更高的精度。
  基于一维CNN的DFR分类器如图3所示。它由两个卷积层、两个Maxpooling层、两个局部响应规范化(LRN)[5]层和一个具有Softmax分类器的全连接层组成。在第一阶段,我们将把输入的数据重塑为1×900的形状,然后丢弃高度并集中处理一维数据。分类过程定义如下:
  第一卷积层用32个滤波器处理输入数据,其中每个滤波器的大小为[25,1]。每个滤波器在一次卷积运算后移动一步。卷积层的结果被输入到激活函数中。我们在一维CNN中采用了ReLU[12]激活函数,结果通过最大池处理。在每个步骤中,最大池按如下方式处理[3,1]输入:
maxpooling[x1,x2,x3]=max(x1,x2,x3)(1)maxpooling[x1, x2, x3] = max(x1, x2, x3)\tag{1}maxpooling[x1,x2,x3]=max(x1,x2,x3)(1)
  maxpooling进程的步幅是3。在第一卷积层的末尾,加入LRN层来惩罚这些异常响应或异常响应,以获得更好的泛化效果。然后输出将通过第二卷积层,该卷积层与第一卷积层相似。这两个卷积层之间的唯一区别是,第二卷积层有64个滤波器。最后,数据将通过全连接层。该层是通过在完全连接的层上应用dropout获得的。然后在基于一维CNN的DFR分类器的最后,由softmax分类器获得输出标签。softmax分类器定义如下:
y^=exp(Outj)∑exp(Outi)(2)\hat{y} = \frac{exp(Out^j)}{\sum exp(Out^i)}\tag{2}y^​=∑exp(Outi)exp(Outj)​(2)
  OutjOut^jOutj是全连接层第j个神经元的输出。y^={y1^,y2^,y3^,......,yN^}\hat{y} = \{\hat{y_1}, \hat{y_2}, \hat{y_3}, ......, \hat{y_N}\}y^​={y1​^​,y2​^​,y3​^​,......,yN​^​}是类别的全集。N是类别总数。概率最高的输出表示输入值的类别。我们在这个DFR中使用了Adam[13]优化器。
  对于训练过程,超参数设置为{Epoch,Minbatch,LR,KeepP,N,Lambda},表1描述了这些参数的定义。在算法2中解释了基于1D CNN的DFR训练算法的更多细节。

算法2 基于1D CNN的DFR训练算法

2. 基于LSTM的DFR分类器

  第二个DFR是在LSTM[6]的基础上开发的,LSTM[6]是一种用于处理序列表单数据的网络。LSTM是一种利用时间相关信息的递归神经网络(RNN)。假设一段业务是与时间有关逐字节和逐包构建的,来自相似类的业务在时间相关特性上必须具有一定的相似性。我们将LSTM应用到DFR中,帮助机器去学习与时间相关的特性。以前,只有少数工作提到使用RNN对网络流量进行分类。Torres等人[14] 将业务字节数据转换为字符数据,然后应用LSTM来学习字符之间的连接。然而,在我们提出的基于LSTM的DFR分类器中,输入将是一个图。图4说明了我们提出的基于LSTM的DFR分类器的概述。

图4 基于LSTM的DFR分类器的概述

  如图4所示,基于LSTM的DFR分类器实际上基于三层LSTM模型。对于每一层,基于LSTM的DFR分类器有256个LSTM单元。为了得到更好的推广,我们在LSTM模型的每一层都应用了dropout。在LSTM模型学习了与时间相关的特性之后,数据将通过方程(2)中描述的softmax分类器。最后,可以在DFR结束时检查结果标签。值得一提的是,我们在这个DFR中也使用了Adam优化器。训练基于LSTM的DFR分类器可以使用1D-CNN的DFR分类器中定义的相同的超参数,这些超参数被设置为{Epoch,Minbatch,LR,KeepP,N,Lambda}。算法3释了基于LSTM的DFR分类器的训练。

算法3 基于LSTM的DFR分类器的算法

3. 基于SAE的DFR分类器

  最后一个DFR的核心是两个SAE。一般来说,自动编码器是一种用于自动特征提取的半监督学习方法。SAE是自动编码器的变体之一,它能够逐字节地扫描数据以发现编码特性。图5展示了我们基于SAE的DFR分类器的概述。

图5 基于SAE的DFR分类器的概述

  第一步是将图形重塑为1×900的形式,因此我们可以将输入与第一个编码器完全连接。图6显示了训练这两个sae的过程。从图6可以看出,这两个SAE是分别训练的。第一个编码器有1000个神经元,它们与900个输入紧密相连并且有900个输出。训练编码器1的目的是获得一个编码器,该编码器能够产生与900个输入具有最小方差的900个输出。在编码器1经过训练后,我们将其堆叠在DFR中并应用sigmoid[15]激活函数。编码器2有1500个神经元,与编码器1的输出紧密相连。然后,我们将通过减少输入2和输出2之间的差异来训练编码器2,这与编码器1的训练相似。我们将在DFR中叠加它,同时应用一个sigmoid激活函数。最后,数据将通过等式(2)中定义的softmax分类器并输出结果。需要注意的是,在这两个SAE叠加到DFR中之后,将开始微调训练过程,以获得最终的模型。

图六 两个编码器的训练过程

  由于SAEs的两个训练过程是分离的,因此一些超参数与前两个DFRs不同。所有超参数都将设置为{Epoch、EpochFin、Lambda、LambdaFin}和Setsame={Minbatch、LR、KeepP、N},其中Setsame与前两个DFRs定义相同。Epoch是两个SAEs训练过程的epochs,不能设置为一个非常大的数。二次训练过程中的一个大的epoch会误导模型与训练数据的过度拟合。EpochFin是微调过程中的epoch,这个数不受Epoch的限制。Lambda是两个SAEs训练过程中L1正则化的Lambda参数,需要设置为比微调过程中L1正则化的Lambda参数大得多的数,即LambdaFin。原因是小的Lambda不能有效地配合两个SAEs训练过程。在算法4中总结了基于SAE的DFR的训练:

算法4 基于SAE的DFR训练算法

4. 选择与保存

  用训练数据对这三个DFR进行训练后,用测试数据对其进行检验。具有最高精度的DFR被认为是最适合当前流量环境的模型。准确度定义如下:
Accurcy=TP+TNTP+FP+FN+TN(3)Accurcy = \frac{TP + TN}{TP + FP + FN + TN}\tag{3}Accurcy=TP+FP+FN+TNTP+TN​(3)
  其中,TP为真阳性,即正确分类为特定类别的数量;FP为假阳性,即分类为该类别的错误分类数量;FN为假阴性,即本应分类为该类别,但又被错误分类为其他类别的数量;TN为真阴性,即是正确分类为非特定类别的数量。
  因此,这个模型将是我们保存的模型,并为这个时间单位执行以下分类和标识任务。DFR将以在线方式进行训练,这意味着DFR能够自动更新自身,以适应流量环境。算法5解释了在线式DFR框架过程中的其他细节。

算法5 在线式DFR框架算法

III. 评估

  在这一部分中,我们将从加密流量分类效率、入侵检测效率和存储资源需求三个方面来评估DFR框架。

A. 实验装置

  我们将首先描述我们使用的两个选定数据集。然后,通过训练过程中的超参数细节,揭示了实验的设置。最后,我们将解释我们使用的指标。

1. 评估数据集

  目前,我们还没有找到既有加密流量又有恶意软件流量的可用公共数据集,因此我们决定分别使用两个选定的公共数据集ISCX VPN non VPN流量数据集[16]和ISCX 2012 IDS数据集[17]来评估DFR框架。
  从ISCX VPN-nonVpn业务数据集[16]中重新生成第一个选择的数据集,以评估DFR对加密业务分类的有效性。ISCX VPN-nonVpn业务数据集最初有7种常规加密流量和7种协议封装流量。由于我们主要关注于评估加密流量分类的效率,因此我们将从7种类型的常规加密流量中选择并标记数据,其中包括网页浏览、电子邮件、聊天、流媒体、文件传输、VoIP和P2P。要注意的是,所有其他6种类型的加密流量都与网页浏览相关,因此,根据[9]的工作,我们放弃了加密流量的这个类别。此外,原始数据集中的一些类比其他类拥有更多的实例,这可能会在训练过程中误导模型。因此,我们精简它们以获得一个平衡的数据集。所选数据集的结构如表2所示。经过标准化处理后,每类流量的数量约为10000例。该数据集按9:1自动分为训练数据集和测试数据集。因此,训练数据集将有52916个案例,测试数据集将有5880个案例。

表2 数据集1所选择的结构

表3 数据集2所选择的结构

  第二个数据集是从ISCX 2012 IDS数据集[17]中重新生成的,以评估DFR在入侵检测中的有效性。该数据集包含7天的网络流量,可分为5类,正常、强力SSH、DDoS、HttpDoS和渗透。我们通过选择仅来自有恶意软件流量的天数的数据进行简化。由于与现实生活中的正常流量相比,恶意软件流量预计具有相对较小的规模,因此不会对数据集应用归一化方法。表3展示了所选数据集的结构。最后,将所选数据集按9:1的比例分为训练数据集和测试数据集。

2. 实验设置

  采用Tensorflow作为实验ML软件框架。我们在Ubuntu18.0464位操作系统上运行评估。处理器为8核Intel I7-7700K CPU,32 GB内存。采用两片Nvidia GeForce GTX1080ti芯片作为GPU加速器。DFR训练过程的超参数如表4所示。

表4 超参数的设置

3. 评价指标

  我们使用公式(3)中定义的精度来选择最佳DFR。我们使用三个指标来评估和比较所选DFR与现有方法的性能。即精确、召回和F1分数,定义如下:
Precision=TPTP+FP(4)Precision = \frac{TP}{TP + FP}\tag{4}Precision=TP+FPTP​(4)
Recall=TPTP+FN(5)Recall = \frac{TP}{TP + FN}\tag{5}Recall=TP+FNTP​(5)
F1_score=2×Precision×RecallPrecision+Recall(6)F1\_score = \frac{2 × Precision × Recall}{Precision + Recall}\tag{6}F1_score=Precision+Recall2×Precision×Recall​(6)
  其中TP、FP和FN的定义见第II-B.4节。

B. 实验结果

  我们将首先介绍对加密流量分类效率的评估。实验结果解释了采用L1正则化的原因。然后,评估了入侵检测。最后给出了存储资源需求的比较。

1. 加密流量分类效率

  在数据集1的测试数据集上,三个经过训练的DFR的精度如表5所示。我们还评估了在本实验中应用L1正则化的有效性。

表5 加密流量中DFR的准确率

  从表5可以看出,用L1正则化代替L2正则化后,DL模型的平均精度提高了3.37%。这证明了我们在II-B节中对L1和L2正则化的分析,因此我们将仅在DFR框架中应用L1正则化。基于一维CDD的分类精度最高,达到99.85%,因此我们将此模型保存为适合当前网络流量环境的最优DFR分类。
  我们还在同一数据集下比较了DFR框架与两种最新方法的性能。第一种方法是根据文献[16],C4.5 DT。这是一种基于ML的分类方法,需要人工特征。第二种方法是文献[9]中提出的一维CNN分类方法,它与我们在DFR中使用的模型相似,但没有正则化方法和LRN在其一维CNN中应用。

图7 分类有效性的比较

  如图7所示,与基于ML的C4.5方法和基于DL的1D-CNN方法相比,DFR框架能够获得更准确和健壮的分类结果。DFR框架的F1平均得分为0.9987,与C4.5 DT和1D-CNN的F1平均得分相比,这是令人印象深刻的。精度平均比C4.5提高11.6%,比1D-CNN提高14.9%。所有这些数据都支持这样一个事实:DFR框架能够准确地对加密流量进行分类。

2. 入侵检测效率

  对于数据集2,基于LSTM的DFR分类器的分类准确率为99.41%,是三种DFR分类器中最高的。然后,我们将DFR框架与Atli的工作[2]中展示的两种基于最新ML的方法进行了比较,这两种方法分别是DT和KNN。这是两种基于ML的入侵检测方法。

图8 入侵检测效率的比较

  如图8所示,DFR能够保持对真实恶意软件流量的鲁棒性和高检测性能。与这两种方法相比,F1得分的平均改善分别为0.137和0.106。值得一提的是,本文提出的框架能够在F1总分为1的情况下识别HttpDoS恶意软件流量,与DT和KNN相比有较大的改进。所有这些数据都证明了准确的入侵检测能力。

IV. 结论

  本文提出了一种新的基于DL的加密流量分类和恶意流量检测框架。与目前最先进的基于ML的方法相比,我们的DFR框架不需要选择特征和私有特征细节的繁重工作。此外,在两个公共数据集上的实验结果表明,DFR在加密流量分类和入侵检测方面比现有的方法具有更强的鲁棒性和更准确的性能,并且需要更少的存储资源。

基于深度学习的网络加密流量分类与入侵检测框架相关推荐

  1. 基于python的入侵检测系统毕设_基于深度学习的射频指纹的物联网设备入侵检测...

    摘要:物联网(IoT)和4G/5G无线网络增加了大量设备和新服务,商用现货(COTS)物联网设备得到了广泛部署.为了确保具备无线传输能力的这些系统的安全运作,射频(RF)监视对于监视它们在RF频谱中的 ...

  2. 毕业设计-基于深度学习的网络流量异常检测系统

    目录 前言 课题背景和意义 实现技术思路 一.相关技术与理论介绍 二.基于深度学习的网络流量二分类模型 三.网络流量异常检测系统 实现效果图样例 最后 前言

  3. 《中国人工智能学会通讯》——第3章 3.1基于深度学习的网络表示研究进展

    第3章 3.1基于深度学习的网络表示研究进展 网络结构在现实世界中无处不在(如航线网络.通信网络.论文引用网络.世界万维网和社交网络等),在此基础之上的应用和研究问题受到了学术界和工业界的广泛关注,这 ...

  4. 基于深度学习的弹道目标智能分类

    关注微信公众号:人工智能技术与咨询.了解更多资讯! 来源:系统工程与电子技术,作者李江等 摘要 针对弹道目标微动分类前需平动补偿及典型雷达散射截面积(radar cross-section, RCS) ...

  5. 基于深度学习和光流的地铁乘客上下车自动检测算法

    1.文章信息 本次介绍的文章题目是基于深度学习和光流的地铁乘客上下车自动检测算法<An Automatic Detection Algorithm of Metro Passenger Boar ...

  6. 基于深度学习的网络入侵检测研究综述

    摘     要 [目的]互联网的迅速发展给人们的生活带来了极大的便利,然而各种网络攻击行为也日益增加,网络空间面临着严重的威胁.入侵检测在防护网络攻击中发挥着关键作用. [文献范围]近年来,深度学习方 ...

  7. 分割点云数据_3D点云深度学习综述:三维形状分类、目标检测与跟踪、点云分割等...

    3D点云学习( Point Clouds)作为近年来的研究热点之一,受到了广泛关注,每年在各大会议上都有大量的相关文章发表.当前,点云上的深度学习变得越来越流行,人们提出了许多方法来解决这一领域的不同 ...

  8. 基于深度学习的机载激光扫描森林单株茎的检测、分割与模型拟合

    Abstract 精确测量树木的结构特征,如高度.直径.宽度和锥度,是森林资源调查的重要组成部分.目前,地面和空中激光雷达都被用来产生点云数据,通过这些数据可以确定清单指标.陆地/地面扫描通常提供每平 ...

  9. 【深度学习实践】基于深度学习的车牌识别(python,车牌检测+车牌识别)

    车牌识别具有广泛的应用前景,基于传统方法的车牌识别效果一般比较差,随着计算机视觉技术的快速发展,深度学习的方法能够更好的完成车牌识别任务. 本文提供了车牌识别方案的部署链接,您可以在网页上体验该模型的 ...

最新文章

  1. 九度OJ—题目1032:ZOJ
  2. 罗斯霍曼理工学院计算机毕业生,全美最强STEM大学,了解一下?
  3. 详解CockroachDB事务处理系统
  4. Java 9 揭秘(18. Streams API 更新)
  5. 【Elasticsearch】Elasticsearch性能调优:千万不要做愚蠢的事
  6. 【金融】【python】三因子(three factor)简单模型实证
  7. 《大数据技术原理与应用》第一章-大数据概述
  8. 基于matlab的心电信号预处理
  9. MogDB官网正式亮相!单机256万tpmC再创佳绩
  10. 【路由篇】01. 电脑远程访问小米路由器硬盘文件
  11. win7中inter信息服务器,Win7系统Internet选项在哪里?
  12. oppo系统工程师暑期实习生面经(已OC)
  13. BiliBili下载.flv视频文件重命名
  14. CIPP翻转内衬法整体修复技术简介
  15. quantenna测试RF射频性能简单说明
  16. python两层嵌套 [i for x in L for i in x]
  17. 互联网晚报 | 3月16日 星期三 |​ 罗永浩即将重返科技行业;财政部:今年内不扩大房地产税改革试点城市...
  18. 机器视觉,工业相机镜头笔记
  19. input隐藏域和layui图片上传问题
  20. 用批处理写的后门 永不被杀

热门文章

  1. 回头再说说电影--电影英文名
  2. 史上最详解!关于固态继电器,看这一篇就够了【转载】
  3. HTTPS中间人攻击实践(原理·实践) 1
  4. python决策树可视化——graphviz报错
  5. 01-祝爸爸生日快乐
  6. 异地会议如何远程投屏
  7. 某高校计算机学院招聘一批,国家电网一批招聘计算机类笔试技巧
  8. uploadify 发送多余请求的问题
  9. 从没有人能把MOM异步通信,消息中间件,消息队列?给一次性讲清
  10. 配置MXNET、Pytorch、Tensorflow环境详细教程