掌桥专利:专业的专利平台
掌桥专利
首页

数据获取方法及装置、电子设备及计算机可读存储介质

文献发布时间:2024-01-17 01:14:25


数据获取方法及装置、电子设备及计算机可读存储介质

技术领域

本申请涉及计算机应用技术领域,更具体而言,涉及一种数据获取方法、数据获取装置、电子设备及非易失性计算机可读存储介质。

背景技术

目前有众多充电方案被研发出来,为了客观有效的监控和评估这些充电方案的用户市场表现,需要集成充电埋点回传机制。操作系统可分为内核空间和用户空间,其中内核空间是开源的,因此涉及到充电的一些核心的算法会被放置在用户空间。而在进行数据分析,以监控和评估充电方案时,除了需要用户空间的埋点数据,还要内核空间的常规数据,例如充电速度和充电温度等,因此在上传数据前,需要将用户空间的埋点数据下发到内核空间,然后与内核空间的常规数据一起打包上传。且随着后续的充电领域更多算法在内核空间集成,不同的算法对应的埋点数据获取方式可能不同,使得内核空间获取不同算法对应的埋点数据的效率较低,进而影响后续的分析效率。

发明内容

鉴于此,本申请实施方式提供了一种数据获取方法、数据获取装置、电子设备及非易失性计算机可读存储介质,以根据预设的指标库实现数据获取模型的灵活构建,并结合数据获取模型中的函数和预设的基础数据模型中的业务数据完成不同法人的风险数据获取。

本申请实施方式的数据获取方法包括构建第一埋点结构体和第二埋点结构体,所述第一埋点结构体位于用户空间,所述第二埋点结构体位于内核空间,预设算法在所述用户空间中运行,每个所述预设算法均具有对应的所述第一埋点结构体和所述第二埋点结构体,所述第一埋点结构体用于收集对应的所述预设算法运行时的埋点数据;在所述用户空间和所述内核空间分别构建进行交互的第一交互结构体和第二交互结构体,并将所述第一埋点结构体收集的埋点数据填充到所述第一交互结构体;通过所述第二交互结构体与所述第一交互结构体通信,以获取所述第一交互结构体的埋点数据,根据所述第二交互结构体获取的埋点数据填充目标埋点结构体,所述目标埋点结构体为任一所述第二埋点结构体,所述目标埋点结构体通过解析所述第二交互结构体中的埋点标识号确定;解析所述目标埋点结构体,以获取所述目标埋点结构体的埋点数据。

本申请实施方式的数据获取装置包括第一构建模块、第二构建模块、通信模块和解析模块。所述第一构建模块用于构建第一埋点结构体和第二埋点结构体,所述第一埋点结构体位于用户空间,所述第二埋点结构体位于内核空间,预设算法在所述用户空间中运行,每个所述预设算法均具有对应的所述第一埋点结构体和所述第二埋点结构体,所述第一埋点结构体用于收集对应的所述预设算法运行时的埋点数据;所述第二构建模块用于在所述用户空间和所述内核空间分别构建进行交互的第一交互结构体和第二交互结构体,并将所述第一埋点结构体收集的埋点数据填充到所述第一交互结构体;所述通信模块用于通过所述第二交互结构体与所述第一交互结构体通信,以获取所述第一交互结构体的埋点数据,根据所述第二交互结构体获取的埋点数据填充目标埋点结构体,所述目标埋点结构体为任一所述第二埋点结构体,所述目标埋点结构体通过解析所述第二交互结构体中的埋点标识号确定;所述解析模块用于解析所述目标埋点结构体,以获取所述目标埋点结构体的埋点数据。

本申请实施方式的电子设备包括一个或多个处理器,一个或多个所述处理器用于构建第一埋点结构体和第二埋点结构体,所述第一埋点结构体位于用户空间,所述第二埋点结构体位于内核空间,预设算法在所述用户空间中运行,每个所述预设算法均具有对应的所述第一埋点结构体和所述第二埋点结构体,所述第一埋点结构体用于收集对应的所述预设算法运行时的埋点数据;在所述用户空间和所述内核空间分别构建进行交互的第一交互结构体和第二交互结构体,并将所述第一埋点结构体收集的埋点数据填充到所述第一交互结构体;通过所述第二交互结构体与所述第一交互结构体通信,以获取所述第一交互结构体的埋点数据,根据所述第二交互结构体获取的埋点数据填充目标埋点结构体,所述目标埋点结构体为任一所述第二埋点结构体,所述目标埋点结构体通过解析所述第二交互结构体中的埋点标识号确定;解析所述目标埋点结构体,以获取所述目标埋点结构体的埋点数据。

本申请实施方式的非易失性计算机可读存储介质包含计算机程序,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行如下数据获取方法:构建第一埋点结构体和第二埋点结构体,所述第一埋点结构体位于用户空间,所述第二埋点结构体位于内核空间,预设算法在所述用户空间中运行,每个所述预设算法均具有对应的所述第一埋点结构体和所述第二埋点结构体,所述第一埋点结构体用于收集对应的所述预设算法运行时的埋点数据;在所述用户空间和所述内核空间分别构建进行交互的第一交互结构体和第二交互结构体,并将所述第一埋点结构体收集的埋点数据填充到所述第一交互结构体;通过所述第二交互结构体与所述第一交互结构体通信,以获取所述第一交互结构体的埋点数据,根据所述第二交互结构体获取的埋点数据填充目标埋点结构体,所述目标埋点结构体为任一所述第二埋点结构体,所述目标埋点结构体通过解析所述第二交互结构体中的埋点标识号确定;解析所述目标埋点结构体,以获取所述目标埋点结构体的埋点数据。

本申请的数据获取方法、数据获取装置、电子设备及非易失性计算机可读存储介质,在用户空间设置与预设算法对应的第一埋点结构体和第一交互结构体,在内核空间设置与预设算法对应的第二埋点结构体和第二交互结构体。接着使用第一埋点结构体获取埋点数据,并将埋点数据填充到第一交互结构体。而第一交互结构体和第二交互结构体能够通信,第二交互结构体可通过两者之间的通信获取埋点数据,并根据将获取的埋点数据填充到对应的第二埋点结构体,即目标埋点结构体中,然后解析目标埋点结构体,便可获取埋点数据。相比于不同的预设算法的埋点数据根据不同的方式传输到内核空间的现有技术,本申请规范了用户空间和内核空间中的埋点信息的交互方式,并给每个预设算法设置对应的第一埋点结构体、第一交互结构体、二埋点结构体和第二交互结构体,使得可使用同样的交互步骤来获取不同预设算法对应的埋点数据,以使得本申请可适用于不同的预设算法,从而提高了获取不同预设算法对应的埋点数据的效率,进而提高后续的数据分析效率。

本申请的实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实施方式的实践了解到。

附图说明

本申请的上述和/或附加的方面和优点可以从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:

图1是本申请某些实施方式的数据获取方法的流程示意图;

图2是本申请某些实施方式的数据获取方法的流程示意图;

图3是本申请某些实施方式的数据获取方法的流程示意图;

图4是本申请某些实施方式的数据获取方法的流程示意图;

图5是本申请某些实施方式的数据获取方法的目标指标示意图;

图6是本申请某些实施方式的数据获取方法的使用场景示意图;

图7是本申请某些实施方式的数据获取方法的使用场景示意图;

图8是本申请某些实施方式的数据获取装置的模块示意图;

图9是本申请某些实施方式的电子设备的平面示意图;及

图10是本申请某些实施方式的非易失性计算机可读存储介质与处理器的交互示意图。

具体实施方式

下面详细描述本申请的实施方式,实施方式的示例在附图中示出,其中,相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本申请的实施方式,而不能理解为对本申请的实施方式的限制。

下面首先对本申请出现的名词进行解释:

请参阅图1,本申请实施方式的数据获取方法包括:

步骤011:构建第一埋点结构体和第二埋点结构体,第一埋点结构体位于用户空间,第二埋点结构体位于内核空间,预设算法在用户空间中运行,每个预设算法均具有对应的第一埋点结构体和第二埋点结构体,第一埋点结构体用于收集对应的预设算法运行时的埋点数据。

具体地,目前有众多充电方案被研发出来,为了客观有效的监控和评估这些充电方案的用户市场表现,需要集成充电埋点回传机制。所谓“埋点”,表示针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。操作系统可分为内核空间和用户空间,内核空间是操作系统内核访问的区域,独立于普通的应用程序,是受保护的内存空间。用户空间包括内核空间之外的多层空间,是应用程序运行的空间,例如应用框架层和系统运行层。内核空间是开源的,内核空间的内部代码开放,开发人员可以按照需求更改或添加相应功能,但用户空间并不开源,因此涉及到充电的一些核心的算法会被放置在用户空间。

用户空间中会运行较多预设算法,预设算法包括与充电相关的算法,例如智能充电算法、电池加密算法和无线充电认证加密算法。预设算法在运行过程中需要将其关键的信息和错误的信息进行埋点统计,以便上市能有数据来评估预设算法运行的好坏。例如当预设算法运行时发生异常,则需要收集相应的异常数据。而数据分析还要使用内核空间的常规数据,例如充电速度和充电温度等。因此在上传数据前,需要将用户空间的埋点数据下发到内核空间,然后与内核空间的常规数据一起打包上传。

结构体为一种重要的数据类型,通常用来表示类型不同但是又相关的若干数据。可以理解,埋点数据中可能包含多种类型的数据,因此,需要在用户空间中构建第一埋点结构体,内核空间构建第二埋点结构体,以利用第一埋点结构体和第二埋点结构体存储埋点数据。此外,每个预设算法均具有对应的第一埋点结构体和第二埋点结构体,且不同的预设算法对应的第一埋点结构体的结构可能不同,不同的预设算法对应的第二埋点结构体的结构可能不同。如此,在预设算法运行时,便可使用用户空间内的第一埋点结构体收集对应的预设算法运行时的埋点数据,以便于将第一埋点结构体收集的埋点数据传输到对应的第二埋点结构体。

而对应同一预设算法的第一埋点结构体和第二埋点结构体所存储的数据是对应的,因此,对应同一预设算法的第一埋点结构体包含的变量和第二埋点结构体包含的变量相同,其中变量包括埋点标识号、埋点数据的存储的地址及存储空间占用量。埋点标识号用于区分预设算法,每个预设算法都对应有专门的埋点标识号,例如预设算法A对应埋点标识号A,预设算法B对应埋点标识号B。用户空间包括专门存储充电数据的存储空间,第一埋点结构体获取埋点数据时,并不是直接获取存储空间内与埋点数据对应的数据,通过获取埋点数据的存储的地址以及存储空间占用量,间接地获取存储空间内与埋点数据对应的数据。

步骤012:在用户空间和内核空间分别构建进行交互的第一交互结构体和第二交互结构体,并将第一埋点结构体收集的埋点数据填充到第一交互结构体。

具体地,第一埋点结构体和第二埋点结构体不能直接交互,因此需要在用户空间和内核空间分别构建进行交互的第一交互结构体和第二交互结构体,然后将第一埋点结构体收集的埋点数据填充到第一交互结构体中,以便于利用第一交互结构体将埋点数据下发到内核空间。

可以理解,对应同一预设算法的第一交互结构体和第二交互结构体所存储的数据是对应的,因此,对应同一预设算法的第一交互结构体包含的变量和第二交互结构体包含的变量相同,其中变量包括埋点标识号、埋点数据的存储的地址及存储空间占用量。

步骤013:通过第二交互结构体与第一交互结构体通信,以获取第一交互结构体的埋点数据,根据第二交互结构体获取的埋点数据填充目标埋点结构体,目标埋点结构体为任一第二埋点结构体,目标埋点结构体通过解析第二交互结构体中的埋点标识号确定。

具体地,第一交互结构体和第二交互结构体可进行交互,在第一交互结构体收集到埋点信息后,内核空间可通过第二交互结构体与第一交互结构体通信,获取第一交互结构体的埋点数据。但第二交互结构体仅用于实现用户空间和内核空间的交互,内核空间通过解析第二埋点结构体来获取埋点数据。那么,在第二交互结构体获取埋点数据后,需要解析第二埋点结构体中的埋点标识号,确定埋点标识号与埋点数据的埋点标识号相同的第二埋点结构体为目标埋点结构体。在确定目标埋点结构体后,便可将第二交互结构体获取的埋点数据填充到目标埋点结构体中。

步骤014:解析目标埋点结构体,以获取目标埋点结构体的埋点数据。

具体地,当目标埋点结构体获取到埋点数据后,内核空间便可解析目标埋点结构体,获取目标埋点结构体的埋点数据,以便于后续根据目标埋点结构体的埋点数据进行数据分析。例如,预设算法运行时发生异常情况,第一埋点结构体收集的埋点数据包括异常类型和异常信息,这些埋点数据会依次被第一交互结构体和第二交互结构体获取,最终被目标埋点结构体获取。当目标埋点结构体获取埋点信息后,便可解析目标埋点结构体,获取埋点数据,然后对埋点数据进行统计记录分析,以对出现异常情况进行分析,从而便于后续上传异常的情况,进而实现根据埋点数据对预设算法运行的监控和评估。

现有技术在增加新的预设算法的埋点时,需要在用户空间中进行获取埋点数据的对应的所有设计流程,以形成完整的数据获取流程,而这会导致流程过于繁琐,并且还会占用较多的内存空间,从而导致现有技术的可扩展性较差。而本申请中规范了用户空间和内核空间中的埋点信息的交互方式,只需要在用户空间中增加新的预设算法对应的第一埋点结构体和对应的第一交互结构体,在内核空间设置对应的第二埋点结构体和对应的第二交互结构体,便可实现获取新的预设算法的埋点数据。因此,相比于现有技术,本申请流程较简单且占用的内存空间较少,增加埋点的方式也变得高效和简洁,使得埋点的设置易用性和可延展性都较高。

可以理解,本申请的数据获取方式不仅适用于充电领域,还可适用于其他领域。当其他领域使用本申请的数据获取方式时,预设算法设置为对应的算法,并在用户空间设置与预设算法对应的第一埋点结构体和第一交互结构体,在内核空间设置与预设算法对应的第二埋点结构体和第二交互结构体后,便可实现埋点数据的快速获取。

本申请的数据获取方法在用户空间设置与预设算法对应的第一埋点结构体和第一交互结构体,在内核空间设置与预设算法对应的第二埋点结构体和第二交互结构体。接着使用第一埋点结构体获取埋点数据,并将埋点数据填充到第一交互结构体。而第一交互结构体和第二交互结构体能够通信,第二交互结构体可通过两者之间的通信获取埋点数据,并根据将获取的埋点数据填充到对应的第二埋点结构体,即目标埋点结构体中,然后解析目标埋点结构体,便可获取埋点数据。相比于不同的预设算法的埋点数据根据不同的方式传输到内核空间的现有技术,本申请规范了用户空间和内核空间中的埋点信息的交互方式,并给每个预设算法设置对应的第一埋点结构体、第一交互结构体、二埋点结构体和第二交互结构体,使得可使用同样的交互步骤来获取不同预设算法对应的埋点数据,以使得本申请可适用于不同的预设算法,从而提高了获取不同预设算法对应的埋点数据的效率,进而提高后续的数据分析效率。

请参阅图2,可选地,步骤012:将第一埋点结构体收集的埋点数据填充到第一交互结构体,可包括:

步骤0121:将第一埋点结构体的埋点标识号、第一埋点结构体收集的埋点数据的存储的地址及存储空间占用量,填充到第一交互结构体。

具体地,第一埋点结构体包含的变量和第一交互结构体包含的变量包括埋点标识号、埋点数据的存储的地址及存储空间占用量。那么,将第一埋点结构体收集的埋点数据填充到第一交互结构体时,需要将第一埋点结构体的埋点标识号、第一埋点结构体收集的埋点数据的存储的地址及存储空间占用量,填充到第一交互结构体,以便于利用第一交互结构体,将第一埋点结构体收集的埋点数据完整地下发到内核空间。

特别地,每个预设算法都有对应的第一埋点结构体和第一交互结构体,每个预设算法对应的第一埋点结构体的变量可能不同,每个预设算法对应的第一交互结构体的变量也可能不同。那么,若第一埋点结构体和第一交互结构体对应的预设算法不一致,便可能会导致第一埋点结构体的变量和第一交互结构体的变量不同,进而导致将第一埋点结构体收集的埋点数据填充到第一交互结构体时发生失误。因此,在将第一埋点结构体收集的埋点数据填充到第一交互结构体时,还需要将第一埋点结构体对应的预设算法确定为目标算法,并将对应的预设算法与目标算法相同的第一交互结构体确定为目标交互结构体,并将第一埋点结构体收集的埋点数据填充到目标交互结构体,以确保填充过程的顺利进行。

类似地,第二埋点结构体包含的变量和第二交互结构体包含的变量包括埋点标识号、埋点数据的存储的地址及存储空间占用量。那么,在解析第二交互结构体中的埋点标识号,并确定目标交互结构体后,第二交互结构体会将第二交互结构体的埋点标识号、第二交互结构体收集的埋点数据的存储的地址及存储空间占用量,填充到目标埋点结构体,后续便可通过解析目标埋点结构体,获取目标埋点结构体的埋点数据。

请参阅图3,可选地,步骤012:将第一埋点结构体收集的埋点数据填充到第一交互结构体,还可包括:

步骤0122:对第一埋点结构体收集的埋点数据进行第一校验操作,并将校验操作得到的第一校验值填充到第一交互结构体;

本申请的数据获取方法可包括:

步骤015:对第二交互结构体的埋点数据进行第二校验操作,并比较第一校验值和第二校验操作得到的第二校验值;

步骤016:在第一校验值和第二校验值不相同的情况下,确定第二交互结构体的埋点数据不可用。

具体地,在将埋点数据逐步传输到第二交互结构体时,传输过程可能还会出现一定的错误,例如数据丢失等问题,使得第二交互结构体获取的埋点数据有误,导致解析目标埋点结构体时,获取的埋点信息有误,从而影响后续的数据分析。因此在将第一埋点结构体收集的埋点数据填充到第一交互结构体时,还会对第一埋点结构体收集的埋点数据进行第一校验操作。例如,对第一埋点结构体收集的埋点数据进行循环冗余校验(Cyclicredundancy check,CRC),循环冗余校验是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。然后将校验操作得到的第一校验值填充到第一交互结构体。接着对第二交互结构体的埋点数据进行第二校验操作以得到第二校验值。在比较第一校验值和第二校验值后,若第一校验值和第二校验值相同,则确定第二交互结构体获取的埋点数据与第一埋点结构体获取的埋点数据相同,确定第二交互结构体的埋点数据可用;若第一校验值和第二校验值不相同,则确定埋点数据在传输过程中发生了某些问题,此时第二交互结构体的埋点数据不可用,需要删除第二交互结构体的埋点数据。

如此,通过对第一埋点结构体收集的埋点数据进行第一校验操作,对第二交互结构体的埋点数据进行第二校验操作,并比较第一校验操作得到的第一校验值和第二校验操作得到的第二校验值,便可及时验证第二交互结构体的埋点数据的是否有误,使得只有无误的埋点数据能够填充到第二埋点结构体中,以保证解析第二埋点结构体后获取的埋点数据的准确性,从而确保上传的埋点数据的准确性。

请参阅图4,可选地,步骤013:通过第二交互结构体与第一交互结构体通信,以获取第一交互结构体的埋点数据,包括:

步骤0131:将第一交互结构体的埋点数据写入到预设交互文件,预设交互文件映射到用户空间的第一交互内存区域,第一交互内存区域映射到内核空间的第二交互内存区域,第二交互结构体映射到第二交互内存区域。

具体地,可通过预设交互文件实现第一交互结构体和第二交互结构体的通信。第一交互结构体的埋点数据中包含第一埋点结构体收集的埋点数据的存储的地址及存储空间占用量,通过第一埋点结构体收集的埋点数据的存储的地址及存储空间占用量可确认埋点数据在用户空间的存储区域中对应的第一交互内存区域。将第一交互结构体的埋点数据写入到预设交互文件后,预设交互文件可映射到用户空间的中埋点数据对应的第一交互内存区域。然后将第一交互内存区映射到内核空间的第二交互内存区域,并将第二交互结构体映射到第二交互内存区域后,第二交互结构体便可间接地映射到第一交互内存空间,获取第一交互结构体的埋点数据,如此,通过预设交互文件便可实现第一交互结构体和第二交互结构体的通信,从而实现了埋点数据从用户空间到内核空间的下发。

进一步地,预设文件可为一个或多个。由于对于埋点数据的上传时效性要求并不高,只需要保证埋点数据能够上传即可,因此可只设置一个预设文件,以减少预设文件在用户空间中的存储空间占用量。当多个第一交互结构体需要与第二交互结构体进行通信时,则需要按照前后顺序进行排队,依次进行通信。而预设文件也可设置多个,以使得多个第一交互结构体能够同时与对应的第二交互结构体进行通信,从而提高第二交互结构体获取埋点数据效率。

请参阅图5,可选地,本申请的数据获取方法还可包括:

步骤017:统计写入到预设交互文件的存储空间占用量;

步骤018:在统计的存储空间占用量和第一交互结构体中的存储空间占用量不相同的情况下,确定第一交互结构体的埋点数据写入错误。

具体地,用户空间在将埋点数据写入预设交互文件时,还可统计写入到预设交互文件的存储空间占用量,而第一交互结构体中的存储空间占用量是可确定的。因此,可根据预设交互文件的存储空间占用量和第一交互结构体中的存储空间占用量判断第一交互结构体的埋点数据是否写入错误。

首先统计写入到预设交互文件的存储空间占用量,若在统计的存储空间占用量和第一交互结构体中的存储空间占用量不相同,在埋点数据写入过程中可能发生数据丢失等问题,则可确定第一交互结构体的埋点数据写入错误,此时需要删除第一交互结构体的埋点数据,并重新进入将第一埋点结构体收集的埋点数据填充到第一交互结构体的步骤,直到确定第一交互结构体的埋点数据写入正确才进行下一步步骤,如此便可提高后续第二埋点结构体获取的埋点信息的正确性。

请参阅图6,可选地,本申请的数据获取方法还可包括:

步骤019:在第二交互结构体中的存储空间占用量和对应的目标埋点结构体中的存储空间占用量不相同的情况下,确定第二交互结构体的埋点数据不可用。

具体地,每次的埋点数据都可能不同,对应的存储空间占用量也不同,为了使得第二交互结构体和对应的目标埋点结构体每次都有足够的存储空间占用量来存储埋点数据,第二交互结构体的存储空间占用量和对应的目标埋点结构体的存储空间占用量都是固定的,且都设置的较大。因此对于同一预设算法而言,第二交互结构体的存储空间占用量和对应的目标埋点结构体中的存储空间占用量是相同的,但在具体实现过程中,可能会出现配置失误,导致第二交互结构体的存储空间占用量和对应的目标埋点结构体的存储空间占用量不同的情况发生,从而影响目标埋点结构体获取埋点数据。

那么,在解析目标埋点结构体前,还需要进行一次判断步骤,判断第二交互结构体中的存储空间占用量和对应的目标埋点结构体中的存储空间占用量是否相同。若第二交互结构体中的存储空间占用量和对应的目标埋点结构体中的存储空间占用量相同,则确定第二交互结构体的埋点数据可用;若第二交互结构体中的存储空间占用量和对应的第二埋点结构体中的存储空间占用量不相同,可能会导致埋点数据在获取过程中出现问题,此时确定第二交互结构体的埋点数据不可用。如此,便可根据存储空间占用量,及时发现不可用的第二交互结构体的埋点数据,以提高解析目标埋点结构体时,获取的埋点数据的正确性,从而保证后续上传的埋点数据的正确性。

请参阅图7,可选地,本申请的数据获取方法还可包括:

步骤020:将目标埋点结构体的埋点数据和内核空间直接获取的常规数据打包上传。

具体地,数据分析还要使用内核空间的常规数据,例如充电速度和充电温度等,而这些常规数据是内核空间可直接获取的。因此在上传数据前,还可令内核空间获取常规数据,然后将目标埋点结构体的埋点数据和内核空间直接获取的常规数据一起打包上传,从而便于后续基于目标埋点结构体的埋点数据和常规数据进行数据分析,来评估预设算法运行的好坏。

为便于更好的实施本申请实施方式的数据获取方法,本申请实施方式还提供一种数据获取装置10。请参阅图8,该数据获取装置10可以包括:

第一构建模块11,用于构建第一埋点结构体和第二埋点结构体,第一埋点结构体位于用户空间,第二埋点结构体位于内核空间,预设算法在用户空间中运行,每个预设算法均具有对应的第一埋点结构体和第二埋点结构体,第一埋点结构体用于收集对应的预设算法运行时的埋点数据;

第二构建模块12,用于在用户空间和内核空间分别构建进行交互的第一交互结构体和第二交互结构体,并将第一埋点结构体收集的埋点数据填充到第一交互结构体;

通信模块13,用于通过第二交互结构体与第一交互结构体通信,以获取第一交互结构体的埋点数据,根据第二交互结构体获取的埋点数据填充目标埋点结构体,目标埋点结构体为任一第二埋点结构体,目标埋点结构体通过解析第二交互结构体中的埋点标识号确定;

解析模块14,用于解析目标埋点结构体,以获取目标埋点结构体的埋点数据。

第二构建模块12具体用于将第一埋点结构体的埋点标识号、第一埋点结构体收集的埋点数据的存储的地址及存储空间占用量,填充到第一交互结构体。

第二构建模块12具体用于对第一埋点结构体收集的埋点数据进行第一校验操作,并将校验操作得到的第一校验值填充到第一交互结构体。

本申请的数据获取装置10还可以包括:

比较模块15,用于对第二交互结构体的埋点数据进行第二校验操作,并比较第一校验值和第二校验操作得到的第二校验值。

第一确定模块16,用于在第一校验值和第二校验值不相同的情况下,确定第二交互结构体的埋点数据不可用。

通信模块13具体用于将第一交互结构体的埋点数据写入到预设交互文件,预设交互文件映射到用户空间的第一交互内存区域,第一交互内存区域映射到内核空间的第二交互内存区域,第二交互结构体映射到第二交互内存区域。

本申请的数据获取装置10还可以包括:

统计模块17,用于统计写入到预设交互文件的存储空间占用量。

第二确定模块18,用于在统计的存储空间占用量和第一交互结构体中的存储空间占用量不相同的情况下,确定第一交互结构体的埋点数据写入错误。

第二确定模块18具体用于在第二交互结构体中的存储空间占用量和对应的目标埋点结构体中的存储空间占用量不相同的情况下,确定第二交互结构体的埋点数据不可用。

本申请的数据获取装置10还可以包括:

上传模块19,用于将目标埋点结构体的埋点数据和内核空间直接获取的常规数据打包上传。

上述数据获取装置10中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各个模块可以以硬件形式内嵌于或独立于电子设备中的处理器20中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器20调用执行上述各个模块对应的操作。

请参阅图9,本申请实施方式的电子设备100包括处理器20。处理器20用于执行上述任意一种实施方式的数据获取方法,为了简洁,在此不再赘述。

请参阅图10,本申请实施方式还提供了一种计算机可读存储介质200,其上存储有计算机程序210,计算机程序210被处理器20执行的情况下,实现上述任意一种实施方式的数据获取方法的步骤,为了简洁,在此不再赘述。

可以理解,计算机程序210包括计算机程序代码。计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以是计算机可读存储介质如能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、以及软件分发介质等。

在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施方式所属技术领域的技术人员所理解。

尽管上面已经示出和描述了本申请的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施方式进行变化、修改、替换和变型。

技术分类

06120116077821