本申请涉及数据处理领域,尤其涉及一种数据流输入参数的采集方法、装置、计算机设备和存储介质。
背景技术:
随着互联网的发展,在某些场景下,需要采集生产环境中某段数据或流程的请求参数,以进行后续的数据分析、数据比对、和特征分析等。
现有技术中,采集输入参数,通常是在想要抓取输入参数的代码中增加一大段处理逻辑来实现此功能。但是,在代码中增加处理逻辑是对代码的侵入式的处理,对代码的稳定性、完整性和可靠性等,有可能会造成不良影响。而且,对于每一种代码,都需要植入处理逻辑,操作繁琐。
可见,现有技术中的采集输入参数的方法,可能会对代码造成不良影响,且操作繁琐。
技术实现要素:
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种数据流输入参数的采集方法、装置、计算机设备和存储介质,能够用非侵入式的方式,对数据流的输入参数进行采集。
第一方面,本申请提供了一种数据流输入参数的采集方法,其特征在于,所述方法包括:
接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;
根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;
获取配置数据;
根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;
根据所述第二申请,加载所述第二类文件;
执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
本申请实施例中,修改所述第一类文件中的特定代码段,包括:
在所述特定代码段之前,插入采集开始时刻和采集结束时刻;
在所述特定代码段之前,插入需采集的输入参数的预设数量;
在特定代码段之前,插入已采集的输入参数的输出格式;
在所述特定代码段之前,插入已采集的输入参数的存储地址。
本申请实施例中,所述执行加载后的所述第二类文件,包括:
在所述采集开始时刻开始采集所述输入参数;
在所述采集结束时刻结束采集所述输入参数。
本申请实施例中,所述执行加载后的所述第二类文件,包括:
在所述采集开始时刻开始采集所述输入参数;
在所述采集到的输入参数数量达到所述预设数量时,结束采集所述输入参数。
本申请实施例中,所述输出格式包括:输入参数名、输入参数内容,以及输入参数时间戳;
所述执行加载后的所述第二类文件,包括:
按照输入参数名和输入参数内容、输入参数时间轨迹相对应,输入所述已采集的输入参数。
本申请实施例中,所述执行加载后的所述第二类文件,包括:
获取所述目标数据流的类型;
若所述目标数据流的类型为静态数据流,则允许从第零个输入参数开始采集;
若所述目标数据流的类型为非静态数据流,则允许从第一个输入参数开始采集。
本申请实施例中,所述执行加载后的所述第二类文件,包括:
根据所述已采集的输入参数的存储地址,存储所述已采集输入参数。
本申请实施例中,所述配置参数中包括待采集输入参数的数据流列表;
在获取配置数据之后,在根据所述配置数据,修改所述第一类文件中的特定代码段之前,所述方法还包括:
判断所述目标数据流是否在所述数据流列表中存在;
若存在,则修改所述第一类文件中的特定代码段。
本申请实施例中,执行加载后的所述第二类文件之后,所述方法还包括:
根据所述输入参数名,从已采集输入参数中,筛选目标输入参数;或,
根据所述时间戳,从已采集输入参数中,筛选目标输入参数。
第二方面,提供了一种数据流输入参数获取装置,所述装置包括:
接收单元,用于接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;
生成单元,根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;
配置单元,用于获取配置数据;
修改单元,用于根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;
加载单元,用于根据所述第二申请,加载所述第二类文件;
执行单元,用于执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法的步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请实施例提供了一种数据流输入参数的采集方法,所述方法包括:接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;获取配置数据;根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;根据所述第二申请,加载所述第二类文件;执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。本申请实施例中,由于配置数据是很方便更改的,可以根据需求随时更改,所以针对不同的目标数据流,只需要更改配置文件,即可以根据需求获取目标数据流的输入参数,无需针对每一个目标数据流更改代码,从而提高了获取输入参数的效率,也简化了操作的流程。另一方面,本申请实施例的方法,采用非侵入式的方式,通过配置数据来获取输入参数,可以保证数据流的安全性和稳定性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1所示为本发明实施例中数据流输入参数的采集方法的应用环境图;
图2所示为本发明实施例中数据流输入参数的采集方法的流程示意图;
图3所示为本发明实施例中数据流输入参数的采集方法的流程示意图;
图4所示为本发明实施例中数据流输入参数的采集方法的流程示意图;
图5所示为本发明实施例中数据流输入参数的采集装置的结构框图;
图6所示为本发明实施例中计算机设备的内部结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为一个实施例中数据流输入参数的采集方法的应用环境图。参照图1,该数据流输入参数的采集方法应用于数据流输入参数的采集系统。该数据流输入参数的采集系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,在一个实施例中,提供了一种数据流输入参数的采集方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该数据流输入参数的采集方法具体包括:
步骤210,接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;
本申请实施例中,目标数据流可以是一段程序活代码,或可以是实现特定功能/方法的程序或代码,或可以是其他数据流或数据包,在此不再赘述。在输入参数输入到目标数据流后,执行目标数据流,即可以得到结果。
例如,目标数据流是一段用于对采集到的温度取平均值的程序,那么该目标数据流的输入参数即采集到的温度,执行该目标数据流,可以得到输入参数求平均值之后的平均温度。
步骤220,根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;
本申请实施例中,类文件即class文件,即javaclass文件。java程序(即class文件)并不是本地的可执行程序。当运行java程序时,首先运行jvm(java虚拟机),然后再把javaclass加载到jvm里头运行,负责加载javaclass的这部分就叫做类文件加载(classloader)。
本申请实施例中,目标数据流是以代码的形式存在的,执行目标数据流之前,需要将目标数据流进行编译,得到对应的class文件。而在生成对应的class文件之后,需要加载class文件。
步骤230,获取配置数据;
本发明实施例中,所述配置数据可以包括:
输入参数的采集开始时刻和采集结束时刻;
需要采集的输入参数的预设数量;
已采集的输入参数的输出格式;
已采集的输入参数的存储地址。
上述配置数据可以是系统中预设的,或可以是用户根据需求预先配置的。
本申请获取配置数据的步骤,或可以是在接收第一申请之前,或可以是在任何合理的步骤之前。
步骤240,根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;
本申请实施例中,步骤240中,修改所述第一类文件中的特定代码段,包括:
在所述特定代码段之前,插入采集开始时刻和采集结束时刻;
在所述特定代码段之前,插入需采集的输入参数的预设数量;
在特定代码段之前,插入已采集的输入参数的输出格式;
在所述特定代码段之前,插入已采集的输入参数的存储地址。
本申请实施例中,所述特定代码段通常是代码头部,或可以是其他特定的代码段之前。本申请实施例中,修改所述第一类文件中的特定代码段,只是插入配置数据,而上述配置数据只是对代码执行时的部分控制参数的限定,而并非对代码本身逻辑的修改,因此是非侵入式的修改,不会影响到代码本身的稳定性和安全性。
步骤250,根据所述第二申请,加载所述第二类文件。
步骤260,执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
步骤260中,所述执行加载后的所述第二类文件,包括:
在所述采集开始时刻开始采集所述输入参数;
在所述采集结束时刻结束采集所述输入参数。
本申请实施例中,并非在加载第一类文件的初始时刻就开始采集输入参数,而是可以设置开始时刻和结束时刻。在开始时刻到达时,采集输入参数,在结束时刻到达是,结束采集输入参数。
步骤260中,所述执行加载后的所述第二类文件,包括:
在所述采集开始时刻开始采集所述输入参数;
在所述采集到的输入参数数量达到所述预设数量时,结束采集所述输入参数。
本申请实施例中,还可以设置采集输入参数的数量,在达到预设数量时,结束采集。
通过设置采集开始时刻、结束时刻以及预设数量,可以方便的根据需求来采集输入参数,既可以满足需求,又不会浪费系统资源。
本申请实施例中,所述输出格式包括:输入参数名、输入参数内容,以及输入参数时间戳;
所述执行加载后的所述第二类文件,包括:
步骤260中,按照输入参数名和输入参数内容、输入参数时间轨迹相对应,输入所述已采集的输入参数。
本申请实施例中,输出的输入参数中,携带有时间戳,便于后续进行筛选,也便于通过时间戳进行数据的提取、分析、对比等。
本申请实施例中,设置了输入参数的输出格式,按照预设格式输出的参数,能够方便的从中提取有用数据,例如提取某一时间段内的输出参数;也能够方便的进行后续的数据处理,例如数据分析、数据对比、特征分析等。
本申请实施例中,步骤260中,所述执行加载后的所述第二类文件,包括:
根据所述已采集的输入参数的存储地址,存储所述已采集输入参数。
本申请实施例中,根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件,加载第二类文件,然后运行第二类文件。由于配置数据是很方便更改的,可以根据需求随时更改,所以针对不同的目标数据流,只需要更改配置文件,即可以根据需求获取目标数据流的输入参数,无需针对每一个目标数据流更改代码,从而提高了获取输入参数的效率,也简化了操作的流程。
本申请实施例中,步骤260中,所述执行加载后的所述第二类文件,包括:
获取所述目标数据流的类型;
若所述目标数据流的类型为静态数据流,则允许从第零个输入参数开始采集;
若所述目标数据流的类型为非静态数据流,则允许从第一个输入参数开始采集。
非静态数据流的第零个输入参数通常为特定字符,例如this,这个特定字符是系统预设的,即使采集到这个输入参数,对于后续的数据处理也是没有意义的,因此如果目标数据流为静态数据流,就允许从第一个输入参数开始采集。
对于静态数据流和非静态数据流,通过上述方法采集的输入参数,都可以是有效的,这样统一的输入参数,方便后续了数据处理。
本申请实施例中,步骤260之后,即执行加载后的所述第二类文件之后,所述方法还包括:
根据所述输入参数名,从已采集输入参数中,筛选目标输入参数;或,
根据所述时间戳,从已采集输入参数中,筛选目标输入参数。
由于本申请实施例的输入参数是按照预设输出格式存储的,因此根据输入参数名\时间戳等,可以方便的进行参数的筛选,例如可以筛选出输入参数名中包括“输入”或“电流”的输入参数,或是筛选出每天早上10:00至12:00的输入参数。
本申请实施例中,所述配置参数中还包括待采集输入参数的数据流列表;
在获取配置数据之后,在根据所述配置数据,修改所述第一类文件中的特定代码段之前,所述方法还包括:
判断所述目标数据流是否在所述数据流列表中存在;
若存在,则修改所述第一类文件中的特定代码段。
本申请实施例中,还可以在配置参数中设置数据流列表,用来对目标数据流的输入参数的采集的权限控制,如果该目标数据流在数据流列表中存在,则进行输入参数的采集,如果不存在,就不进行输入参数的采集。
配置参数中的数据流列表,可以是系统中预设值的,或可以是用户配置的。通过数据流列表的设置,对于不关心的目标数据流,就不需要采集输入参数,可以减少系统资源的消耗。
图3所示为本申请实施例的数据流输入参数采集方法的流程图,该实施例中,从t1开始采集输入参数,到t2结束输入参数的采集。
如图3所示,所述方法包括:
步骤310,接收执行目标数据流的第一申请。
步骤320,根据第一申请,生产加载目标数据流对应的class文件1的第二申请。
步骤330,获取配置数据;
步骤340,判断配置参数中的数据流列表中,是否有当前目标数据流,如果有,转至步骤350,如果没有,转至步骤390。
步骤350,根据配置数据,修改class文件1中的特定代码段,生成class文件2。
步骤360,加载class文件2。
步骤370,执行加载的class文件2,从t1开始采集,到t2结束采集。
步骤380,按照配置文件中的格式和存储地址,输出输入参数,并存储。
步骤390,加载并执行class文件1。
本申请实施例中,采用非侵入式的方法采集目标数据流的输入参数,方便快捷,效率高。
本申请的实施例中,还可以设置输入参数采集启动命令,在接收到该命令时,启动输入参数的采集。该数据采集启动命令中,可以携带配置数据。
在本申请另一个实施例中,可以将接收到的配置数据,作为输入菜蔬采集启动命令。
图4所示为本申请实施例的数据流输入参数采集方法的流程图,图4所示的实施例中,从目标数据流的第一个有效数据开始采集。
如图4所示,所述方法包括:
步骤410,接收输入参数采集命令。
步骤420,接收执行目标数据流的第一申请,判断该目标数据流是否需要采集输入参数,如果需要,则转至步骤430,如果不需要,则转至步骤490。
步骤430,根据第一申请,生成加载目标数据流对应的class文件1的第二申请。
步骤440,根据配置数据,修改class文件1中的特定代码段,生成class文件2。
步骤450,加载class文件2。
步骤460,执行加载的class文件2,判断目标数据流是否为静态数据流,如果是,则转至步骤470,如果否,则转至步骤480。
步骤470,从第一个输入参数开始采集,按照配置文件中的格式和存储地址,输出输入参数,并存储。
步骤480,从第零个输入参数开始采集,按照配置文件中的格式和存储地址,输出输入参数,并存储。
步骤490,加载并执行class文件1。
本申请实施例中,采用非侵入式的方法采集目标数据流的输入参数,方便快捷,效率高。
本申请实施例中,采用非侵入式的方法采集目标数据流的输入参数,方便快捷,效率高。
图2至图4为一个实施例中数据流输入参数采集方法的流程示意图。应该理解的是,虽然图2至图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
和上述数据流输入参数采集方法相对应,本申请提供了一种数据流输入参数采集装置。
在一个实施例中,如图5所示,所述装置包括:
接收单元510,用于接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;
生成单元520,根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;
配置单元530,用于获取配置数据;
修改单元540,用于根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;
加载单元550,用于根据所述第二申请,加载所述第二类文件;
执行单元560,用于执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
本申请实施例中,修改单元540还用于:
在所述特定代码段之前,插入采集开始时刻和采集结束时刻;
在所述特定代码段之前,插入需采集的输入参数的预设数量;
在特定代码段之前,插入已采集的输入参数的输出格式;
在所述特定代码段之前,插入已采集的输入参数的存储地址。
本申请实施例中,所述执行单元560还用于:
在所述采集开始时刻开始采集所述输入参数;
在所述采集结束时刻结束采集所述输入参数。
本申请实施例中,所述执行单元560还用于:
在所述采集开始时刻开始采集所述输入参数;
在所述采集到的输入参数数量达到所述预设数量时,结束采集所述输入参数。
本申请实施例中,所述输出格式包括:输入参数名、输入参数内容,以及输入参数时间戳;
所述执行单元560还用于:
按照输入参数名和输入参数内容、输入参数时间轨迹相对应,输入所述已采集的输入参数。
本申请实施例中,所述执行单元560还用于:
获取所述目标数据流的类型;
若所述目标数据流的类型为静态数据流,则允许从第零个输入参数开始采集;
若所述目标数据流的类型为非静态数据流,则允许从第一个输入参数开始采集。
本申请实施例中,所述执行单元560还用于:
根据所述已采集的输入参数的存储地址,存储所述已采集输入参数。
本申请实施例中,所述配置参数中包括待采集输入参数的数据流列表;
所述装置还包括判断单元,用于判断所述目标数据流是否在所述数据流列表中存在;
所述修改单元540还用于,若所述目标数据流是否在所述数据流列表中存在,修改所述第一类文件中的特定代码段。
本申请实施例中,所述装置还包括筛选单元,用于:
在执行加载后的所述第二类文件之后,根据所述输入参数名,从已采集输入参数中,筛选目标输入参数;或
在执行加载后的所述第二类文件之后,根据所述时间戳,从已采集输入参数中,筛选目标输入参数。
本申请实施例中,采用非侵入式的方法采集目标数据流的输入参数,方便快捷,效率高。
图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图6所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现数据流输入参数采集方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行数据流输入参数采集方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;获取配置数据;根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;根据所述第二申请,加载所述第二类文件;执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
在一个实施例中,处理器执行计算机程序时还实现上述方法的步骤,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;获取配置数据;根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;根据所述第二申请,加载所述第二类文件;执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
在一个实施例中,计算机程序被处理器执行时还实现上述方法的步骤,在此不再赘述。
在一个实施例中,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行以下步骤:接收执行目标数据流的第一申请,所述目标数据流为待采集输入参数的数据流;根据所述第一申请,生成加载所述的目标数据流对应的第一类文件的第二申请;获取配置数据;根据所述配置数据,修改所述第一类文件中的特定代码段,成为第二类文件;根据所述第二申请,加载所述第二类文件;执行加载后的所述第二类文件,以根据所述第二类文件中已修改的特定代码段,采集输入参数。
在一个实施例中,计算机程序产品或计算机程序执行时还实现上述方法的步骤,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。