CN111400135A - 一种业务数据的提取方法及装置 - Google Patents

一种业务数据的提取方法及装置 Download PDF

Info

Publication number
CN111400135A
CN111400135A CN202010175165.8A CN202010175165A CN111400135A CN 111400135 A CN111400135 A CN 111400135A CN 202010175165 A CN202010175165 A CN 202010175165A CN 111400135 A CN111400135 A CN 111400135A
Authority
CN
China
Prior art keywords
application
service data
extracted
file
configuration information
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.)
Pending
Application number
CN202010175165.8A
Other languages
English (en)
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.)
Puxin Hengye Technology Development Beijing Co ltd
Original Assignee
Puxin Hengye Technology Development Beijing Co ltd
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 Puxin Hengye Technology Development Beijing Co ltd filed Critical Puxin Hengye Technology Development Beijing Co ltd
Priority to CN202010175165.8A priority Critical patent/CN111400135A/zh
Publication of CN111400135A publication Critical patent/CN111400135A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种业务数据的提取方法及装置,该方法包括:获取应用的配置信息,配置信息用于指示应用中待提取的业务数据,以及待提取的业务数据在文件中的位置,文件为应用的源代码被编译后形成的文件;在应用运行之前,在文件中的位置之后,增加目标内容,目标内容用于提取应用运行产生的待提取的业务数据的数值,目标内容依据待提取的业务数据的信息和位置信息确定;通过运行增加目标内容后的文件,得到待提取的业务数据的数值。可见,本申请在待提取的业务数据在应用源代码被编译后形成的文件中的位置之后,增加用于提取应用运行产生的待提取的业务数据的数值的目标内容,不会对应用的源代码进行修改,因此对于应用的源代码无侵入。

Description

一种业务数据的提取方法及装置
技术领域
本申请涉及业务监控领域,尤其涉及一种业务数据的提取方法及装置。
背景技术
业务监控,从软件层面上说,具体监控的是提供某一种业务的应用(例如听音乐的应用软件、银行交易的应用软件等),具体手段为,对应用执行业务请求后所生成的业务数据,进行实时监控和收集,从而帮助业务应用开发方发现问题,定位问题根源。
现有的提取业务数据的方式为,在应用的开发过程中,开发人员在应用的源代码中人工植入日志埋点逻辑,日志埋点逻辑用于获取应用执行业务请求时生成的业务数据,并以日志方式记录业务数据,生成相应的业务日志。明显的,现有的业务数据的提取方法,对应用的源代码进行了侵入式修改。
发明内容
本申请提供了一种业务数据的提取方法及装置,目的在于提供一种对应用无侵入的业务数据的提取方案。
为了实现上述目的,本申请提供了以下技术方案:
一种业务数据的提取方法,包括:
获取应用的配置信息,所述配置信息用于指示所述应用中待提取的业务数据,以及所述待提取的业务数据在文件中的位置,所述文件为所述应用的源代码被编译后形成的文件;
在所述应用运行之前,在所述文件中的所述位置之后,增加目标内容,所述目标内容用于提取所述应用运行产生的所述待提取的业务数据的数值,所述目标内容依据所述待提取的业务数据的信息确定;
通过运行增加所述目标内容后的所述文件,得到所述待提取的业务数据的数值。
可选的,所述应用中待提取的业务数据,包括:所述应用中待提取的业务数据,在所述应用中的逻辑表达式;
所述应用中待提取的业务数据在文件中的位置,包括:
所述应用中待提取的业务数据所属的部分的标识,所述所属的部分包括方法和/或类。
可选的,所述配置信息还用于指示提取方式;
所述提取所述应用运行产生的所述待提取的业务数据的数值,包括:
使用所述提取方式,提取所述应用运行产生的所述待提取的业务数据的数值。
可选的,所述配置信息还用于指示所述待提取的业务数据的数值的存储参数;
所述提取所述应用运行产生的所述待提取的业务数据的数值,包括:
将所述应用运行产生的所述待提取的业务数据的数值,赋值给所述存储参数。
可选的,所述获取应用的配置信息,包括:
依据所述应用的信息,以及预设的对应关系,通过查询获取所述应用的配置信息,所述对应关系包括所述应用与人工设置的所述配置信息之间的对应关系。
可选的,在所述应用运行之前,在所述文件中的所述位置之后,增加目标内容,包括:
在所述应用运行之前,加载预设进程;其中,所述预设进程用于:在所述文件中的所述位置之后,增加所述目标内容。
可选的,所述预设进程包括:Agentmain代理逻辑。
一种业务数据的提取装置,包括:
获取单元,用于获取应用的配置信息,所述配置信息用于指示所述应用中待提取的业务数据的信息,以及所述待提取的业务数据在文件中的位置信息,所述文件为所述应用的源代码被编译后形成的文件;
加载单元,用于在所述应用运行之前,在所述文件中的所述位置之后,增加目标内容,所述目标内容用于提取所述应用运行产生的所述待提取的业务数据的数值;
提取单元,用于运行增加所述目标内容的所述文件,得到所述待提取的业务数据的数值。
一种计算机存储介质,所述计算机存储介质包括存储的程序,其中,所述程序执行上述的业务数据的提取方法。
一种电子设备,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行上述的业务数据的提取方法。
本申请提供的技术方案,包括:获取应用的配置信息,配置信息用于指示应用中待提取的业务数据,以及待提取的业务数据在文件中的位置,文件为应用的源代码被编译后形成的文件;在应用运行之前,在文件中的位置之后,增加目标内容,目标内容用于提取应用运行产生的待提取的业务数据的数值,目标内容依据待提取的业务数据的信息和位置信息确定;通过运行增加目标内容后的文件,得到待提取的业务数据的数值。可见,本申请在应用源代码被编译后形成的文件中,增加用于提取应用运行产生的待提取的业务数据的数值的目标内容,并不会对应用的源代码进行修改,因此对于应用的源代码无侵入。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种业务数据的提取方法的示意图;
图2为本申请实施例提供的一种数据提取配置信息的示意图;
图3为本申请实施例提供的另一种业务数据的提取方法的示意图;
图4为本申请实施例提供的一种业务数据的提取装置的架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请实施例提供的一种业务数据的提取方法的示意图,包括如下步骤:
S101:获取预设的数据提取配置信息。
其中,数据提取配置信息以应用为维度设置,任意一个应用的数据提取配置信息包括:待提取的业务数据在该应用中所属的类的类名、待提取的业务数据在该应用中所属的方法的方法名、待提取的业务数据在该应用中的逻辑表达式、用于存储待提取的业务数据的数值的变量(简称业务变量)的变量名、业务变量的数据类型和待提取的业务数据的提取方式。
在本申请实施例中,待提取的业务数据的逻辑表达式指的是:应用的底层逻辑(例如源代码)中属于某一类的某一方法的输入参数和输出参数的表达式。
参见图2,以提供银行交易业务的应用执行外汇业务请求为例,应用执行外汇业务请求时,需要输入本地货币的具体数值,应用会基于输入的具体数值,反馈兑换后的外币的具体数值。其中,本地货币的具体数值为应用的源代码中“com.creditease.controller.BizController”类的“process”方法的第一个输入参数“$1”,外币的具体数值为应用的源代码中“com.creditease.controller.BizController”类的“process”方法的输出参数“$_”,因此,“$1.bizId”和“$_.state”分别作为待提取的业务数据的逻辑表达式,“com.creditease.controller.BizController”作为待提取的业务数据所属的类的类名,“process”作为待提取的业务数据所属的方法的方法名。
本实施例中,待提取的业务数据在该应用中所属的类的类名、待提取的业务数据在该应用中所属的方法的方法名、待提取的业务数据在该应用中的逻辑表达式、业务变量的变量名、业务变量的数据类型、和待提取的业务数据的提取方式,可由技术人员根据应用的底层逻辑、以及应用所执行的业务请求进行设置。
可选的,实际中,维护人员可以从开发人员处获取每个应用中,待提取的业务数据在该应用中所属的类的类名、待提取的业务数据在该应用中所属的方法的方法名、以及待提取的业务数据在该应用中的逻辑表达式,并设置业务变量的变量名、数据类型、和提取方式,形成应用的配置信息(即数据提取配置信息)。或者,也可以,由维护人员从应用的源代码中手工抓取待提取的业务数据所属的类的类名、待提取的业务数据所属的方法的方法名、以及待提取的业务数据的逻辑表达式,并设置业务变量的变量名、数据类型、和提取方式。无论是何种方式,配置信息均根据应用的底层逻辑、以及应用所执行的业务请求进行设置。
还以图2为例,开发人员告知维护人员:待提取的业务数据所属的类的类名为“com.creditease.controller.BizController”,待提取的业务数据所属的方法的方法名为“process”,待提取的业务数据的逻辑表达式分别为“$_.state”(“process”方法的输出参数“$_”的state属性)和“$1.bizId”(“process”方法的第一个输入参数“$1”的bizId属性)。维护人员设置第一业务变量和第二业务变量,第一业务变量用于存储逻辑表达式为“$_.state”的待提取的业务数据在业务运行过程中产生的数值,第一业务变量的变量名为“state”,数据类型为字符串。第二业务变量用于存储逻辑表达式为“$1.bizId”的待提取的业务数据在业务运行过程中产生的数值,第二业务变量的变量名为“bizId”,数据类型为字符串。“$_.state”和“$1.bizId”的提取方式都为ognl(Object Graph NavigationLanguage,对象导航图语言的缩写,一种从数据对象中提取指定路径属性信息的方式)。
可选的,还可以将应用与数据提取配置信息的对应关系存储至数据库中。因此,本申请实施例可以根据应用的信息(用于区分是提供何种业务的应用)、以及预设的对应关系,通过查询从数据库中获取应用的配置信息(即数据提取配置信息),其中,对应关系包括应用与人工设置的配置信息之间的对应关系。
此外,还可以对数据库中所存储的数据提取配置信息进行修改、增加或者删除,例如,某一应用对应的数据提取配置信息中,将待提取的业务数据的提取方式从ognl修改为jsonpath,或者xpath,增加新的待提取的业务数据在应用中所属的类的类名、新的待提取的业务数据在应用中所属的方法的方法名、新的待提取的业务数据在应用中的逻辑表达式、以及更改业务变量的变量名等。
S102:在应用运行(即运行应用的.class文件)之前,使用独立的java进程加载Agentmain代理逻辑。
需要强调的是,加载Agentmain代理逻辑的具体实现过程包括:启动Agentmain代理逻辑,并将数据提取配置信息发送给Agentmain代理逻辑。
需要说明的是,Agentmain代理是java语言开发工具包(Java SE DevelopmentKit,jdk)所引入的一种特性,在应用底层逻辑的main方法之后运行的代理逻辑,可在应用底层逻辑的类加载之后再次加载该类,即对类进行重定义。对类进行重定义,实质上,就是通过修改类的二进制字节码,改变或者重新定义类的行为。并且,Agentmain代理逻辑提供了在应用运行时通过修改或替换类定义来改变应用底层逻辑的能力。
二进制字节码是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,即.class文件。在应用的源代码被编译后,得到.class文件,并在加载.class文件中的类时,得到类的二进制字节码。
被加载后的Agentmain代理逻辑执行如下步骤:
S103:解析数据提取配置信息,得到解析结果。
其中,解析结果包括:待提取的业务数据在应用中所属的类的类名、待提取的业务数据在应用中所属的方法的方法名、待提取的业务数据在应用中的逻辑表达式、业务变量的变量名、业务变量的数据类型和待提取的业务数据的提取方式。
还以图2示出的数据提取配置信息为例,解析数据提取配置信息,得到解析结果,解析结果包括:变量名为“state”且类型为字符串的第一业务变量用于存储:逻辑表达式为“$_.state”的待提取的业务数据在应用运行过程中产生的数值。变量名为“bizId”且类型为字符串的第二业务变量用于存储:逻辑表达式为“$1.bizId”的待提取的业务数据在应用运行过程中产生的数值,第一业务变量和第二业务变量的数值的提取方式都为ognl。
S104:依据解析结果,生成目标二进制字节码。
其中,目标二进制字节码为用于实现日志埋点逻辑的二进制字节码,日志埋点逻辑具体用于采用数据提取配置信息中预设的提取方式,将待提取的业务数据的数值提取并赋值给对应的业务变量,输出业务变量,生成业务日志。
具体的,以图2示出的数据提取配置信息为例,依据解析结果生成,目标二进制字节码。该目标二进制字节码,所对应实现的日志埋点逻辑具体用于:采用ognl数据提取方式,将“$_.state”的数值提取并赋值给第一业务变量“state”,“$1.bizId”的数值提取并赋值给第二业务变量“bizId”,将第一业务变量和第二业务变量输出并存储至业务日志中。
需要说明的是,目标二进制字节码的具体内容,可以参见现有技术,这里不再赘述。
S105:遍历应用底层逻辑中的各个类,将各个类中类名与待提取的业务数据所属的类的类名相同的类,作为目标类。
其中,目标类包括已加载的类和/或未加载的类。
S106:判断目标类是否加载。
其中,若目标类已加载,则执行S108,否则执行S107。
S107:对目标类进行加载,得到目标类的初始二进制字节码,并将初始二进制字节码存储至缓存中。
其中,在执行S107之后,继续执行S109。
S108:从缓存中获取目标类的初始二进制字节码。
其中,在执行S108之后,继续执行S109。
S109:遍历目标类中的各个方法,将各个方法中方法名与待提取的业务数据所属的方法的方法名相同的方法,作为目标方法。
S110:从目标类的初始二进制字节码中,获取用于实现目标方法的初始二进制字节码。
S111:使用java字节码修改类库,将目标二进制字节码植入到用于实现目标方法的初始二进制字节码之后,得到修改后的二进制字节码。
其中,Java字节码修改类库包括但不限于是Javaassist、ASM、CGLIB等。
需要强调的是,在对目标类进行重定义的情况下,现有技术中,支持使用Java字节码修改类库,对非初始(即修改后)的二进制字节码进行修改(简称为重复修改)。但是,重复修改的过程十分繁琐。因此,本实施例对目标类进行重定义时,都是从缓存中获取目标类的初始二进制字节码,并使用Java字节码修改类库,将新的目标二进制字节码植入到初始二进制字节码之后,得到修改后的二进制字节码,从而实现对目标类的重定义。因此,与现有技术相比,本实施例在对目标类进行重定义时,无需在目标二进制字节码的基础上进行重复修改,重定义过程简单高效。
S112:将修改后的二进制字节码作为目标方法新的二进制字节码。
S113:在S103-S112执行结束之后,使用java虚拟机(Java Virtual Machine,JVM)运行应用的.class文件。
在.class文件中应用的业务逻辑生成业务数据之后,应用的.class文件还会继续运行目标方法中植入的日志埋点逻辑,依据数据提取配置信息中预设的提取方式,赋值并输出业务变量,生成业务日志,从而实现对业务数据的提取。
可见,在应用运行之前加载Agentmain代理逻辑的目的在于,动态植入提取业务数据的数值的目标二进制字节码,避免应用执行业务请求后无法及时提取业务数据的问题。独立的java进程,能够保证Agentmain代理逻辑与其它逻辑(例如应用的运行逻辑)之间不会相互影响。
上述业务数据的提取流程,具有以下有益效果:
1、本实施例中,通过Agentmain代理逻辑,实现对于应用的.class文件的修改,进而实现在应用的底层逻辑中植入日志埋点逻辑的目的,因此,不会修改应用的源代码,与现有技术在源代码中埋点的方式相比,是一种对于应用的源代码无侵入的方式。这种无侵入的方式进一步实现开发人员无感知(即无需开发人员深度参与业务数据的提取逻辑)。并且,在应用的逻辑改动的情况下,可以随之调整配置信息,与在应用的源代码中埋点的方式相比,很容易调整植入日志埋点逻辑。
2、采用Agentmain代理逻辑修改应用底层逻辑的二进制字节码,无需在应用启动脚本中添加额外的参数(例如javaagent参数),基于Agentmain代理逻辑自身的特性,即支持应用运行时热生效,在修改应用底层逻辑的二进制字节码之后,应用无需进行重启,便能够即时生效。可见,本申请所提供的方法还能够实现对处于运行状态下的应用的无感知。
3、独立java进程仅仅与应用底层逻辑相关,应用开发过程使用何种开发框架都不会影响到本实施例提供的方法,因此,本申请不会强制应用开发过程中采用特定的开发框架。
4、由于数据提取配置信息预存在数据库中,并且允许技术人员根据实际情况对数据提取配置信息中进行调整(例如添加、修改和删除),基于Agentmain代理逻辑自身的热生效特性,调整后的数据提取配置信息能够即时生效。可见,本申请提供的方法,对业务数据提取的配置调整简单,具有较高的灵活性。
需要说明的是,在上述图1所示的流程中,配置信息的具体内容以及获取方式以及Agentmain代理逻辑,均为实现方式之一,图1所示的流程,可以概括为以下流程。
如图3所示,为本申请实施例提供的另一种业务数据的提取方法的示意图,包括如下步骤:
S301:获取应用的配置信息。
除了上述实施例中所述的,通过查询预设的对应关系,确定应用对应的配置信息的方式之外,还可以,依据应用,实时获取应用的配置信息,例如,通过人机交互方式,实时接收人工输入的配置信息。
配置信息用于指示应用中待提取的业务数据、以及待提取的业务数据在应用的源代码被编译后形成的文件中的位置。也就是说,配置信息可以包括待提取的业务数据的信息以及待提取的业务数据在应用的源代码被编译后形成的文件中的位置信息。
其中,业务数据的信息,可以依据应用的底层逻辑设置,除了上述实施例中所述的类名和方法名之外,例如,如果应用中还包括函数名,则配置信息还可以包括函数名。又例如,应用的底层逻辑中仅包括类名,而没有方法名,则配置信息中包括类名但不包括方法名。
可选的,除了上述实施例所述的.class文件之外,文件还可以为应用的源代码被编译后形成的其它文件。位置为应用中待提取的业务数据所属的部分的标识,例如上述实施例所述的目标方法的名称,可选的,除了名称之外,标识还可以为编号等。可选的,部分除了方法之外,还可以为类,或者,既包括方法也包括类。
可选的,配置信息还用于指示提取方式,提取方式用于指示提取业务数据的方式,上述实施例所述的待提取的业务数据的提取方式(例如ognl),为提取方式的具体实现方式,但并不作为限定。
可选的,配置信息还用于指示待提取的业务数据的数值的存储参数,上述实施例所述的业务变量的形式和数量,为存储参数的一种具体实现方式,但并不作为限定。
或者,配置信息中也可以不指示提取方式和存储参数,而采用系统默认的提取方式和存储参数。
S302:在应用运行之前,在应用的文件中的位置之后,增加目标内容。
其中,目标内容用于提取应用运行产生的待提取的业务数据的数值,目标内容依据待提取的业务数据的信息确定。具体的确定方式可以参见上述实施例,也可以参见现有技术,这里不再赘述。上述实施例所述的目标二进制字节码,为目标内容的一种具体实现方式,目标内容也可以为其它形式,这里不做限定。
具体的,在应用运行之前,加载预设进程,预设进程用于:在位置之后,增加目标内容。
可选的,除了Agentmain代理逻辑之外,预设的进程还可以为Premain代理逻辑,但Agentmain代理逻辑支持热启动,即配置修改后,无需重启应用即可生效。
S303:通过运行增加目标内容后的文件,得到待提取的业务数据的数值。
其中,运行增加目标内容后的文件,得到待提取的业务数据的数值方式可以参见上述实施例,也可以参见现有技术,这里不再赘述。
在本申请实施例中,获取应用的配置信息,配置信息用于指示应用中待提取的业务数据的信息,以及待提取的业务数据在文件中的位置信息,文件为应用的源代码被编译后形成的文件;在应用运行之前,在文件中的位置之后,增加目标内容,目标内容用于提取应用运行产生的待提取的业务数据的数值,目标内容依据待提取的业务数据的信息和位置信息确定;通过运行增加目标内容后的文件,得到待提取的业务数据的数值。可见,在待提取的业务数据在应用源代码被编译后形成的文件中的位置之后,增加用于提取应用运行产生的待提取的业务数据的数值的目标内容,并不会对应用的源代码进行修改,因此对于应用的源代码无侵入。
与上述图3示出的业务数据的提取方法相对应,本申请实施例还提供一种业务数据的提取装置,如图4所示,包括:
获取单元100,用于获取应用的配置信息,配置信息用于指示应用中待提取的业务数据,以及待提取的业务数据在文件中的位置,文件为应用的源代码被编译后形成的文件。应用中待提取的业务数据的信息,包括:应用中待提取的业务数据,在应用中的逻辑表达式。应用中待提取的业务数据在文件中的位置,包括:应用中待提取的业务数据所属的部分的标识,所属的部分包括方法和/或类。此外,配置信息还用于指示提取方式,以及,还用于指示待提取的业务数据的数值的存储参数。
其中,获取单元100用于获取应用的配置信息的具体实现过程包括:依据应用的信息,以及预设的对应关系,通过查询获取应用的配置信息,对应关系包括应用与人工设置的配置信息之间的对应关系。
加载单元200,用于在应用运行之前,在文件中的位置之后,增加目标内容,目标内容用于提取应用运行产生的待提取的业务数据的数值,目标内容依据待提取的业务数据的信息和位置信息确定。
提取单元300,用于运行增加目标内容的文件,得到待提取的业务数据的数值。
在本申请实施例中,获取应用的配置信息,配置信息用于指示应用中待提取的业务数据的信息,以及待提取的业务数据在文件中的位置信息,文件为应用的源代码被编译后形成的文件;在应用运行之前,在文件中的位置之后,增加目标内容,目标内容用于提取应用运行产生的待提取的业务数据的数值,目标内容依据待提取的业务数据的信息和位置信息确定;通过运行增加目标内容后的文件,得到待提取的业务数据的数值。可见,在待提取的业务数据在应用源代码被编译后形成的文件中的位置之后,增加用于提取应用运行产生的待提取的业务数据的数值的目标内容,并不会对应用的源代码进行修改,因此对于应用的源代码无侵入。
本申请还提供了一种计算机存储介质,计算机存储介质包括存储的程序,其中,程序执行上述本申请提供的业务数据的提取方法。
本申请还提供了一种电子设备,包括:处理器、存储器和总线。处理器与存储器通过总线连接,存储器用于存储程序,处理器用于运行程序,其中,程序运行时执行上述本申请提供的业务数据的提取方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种业务数据的提取方法,其特征在于,包括:
获取应用的配置信息,所述配置信息用于指示所述应用中待提取的业务数据,以及所述待提取的业务数据在文件中的位置,所述文件为所述应用的源代码被编译后形成的文件;
在所述应用运行之前,在所述文件中的所述位置之后,增加目标内容,所述目标内容用于提取所述应用运行产生的所述待提取的业务数据的数值,所述目标内容依据所述待提取的业务数据的信息确定;
通过运行增加所述目标内容后的所述文件,得到所述待提取的业务数据的数值。
2.根据权利要求1所述的方法,其特征在于,所述应用中待提取的业务数据,包括:所述应用中待提取的业务数据,在所述应用中的逻辑表达式;
所述应用中待提取的业务数据在文件中的位置,包括:
所述应用中待提取的业务数据所属的部分的标识,所述所属的部分包括方法和/或类。
3.根据权利要求1所述的方法,其特征在于,所述配置信息还用于指示提取方式;
所述提取所述应用运行产生的所述待提取的业务数据的数值,包括:
使用所述提取方式,提取所述应用运行产生的所述待提取的业务数据的数值。
4.根据权利要求1所述的方法,其特征在于,所述配置信息还用于指示所述待提取的业务数据的数值的存储参数;
所述提取所述应用运行产生的所述待提取的业务数据的数值,包括:
将所述应用运行产生的所述待提取的业务数据的数值,赋值给所述存储参数。
5.根据权利要求1所述的方法,其特征在于,所述获取应用的配置信息,包括:
依据所述应用的信息,以及预设的对应关系,通过查询获取所述应用的配置信息,所述对应关系包括所述应用与人工设置的所述配置信息之间的对应关系。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述应用运行之前,在所述文件中的所述位置之后,增加目标内容,包括:
在所述应用运行之前,加载预设进程;其中,所述预设进程用于:在所述文件中的所述位置之后,增加所述目标内容。
7.根据权利要求6所述的方法,其特征在于,所述预设进程包括:Agentmain代理逻辑。
8.一种业务数据的提取装置,其特征在于,包括:
获取单元,用于获取应用的配置信息,所述配置信息用于指示所述应用中待提取的业务数据的信息,以及所述待提取的业务数据在文件中的位置信息,所述文件为所述应用的源代码被编译后形成的文件;
加载单元,用于在所述应用运行之前,在所述文件中的所述位置之后,增加目标内容,所述目标内容用于提取所述应用运行产生的所述待提取的业务数据的数值;
提取单元,用于运行增加所述目标内容的所述文件,得到所述待提取的业务数据的数值。
9.一种计算机存储介质,其特征在于,所述计算机存储介质包括存储的程序,其中,所述程序执行权利要求1-7任意一项所述的业务数据的提取方法。
10.一种电子设备,其特征在于,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-7任意一项所述的业务数据的提取方法。
CN202010175165.8A 2020-03-13 2020-03-13 一种业务数据的提取方法及装置 Pending CN111400135A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010175165.8A CN111400135A (zh) 2020-03-13 2020-03-13 一种业务数据的提取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010175165.8A CN111400135A (zh) 2020-03-13 2020-03-13 一种业务数据的提取方法及装置

Publications (1)

Publication Number Publication Date
CN111400135A true CN111400135A (zh) 2020-07-10

Family

ID=71430883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010175165.8A Pending CN111400135A (zh) 2020-03-13 2020-03-13 一种业务数据的提取方法及装置

Country Status (1)

Country Link
CN (1) CN111400135A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010555A (zh) * 2021-03-11 2021-06-22 京东数字科技控股股份有限公司 数据流输入参数的采集方法、装置、设备和存储介质
CN113867832A (zh) * 2021-09-15 2021-12-31 广州云徙科技有限公司 动态修改业务数据逻辑方法、系统、计算机设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107067324A (zh) * 2017-04-18 2017-08-18 上海翼翎数据信息技术有限公司 一种利用网络抓包数据实现交易风险控制的方法和系统
CN107870979A (zh) * 2017-09-30 2018-04-03 平安科技(深圳)有限公司 电子装置、提取数据表的数据的方法及存储介质
CN108038045A (zh) * 2017-12-29 2018-05-15 上海新炬网络技术有限公司 基于无埋点的Android用户行为数据采集方法
CN108536589A (zh) * 2018-03-26 2018-09-14 广州小鹏汽车科技有限公司 一种应用程序埋点方法及系统
CN109460243A (zh) * 2018-10-17 2019-03-12 福建南威软件有限公司 一种基于Agentmain的生产环境在线类替换方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107067324A (zh) * 2017-04-18 2017-08-18 上海翼翎数据信息技术有限公司 一种利用网络抓包数据实现交易风险控制的方法和系统
CN107870979A (zh) * 2017-09-30 2018-04-03 平安科技(深圳)有限公司 电子装置、提取数据表的数据的方法及存储介质
CN108038045A (zh) * 2017-12-29 2018-05-15 上海新炬网络技术有限公司 基于无埋点的Android用户行为数据采集方法
CN108536589A (zh) * 2018-03-26 2018-09-14 广州小鹏汽车科技有限公司 一种应用程序埋点方法及系统
CN109460243A (zh) * 2018-10-17 2019-03-12 福建南威软件有限公司 一种基于Agentmain的生产环境在线类替换方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010555A (zh) * 2021-03-11 2021-06-22 京东数字科技控股股份有限公司 数据流输入参数的采集方法、装置、设备和存储介质
CN113867832A (zh) * 2021-09-15 2021-12-31 广州云徙科技有限公司 动态修改业务数据逻辑方法、系统、计算机设备及介质
CN113867832B (zh) * 2021-09-15 2024-04-02 广州云徙科技有限公司 动态修改业务数据逻辑方法、系统、计算机设备及介质

Similar Documents

Publication Publication Date Title
CN110162296B (zh) 应用程序编程接口文档的生成方法、装置及终端设备
US9858183B2 (en) Determining a benefit of reducing memory footprint of a Java application
Livshits et al. Reflection analysis for Java
US6662362B1 (en) Method and system for improving performance of applications that employ a cross-language interface
US6530075B1 (en) JIT/compiler Java language extensions to enable field performance and serviceability
US7275241B2 (en) Dynamic instrumentation for a mixed mode virtual machine
US6637025B1 (en) Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
JP5147728B2 (ja) 質的に注釈を付けられた注釈付きコード
US7900198B2 (en) Method and system for parameter profile compiling
EP1172729A2 (en) Apparatus and method for cataloguing symbolic data for use in performance analysis of computer programs
JP2000040007A (ja) バイトコ―ド・コンパイラのためのコ―ド生成
US9250865B2 (en) Selective speculative class-based optimization
CA2391313A1 (en) Language subset validation
CN111258557B (zh) 代码处理方法、装置、电子设备及计算机可读介质
CN111400135A (zh) 一种业务数据的提取方法及装置
Schwermer Performance evaluation of kotlin and java on android runtime
CN112214267A (zh) 一种安卓脱壳加速方法、装置、存储介质及计算机设备
EP2100225B1 (en) Method, system and computer program for identifying interpreted programs through class loading sequences
Choi et al. Reusable inline caching for JavaScript performance
CN112631656A (zh) 一种基于源代码的智能合约优化方法及装置
Qiu et al. Libcapsule: Complete confinement of third-party libraries in android applications
Mohsin WGSLsmith: a random generator of WebGPU shader programs
CN115904928A (zh) 一种慢函数监控的插桩方法、装置、设备及存储介质
EP1136910A2 (en) A method of compiling code in an object oriented programming language
CN108920219B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200710