NQA简介

网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络信息进行统计。NQA能够实时监视网络QoS,在网络发生故障时进行有效的故障诊断和定位。

目的:

为了使网络服务质量可见,使用户能够自行检查网络服务质量是否达到要求,需要采取以下措施:

  • 在设备上提供能够说明网络服务质量的数据。
  • 在网络中部署探针设备能对网络服务质量进行监控。

部署上述措施时,需要在设备侧提供时延、抖动、丢包率等相关统计参数和使用专用的探针设备,增加了设备和资金的投入。

当设备提供NQA时,就不用部署专门的探针设备,可以有效的节约成本。NQA可以实现对网络运行状况的准确测试,输出统计信息。

NQA监测网络上运行的多种协议的性能,使用户能够实时采集到各种网络运行指标,例如:HTTP的总时延、TCP连接时延、DNS解析时延、文件传输速率、FTP连接时延、DNS解析错误率等。

原理描述:

构造测试例

NQA测试中,把测试两端称为客户端和服务器端(或者称为源端和目的端),NQA的测试是由客户端(源端)发起。在客户端通过命令行配置测试例或由网管端发送相应测试例操作后,NQA把相应的测试例放入到测试例队列中进行调度。

启动测试例

启动NQA测试例,可以选择立即启动、延迟启动、定时启动。在定时器的时间到达后,则根据测试例的测试类型,构造符合相应协议的报文。但配置的测试报文的大小如果无法满足发送本协议报文的最小尺寸,则按照本协议规定的最小报文尺寸来构造报文发送。

测试例处理

测试例启动后,根据返回的报文,可以对相关协议的运行状态提供数据信息。发送报文时的系统时间作为测试报文的发送时间,给报文打上时间戳,再发送给服务器端。服务器端接收报文后,返回给客户端相应的回应信息,客户端在接收到报文时,再一次读取系统时间,给报文打上时间戳。根据报文的发送和接收时间,计算出报文的往返时间。

测试机制:

DHCP测试:

NQA的DHCP测试以UDP报文为承载,模拟DHCP Client在指定的接口上发起DHCP请求,根据是否申请到地址,确定接口所在的网络中是否有DHCP Server服务以及测试申请到地址的时间。

DHCP测试过程如下:

  1. 源端(RouterA)从需要获得地址的接口,向接口所在网段广播查询DHCP Server的Discovery报文。

  2. DHCP Server(RouterB)收到报文后,向源端回送Offer报文,报文中包含了DHCP Server的IP地址。

  3. 源端向接口所在网段广播要求获取IP地址的Request报文,报文中包含了DHCP Server的IP地址信息。

  4. DHCP Server收到报文后,向源端回送ACK报文,报文中包含了DHCP Server分配给相应接口的IP地址。

    源端收到数据包后通过计算源端接收报文的时间和源端最初发送Discovery报文的时间的差,计算出从DHCP服务器获取IP地址的时间。

DHCP测试只是借用操作接口发送DHCP报文,申请到地址后立即释放DHCP租约,不会为接口真正申请地址,因此不会占用DHCP Server的地址资源。进行DHCP测试的操作接口必须处于Up状态。

DHCP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

DNS测试:

NQA的DNS测试以UDP报文为承载,通过模拟DNS Client向指定的DNS服务器发送域名解析请求,根据域名解析是否成功及域名解析需要的时间,来判断DNS服务器是否可用,及域名解析速度。

dns测试过程如下:

  1. 客户端(RouterA)向DNS Server发送要求解析给定的DNS名称的Query报文。
  2. DNS Server收到报文后,通过解析构造Response报文,然后再把这个数据包发回到客户端。
  3. 客户端收到数据包后通过计算客户端接收报文的时间和客户端发送报文的时间的差,计算出DNS域名解析时间。从而清晰的反映出网络DNS协议的性能状况。

DNS测试只是模拟域名解析的过程,不会保存要解析的域名与IP地址的对应关系。

DNS测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

FTP测试:

NQA的FTP测试以TCP报文为承载,用于检测是否可以与指定的FTP服务器建立连接,以及从FTP服务器下载指定文件或向FTP服务器上载指定文件的速度。

FRP测试提供两个阶段的响应速度:

  • 控制连接时间:客户端(RouterA)与FTP Server通过TCP“三次握手”建立控制连接的时间以及通过控制连接交互信令的时间。
  • 数据连接时间:客户端(RouterA)通过数据连接从FTP服务器下载指定文件或向FTP服务器上载指定文件的时间。

通过FTP测试,从客户端接收到的信息中可以计算出:

  • 最小控制连接时间、最大控制连接时间及平均控制连接时间。
  • 最小数据连接时间、最大数据连接时间及平均数据连接时间。

FTP测试支持文件下载和文件上载操作。文件下载操作并不会把文件放到本地的文件系统,只是计算下载该文件所需要的时间,取得数据后随即自动释放占用的内存;文件上载操作并不是将本地文件放到服务器上,而是上传固定大小及内容的文件(文件名由用户配置,数据为系统内部指定的固定数据;如果配置的文件名和服务器上已有的文件重名,则覆盖原来的文件),测试完成后该文件并不被删除。因此,FTP测试与本地文件系统无关。

FTP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

HTTP测试:

NQA的HTTP测试主要是测试客户端是否可以与指定的HTTP服务器建立连接,从而判断该设备是否提供了HTTP服务以及建立连接的时间。

NQA的HTTP测试提供三分阶段的响应速度:

  • DNS解析时间:客户端(RouterA)发送DNS报文给DNS服务器,DNS服务器将HTTP服务器域名解析为IP地址,DNS解析报文返回到客户端所花费的总时间。
  • TCP建立连接时间:客户端(RouterA)与HTTP服务器通过TCP“三次握手”建立连接所用的时间。
  • 交易时间:客户端(RouterA)发送Get或Post报文给HTTP服务器,响应报文到达HTTP服务器的时间。

通过HTTP测试,从客户端接收到的信息中可以计算出:

  • 最小DNS查询时间、最大DNS查询时间及DNS查询时间总和。
  • 最小TCP连接建立时间、最大TCP连接建立时间及TCP连接建立时间总和。
  • 最小HTTP交易时间、最大HTTP交易时间及HTTP交易时间总和。

HTTP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

ICPM Jitter测试:

ICMP Jitter测试是以ICMP报文为承载,通过记录在报文中的时间戳信息来统计时延、抖动、丢包的一种测试方法。Jitter(抖动时间)是指相邻两个报文的接收时间间隔减去这两个报文的发送时间间隔。

ICMP Jitter测试的过程如下:

  1. 源端(RouterA)以一定的时间间隔向目的端(RouterB)发送数据包。
  2. 目的端(RouterB)每收到一个数据包,就给它打上时间戳,然后再把这个数据包发回到源端(RouterA)。
  3. 源端(RouterA)收到数据包后通过计算目的端(RouterB)接收数据包时间间隔和源端(RouterA)发送数据包的时间间隔之差,计算出抖动时间。

从源端接收到的信息中计算出:

  • 数据包从源端到目的端和从目的端到源端的最大抖动时间、最小抖动时间及平均抖动时间。
  • 从目的端到源端或从源端到目的端的最大单向延时。

ICMP Jitter测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

ICMP测试:

NQA的ICMP测试例用于检测源端到目的端的路由是否可达。ICMP测试提供类似于命令行下的Ping命令功能,但输出信息更为丰富:

  • 默认情况下能够保存最近5次的测试结果。
  • 结果中能够显示平均时延、丢包率,最后一个报文正确接收的时间等信息。

ICMP测试过程如下:

  1. 源端(RouterA)向目的端(RouterB)发送构造的ICMP Echo Request报文。
  2. 目的端(RouterB)收到报文后,直接回应ICMP Echo Reply报文给源端(RouterA)。

源端收到报文后,通过计算源端接收时间和源端发送时间之差,计算出源端到目的端的通信时间,从而清晰的反应出网络性能及网络畅通情况。

ICMP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

LSP Ping测试:

NQA的LSP Ping测试例用于检测两种类型(LDP,TE)的LSP路径是否可达。

LSP ping测试的过程如下:

  1. 源端(PE-A)首先构造MPLS Echo Request报文,在IP头填入127.0.0.0/8网段的地址作为IP的目的地,根据配置对端LSR ID查找相应的LSP(对于TE的LSP,可以指定从Tunnel接口发送,从而找到相应的CR-LSP),按指定的LSP进行MPLS域内的转发。
  2. 目的端(PE-B)Egress侦听3503端口发送MPLS Echo Reply响应报文。

源端通过接收到的响应报文,统计出测试结果,通过计算源端接收时间和源端发送时间之差,计算出源端到目的端的通信时间,从而清晰的反应出MPLS网络链路畅通情况。

LSP Ping测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

LSP Trace测试:

NQA的LSP Trace测试用于检测两种类型(LDP,TE)的LSP转发路径,并沿该路径收集各设备的有关的统计信息。

LSP Trace测试的过程如下:

  1. 源端(PE-A)首先构造UDP的MPLS Echo Request报文,在IP头填入127.0.0.0/8网段的地址作为IP的目的地,查找相应的LSP(对于TE的LSP,可以指定从Tunnel接口发送,从而找到相应的CR-LSP)。MPLS Echo Request报文应该包含有Downstream MapPing TLV(用来携带LSP在当前节点的下游信息,主要包括下一跳地址、出标签等)。第一次发送的MPLS Echo Request报文的TTL为1。
  2. 该报文按指定的LSP进行MPLS域内的转发,到达LSP路径第一跳TTL超时返回MPLS Echo Reply消息。
  3. 源端(PE-A)继续以TTL递增的方式发送MPLS Echo Request报文,如此重复,直到整条LSP上的所有LSR都应答后,LSP Trace测试过程完成。

源端收到每跳LSR的应答消息后,统计并打印出从源端到目的端的LSP转发路径和该路径上各设备的有关信息。从而清晰的反映出从源端到目的端的LSP转发路径。

LSP Trace测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

SNMP测试:

NQA的SNMP测试用于检测主机与SNMP Agent之间通信的速度,以UDP报文为承载。

SNMP测试过程如下;

  1. 源端(RouterA)向SNMP Agent(RouterC)发送要求获取系统时间的请求报文。

  2. SNMP Agent收到报文,查询系统时间并构造回应报文,然后再把这个数据包发回到源端。

    源端收到数据包后通过计算源端接收报文的时间和源端发送报文的时间的差,计算出源端与SNMP Agent之间通信的时间。从而清晰的反映出网络SNMP协议的性能状况。

SNMP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

TCP测试:

NQA的TCP测试用于检测主机与TCP Server之间经过三次握手建立TCP连接的速度。

TCP测试的过程如下:

  1. RouterA向RouterB发送要求建立连接的TCP SYN报文。
  2. RouterB收到报文,接收请求并向RouterA回应TCP SYN ACK报文。
  3. RouterA报文后,向RouterB回应ACK报文,连接建立。

此后,RouterA通过发送报文和接收报文的时间差,计算出与RouterB之间三次握手建立TCP连接的时间。从而清晰的反映出网络TCP协议的性能状况。

不能太频繁的发起TCP探测,以免占用过多资源,影响到目的设备上的正常服务。

TCP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

Trace测试:

NQA的Trace测试用于检测源端到目的端的转发路径,并沿该路径记录源设备到中间各个设备的时延等信息。Trace测试类似于Tracert命令功能,但输出信息更为丰富。每一跳信息中能够显示平均时延、丢包、最后一个包接收时间等信息。

Trace测试的过程如下:

  1. 源端(RouterA)向目的端(RouterD)发送构造的UDP报文,报文中的TTL为1。
  2. 第一跳RouterB收到该报文后,判断TTL是否为0,如果为0则丢弃该报文,返回ICMP超时报文。
  3. 源端(RouterA)收到该ICMP超时报文后,记录第一跳的IP地址,并重新构造UDP报文,报文中的TTL为2。
  4. 报文到达第二跳RouterC后,判断TTL是否为0,如果为0则丢弃该报文,返回ICMP超时报文。
  5. 以此类推,最终报文到达目的端(RouterD),返回端口不可达的ICMP报文给源端(RouterA)。

源端收到每跳返回的ICMP报文后,统计并打印出从源端到目的端的转发路径和该路径上各设备的有关信息。从而清晰的反映出从源端到目的端的转发路径。

Trace测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

UDP测试:

NQA的UDP测试用于检测源端与目的端(UDP Server)之间通信的速度。

UDP测试的过程如下:

  1. 源端(RouterA)向目的端(RouterC)发送构造的UDP报文。

  2. 目的端收到报文,直接将报文再回送给源端。

    源端收到数据包后通过计算源端接收报文的时间和源端发送报文的时间的差,计算出源端与目的端之间通信的时间。从而清晰的反映出网络UDP协议的性能状况。

UDP测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

UDP Jitter测试:

UDP Jitter是以UDP报文为承载,通过记录在报文中的时间戳信息来统计时延、抖动、丢包的一种测试方法。Jitter(抖动时间)是指相邻两个报文的接收时间间隔减去这两个报文的发送时间间隔。

UDP Jitter测试的过程如下:

  1. 源端(RouterA)以一定的时间间隔向目的端(RouterB)发送报文。
  2. 目的端(RouterB)每收到一个报文,就给它打上时间戳,然后再把这个报文发回到源端(RouterA)。
  3. 源端(RouterA)收到报文后通过计算目的端(RouterB)接收报文时间间隔和源端(RouterA)发送报文的时间间隔之差,计算出抖动时间。

从源端接收到的信息中计算出:

  • 报文从源端到目的端和从目的端到源端的最大抖动时间、最小抖动时间及平均抖动时间。
  • 从目的端到源端或从源端到目的端的最大单向延时。

UDP Jitter每次测试最大发包数量可配,是探测数(probe-count)与每次探测发送报文(jitter-packetnum)的乘积。

UDP Jitter测试可以设置单个测试例的连续发包数目,通过这项设置,可以在一段时间内模拟某种数据的真实流量。例如,设置3000个UDP报文以20毫秒的间隔发送,可以在一分钟内模拟G.711流量。

UDP Jitter测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

UDP Jitter(hardware-based)测试:

UDP Jitter(hardware-based)是以UDP报文为承载,是对UDP Jitter的补充。可以达到如下目的:

  • 可以减小发包间隔,最小可以达到10ms。
  • 可以增加测试例的并发数。
  • 时延抖动计算更加准确。

从而可以更加真实的反映网络状况和提高设备效率。

UDP Jitter和UDP jitter(hardware-based)的不同点:

比较点 UDP Jitter UDP Jitter(hardware-based)
发包间隔 最小只能达到20ms 最小可以达到10ms
抖动计算 上送主控板打时间戳 接口板打时间戳,更精准

UDP Jitter(hardware-based)测试的结果和历史记录将记录在测试例中,可以通过命令行来查看探测结果和历史记录。

NQA联动机制:

联动功能是指NQA提供探测功能,把探测结果通知其他模块,其他模块再根据探测结果进行相应处理的功能。目前实现了与VRRP、静态路由、备份接口、IGMP Proxy、IP地址池、DNS服务器和策略路由的联动。

以静态路由为例:

用户配置了一条静态路由,下一跳为192.168.0.88,如果192.168.0.88可达,该静态路由有效;如果192.168.0.88不可达,则该静态路由无效。通过在NQA和应用模块之间建立联动,可以实现静态路由有效性的实时判断。如果NQA发现192.168.0.88不可达,NQA将通知静态路由模块,静态路由模块可以据此判断该静态路由项无效。

NQA配置命令行:

adv-factor factor-value
//配置NQA Jitter模拟语音测试计算的补偿因子。
//缺省情况下,NQA Jitter模拟语音测试计算的补偿因子的值为0。取值范围是0~20。
agetime hh:mm:ss
//来配置NQA测试例的老化时间。
//缺省情况下,老化时间为0,表示测试例永不老化。
clear-records
//用来清除NQA测试例的统计信息。
community read cipher community-name
//用来配置用于SNMP测试的团体名。
//缺省情况下,系统中SNMP测试的团体名为public。
datafill fillstring
//配置NQA测试例的填充字符。
datasize size
//用来配置NQA测试例的报文大小。取值范围是0~8100
destination-address
//用来配置NQA测试例的目的地址。
destination-port
//用来配置NQA测试例的目的端口号。
display nqa application
//查看与业务对应的NQA测试例类型。
display nqa-parameter (参数)
//用来查看当前测试例的参数配置信息。
dns-server ipv4 ip-address
//用来配置NQA测试中DNS服务器地址。
fail-percent percent
//用来配置NQA测试失败百分比。
//缺省情况下,测试失败百分比为100%,即只有全部探测失败,本次测试才视为失败。
frequency interval
//用来配置NQA测试例自动执行测试的时间间隔。
//缺省情况下,没有配置自动测试间隔,即只进行一次测试。
ftp-filename file-name
//用来配置NQA测试FTP测试例的文件名和文件路径。
hardware-based enable
//用来使能在进行Jitter测试时,采用接口板上的硬件转发引擎进行发包及打时间戳。
icmp-jitter-mode { icmp-echo | icmp-timestamp }
//用来指定ICMP Jitter测试例测试模式的类型。
//缺省情况下,ICMP Jitter测试例测试模式的类型为icmp-timestamp。interval { milliseconds interval | seconds interval }
//配置NQA测试例的发送报文的时间间隔。
probe-count number
//用来配置NQA测试例的一次测试探针数目。
//缺省情况下,一次测试探针数目是3。
probe-failtimes times
//用来配置NQA测试探测失败后发送trap的阈值。即,连续探测失败的次数。
//取值范围是1~15。缺省值是1。
packet-rewrite-check { alternant-binary | same-binary }
//配置NQA报文改写检查功能,通过填充检测报文的方式实现检查。
//alternant-binary:指定使用0101和1010交替填充检测报文。
//same-binary:指定使用全0和全1交替填充检测报文。
records { history number | result number }
//配置NQA测试的历史记录和结果记录的最大数目。
records history-filter { all | failures }
//打开对NQA测试例历史表记录的过滤功能。
sendpacket passroute
//配置NQA测试例不查找路由表发送报文。
send-trap
//用来配置Trap消息的发送条件。
set-df
//设置报文的DF(Don't Fragment)位。即,不允许报文分片。
snmp-agent trap enable feature-name nqa
//打开NQA模块的告警开关。
start
//配置NQA测试例的启动方式和结束方式。
stop
//用来终止当前正在执行的NQA测试例。
test-failtimes times
//配置在NQA测试失败后发送Trap的阈值。即,连续测试失败的次数。
test-type
//配置NQA测试例的测试类型。
timestamp-unit { millisecond | microsecond }
//来设置NQA测试例的时间戳单位。
//millisecond:毫秒   microsecond:微秒
threshold { owd-ds owd-ds-value | owd-sd owd-sd-value | rtd rtd-value }
//设置双向传输延迟、单向传输延迟的阈值。
timeout time
//配置NQA测试例的一次探测的超时时间。
//缺省情况下,除DHCP、FTP测试类型的超时时间为15秒外,其他测试类型的超时时间为3秒。
tos value
//配置NQA测试报文的服务类型。
tracert-hopfailtimes
//配置NQA测试中Trace测试例失败的失败跳数。取值范围是1~255。
//缺省情况下,一次探测中的失败跳数达到5次就认为此次探测失败。
tracert-livetime first-ttl first-ttl max-ttl max-ttl
//配置NQA测试Trace测试例的生存时间。
//缺省情况下,初始TTL值为1,最大TTL值为30。
ttl number
//配置NQA测试例测试报文的TTL值。
//缺省情况下,TTL值为30。

参考文档:华为HedEx文档


网络质量分析-NQA相关推荐

  1. android网络质量,基于Android的移动通信网络质量信息系统的设计与开发

    摘要: 水利信息化作为水利工程的一个重要的方向,需要稳定,高效,安全的移动通信技术.为了保障移动网络质量,必须对网络运行状况实时监控,快速发现网络问题,以便使网络运行在最理想的状况下.然而,现今的网络 ...

  2. 观察性研究的网络Meta分析

    1.前言 随着真实世界研究越来越多,更多的观察性研究为当前临床治疗和决策提供重要的证据,可以补充随机对照试验证据的不足.纳人观察性研究的网络Meta分析可更全面地评估当前的临床治疗方案,为临床决策提供 ...

  3. 使用腾讯云轻量应用服务器搭建网络质量拨测工具 SmokePing

    本文原载于 https://www.idc.moe/archives/qcloud-Lighthouse-SmokePing.html 作者:iks SmokePing 是由 RRDtool 的作者 ...

  4. 计算机基础教学质量分析报告,张丹菲信息技术质量分析报告1

    <张丹菲信息技术质量分析报告1>由会员分享,可在线阅读,更多相关<张丹菲信息技术质量分析报告1(4页珍藏版)>请在人人文库网上搜索. 1.信息技术学科质量分析报告一.试题指导思 ...

  5. 网络流量分析详解(包含OSI七层模型、TCP协议及Wireshark工具用法)

    网络流量分析 Network Traffic Analysis(NTA) 这个系列讲的是整个网络流量分析流程,其中包含TCP协议.HTTP协议详解和Wireshark.Tcpdump的详细用法,现在只 ...

  6. 网络流量分析 NetFlow是什么 详解 科普 ~互联网业务流量监测技术的应用和设计---perfect

    前言 随着宽带互联网在中国的迅速发展,全国各大电信运营商的网络规模都在不断扩张,网络结构日渐复杂,网络业务日趋丰富,网络流量高速增长.电信运营商需要通过可靠.有效的网络业务流量监测系统对其网络以及网络 ...

  7. Linux下C/C++实现(网络流量分析-NTA)

    网络流量分析(NTA - Network Traffic Analysis) 就是捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议.流量.分析.统计等,协助发现网络运行过程中出现的问题. ...

  8. 【数据挖掘】葡萄酒质量分析及异常值检测

    背景介绍 葡萄酒在人类历史中扮演着非常重要的角色,它能舒缓疲劳.减轻病痛.消毒杀菌.美容养颜等等直到19世纪晚期,葡萄酒都是西方医学中不可缺少的用品,适量饮用对人的身体会有益处.无论是用于交际会谈,还 ...

  9. python空气质量分析与预测_干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?...

    原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测? 作者 | 李秋键 责编 | 伍杏玲 封图 | CSDN 付费下载自东方 IC 出品 | CSDN(ID:CSDNnews) ...

最新文章

  1. [译] ES6+ 中的 JavaScript 工厂函数(第八部分)
  2. eclipse3.6默认指向 WebContent 目录 修改为 webRoot
  3. Most socially-distanced subsequence CodeForces - 1364B(贪心)
  4. php字符串对象,PHP字符串到对象名称
  5. matlab 向前欧拉公式,向前欧拉公式在Matlab解微分方程初值解的问题
  6. BABOK - BA计划和监控(BA Planning Monitoring)概要
  7. 2星|《零工经济》:缺少对数据、事实、概括、分析,基本是流于表面的畅想...
  8. 怎样学习数据结构? 伯克利神课CS61B 总结感悟,学习指南和避坑建议
  9. js里的一些even事件
  10. svn conflict linux,解决svn update 产生Node remains in conflict的问题
  11. 进击的“懒人经济”,快手又迎来一个万亿蓝海市场
  12. python 文本框不能放表情_用Python自动生成表情包,生活不易多才多艺!
  13. 分享151个PHP源码,总有一款适合您
  14. 极致CMS百度智能小程序前后端源码
  15. 利用阿里大鱼下发短信验证码
  16. EasyDl快速上手教程
  17. c语言编写消防车声音程序教程,51单片机蜂鸣器模拟救护车消防车等各种报警喇叭声音的学习源代码...
  18. 我的GV电话设置经验
  19. Visual Studio 2010 sp1介绍与下载
  20. 2017年8月16日训练日记

热门文章

  1. 百度质量部测试开发面试总结
  2. mybatis--开发Dao--原始dao方式和Mapper代理方式
  3. mysql databasemetadata_JDBC--使用DatabaseMetaData获取数据库信息
  4. 做竞品分析如何获取电商平台的商品数据?
  5. 使用git把本地代码上传(更新)到github上
  6. gif透明背景动画_视频转gif,跟原视频一样的清晰~
  7. 计算机二级asse,计算机二级VF重难点
  8. 《麻省理工科技评论》、度小满联合发布《2023年金融科技趋势展望》
  9. scratch一起学案例——《跳跃的小猫》
  10. htmlParser 繁体字乱码