动态打点方法及装置与流程

文档序号:28942692发布日期:2022-02-19 07:14阅读:160来源:国知局
动态打点方法及装置与流程

1.本发明涉及计算机信息处理领域,尤其是一种动态打点方法及装置。


背景技术:

2.打点分析是网站分析、app分析常用的数据采集方法,现有技术中,业界通常采用对软件系统进行打点的方式收集并统计分析数据指标,也就是说,通过打点的方式收集并统计分析数据指标,其实是对于软件系统的一个可视化健康检查,其重要性不言而喻。
3.但是在分布式链路追踪中,通常需要预先在程序执行的关键路径关键代码进行打点,在方法执行前后进行打点,更新后需重新启动服务才能生效,每个点位只能在程序启动时确定且无法在运行时动态修改;这样使得打点效率低下且代码冗余量较多,代码稳定性变差。
4.有鉴于此,如何提供一种分布式链路追踪无法动态增加打点的方法,是现有技术亟待解决的问题。


技术实现要素:

5.本发明所要解决的一个技术问题是如何提供一种动态增加打点的方法以解决上述技术问题。
6.本公开提供了一种动态打点方法,该方法包括:
7.获取设定类文件的描述信息,其中,设定类文件的描述信息包括设定方法的名称、设定方法的参数、打点数据;
8.对设定类方法的描述信息进行校验,并根据方法参数、设定方法的名称和设定类文件的名称获取设定方法和设定类文件;
9.拦截和预处理设定方法以将设定方法设置为可被打点的状态;
10.在设定方法的前置位置上或后置位置上调用接口,并上报打点数据,以将打点数据填充到设定方法的前置位置上或后置位置上,对设定类文件进行重定义,得到增强后的设定类文件;
11.将增强后的设定类文件发送给设定代理端,以使设定代理端通过字节码增强技术将设定类文件替换为增强后的设定类文件,以实现程序的动态打点。
12.进一步地,对设定类方法的描述信息进行校验包括:
13.判断方法参数是否满足语法规则,以及判断设定方法的名称和设定类文件的名称是否匹配;
14.若方法参数满足语法规则且设定方法的名称和设定类文件的名称相匹配,则根据方法参数、设定方法的名称和设定类文件的名称,加载设定类文件和设定方法。
15.进一步地,拦截和预处理设定方法以将设定方法设置为可被打点的状态包括:
16.判断设定方法是否为静态方法;
17.若设定方法为静态方法,则静态拦截设定方法的代码段,并对拦截的代码段进行
预处理;
18.若设定方法为非静态方法,则实例拦截设定方法的代码段,并对拦截的代码段进行预处理。
19.进一步地,该方法还包括:
20.获取设定代理端所在服务的全部类文件;
21.根据设定代理端所在服务的全部类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树;
22.在获取设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树。
23.进一步地,获取设定类文件的名称、设定方法的名称、方法参数以及打点数据包括:
24.设定类文件包括焦点事件类,焦点事件会在页面元素获得或失去焦点时触发,利用这些时间并与document.hasfocus()方法及document.activeelement属性配合,以便知晓用户在页面上的行踪;其中,焦点事件包括冒泡事件与不冒泡事件。
25.进一步地,基于终端的运动传感器的获取的手机状态或终端的摄像头获取到的用户的眼球的所关注的焦点作为焦点事件类。
26.进一步地,包括:
27.打点字段相互独立,能精确定位某个事件或行为;即能通过1~2个参数精确定位到某个行为事件;
28.打点字段要符合枚举原则,将所有可能需要的数据涉及的打点一一枚举,根据页面穷举或流程穷举,保证不出现漏打点的情况;
29.打点字段要精确描述,每个打点事件的做到无争议的描述,包括但不限于:采集逻辑,数据结构,特殊情况处理。
30.本公开提供了一种动态打点装置,包括:
31.获取模块,用于获取设定类文件的描述信息,其中,设定类文件的描述信息包括设定方法的名称、设定方法的参数、打点数据;
32.校验模块,与获取模块相连接,用于对设定类方法的描述信息进行校验,并根据方法参数、设定方法的名称和设定类文件的名称获取设定方法和设定类文件;
33.拦截设置模块,与校验模块相连接,用于拦截和预处理设定方法以将设定方法设置为可被打点的状态;
34.填充模块,与拦截设置模相连接,用于在设定方法的前置位置上或后置位置上调用接口,并上报打点数据,以将打点数据填充到设定方法的前置位置上或后置位置上,对设定类文件进行重定义,得到增强后的设定类文件;
35.打点处理模块,与填充模块相连接,用于将增强后的设定类文件发送给设定代理端,以使设定代理端通过字节码增强技术将设定类文件替换为增强后的设定类文件,以实现程序的动态打点。
36.进一步地,校验模块用于:
37.判断方法参数是否满足语法规则,以及判断设定方法的名称和设定类文件的名称是否匹配;
38.若方法参数满足语法规则且设定方法的名称和设定类文件的名称相匹配,则根据方法参数、设定方法的名称和设定类文件的名称,加载设定类文件和设定方法。
39.进一步地,拦截设置模块用于:
40.判断设定方法是否为静态方法;
41.若设定方法为静态方法,则静态拦截设定方法的代码段,并对拦截的代码段进行预处理;
42.若设定方法为非静态方法,则实例拦截设定方法的代码段,并对拦截的代码段进行预处理。
43.进一步地,设定类文件包括焦点事件类,焦点事件会在页面元素获得或失去焦点时触发,获取模块用于利用这些时间并与document.hasfocus()方法及document.activeelement属性配合,以便知晓用户在页面上的行踪;其中,焦点事件包括冒泡事件与不冒泡事件。
44.进一步地,获取模块用于基于终端的运动传感器的获取的手机状态或终端的摄像头获取到的用户的眼球的所关注的焦点作为焦点事件类。
45.进一步地,打点处理模块还用于:获取设定代理端所在服务的全部类文件;
46.根据设定代理端所在服务的全部类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树;
47.在获取设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树;
48.进一步地,打点字段相互独立,能精确定位某个事件或行为;即能通过1~2个参数精确定位到某个行为事件;
49.打点字段要符合枚举原则,将所有可能需要的数据涉及的打点一一枚举,根据页面穷举或流程穷举,保证不出现漏打点的情况;
50.打点字段要精确描述,每个打点事件的做到无争议的描述,包括但不限于:采集逻辑,数据结构,特殊情况处理。
51.本公开还提供一种计算机设备,其特征在于,包括处理器、存储器、总线、通讯接口、计算机程序,如上的打点装置,在打点装置上运行的计算机程序,计算机程序被处理器执行时实现任一项的打点方法的步骤。
52.本发明公开了一种动态打点方法及装置,并对设定类文件进行重定义,可以在程序运行时在设定方法的相应位置上植入打点数据,实现了程序的动态打点,提高了程序的打点效率和打点准确度,降低了打点的工作量,提高了代码的稳定性。
53.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
54.构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
55.参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
56.图1示出本发明一个实施例的一种动态打点方法。
57.图2示出本发明另一个实施例的一种动态打点方法。
58.图3示出本发明另一个实施例的一种动态打点实例。
59.图4示出本发明另一个实施例的一种动态打点装置的结构框图。
60.图5示出本发明的另一个实施例的计算机设备的结构框图。
具体实施方式
61.现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
62.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
63.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
64.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
65.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
66.本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
67.计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
68.图1示出本发明一个实施例的一种动态打点方法,具体的,该方法包括:
69.步骤101、获取设定类文件的描述信息,其中,设定类文件的描述信息包括设定方法的名称、设定方法的参数、打点数据。
70.在一个实施例中,类(class)是面向对象程序设计实现信息封装的基础,该设定类文件可以包括焦点事件类,焦点事件会在页面元素获得或失去焦点时触发,利用这些时间并与document.hasfocus()方法及document.activeelement属性配合,以便知晓用户在页面上的行踪;其中,焦点事件包括冒泡事件与不冒泡事件。
71.在一个实施例中,基于终端的运动传感器的获取的手机状态或终端的摄像头获取到的用户的眼球的所关注的焦点作为焦点事件类。
72.在一个实施例中,可以定义6个焦点类事件:blur:在元素失去焦点时触发,该事件不会冒泡,所有浏览器都支持;focus:在元素获得焦点时触发,该事件不会冒泡,所有浏览器都支持;focusin:与focus事件等价,但是它冒泡;focusout:是html事件blur的通用版
本。
73.在一个实施例中,一个类中包括至少一个方法,方法指的是一段可以直接运行或可以被另一段程序或代码引用的程序或代码,方法除包括用于实现业务逻辑的代码之外,还包括方法的名称、方法参数以及返回值等信息。
74.在一个实施例中,计算机设备可以通过多种方式获取数据,例如,可以通过批量导入数据的方式获取设定类文件的名称、设定方法的名称、方法参数以及打点数据,也可以通过输入设备,如键盘、显示器或触摸屏等设备,获取输入到ui界面中的设定类文件的名称、设定方法的名称、方法参数以及打点数据,其中,设定类文件和设定方法分别指的是用户需要进行打点的类文件和方法。此外,计算机设备还可以获取服务的名称,从而确定类文件的加载范围,以及获取打点文件的名称,从而在打点后通过打点文件的名称搜索到相应的打点文件并进行信息解读。
75.在一个实施例中,可以获取设定代理端所在服务的全部类文件;根据设定代理端所在服务的全部类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树;在获取设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树。
76.在一个实施例中,可以获取打点的程序所在的服务的名称,从而方便加载服务的全部类文件,并根据加载的类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树,使得在用户输入设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树,提供名称的自动补全功能,进一步减少用户的工作量,提高打点的效率。
77.步骤102、对设定类方法的描述信息进行校验,并根据方法参数、设定方法的名称和设定类文件的名称获取设定方法和设定类文件。
78.在一个实施例中,对设定类方法的描述信息进行校验包括:判断方法参数是否满足语法规则,以及判断设定方法的名称和设定类文件的名称是否匹配;
79.若方法参数满足语法规则且设定方法的名称和设定类文件的名称相匹配,则根据方法参数、设定方法的名称和设定类文件的名称,加载设定类文件和设定方法。
80.步骤103、拦截和预处理设定方法以将设定方法设置为可被打点的状态。
81.在一个实施例中,可以是判断设定方法是否为静态方法;若设定方法为静态方法,则静态拦截设定方法的代码段,并对拦截的代码段进行预处理;若设定方法为非静态方法,则实例拦截设定方法的代码段,并对拦截的代码段进行预处理。
82.步骤104、在设定方法的前置位置上或后置位置上调用接口,并上报打点数据,以将打点数据填充到设定方法的前置位置上或后置位置上,对设定类文件进行重定义,得到增强后的设定类文件。
83.步骤105、将增强后的设定类文件发送给设定代理端,以使设定代理端通过字节码增强技术将设定类文件替换为增强后的设定类文件,以实现程序的动态打点。
84.在一个实施例中,可以通过设定代理生成调用链日志。可以通过设定代理代理无侵入式部署,将性能测量与业务逻辑完全分离,可以测量任意类的任意方法的执行时间,这种方式大大提高了采集效率,并且减少运维成本。根据服务跨度主要分为两大类代理:服务内代理,这种方式是通过java的代理机制,对服务内部的方法调用层次信息进行数据收集,
如方法调用耗时、入参、出参等信息;跨服务代理,这种情况需要对主流rpc框架以插件形式提供无缝支持;并通过提供标准数据规范以适应自定义rpc框架。
85.在一个实施例中,可以将增强后的设定类文件发送给与设定代理端连接的服务端,然后通过服务端将增强后的设定类文件下发到设定代理端,最后,设定代理端可以通过字节码增强技术将设定类文件动态替换为增强后的设定类文件,从而实现程序的动态打点。
86.在一个实施例中,在打点的整个过程中,程序可以持续运行,且在打点之后,程序即可输出相应的打点文件,从而使用户关注的方法参数或返回值通过打点数据的形式被采集到打点文件中,继而,用户可以根据采集到的信息进行信息解读,得到相应的性能监控信息。
87.本实施例提供的动态打点方法,在程序运行时在设定方法的相应位置上植入打点数据,并对设定类文件进行重定义,实现了程序的动态打点,提高了程序的打点效率和打点准确度,降低了打点的工作量,提高了代码的稳定性。
88.在一个实施例中,打点字段相互独立,能精确定位某个事件或行为;即能通过1~2个参数精确定位到某个行为事件,例如在搜索页面“确认搜索”按钮的点击事件为search,那就要避免同页面内有其他事件被命名为search;
89.在一个实施例中,打点字段应当符合枚举原则,将所有可能需要的数据涉及的打点一一枚举,可以根据页面穷举,也可以根据流程穷举,保证不出现漏打点的情况。
90.在一个实施例中,打点字段应当精确描述,每个打点事件的做到无争议的描述,包括但不限于:采集逻辑,数据结构,特殊情况处理等;普通的点击事件采集逻辑大概率不有理解上的偏差,大多数发生在以下情况涉及发生后的状态上报:例如微信分享,是需要点击分享按钮即上报,还是点击跳转成功后上报?涉及曝光打点:例如内容曝光,用户上下滑动是否需要重复曝光?切换导航是否需要重新曝光?从详情页返回是否已曝光内容是否需要再次曝光?涉及内容展示楼层打点:例如内容流从上到下floor记为1,2,3

,不同类型是否共用楼层计数(例如文章123,第四位出现广告位是要上报4还是重新计数1)。
91.在一个实施例中,数据结构就如字面意思,定义上报字段的数据类型,整型/字符串等等,特殊的情况例如,一次上报内容较多,需要定义格式,类似一组搜索联想词曝光,我们就需要定义
“’
联想词1’,’联想词2’,
…”
的json格式上报;预先定义数据结构还有一个好处,就是能保持ios,android两端上报一致,有利于提高后期的数据清洗及处理的效率;
92.一个实施例中,程序动态打点需要关注的信息可以包括:who:用户属性;这里包括用户本身属性(性别,年龄,籍贯等)及产品属性(会员等级,活跃度,偏好的内容类型等),因为属性本身不与行为的发生而随之改变,所以不用在打点中体现,一般由user_id与用户宽表关联即可;when:发生行为的时间,注意不是上报时间,一般上报时间相比行为时间上会有一定的延迟;where:发生的地点;how:发生行为时的一些状态,例如操作系统,网络状态,屏幕比例,分辨率等等;what:具体发生的行为,例如点击,曝光,访问等,这里会在后面的示例中展开。
93.一个实施例中,打点字段的方法公共参数,即无论什么行为都需要上报的参数,为了避免重复劳动,这些参数通常是提前定义,每次版本打点默认上报,下面列举了部分通用示例。
94.一个实施例中,类似于打点字段的方法公共参数,一般页面访问也是底层定义好的逻辑,无需重复定义,例如是否返回is_back:如果要统计某个页面的pvuv,若没有这个参数,会无法区分用户从下一页面返回的数据,导致数据偏高;动态json串:有些页面需要上报一些定制化的参数,例如订单页面想知道订单id&订单状态,内容页面想知道这篇文章的id,以便精细化运营。
95.在一个实施例中,设定方法的参数包括曝光类:曝光打点即不发生点击行为,内容曝光时上报的打点,多用于内容流(商品流)的数据分析,用来计算ctr(点击通过率,点击次数/曝光次数),用户时长(曝光时长)。
96.在一个实施例中,设定方法的参数包括追踪参数,有时候需要追踪用户单次使用产品或使用某个功能的路径,用user_id+时间戳作为追踪id,这里需要注意要明确时间戳的选取,例如追踪整个产品路径,那时间戳就是打开app的时间;但若是追踪搜索行为路径,那就需要用点击搜索框的时间戳作为追踪id。
97.在一个实施例中,可以自定义打点事件,如果自定义的控件重写了view的ontouchevent方法来判断和处理点击事件,那么必须调用它的performclick,并且设置相应的onclicklistener。
98.在一个实施例中,可以设置页面别名;对于安卓应用,页面指的是activity或者fragment。。有些时候,对于完成某个功能的页面,统计时可能需要进一步细分。比如,对于展示商品列表的页面,需要区分衣物类商品,以及食品类商品的两种列表的访问量。为处理这种场景,我们提供了取别名的方法来区分这两种情况下的页面,方法如下:growingio.setpagename(activity activity,string name),如果您设置的的对象是fragment,将上方的activity替换为fragment即可。
99.在一个实施例中,某个应用的商品列表页是用feedactivity实现的,所以默认的页面名称都是feedactivity。现在我们想区分衣物类商品列表和食品类商品列表,分别看它们的浏览量,可以在oncreate方法中添加如下代码:必须在该activity的oncreate方法中完成该属性的赋值操作。页面别名建议设置为字母、数字和下划线的组合。为查看数据方便,请尽量对ios和安卓的同功能页面取不同的名称。
100.在一个实施例中,可以定义自定义数据上传,除上述的用户行为数据(无埋点数据)之外,growingio还提供了多种api接口,供您上传一些自定义的数据指标及维度。
101.在一个实施例中,可以创建应用,添加代码之后,先clean项目,然后再进行编译,并在你的android app安装了sdk后重新启动几次app,保证行为采集数据自动发送给growingio,以便顺利完成检测。在growingio平台的应用创建页面继续完成应用创建的数据检测,检测成功后应用创建成功。
102.在一个实施例中,可以验证sdk是否正常采集数据,growingio为您提供多种验证sdk是否正常采集数据的方式:方式一:mobile debugger;方式二:在sdk中设置了debug模式后,在ide编译器控制台查看数据采集日志;方式三:数据校验。
103.图2示出本发明另一个实施例的一种动态打点方法,具体的,该方法包括:
104.s201,获取焦点类方法的描述信息。
105.在一个实施例中,可以获取设定焦点类文件的描述信息,并且获取包括设定方法的名称、设定方法的参数、打点数据的其他信息等。
106.s202,必要参数信息校验。
107.s203,通过类加载器获取到待增强类、待增强方法描述。
108.在一个实施例中,可以对设定焦点类方法的描述信息进行校验,并根据方法参数、设定方法的名称和设定类文件的名称获取设定方法和设定类文件。判断方法参数是否满足语法规则;判断设定方法的名称和设定类文件的名称是否匹配;若方法参数满足语法规则且设定方法的名称和设定类文件的名称相匹配,则根据方法参数、设定方法的名称和设定类文件的名称,加载设定类文件和设定方法。
109.s204,判断打点方法是否静态方法。
110.在一个实施例中,如果设定方法是静态方法。判断设定方法是否为静态方法;若设定方法为静态方法,则静态拦截设定方法的代码段,并对拦截的代码段进行预处理;若设定方法为非静态方法,则实例拦截设定方法的代码段,并对拦截的代码段进行预处理。
111.s205,实例拦截代码段预处理。
112.s206,拦截方法参数填充。
113.在一个实施例中,在静态方法的前置位置上或后置位置上调用接口,并上报打点数据,以将打点数据填充到设定方法的前置位置上或后置位置上,对设定类文件进行重定义,得到增强后的设定类文件。
114.s207,进行类重新定义。
115.在一个实施例中,将增强后的设定焦点类文件发送给设定代理端,以使设定代理端通过字节码增强技术将设定类文件替换为增强后的设定类文件,以实现程序的动态打点。
116.图3示出本发明另一个实施例的一种动态打点实例,具体的,该实例包括:名称、名称后缀、监控类名称、监控方法、方法参数。
117.在一个实施例中,监控的可以名称可以span方式进行,设定方法的名称地span是基本工作单元,一次链路调用(可以是rpc,db等没有特定的限制)创建一个span,通过一个64位id标识它,uuid较为方便,span中还有其他的数据,例如描述信息,时间戳,key-value对的(annotation)tag信息,parent_id等,其中parent-id可以表示span调用链路来源。
[0118][0119]
在一个实施例中,根据设定代理端所在服务的全部类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树中,树结构的表示span集合,表示一次完整的跟踪,从请求到服务器开始,服务器返回response结束,跟踪每次rpc调用的耗时,存在唯一标识
trace_id。比如:运行的分布式大数据存储一次trace就由一次请求组成。
[0120]
在一个实施例中,在获取设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树,其中,每种颜色的note标注了一个span,一条链路通过traceid唯一标识,span标识发起的请求信息;树节点是整个架构的基本单元,而每一个节点又是对span的引用;节点之间的连线表示的span和它的父span直接的关系;虽然span在日志文件中只是简单的代表span的开始和结束时间,他们在整个树形结构中却是相对独立的。
[0121]
图4示出本发明另一个实施例的一种动态打点装置的结构框图,具体的,该动态打点装置400包括:获取模块401,用于获取设定类文件的描述信息,其中,设定类文件的描述信息包括设定方法的名称、设定方法的参数、打点数据;校验模块402,与获取模块相连接,用于对设定类方法的描述信息进行校验,并根据方法参数、设定方法的名称和设定类文件的名称获取设定方法和设定类文件;拦截设置模块403,与校验模块相连接,用于拦截和预处理设定方法以将设定方法设置为可被打点的状态;填充模块404,与拦截设置模相连接,用于在设定方法的前置位置上或后置位置上调用接口,并上报打点数据,以将打点数据填充到设定方法的前置位置上或后置位置上,对设定类文件进行重定义,得到增强后的设定类文件;打点处理模块405,与填充模块相连接,用于将增强后的设定类文件发送给设定代理端,以使设定代理端通过字节码增强技术将设定类文件替换为增强后的设定类文件,以实现程序的动态打点。
[0122]
在一个实施例中,校验模块用于:判断方法参数是否满足语法规则,以及判断设定方法的名称和设定类文件的名称是否匹配;若方法参数满足语法规则且设定方法的名称和设定类文件的名称相匹配,则根据方法参数、设定方法的名称和设定类文件的名称,加载设定类文件和设定方法。
[0123]
在一个实施例中,拦截设置模块用于:判断设定方法是否为静态方法;若设定方法为静态方法,则静态拦截设定方法的代码段,并对拦截的代码段进行预处理;若设定方法为非静态方法,则实例拦截设定方法的代码段,并对拦截的代码段进行预处理。
[0124]
在一个实施例中,设定类文件包括焦点事件类,焦点事件会在页面元素获得或失去焦点时触发,获取模块用于利用这些时间并与document.hasfocus()方法及document.activeelement属性配合,以便知晓用户在页面上的行踪;其中,焦点事件包括冒泡事件与不冒泡事件。
[0125]
在一个实施例中,获取模块用于基于终端的运动传感器的获取的手机状态或终端的摄像头获取到的用户的眼球的所关注的焦点作为焦点事件类。
[0126]
在一个实施例中,打点处理模块还用于:获取设定代理端所在服务的全部类文件;根据设定代理端所在服务的全部类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树;在获取设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树。
[0127]
在一个实施例中,打点字段相互独立,能精确定位某个事件或行为;即能通过1~2个参数精确定位到某个行为事件;打点字段要符合枚举原则,将所有可能需要的数据涉及的打点一一枚举,根据页面穷举或流程穷举,保证不出现漏打点的情况;打点字段要精确描述,每个打点事件的做到无争议的描述,包括但不限于:采集逻辑,数据结构,特殊情况处
理。
[0128]
图5示出本发明的另一个实施例的计算机设备的结构框图。设备500可以是具备计算能力的主机服务器、个人计算机pc、或者可携带的便携式计算机,移动终端或其他终端等。本发明具体实施例并不对计算节点的具体实现做限定。
[0129]
设备500包括处理器(processor)501、通信接口(communications interface)502、存储器(memory)503和总线504。其中,处理器501、通信接口502、以及存储器503通过总线504完成相互间的通信。
[0130]
通信接口502用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
[0131]
处理器501用于执行程序。处理器501可以是一个中央处理器cpu,或者可以是专用集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0132]
存储器503用于存放文件。存储器503可以包含高速ram存储器,也可还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器503也可以是存储器阵列。存储器503还可能被分块,并且块可按一定的规则组合成虚拟卷。
[0133]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:获取设定类文件的描述信息,其中,设定类文件的描述信息包括设定方法的名称、设定方法的参数、打点数据;对设定类方法的描述信息进行校验,并根据方法参数、设定方法的名称和设定类文件的名称获取设定方法和设定类文件;拦截和预处理设定方法以将设定方法设置为可被打点的状态;在设定方法的前置位置上或后置位置上调用接口,并上报打点数据,以将打点数据填充到设定方法的前置位置上或后置位置上,对设定类文件进行重定义,得到增强后的设定类文件;将增强后的设定类文件发送给设定代理端,以使设定代理端通过字节码增强技术将设定类文件替换为增强后的设定类文件,以实现程序的动态打点。
[0134]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:对设定类方法的描述信息进行校验包括:判断方法参数是否满足语法规则,以及判断设定方法的名称和设定类文件的名称是否匹配;若方法参数满足语法规则且设定方法的名称和设定类文件的名称相匹配,则根据方法参数、设定方法的名称和设定类文件的名称,加载设定类文件和设定方法。
[0135]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:判断设定方法是否为静态方法;若设定方法为静态方法,则静态拦截设定方法的代码段,并对拦截的代码段进行预处理;若设定方法为非静态方法,则实例拦截设定方法的代码段,并对拦截的代码段进行预处理。
[0136]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:获取设定代理端所在服务的全部类文件;根据设定代理端所在服务的全部类文件,构建类文件的前缀树、方法的前缀树以及方法参数的前缀树;在获取设定类文件的名称、设定方法的名称以及方法参数的过程中,展示类文件的前缀树、方法的前缀树以及方法参数的前缀树。
[0137]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体
可用于:获取设定类文件的名称、设定方法的名称、方法参数以及打点数据包括:设定类文件包括焦点事件类,焦点事件会在页面元素获得或失去焦点时触发,利用这些时间并与document.hasfocus()方法及document.activeelement属性配合,以便知晓用户在页面上的行踪;其中,焦点事件包括冒泡事件与不冒泡事件。
[0138]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:基于终端的运动传感器的获取的手机状态或终端的摄像头获取到的用户的眼球的所关注的焦点作为焦点事件类。
[0139]
在一种实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:打点字段相互独立,能精确定位某个事件或行为;即能通过1~2个参数精确定位到某个行为事件;打点字段要符合枚举原则,将所有可能需要的数据涉及的打点一一枚举,根据页面穷举或流程穷举,保证不出现漏打点的情况;打点字段要精确描述,每个打点事件的做到无争议的描述,包括但不限于:采集逻辑,数据结构,特殊情况处理。
[0140]
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0141]
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
[0142]
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1