CN114138594A - 一种埋点方法、装置、电子设备及存储介质 - Google Patents
一种埋点方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114138594A CN114138594A CN202111315782.4A CN202111315782A CN114138594A CN 114138594 A CN114138594 A CN 114138594A CN 202111315782 A CN202111315782 A CN 202111315782A CN 114138594 A CN114138594 A CN 114138594A
- Authority
- CN
- China
- Prior art keywords
- buried point
- attribute
- class
- target node
- point object
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种埋点方法、装置、电子设备及存储介质。该方法包括:在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,目标节点为页面中所包含的实例化的类或者实例化的类中的类属性;响应于埋点对象标识集合中包含与目标节点匹配的埋点对象标识,利用装饰器和目标节点对应的属性描述符,在目标节点后添加匹配的埋点对象标识所标识的埋点对象。由于本方案中是在需要添加埋点的目标节点后添加埋点对象,而非设置于目标节点内部,降低了代码的冗余,也降低了代码之间的耦合度,提高了代码可读性,在埋点更新时,无需重新开发类的代码,便于维护,且利用装饰器进行埋点,使用方式非常简单。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种埋点方法、装置、电子设备及存储介质。
背景技术
埋点是在网站或程序中针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程,实质是监听软件应用运行过程中的事件,当需要关注的事件发生时进行判断和捕获。一般,埋点方式可以包括代码埋点、可视化埋点、全埋点三种。其中,代码埋点能够满足业务需求的任何场景,是其他两种埋点的必要补充。实现代码埋点时,需要开发者将埋点写入到方法内部,其优点是,可以保证收集到的信息更加准确和全面,降低数据分析的难度,但是,使可读性变差,埋点需求更新需要重新开发方法,维护成本高。
发明内容
本发明实施例提供一种埋点方法、装置、电子设备及存储介质,以解决相关技术中的问题。
本发明的目的是通过以下技术方案实现的:
第一方面,本发明实施例提供一种埋点方法,包括:
在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,所述目标节点为所述页面中所包含的实例化的类或者实例化的类中的类属性;
响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,所述埋点对象用于实现埋点行为。
在一种可能的实施方式中,所述响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,包括:
当所述目标节点为实例化的类中的类属性时,在所述目标节点对应的原型对象中定义该类属性,以及基于所述装饰器、该类属性的原始属性和所述匹配的埋点对象标识所标识的埋点对象,定义该类属性对应的第一属性描述符,所述第一属性描述符是在该类属性被读取时执行的属性描述符,定义后的所述第一属性描述符的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,所述响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,包括:
当所述目标节点为实例化的类时,确定所述埋点对象标识集合中是否包含与所述目标节点中的各类方法和类属性匹配的埋点对象标识;
响应于所述埋点对象标识集合中包含与所述目标节点中的类属性匹配的埋点对象标识,利用装饰器和该类属性对应的属性描述符,在该类属性后添加与该类属性匹配的埋点对象标识所标识的埋点对象;
响应于所述埋点对象标识集合中包含与所述目标节点中的类方法匹配的埋点,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,所述利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象,包括:
基于所述装饰器、该类方法的原始方法以及与该类方法匹配的埋点对象标识所标识的埋点对象,修改该类方法对应的第二属性描述符,所述第二属性描述符是在该类方法被读取时执行的属性描述符,修改后的所述第二属性描述符的执行结果返回该类方法的原始方法和与该类方法匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,所述埋点对象为所述用户输入事件对应的埋点对象。
第二方面,本发明实施例提供一种埋点装置,包括:
确定模块,用于在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,所述目标节点为所述页面中所包含的实例化的类或者实例化的类中的类属性;
埋点模块,用于响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,所述埋点对象用于实现埋点行为。
在一种可能的实施方式中,所述埋点模块,具体用于当所述目标节点为实例化的类中的类属性时,在所述目标节点对应的原型对象中定义该类属性,以及基于所述装饰器、该类属性的原始属性和所述匹配的埋点对象标识所标识的埋点对象,定义该类属性对应的第一属性描述符,所述第一属性描述符是在该类属性被读取时执行的属性描述符,定义后的所述第一属性描述符的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,所述埋点模块,具体用于当所述目标节点为实例化的类时,确定所述埋点对象标识集合中是否包含与所述目标节点中的各类方法和类属性匹配的埋点对象标识;
响应于所述埋点对象标识集合中包含与所述目标节点中的类属性匹配的埋点对象标识,利用装饰器和该类属性对应的属性描述符,在该类属性后添加与该类属性匹配的埋点对象标识所标识的埋点对象;
响应于所述埋点对象标识集合中包含与所述目标节点中的类方法匹配的埋点,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,所述埋点模块,具体用于基于所述装饰器、该类方法的原始方法以及与该类方法匹配的埋点对象标识所标识的埋点对象,修改该类方法对应的第二属性描述符,所述第二属性描述符是在该类方法被读取时执行的属性描述符,修改后的所述第二属性描述符的执行结果返回该类方法的原始方法和与该类方法匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,所述埋点对象为所述用户输入事件对应的埋点对象。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面中任一项所述的埋点方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的埋点方法的步骤。
上述技术方案中的优点或有益效果至少包括:在页面初始化的过程中,以实例化的类本身或者类中的类属性为目标节点,确定预设的埋点对象标识集合中是否包含与之匹配的埋点对象标识,如果埋点对象标识集合中包含与目标节点匹配的埋点对象标识,则该目标节点需要添加埋点,利用装饰器和目标节点对应的属性描述符,在目标节点后添加该匹配的埋点对象标识所标识的埋点对象,该埋点对象用于实现埋点行为,从而实现埋点。由于本方案中是在需要添加埋点的目标节点后添加埋点对象,而非设置于目标节点内部,与相关技术中直接在类的代码内部设置埋点相比,降低了代码的冗余,也降低了代码之间的耦合度,提高了代码可读性,在埋点更新时,无需重新开发类的代码,便于维护,且利用装饰器进行埋点,使用方式非常简单。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
图1是本发明实施例提供的一种示例性的埋点方法的流程图;
图2是本发明实施例提供的一种示例性的埋点装置的结构示意图;
图3是本发明实施例提供的一种示例性的用来实现埋点方法的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为方便理解本发明实施例的方案,首先进行概念介绍。
在面向对象的编程中,类(Class)是对象的抽象,即原型对象,而对象是类的具体,为实例化的类,即实例。在原型对象中添加属性和方法后,实例也会共享原型对象中添加的属性和方法。
图1是本发明实施例提供的一种示例性的埋点方法的流程图。如图1所示,该埋点方法至少包括如下步骤:
步骤101、在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,目标节点为页面中所包含的实例化的类或者实例化的类中的类属性。
步骤102、响应于埋点对象标识集合中包含与目标节点匹配的埋点对象标识,利用装饰器和目标节点对应的属性描述符,在目标节点后添加匹配的埋点对象标识所标识的埋点对象,埋点对象用于实现埋点行为。
其中,埋点对象标识集合中包含至少一个埋点对象的标识。通过埋点对象实现的埋点行为,可以采集页面上的数据,例如页面上的某个按钮被点击的次数,等等。实施中,可以根据需要预先设置页面对应的至少一个埋点对象,获取至少一个埋点对象的埋点对象标识,形成埋点对象标识集合。其中的埋点对象标识可以为埋点对象的名称。实施中,可以预先将埋点对象的名称中包含匹配的实例化的类或者类属性的名称,如果埋点对象标识包含目标节点的名称,则该埋点对象标识是与目标节点匹配的埋点对象标识。
实际应用中,在页面初始化过程中,如果所执行的代码为实例化的类或者实例化的类中的类属性,则将其作为可能需要添加埋点的目标节点。
其中,装饰器是一种特殊类型的声明,能够被附加到方法、属性上,可以在原有功能的基础上,再扩充出额外的功能,也即,以面向切面编程的形式在代码原有行为的基础上增加额外的功能。
属性描述符定义了属性读写的细节,至少包括value、get、set等,通常使用Object.defineProperty方法来定义。Object.defineProperty方法可以直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,以及定义属性描述符set和get。Value为属性值,可以是有效的数值、对象、方法等,初始的默认值为未定义(undefined)。get会在属性被读取时执行,返回值是value。set会在属性被写入时执行,负责更新value。
本实施例中,在页面初始化的过程中,以实例化的类本身或者类中的类属性为目标节点,确定预设的埋点对象标识集合中是否包含与之匹配的埋点对象标识,如果埋点对象标识集合中包含与目标节点匹配的埋点对象标识,则该目标节点需要添加埋点,利用装饰器和目标节点对应的属性描述符,在目标节点后添加该匹配的埋点对象标识所标识的埋点对象,该埋点对象用于实现埋点行为,从而实现埋点。由于本方案中是在需要添加埋点的目标节点后添加埋点对象,而非设置于目标节点内部,与相关技术中直接在类的代码内部设置埋点相比,降低了代码的冗余,也降低了代码之间的耦合度,提高了代码可读性,在埋点更新时,无需重新开发类的代码,便于维护,且利用装饰器进行埋点,使用方式非常简单。
在示例性实施例中,响应于埋点对象标识集合中包含与目标节点匹配的埋点对象标识,利用装饰器和目标节点对应的属性描述符,在目标节点后添加匹配的埋点对象标识所标识的埋点对象,其具体实现方式可以包括:
当目标节点为实例化的类中的类属性时,在目标节点对应的原型对象中定义该类属性,以及基于装饰器、该类属性的原始属性和匹配的埋点对象标识所标识的埋点对象,定义该类属性对应的第一属性描述符,第一属性描述符是在该类属性被读取时执行的属性描述符,定义后的第一属性描述符的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
实际应用中,对于需要埋点的类属性,通过装饰器进行装饰即通过装饰器定义该类属性对应的第一属性描述符,类属性被装饰器装饰后,运行时,类属性会被拦截,替换成原始属性和匹配的埋点对象标识所标识的埋点对象的组合。
这里,该类属性对应的第一属性描述符为get。在实际应用中,对于实例化的类中的类属性来说,在实例化之前的类中不包含实例化的类中的类属性,本实施例中,为实现对类属性的埋点,在实例化之前,提前定义了类属性,value的默认值为undefined,表示未定义。实例化的类中的类属性赋值之后,value被set写入为该类属性的原始属性。而get则被定义为读取value以及与该类属性匹配的埋点对象标识所标识的埋点对象。如此,实现了对类属性的埋点,使得埋点更加全面。
在示例性实施例中,响应于埋点对象标识集合中包含与目标节点匹配的埋点对象标识,利用装饰器和目标节点对应的属性描述符,在目标节点后添加匹配的埋点对象标识所标识的埋点对象,其具体实现方式可以包括:当目标节点为实例化的类时,确定埋点对象标识集合中是否包含与目标节点中的各类方法和类属性匹配的埋点对象标识;响应于埋点对象标识集合中包含与目标节点中的类属性匹配的埋点对象标识,利用装饰器和该类属性对应的属性描述符,在该类属性后添加与该类属性匹配的埋点对象标识所标识的埋点对象;响应于埋点对象标识集合中包含与目标节点中的类方法匹配的埋点,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象。
实际应用中,有些类是第三方提供的已封装好的类,不便于在其内部修改代码等,对埋点带来了困难。为此,本实施例提供了对类进行埋点的方式,可以根据需求选择对类中的部分属性、方法进行埋点,设置相应的埋点对象在埋点集合中。实施中,类被装饰器装饰后,类属性和类方法都会被拦截,可以确定埋点对象标识集合中是否包含与目标节点中的各类方法和类属性匹配的埋点对象标识,如果埋点对象标识集合中包含与类方法或者类属性匹配的埋点对象标识,则可以利用装饰器和属性描述符,添加匹配的埋点对象标识所标识的埋点对象,无需侵入代码内部,就可以方便实现埋点。
在示例性实施例中,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象,其具体实现方式可以包括:基于装饰器、该类方法的原始方法以及与该类方法匹配的埋点对象标识所标识的埋点对象,修改该类方法对应的第二属性描述符,第二属性描述符是在该类方法被读取时执行的属性描述符,修改后的第二属性描述符的执行结果返回该类方法的原始方法和与该类方法匹配的埋点对象标识所标识的埋点对象。
这里的第二属性描述符可以为value。对于方法来说,没有get和set属性描述符。在实际应用中,对于实例化的类中的类方法来说,可以直接修改value,将value修改为包含该类方法的原始方法和该类方法匹配的埋点对象标识所标识的埋点对象。在类方法被执行时,可以先执行原始方法,再执行埋点对象的逻辑。如此,实现了对类方法的埋点,埋点方式简单。
在示例性实施例中,埋点对象为用户输入事件对应的埋点对象。如果页面中有多个输入事件,在一个页面中,可以快速地添加多个埋点对象,简单易用。其中的输入事件可以为页面中的点击事件,滑动事件,等等。
下面以具体应用场景为例,对本发明实施例提供的一种埋点方法进行更加详细地说明。
本方案提供一种降低代码冗余度、提高代码可读性的埋点方案。这一方案具有一定的普适性,适用于所有支持装饰器的JavaScript语言。本方案借助装饰器,对类、类属性、类方法的属性描述符进行修改,在不变更原有行为的前提下扩充埋点行为。利用装饰器分别处理类属性、类方法、类三种装饰目标(即目标节点)。
装饰器中,可以提供target、name、descriptor,其中,target代表装饰目标,name代表装饰目标的属性名,descriptor代表装饰目标的属性描述符。当装饰目标是类时,不存在name和descriptor。
判断装饰目标的类型,使类、类属性、类方法选择合适的手段添加埋点。
针对类属性,在包含该类属性的实例化的类的原型对象中定义该类属性,定义该类属性的属性描述符get的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
针对类方法,直接修改类方法对应的属性描述符(descriptor.value),通过重写value将埋点对象附加到原始方法上。
针对类,先准备类属性或类方法与埋点对象的配对关系,即上述埋点对象标识集合中包含与类属性、类方法匹配的埋点对象的标识,然后结合上述两种策略添加埋点对象。
埋点对象标识集合中所标识的埋点对象包含与装饰目标target有类似结构的类,比如装饰目标上有一个提交(submit)方法,埋点对象也有一个submit方法,区别在于,该埋点对象上的submit方法能够发送埋点。如果在装饰目标target上的submit是一个方法,那么使用类方法对应的添加埋点对象的策略进行埋点扩充,如果是属性,则使用类属性对应的添加埋点对象的策略进行埋点扩充。
埋点对象中可以设置tracking方法,可以在目标节点执行的后切面执行tracking方法,通过该tracking方法,收集埋点并发送埋点(例如submit方法)。发送埋点时,具体的,可以调用埋点工具(用于发送埋点的工具)来上报埋点。
完成页面初始化并完成埋点后,等待触发埋点,对点击事件进行节流处理,即将连续点击确认为一次点击,发送一次埋点。检测预置埋点工具是否准备就绪,具体可以通过确认window(即客户端浏览器对象模型的基类)全局对象上是否存在发码方法文件(即是否已经加载完成),如果准备就绪,上报埋点,如果否,则进入缓存队列进行缓存,在准备就绪时上报埋点。
传统的埋点方式将埋点逻辑写在代码内部,无法与其它逻辑分离,影响程序的可读性。而本方案借助装饰器在代码层面将埋点与业务分离,增强代码可读性,削弱了代码埋点导致的冗余度高、可读性差的副作用,不仅保持代码优雅统一,显得更加简洁统一,视觉上与业务代码逻辑分离,更加容易理解,还在一定程度上减少了工作人员在埋点上花费的时间。本方案具有普适性,不局限于一种JavaScript框架,适用于所有以Class语法实现的程序。
并且,目前,已有各种埋点工具,不同埋点工具有不同的应用程序编程接口(API,Application Programming Interface),要求的数据格式不同,因此,需要针对不同的埋点工具,分别设置符合数据格式要求的埋点。而本方案,可以在调用埋点工具之前,将埋点的数据格式转换成与埋点工具匹配的数据格式,并传递给埋点工具,然后,调用埋点工具,上报埋点。具体的,可以在埋点对象之外预先设置格式转换函数,在tracking方法中,收集埋点之后,触发预设格式转换函数将埋点的数据格式转换成与埋点工具匹配的数据格式,并传递给埋点工具,然后,调用埋点工具上报埋点。如此,可自定义扩展所需支持的埋点工具,一次埋点行为可根据接入埋点工具自动兼容多个不同的数据格式的埋点工具,简单易用。
图2是本发明实施例的一种示例性的埋点装置的结构示意图。如图2所示,该埋点装置200包括:
确定模块201,用于在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,目标节点为页面中所包含的实例化的类或者实例化的类中的类属性;
埋点模块202,用于响应于埋点对象标识集合中包含与目标节点匹配的埋点对象标识,利用装饰器和目标节点对应的属性描述符,在目标节点后添加匹配的埋点对象标识所标识的埋点对象,埋点对象用于实现埋点行为。
在一种可能的实施方式中,埋点模块,具体用于当目标节点为实例化的类中的类属性时,在目标节点对应的原型对象中定义该类属性,以及基于装饰器、该类属性的原始属性和匹配的埋点对象标识所标识的埋点对象,定义该类属性对应的第一属性描述符,第一属性描述符是在该类属性被读取时执行的属性描述符,定义后的第一属性描述符的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,埋点模块,具体用于当目标节点为实例化的类时,确定埋点对象标识集合中是否包含与目标节点中的各类方法和类属性匹配的埋点对象标识;
响应于埋点对象标识集合中包含与目标节点中的类属性匹配的埋点对象标识,利用装饰器和该类属性对应的属性描述符,在该类属性后添加与该类属性匹配的埋点对象标识所标识的埋点对象;
响应于埋点对象标识集合中包含与目标节点中的类方法匹配的埋点,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,埋点模块,具体用于基于装饰器、该类方法的原始方法以及与该类方法匹配的埋点对象标识所标识的埋点对象,修改该类方法对应的第二属性描述符,第二属性描述符是在该类方法被读取时执行的属性描述符,修改后的第二属性描述符的执行结果返回该类方法的原始方法和与该类方法匹配的埋点对象标识所标识的埋点对象。
在一种可能的实施方式中,埋点对象为用户输入事件对应的埋点对象。
本发明实施例各装置中的各模块的功能可以参见上述埋点方法实施例中的对应描述,在此不再赘述。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述埋点方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
图3是本发明实施例提供的一种示例性的电子设备的结构示意图。如图3所示,该电子设备可以包括:处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。处理器301可以调用存储器303中的计算机程序,以执行以上任一实施例中的埋点方法。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述埋点方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的装置。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种埋点方法,其特征在于,包括:
在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,所述目标节点为所述页面中所包含的实例化的类或者实例化的类中的类属性;
响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,所述埋点对象用于实现埋点行为。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,包括:
当所述目标节点为实例化的类中的类属性时,在所述目标节点对应的原型对象中定义该类属性,以及基于所述装饰器、该类属性的原始属性和所述匹配的埋点对象标识所标识的埋点对象,定义该类属性对应的第一属性描述符,所述第一属性描述符是在该类属性被读取时执行的属性描述符,定义后的所述第一属性描述符的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
3.根据权利要求1所述的方法,其特征在于,所述响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,包括:
当所述目标节点为实例化的类时,确定所述埋点对象标识集合中是否包含与所述目标节点中的各类方法和类属性匹配的埋点对象标识;
响应于所述埋点对象标识集合中包含与所述目标节点中的类属性匹配的埋点对象标识,利用装饰器和该类属性对应的属性描述符,在该类属性后添加与该类属性匹配的埋点对象标识所标识的埋点对象;
响应于所述埋点对象标识集合中包含与所述目标节点中的类方法匹配的埋点,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象。
4.根据权利要求3所述的方法,其特征在于,所述利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象,包括:
基于所述装饰器、该类方法的原始方法以及与该类方法匹配的埋点对象标识所标识的埋点对象,修改该类方法对应的第二属性描述符,所述第二属性描述符是在该类方法被读取时执行的属性描述符,修改后的所述第二属性描述符的执行结果返回该类方法的原始方法和与该类方法匹配的埋点对象标识所标识的埋点对象。
5.根据权利要求1所述的方法,其特征在于,所述埋点对象为所述用户输入事件对应的埋点对象。
6.一种埋点装置,其特征在于,包括:
确定模块,用于在页面初始化的过程中,确定预设的埋点对象标识集合中是否包含与目标节点匹配的埋点对象标识,所述目标节点为所述页面中所包含的实例化的类或者实例化的类中的类属性;
埋点模块,用于响应于所述埋点对象标识集合中包含与所述目标节点匹配的埋点对象标识,利用装饰器和所述目标节点对应的属性描述符,在所述目标节点后添加所述匹配的埋点对象标识所标识的埋点对象,所述埋点对象用于实现埋点行为。
7.根据权利要求所6述的方法,其特征在于,所述埋点模块,具体用于当所述目标节点为实例化的类中的类属性时,在所述目标节点对应的原型对象中定义该类属性,以及基于所述装饰器、该类属性的原始属性和所述匹配的埋点对象标识所标识的埋点对象,定义该类属性对应的第一属性描述符,所述第一属性描述符是在该类属性被读取时执行的属性描述符,定义后的所述第一属性描述符的执行结果返回该类属性的原始属性和与该类属性匹配的埋点对象标识所标识的埋点对象。
8.根据权利要求6所述的装置,其特征在于,所述埋点模块,具体用于当所述目标节点为实例化的类时,确定所述埋点对象标识集合中是否包含与所述目标节点中的各类方法和类属性匹配的埋点对象标识;
响应于所述埋点对象标识集合中包含与所述目标节点中的类属性匹配的埋点对象标识,利用装饰器和该类属性对应的属性描述符,在该类属性后添加与该类属性匹配的埋点对象标识所标识的埋点对象;
响应于所述埋点对象标识集合中包含与所述目标节点中的类方法匹配的埋点,利用装饰器和该类方法对应的属性描述符,在该类方法后添加与该类方法匹配的埋点对象标识所标识的埋点对象。
9.根据权利要求8所述的装置,其特征在于,所述埋点模块,具体用于基于所述装饰器、该类方法的原始方法以及与该类方法匹配的埋点对象标识所标识的埋点对象,修改该类方法对应的第二属性描述符,所述第二属性描述符是在该类方法被读取时执行的属性描述符,修改后的所述第二属性描述符的执行结果返回该类方法的原始方法和与该类方法匹配的埋点对象标识所标识的埋点对象。
10.根据权利要求6所述的装置,其特征在于,所述埋点对象为所述用户输入事件对应的埋点对象。
11.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的埋点方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的埋点方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111315782.4A CN114138594A (zh) | 2021-11-08 | 2021-11-08 | 一种埋点方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111315782.4A CN114138594A (zh) | 2021-11-08 | 2021-11-08 | 一种埋点方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138594A true CN114138594A (zh) | 2022-03-04 |
Family
ID=80393230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111315782.4A Pending CN114138594A (zh) | 2021-11-08 | 2021-11-08 | 一种埋点方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138594A (zh) |
-
2021
- 2021-11-08 CN CN202111315782.4A patent/CN114138594A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506291B (zh) | 一种基于数据采集的分析方法及装置 | |
CN110365721A (zh) | 一种基于用户场景感知触发服务的方法、终端设备及系统 | |
CN111414407A (zh) | 数据库的数据查询方法、装置、计算机设备及存储介质 | |
CN105357204A (zh) | 生成终端识别信息的方法及装置 | |
CN111199054B (zh) | 一种数据脱敏方法、装置及数据脱敏设备 | |
WO2020019482A1 (zh) | 一种函数hook检测方法、检测设备及计算机可读介质 | |
CN103324892A (zh) | 一种Android系统显示文件的方法及装置 | |
CN112448969A (zh) | 链路追踪方法、装置、系统、设备及可读存储介质 | |
CN111597553A (zh) | 病毒查杀中的进程处理方法、装置、设备及存储介质 | |
CN110990346A (zh) | 基于区块链的文件数据处理方法、装置、设备及存储介质 | |
CN113987393A (zh) | 一种网页操作记录器、系统、装置及方法 | |
CN111680247B (zh) | 网页字符串的本地调用方法、装置、设备及存储介质 | |
WO2021189766A1 (zh) | 数据可视化方法及相关设备 | |
CN114138594A (zh) | 一种埋点方法、装置、电子设备及存储介质 | |
CN116360769A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN109241110A (zh) | 订单管理方法及系统、电子设备、存储介质 | |
CN110221952B (zh) | 业务数据的处理方法及装置、业务数据处理系统 | |
CN115795100A (zh) | 用户事件处理方法、装置、电子设备及可读存储介质 | |
US20170286195A1 (en) | Information object system | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN111782834A (zh) | 图像检索的方法、装置、设备及计算机可读存储介质 | |
CN105610908B (zh) | 一种基于安卓设备的samba服务实现方法及系统 | |
CN115756998B (zh) | 缓存数据重取标记验证方法、装置及系统 | |
CN112394980B (zh) | 机型模拟方法、装置、设备及存储介质 | |
CN116132175B (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 |