CN109063040B - 客户端程序数据采集方法及*** - Google Patents

客户端程序数据采集方法及*** Download PDF

Info

Publication number
CN109063040B
CN109063040B CN201810784703.6A CN201810784703A CN109063040B CN 109063040 B CN109063040 B CN 109063040B CN 201810784703 A CN201810784703 A CN 201810784703A CN 109063040 B CN109063040 B CN 109063040B
Authority
CN
China
Prior art keywords
function
target
calling
call
screening
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810784703.6A
Other languages
English (en)
Other versions
CN109063040A (zh
Inventor
闻立杰
李肖赫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201810784703.6A priority Critical patent/CN109063040B/zh
Publication of CN109063040A publication Critical patent/CN109063040A/zh
Application granted granted Critical
Publication of CN109063040B publication Critical patent/CN109063040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种客户端程序数据采集方法及***。该方法包括:执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能;对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑;根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。本发明实施例从客户端程序功能调用时的函数执行的角度出发,通过定义函数调用逻辑,采用反射调用的方式重新执行目标函数的流程,进而获得目标函数的返回值以实现数据的采集,无需在客户端界面中采集就能够实现客户端程序数据的采集,提高了采集效率。

Description

客户端程序数据采集方法及***
技术领域
本发明实施例涉及计算机领域,更具体地,涉及一种客户端程序数据采集方法及***。
背景技术
近年来,大数据技术高速发展。由于大数据的价值是来自于各个来源的数据的融合,以及基于此的智能化分析。而数据孤岛问题会影响数据的融合,因此,数据孤岛问题逐渐吸引了大家的关注。为了解决数据孤岛问题,数据集成是突破“信息孤岛”最为有效的方法。因此如何实时全面的获取互联网中的数据成为人们关心的重要问题。为解决这类问题,各种用于采集互联网数据的爬虫方法一直是人们的研究热点。但是,针对各类客户端程序,通常采用人工采集的方式,其存在着采集效率低的缺陷。
发明内容
为了解决上述问题,本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的客户端程序数据采集方法及***。
根据本发明实施例的第一方面,提供一种客户端程序数据采集方法,该方法包括:执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能;对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑;根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。
根据本发明实施例第二方面,提供了一种客户端程序数据采集***,该***包括:记录模块,用于执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能;筛选模块,用于对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑;调用模块,用于根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。
根据本发明实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的客户端程序数据采集方法。
根据本发明实施例的第四方面,提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的客户端程序数据采集方法。
本发明实施例提供的客户端程序数据采集方法及***,从客户端程序功能调用时的函数执行的角度出发,通过定义函数调用逻辑,采用反射调用的方式重新执行目标函数的流程,进而获得目标函数的返回值以实现数据的采集,无需在客户端界面中采集就能够实现客户端程序数据的采集,提高了采集效率;并且,由于可以将目标函数的调用逻辑重新定义成接口,可以方便地将各种客户端的数据整合在同一平台,能够打破各客户端之间的数据壁垒,便于将各客户端中的数据进行整合。
应当理解的是,以上的一般描述和后文的细节描述是示例性和解释性的,并不能限制本发明实施例。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1为本发明实施例提供的客户端程序数据采集方法的流程示意图;
图2为本发明另一实施例提供的客户端程序数据采集方法的流程示意图;
图3为本发明实施例提供的字节码插桩方法的流程示意图;
图4为本发明实施例提供的实现客户端程序数据采集方法的***部署结构示意图;
图5为本发明实施例提供的实现客户端程序数据采集方法的实际例子的数据流示意图;
图6为本发明实施例提供的实现客户端程序数据采集方法的实际例子的业务数据采集平台的架构示意图;
图7为本发明实施例提供的客户端程序数据采集***的结构示意图;
图8为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的客户端程序数据采集方法的流程示意图,参见图1,该方法包括:
101、执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能。
其中,客户端可以为在Java平台或.NET平台上运行的客户端,本发明实施例对此不作限定。一个客户端程序可包括多种功能,由于需要对客户端程序的数据进行采集,因此需要将与客户端的获取数据相关的功能作为目标功能。目标功能包括客户端中显示数据列表的功能和显示各类信息的功能,本发明实施例对此不做限定。在执行客户端程序的各目标功能时,可以多次执行同一目标功能,并可使用相应的程序运行监控工具记录客户端执行目标功能时的函数调用信息。其中,程序运行监控工具可根据客户端程序的类型进行相应的选择,例如可以使用Jprofile的CPU Trace功能记录获得Java客户端的函数调用信息,可以使用ANTS Performance Profiler记录获得.NET客户端的函数调用信息。
102、对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑。
其中,函数调用信息中可包括函数调用日志,函数调用日志表示客户端程序执行目标功能时函数执行顺序,即包括多个函数及各函数的执行顺序。由于客户端程序实现功能时会包括多种功能,并不仅限于获取数据,不同的功能由不同的函数实现。因此,需要对函数进行筛选,获得与获取数据相关的目标函数。在获得多个目标函数后,可定义目标函数的函数调用逻辑,函数调用逻辑用于指示各目标函数的调用顺序等其他调用、执行目标函数时所需的相关信息。
103、根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。
其中,反射调用是指在函数运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。在对客户端程序进行数据采集时,可以根据函数调用逻辑,利用编程语言的反射特性,逐一调用目标函数并得到各目标函数的返回值,返回值即为需要采集的数据。
本发明实施例提供的方法,从客户端程序功能调用时的函数执行的角度出发,通过定义函数调用逻辑,采用反射调用的方式重新执行目标函数的流程,进而获得目标函数的返回值以实现数据的采集,无需在客户端界面中采集就能够实现客户端程序数据的采集,提高了采集效率;并且,由于可以将目标函数的调用逻辑重新定义成接口,可以方便地将各种客户端的数据整合在同一平台,能够打破各客户端之间的数据壁垒,便于将各客户端中的数据进行整合。
基于上述实施例的内容,函数调用信息包括函数调用参数,相应地,作为一种可选实施例,提供一种对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数的方法,包括但不限于:
步骤1、对函数调用信息中的各函数进行初步筛选,去除与目标功能无关的函数。
步骤2、根据每个函数对应的函数调用参数,对函数进行筛选,获得目标函数。
具体地,对函数的筛选可分为两个步骤。上述步骤1为初步筛选,目的是去除与目标功能无关的函数,换言之,目的是获取与目标功能大概率相关的函数。作为一种可选实施例,函数调用信息包括函数调用日志,函数调用参数包括函数的类名,相应地,提供一种对函数调用信息中的各函数进行初步筛选,去除与目标功能无关的函数的方法,包括但不限于:
若判断获知函数的调用次数与函数在函数调用日志的出现次数不匹配,则去除函数;和/或,若判断获知函数的类名与预先设置的无关函数类名库中的类名相匹配,则去除函数。
其中,函数调用信息可包括两部分内容:函数调用日志以及函数调用参数。其中,函数调用日志反映多个函数的执行顺序,因此,可以基于函数调用日志得到函数出现次数;函数调用参数可包括函数的类名、方法名、参数数量、参数的类型、函数的执行时间、函数的返回值类型等。初步筛选可采用上述两种方式中的至少一种,并且,在采用两种方式的情况下,本发明实施例对两种方式执行的先后顺序不作限定。其中,针对第一种方式,若函数调用次数(即函数实际使用次数)与函数出现次数不相同,则确认该函数不是目标函数。针对第二种方式,可预先创建无关函数类名库,将与采集数据的功能无关的函数的类名均存储在该无关函数类名库。从而可以通过将函数的类名与无关函数类名库中的各类名进行一一比对,将类名与无关函数类名库中类名相同的函数去除。基于上述两种初步筛选的方式能够得到与获取数据大概率相关的函数。
步骤2为进一步筛选,在执行步骤2前,由于经过监控工具得到的函数调用信息只能得到函数的启动与结束时间,无法得到各函数之间的调用关系,基于此,作为一种可选实施例,提供一种建立函数调用关系的方法,包括但不限于:建立调用关系二叉树,调用关系二叉树用于指示经过初步筛选后的函数的调用关系。具体地,可以建立调用关系二叉树,二叉树中节点的左子树为父节点函数的子函数,结点的右子树为与父节点函数同级的接下来要执行的函数,之后通过遍历调用关系二叉树就可以得到各函数的调用顺序和调用关系。
针对上述步骤2,是对函数进行的进一步筛选。具体可以通过函数调用参数进行进一步筛选。针对函数调用参数,由于函数调用参数包括函数的类名、方法名、参数数量、参数的类型、函数的执行时间、函数的返回值类型等,因此,可对上述参数中的至少一种设定条件,将不满足条件的函数去除,最终获得目标函数。
基于上述实施例的内容,作为一种可选实施例,提供一种定义目标函数的函数调用逻辑的方法,包括但不限于:若判断获知目标函数在反射调用时需要目标参数,则获取目标函数的目标参数;根据多个目标函数的调用流程设置多个目标函数的执行顺序,并为在反射调用时需要目标参数的目标函数设置目标参数,生成函数调用逻辑。
具体地,判断目标函数是否需要目标参数,可通过函数调用日志进行判断。例如对于Jprofile,函数的目标参数包含在函数调用日志的函数名之后,如果括号中存在目标参数,则需要获取函数的目标参数;如果括号中的内容为空,则不需要获取函数的目标参数。对于不同的客户端可采用不同的方式获取目标参数。例如,对于Java客户端的目标函数,可以通过字节码插桩的方法在Java编译后的class文件中增加切点来输出目标函数的目标参数;对于.Net客户端可以使用例如IntelliTrace工具等获取目标函数的目标参数。在生成函数调用逻辑的过程中,根据目标函数的实际调用流程设置目标函数的执行顺序,并对具有目标参数的目标函数设置相应的目标参数,从而生成函数调用逻辑。目标参数的设置具体可包括以下三种:参数的值是一个确定不变的值,参数的值是数据源逻辑中之前函数的返回值,参数的值需要在调用时根据需要动态获取。
基于上述实施例的内容,提供一种获取目标函数的调用参数的方法,包括但不限于:若客户端为Java客户端,则通过字节码插桩法获取调用参数。具体地,参见图3,字节码插桩法具体包括如下步骤:首先确定好插桩之后,切点中目标函数的目标参数输出到函数调用日志中的位置。之后使用Javaassist工具,在目标函数的开头增加指令切点输出目标函数的全部参数,Javaassist中$args代表了目标函数传入的参数数组,因此在目标函数的开头遍历并输出参数数组中的参数值到函数调用日志中即可完成参数值的获取。之后生成新的增加切点后的java class字节码文件,使用这个字节码文件替换原始程序编译后的字节码文件,之后重新执行程序即可在函数调用日志中得到函数的目标参数。目标参数分为基本类型以及常用如数组、链表等数据结构类型以及用户自定义的类的类型,需要解析并处理每种类型中的值。
以下对实现上述本发明实施例提供的客户端程序数据采集方法进行举例说明。参见图4,为本发明实施例中Java或.Net客户端程序数据采集方法的***部署结构示意图,主要由函数调用日志与函数信息(即为函数调用参数)、客户端数据源、客户端数据采集***、客户端数据平台组成,其中:
函数调用日志与函数调用参数:函数调用日志指通过程序运行时的相关工具得到的函数执行顺序日志,其中Java客户端可以使用Jprofile等类似工具,.NET客户端可以使用ANTS Performance Profiler等类似工具。函数调用参数包括了函数的类名、方法名、参数数量、参数的类型、函数的执行时间、函数的返回值类型等;
客户端数据源:指被采集数据的Java或.Net客户端的数据,包括数据库、文件、其他数据存储等数据来源;
客户端数据采集***:分为数据源接口抽取***以及数据采集***,数据源接口抽取***指从函数调用日志及函数调用信息中筛选目标函数及获取目标参数,并定义数据源函数逻辑(例如由工程师定义)从而形成数据源,数据采集***指根据数据源的函数逻辑,反射调用获取客户端中的数据。
客户端数据平台:指操作数据源定义,对数据源以及数据采集任务进行统一管理的***。
参见图2,为本发明实施例中Java或.Net客户端程序数据采集方法的流程示意图,该方法包括:
201、多次执行客户端的目标功能,并使用程序运行监控工具记录函数调用信息。
具体地,通过多次执行需要采集数据的客户端的目标功能,并且使用相关程序运行监控工具记录客户端功能执行时的函数调用情况得到函数调用信息。其中,函数调用信息包括函数调用日志和函数调用参数。
202、读取函数调用日志,根据实际执行次数以及无关类与函数名库(即无关函数类名库)进行初筛。
具体地,当读取了函数调用日志后,客户端数据采集***会读取每条函数调用日志并根据预设的方法对函数调用日志中的条目进行初筛。例如可以根据实际使用次数与函数出现的次数进行匹配,相同时可以保留。并可以设置无关函数类名库,对类名与无关函数类名库中的类名相同的函数进行删除。
203、建立二叉树维护函数调用关系。
具体地,可以通过维护一棵调用关系二叉树,结点的左子树为父节点函数的子函数,结点的右子树为与父节点函数同级的接下来要执行的函数,之后通过遍历二叉树可以得到函数调用日志中函数的调用顺序。
204、挑选获得目标函数。
具体地,可以得到初筛之后的函数的调用关系,并结合函数调用参数进一步挑选得到目标函数。
205、需要判断每一个目标函数在反射调用时是否需要目标参数,若是,则执行步骤206,若否,则执行步骤207。
具体地,对于Jprofile,目标函数的目标参数包含在函数调用日志的函数名之后,如果括号中有参数,那么就需要获取目标函数的目标参数,如果括号中内容为空就代表目标函数不需要目标参数。
206、获取函数的目标参数。
目标参数的获取主要使用两种方法:对于Java客户端的目标函数可以通过字节码插桩的方法在Java编译后的class文件中增加切点,输出目标函数的目标参数,对于.Net客户端可以使用例如IntelliTrace工具等获取目标参数。对于字节码插桩的方法,具体步骤可参见上述结合图3的说明,在此不再赘述。
207、设置函数执行顺序与目标参数,生成数据源逻辑(即函数调用逻辑)。
首先需要根据目标函数的实际调用流程设置目标函数的执行顺序,同时对于拥有目标参数的目标函数,需要设置目标参数才能生成数据源的完整函数逻辑。目标参数的设置主要分为三种:参数的值是一个确定不变的值,参数的值是数据源逻辑中之前函数的返回值,参数的值需要在调用时根据需要动态获取。
208、根据数据源逻辑反射调用以采集数据。
具体地,在进行数据采集时,需要依据数据源逻辑利用语言的反射特性,逐一调用目标函数并得到返回值,目标函数的返回值即为要采集的数据。
综上,可以看出,***直接从数据获取功能的流程角度出发,通过反射调用相关的函数模拟客户端从而进行数据采集,避开了传统的直接在页面中进行数据采集的方法,同时产生了可以直接调用的数据源逻辑,使得数据源生成工作一劳永逸,极大的方便了之后的数据采集以及整合。
其次参数的灵活设置,保证了数据源的灵活性,可以实现的复杂的函数执行逻辑,同时数据源的功能也不固定,可以根据实际需要设置数据源的参数。
基于上述步骤201至208,参见图5,实际实现上述方法的数据流如下:以业务数据采集平台为核心,以接口采集工具及相应的程序分析工具为依托。数据流首先从Jprofile等工具中以函数调用日志(包括函数调用参数)的形式流出,之后后台管理员使用接口采集工具对日志进行分析,并经过处理形成函数调用逻辑,信息流以函数调用逻辑的日志文件的形式流出,之后管理员和用户可以与数据采集平台交互信息。
在数据采集平台部分,数据源信息、用户信息、任务信息、参数信息等都保存在数据库中。管理员与平台进行数据流通从而进行数据源、采集任务、参数等的管理。用户与平台进行数据流通从而使用服务并进行数据采集。平台与数据库之间也存在着数据流从而进行数据的保存与获取。
下面结合图6进行说明,图6为上述图5的实际实现例子中的数据采集平台部分的实现架构图:
PC对数据采集平台进行使用与访问,数据采集平台中包括了日志分析、数据源定义、参数服务、数据采集等功能,管理员使用接口采集工具完成对日志的分析以及数据源逻辑文件的生成,之后上传平台完成数据源定义后用户方可进行数据采集。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述***的优势和意义与Java或.Net客户端程序数据采集的方法的优势与意义相同,在此不再赘述。
基于上述实施例的内容,本发明实施例提供了一种客户端程序数据采集***,该客户端程序数据采集***用于执行上述方法实施例中的客户端程序数据采集方法。参见图7,该***包括:
记录模块701,用于执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能。
其中,客户端可以为在Java平台或.NET平台上运行的客户端,本发明实施例对此不作限定。一个客户端程序可包括多种功能,由于需要对客户端程序的数据进行采集,因此需要记录模块701将与客户端的获取数据相关的功能作为目标功能。目标功能包括客户端中显示数据列表的功能和显示各类信息的功能,本发明实施例对此不做限定。在记录模块701执行客户端程序的各目标功能时,可以多次执行同一目标功能,并可使用相应的程序运行监控工具记录客户端执行目标功能时的函数调用信息。其中,程序运行监控工具可根据客户端程序的类型进行相应的选择,例如可以使用Jprofile的CPU Trace功能记录获得Java客户端的函数调用信息,可以使用ANTS PerformanceProfiler记录获得.NET客户端的函数调用信息。
筛选模块702,用于对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑。
其中,函数调用信息中可包括函数调用日志,函数调用日志表示客户端程序执行目标功能时函数执行顺序,即包括多个函数及各函数的执行顺序。由于客户端程序实现功能时会包括多种功能,并不仅限于获取数据,不同的功能由不同的函数实现。因此,需要筛选模块702对函数进行筛选,获得与获取数据相关的目标函数。在筛选模块702获得多个目标函数后,可定义目标函数的函数调用逻辑,函数调用逻辑用于指示各目标函数的调用顺序等其他调用、执行目标函数时所需的相关信息。
调用模块703,用于根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。
其中,反射调用是指在函数运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。在对客户端程序进行数据采集时,调用模块703可以根据函数调用逻辑,利用编程语言的反射特性,逐一调用目标函数并得到各目标函数的返回值,返回值即为需要采集的数据。
本发明实施例提供的***,从客户端程序功能调用时的函数执行的角度出发,通过定义函数调用逻辑,采用反射调用的方式重新执行目标函数的流程,进而获得目标函数的返回值以实现数据的采集,无需在客户端界面中采集就能够实现客户端程序数据的采集,提高了采集效率;并且,由于可以将目标函数的调用逻辑重新定义成接口,可以方便地将各种客户端的数据整合在同一平台,能够打破各客户端之间的数据壁垒,便于将各客户端中的数据进行整合。
作为一种可选实施例,函数调用信息包括函数调用参数;相应地,筛选模块,包括:第一筛选单元,用于对函数调用信息中的各函数进行初步筛选,去除与目标功能无关的函数;第二筛选单元,用于根据每个函数对应的函数调用参数,对函数进行筛选,获得目标函数。
作为一种可选实施例,函数调用信息包括函数调用日志,函数调用参数包括函数的类名;相应地,第一筛选单元,具体用于:若判断获知函数的调用次数与函数在函数调用日志的出现次数不匹配,则去除函数;和/或,若判断获知函数的类名与预先设置的无关函数类名库中的类名相匹配,则去除函数。
作为一种可选实施例,筛选模块,还包括:建立单元,用于建立调用关系二叉树,调用关系二叉树用于指示经过初步筛选后的函数的调用关系。
作为一种可选实施例,筛选模块,包括:定义单元,用于若判断获知目标函数在反射调用时需要目标参数,则获取目标函数的目标参数;根据多个目标函数的调用流程设置多个目标函数的执行顺序,并为在反射调用时需要目标参数的目标函数设置目标参数,生成函数调用逻辑。
作为一种可选实施例,定义单元,包括:获取子单元,用于若客户端为Java客户端,则通过字节码插桩法获取调用参数。
本发明实施例提供了一种电子设备,如图8所示,该设备包括:处理器(processor)801、存储器(memory)802和总线803;其中,处理器801及存储器802分别通过总线803完成相互间的通信;处理器801用于调用存储器802中的程序指令,以执行上述实施例所提供的客户端程序数据采集方法,例如包括:执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能;对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑;根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。
本发明实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行对应实施例所提供的客户端程序数据采集方法,例如包括:执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,目标功能是与客户端程序获取数据相关的功能;对函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义目标函数的函数调用逻辑;根据函数调用逻辑,采用反射调用的方式依次调用各目标函数,获得目标函数的返回值。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种客户端程序数据采集方法,其特征在于,包括:
执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,所述目标功能是与所述客户端程序获取数据相关的功能;
对所述函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义所述目标函数的函数调用逻辑;
根据所述函数调用逻辑,采用反射调用的方式依次调用各所述目标函数,获得所述目标函数的返回值。
2.根据权利要求1所述的方法,其特征在于,所述函数调用信息包括函数调用参数;相应地,所述对所述函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,包括:
对所述函数调用信息中的各函数进行初步筛选,去除与所述目标功能无关的所述函数;
根据每个所述函数对应的所述函数调用参数,对所述函数进行筛选,获得所述目标函数。
3.根据权利要求2所述的方法,其特征在于,所述函数调用信息包括函数调用日志,所述函数调用参数包括函数的类名;
相应地,所述对所述函数调用信息中的各函数进行初步筛选,去除与所述目标功能无关的所述函数,包括:
若判断获知所述函数的调用次数与所述函数在所述函数调用日志的出现次数不匹配,则去除所述函数;和/或,
若判断获知所述函数的类名与预先设置的无关函数类名库中的类名相匹配,则去除所述函数。
4.根据权利要求2所述的方法,其特征在于,所述根据每个所述函数对应的所述函数调用信息,对所述函数进行筛选之前,还包括:
建立调用关系二叉树,所述调用关系二叉树用于指示经过初步筛选后的所述函数的调用关系。
5.根据权利要求1所述的方法,其特征在于,所述定义所述目标函数的函数调用逻辑,包括:
若判断获知所述目标函数在反射调用时需要目标参数,则获取所述目标函数的目标参数;
根据多个所述目标函数的调用流程设置多个所述目标函数的执行顺序,并为在反射调用时需要所述目标参数的所述目标函数设置所述目标参数,生成所述函数调用逻辑。
6.根据权利要求5所述的方法,其特征在于,所述获取所述目标函数的调用参数,包括:
若所述客户端为Java客户端,则通过字节码插桩法获取所述调用参数。
7.一种客户端程序数据采集***,其特征在于,包括:
记录模块,用于执行客户端程序的目标功能,并在执行过程中记录获得函数调用信息,所述目标功能是与所述客户端程序获取数据相关的功能;
筛选模块,用于对所述函数调用信息中的各函数进行筛选,获得与获取数据相关的目标函数,并定义所述目标函数的函数调用逻辑;
调用模块,用于根据所述函数调用逻辑,采用反射调用的方式依次调用各所述目标函数,获得所述目标函数的返回值。
8.根据权利要求7所述的***,其特征在于,所述函数调用信息包括函数调用参数;相应地,所述筛选模块,包括:
第一筛选单元,用于对所述函数调用信息中的各函数进行初步筛选,去除与所述目标功能无关的所述函数;
第二筛选单元,用于根据每个所述函数对应的所述函数调用参数,对所述函数进行筛选,获得所述目标函数。
9.一种电子设备,其特征在于,包括:
至少一个处理器;
以及与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
CN201810784703.6A 2018-07-17 2018-07-17 客户端程序数据采集方法及*** Active CN109063040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810784703.6A CN109063040B (zh) 2018-07-17 2018-07-17 客户端程序数据采集方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810784703.6A CN109063040B (zh) 2018-07-17 2018-07-17 客户端程序数据采集方法及***

Publications (2)

Publication Number Publication Date
CN109063040A CN109063040A (zh) 2018-12-21
CN109063040B true CN109063040B (zh) 2020-07-07

Family

ID=64817026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810784703.6A Active CN109063040B (zh) 2018-07-17 2018-07-17 客户端程序数据采集方法及***

Country Status (1)

Country Link
CN (1) CN109063040B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035823B (zh) * 2019-06-03 2023-06-27 腾讯科技(深圳)有限公司 数据获取方法、装置、终端及存储介质
CN111026376B (zh) * 2019-11-11 2023-09-29 贝壳技术有限公司 函数配置方法、装置、存储介质及电子设备
CN114398102B (zh) * 2022-01-18 2023-08-08 杭州米络星科技(集团)有限公司 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105471968A (zh) * 2015-11-17 2016-04-06 北京皮尔布莱尼软件有限公司 一种数据交换方法、***以及数据平台服务器
CN106506519A (zh) * 2016-11-21 2017-03-15 辽宁科技大学 WCF框架net.tcp协议跨平台通信的***及方法
CN107688611A (zh) * 2017-08-03 2018-02-13 杭州铭师堂教育科技发展有限公司 一种基于saltstack的Redis键值管理***及方法
CN107908392A (zh) * 2017-11-13 2018-04-13 平安科技(深圳)有限公司 数据采集工具包定制方法、装置、终端和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10380649B2 (en) * 2014-03-03 2019-08-13 Spotify Ab System and method for logistic matrix factorization of implicit feedback data, and application to media environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105471968A (zh) * 2015-11-17 2016-04-06 北京皮尔布莱尼软件有限公司 一种数据交换方法、***以及数据平台服务器
CN106506519A (zh) * 2016-11-21 2017-03-15 辽宁科技大学 WCF框架net.tcp协议跨平台通信的***及方法
CN107688611A (zh) * 2017-08-03 2018-02-13 杭州铭师堂教育科技发展有限公司 一种基于saltstack的Redis键值管理***及方法
CN107908392A (zh) * 2017-11-13 2018-04-13 平安科技(深圳)有限公司 数据采集工具包定制方法、装置、终端和存储介质

Also Published As

Publication number Publication date
CN109063040A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
JP6928552B2 (ja) 影響分析
CN106682097B (zh) 一种处理日志数据的方法和装置
CN109189469B (zh) 基于反射的安卓应用微服务化方法及***
US8839107B2 (en) Context based script generation
CN109063040B (zh) 客户端程序数据采集方法及***
EP2110781A1 (en) Method and system for automatic tracing of a computerized process using a relationship model
US8627337B2 (en) Programmatic modification of a message flow during runtime
CN106293891B (zh) 多维投资指标监督方法
CN111176979B (zh) 一种图数据库的测试用例生成方法和装置
CN109240666B (zh) 基于调用栈和依赖路径的函数调用代码生成方法及***
CN114595201A (zh) 一种接口访问日志采集记录查询方法、设备及存储介质
CN113568604B (zh) 风控策略的更新方法、装置及计算机可读存储介质
US8850407B2 (en) Test script generation
CN115357898A (zh) 一种java组件的依赖分析方法、装置及介质
CN114064503A (zh) 一种ui自动化测试方法、装置、电子设备及存储介质
CN114297961A (zh) 一种芯片测试用例处理方法及相关装置
CN110716866A (zh) 代码质量扫描方法、装置、计算机设备及存储介质
CN107330031B (zh) 一种数据存储的方法、装置及电子设备
CN112861059A (zh) 可视化组件生成方法、装置、计算机设备及可读存储介质
CN111435327B (zh) 一种日志记录的处理方法、装置及***
CN116578497A (zh) 一种接口自动化测试方法、***、计算机设备及存储介质
CN116560626A (zh) 基于自定义规则的数据处理方法、***、设备和存储介质
US9032372B2 (en) Runtime environment and method for non-invasive monitoring of software applications
CN112685370B (zh) 一种日志采集方法、装置、设备和介质
CN114691519A (zh) 接口自动化测试方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant