动态标签处理方法、装置、计算机设备和存储介质与流程

文档序号:16736377发布日期:2019-01-28 12:39阅读:159来源:国知局
动态标签处理方法、装置、计算机设备和存储介质与流程

本申请涉及数据处理技术领域,特别是涉及一种动态标签处理方法、装置、计算机设备和存储介质。



背景技术:

在计算机数据处理过程中,常用标签来记录信息的分类或内容。按照数量和内容的可变性,标签可分为静态标签和动态标签,其中,静态标签是数量和内容固定不变的标签,动态标签是数量和内容可随时间变化的标签。例如,为企业构建用户信息全貌的用户画像库中,用户画像的用户标签包括动态标签和静态标签,表示用户自然性质的内容采用静态标签,表示用户行为性质的内容采用动态标签。

静态标签和动态标签存储的数据量通常比较大,存储量大,而且相对于静态标签,动态标签由于具有动态性,存储更为复杂。传统的存储动态标签的方式,一般是直接采用多表存储,一个周期存储一张动态标签的表。这种一周期一表的存储方式不能很好地体现动态标签的变化轨迹,数据比较离散。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高存储连续性的动态标签处理方法、装置、计算机设备和存储介质。

一种动态标签处理方法,所述方法包括:

获取用户标识和所述用户标识对应的动态标签信息;

根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;

若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;

在对应用户标识的链表中插入所述新增结点。

一种动态标签处理装置,所述装置包括:

信息获取模块,用于获取用户标识和所述用户标识对应的动态标签信息;

链表存储模块,用于根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;

结点新增模块,用于在检测到所述用户标识对应的新增动态标签信息时,根据所述用户标识和对应的新增动态标签信息生成新增结点;

链表更新模块,用于在对应用户标识的链表中插入所述新增结点。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取用户标识和所述用户标识对应的动态标签信息;

根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;

若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;

在对应用户标识的链表中插入所述新增结点。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取用户标识和所述用户标识对应的动态标签信息;

根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;

若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;

在对应用户标识的链表中插入所述新增结点。

上述动态标签处理方法、装置、计算机设备和存储介质,通过根据获取的用户标识和动态标签信息生成结点,采用链表结构存储结点得到用户标识的链表,若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点,并将新增结点插入对应用户标识的链表,使得在链表中记录有新增动态标签信息。由于动态标签的变化次数不可预知,而链表具有充分的灵活性和动态性,以链表形式存储用户标识和对应的动态标签信息,有效解决了动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。

附图说明

图1为一个实施例中动态标签处理方法的流程示意图;

图2为一种循环链表的结构示意图;

图3为另一个实施例中动态标签处理方法的流程示意图;

图4为又一个实施例中动态标签处理方法的流程示意图;

图5为再一个实施例中动态标签处理方法的流程示意图;

图6为一个实施例中动态标签处理装置的结构框图;

图7为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种动态标签处理方法,包括以下步骤:

s110:获取用户标识和用户标识对应的动态标签信息。

用户标识是用于识别唯一用户的标识号,用户标识的数量可以是一个,也可以是多个。动态标签信息是动态标签所对应的信息。一个用户可以对应有一个或多个动态标签,则一个用户标识可以对应一个或多个动态标签信息。其中,动态标签具体可以是存储动态的用户信息;例如,动态标签可以为用户画像库中用于表示用户行为性质内容的标签。

具体地,用户标识和动态标签信息可以从数据库获取,或者也可以是由人工输入用户标识,从数据库搜索用户标识对应的动态标签的动态标签信息。

s120:根据用户标识和动态标签信息生成结点,并采用链表结构存储结点得到用户标识的链表。

根据用户标识和动态标签信息生成的结点是链表结构中的结点,结点包括数据域和指针域,数据域用于存储数据信息,指针域用于存储指向下一个结点的指针。

其中,根据用户标识和动态标签信息生成结点,具体是将用户标识和对应的动态标签信息存储在结点的数据域。采用链表结构存储结点得到用户标识的链表,具体是将结点的尾指针指向下一个结点,若只存在一个结点,则将结点的尾指针指向自身。具体地,一个动态标签信息对应一个结点,即,一个结点存储一个动态标签信息和动态标签信息所对应的用户标识。其中,链表可以存储在数据库内。

s130:若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点。

新增动态标签信息是新的动态标签信息。根据用户标识和对应的新增动态标签信息生成新增结点,具体是将用户标识和用户标识所对应的新增动态标签信息存储在新增结点的数据域。

s140:在对应用户标识的链表中插入新增结点。

对应用户标识为新增动态标签信息所对应的用户标识。具体地,步骤s130和步骤s140可循环执行,即每一次检测到新增动态标签信息,均对应生成新增结点,并在对应的链表中插入新增结点。

上述动态标签处理方法中,通过根据获取的用户标识和动态标签信息生成结点,采用链表结构存储结点得到用户标识的链表,若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点,并将新增结点插入对应用户标识的链表,使得在链表中记录有新增动态标签信息。由于动态标签的变化次数不可预知,而链表具有充分的灵活性和动态性,以链表形式存储用户标识和对应的动态标签信息,有效解决了动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。

在一个实施例中,链表结构为双向循环链表结构。双向循环链表结构中,结点的指针域存储头指针和尾指针,头指针指向前一个结点,尾指针指向下一一个结点,链表中最后一个结点的尾指针指向链表的第一个结点,整个链表形成一个环,如图2所示,head表示头指针,data标识数据域,rear表示尾指针。

双向循环链表结构的连续性更强,且在特定查询的场景下,双向循环链表结构的遍历上会更快。通过采用双向循环链表结构,可以提高数据存储的便利性。

在一个实施例中,动态标签信息包括动态标签的标签id及与标签id对应的动态标签的标签值,同一用户标识对应多个不同的标签id。其中,标签id为动态标签的唯一识别码,不同的标签id表示不同的动态标签。同一用户标识对应多个不同的标签id,即标识同一个用户对应多个动态标签。标签值为表征动态标签的内容的数据。具体地,同一个标签id对应的标签值可以有多个,例如,若同一个动态标签在不同时刻有不同的内容,则同一个标签id在不同时刻对应不同的标签值。

本实施例中,参考图3,步骤s120包括步骤s121和步骤s122。

s121:根据用户标识、各动态标签的标签id及各动态标签的标签值分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id及标签id对应的标签值。

其中,一个结点的数据域存储一个用户标识、一个标签id和一个标签值,具体是存储一个用户标识、所存储用户标识对应的一个动态标签的标签id和所存储标签id对应的标签值。对应于同一个用户标识,若标签id不同,则生成的结点不同;对应于同一个用户标识、相同的标签id,若标签值不同,则生成的结点不同。

s122:采用链表结构将存储相同用户标识和相同标签id的结点存储为一个链表,得到对应用户标识和对应标签id的链表。

将存储相同用户标识和相同标签id的结点存储为一个链表,从而同一个链表中,各结点所存储的用户标识和标签id均相同、标签值不同。即,一个用户的一个动态标签对应一个链表,一个用户的不同动态标签对应不同的链表。如此,将不同动态标签分开存储,便于分类处理。具体地,所有的链表均存储在同一个数据库内。

可以理解,在其他实施例中,也可以是将同一个用户标识的所有标签id的结点都存储为一个链表。

在一个实施例中,用户标识对应的新增动态标签信息包括:新的动态标签的标签id及对应的标签值,或者已有的标签id对应的新的标签值。即,检测到用户标识对应的新增动态标签信息,包括:接收到新的动态标签的标签id及对应的标签值,或者接收到已有的标签id对应的新的标签值。如此,将标签id的新增和标签值的更改均视为动态标签的变化情况,使得链表能够记录标签id的新增和标签值的更改,记录的变化内容更完整。

对应地,本实施例中,步骤s140包括:在新的动态标签的标签id或新的标签值所对应的用户标识和对应标签id的链表中,插入新增结点。

在一个实施例中,动态标签信息还包括当前时刻和当前时刻对应的记录id。其中,记录id为标识当前的用户标识、当前的标签id、当前的标签值的唯一性的编号。对应地,步骤s121包括:根据用户标识、各动态标签的标签id、各动态标签的标签值、当前时刻和记录id,分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id、标签id对应的标签值、当前时刻和对应的记录id。

具体地,一个结点的数据域存储一个用户标识、所存储用户标识对应的一个动态标签的标签id、所存储标签id对应的标签值、当前时刻和当前时刻对应的记录id。通过存储用户标识、标签id、标签值、当前时刻和记录id,结点所存储的数据多样且便于识别。

例如,如表1所示的链表结构中,维护7个数据字段,其中,head为指向前一个结点的头指针,rear为指向下一个结点的尾指针,time为当前时刻。

表1

在一个实施例中,参考图4,步骤s120之后,还包括步骤s151至步骤s153。

s151:获取待统计数量的标签id。

待统计数量的标签id是需要统计对应的标签值个数的标签id。具体地,可以是接收人工输入的选取指令,选择与选取指令指定的标签id作为待统计数量的标签id。

s152:根据标签id对用户标识的链表进行分组,生成各标签id对应标签值个数的视图。

根据标签id对用户标识的链表进行分组,具体是将同一标签id对应的所有标签值作为一组,则一个标签id对应一个组,标签值为组中的元素,组中的元素的数量等于标签id的标签值个数。

具体地,可以是采用分组函数或分组语句对链表进行分组以生成视图。例如,用户标识的链表存储在数据库内,采用数据库的groupby生成所有标签id对应标签值个数的视图。

s153:从视图中读取待统计数量的标签id所对应的标签值个数,得到统计数量。

具体地,采用数据库的groupby生成所有标签id对应标签值个数的视图后,选取待统计的标签id,并读取待统计的标签id对应的标签值个数。

通过对链表分组并生成视图,从视图中读取待统计数量的标签id的标签值个数,对标签id的标签值个数的查询统计响应速度快,可以满足即时查询需求。

在一个实施例中,参考图5,步骤s120之后,还包括步骤s161至步骤s164。

s161:获取待统计对象的用户标识,得到目标标识。

对象指用户,待统计对象为需要统计动态标签变化次数的用户。

s162:以目标标识为索引,提取目标标识的链表。

用户标识的链表存储在数据库内。步骤s162具体是采用数据库索引的方式,从数据库中提取出目标标识的链表。

s163:按顺序遍历目标标识的链表中的各结点,若被遍历的结点中标签id不是第一次出现,则增加已存的重复次数。

一个结点中存储一个标签id,每一个结点为一个记录。若被遍历的结点中标签id不是第一次出现,则说明之前已经有结点存储了相同的标签id,从而表示标签id有变化,即动态标签有变化。因此,统计遍历的结点中标签id不是第一次出现的重复次数,即可得到动态标签的变化次数。

具体地,若第一次查询到被遍历的结点中标签id不是第一次出现,则已存的重复次数为预设初始值,此时计算预设初始值和预设递增值的和值并存储为新的已存的重复次数;否则,若不是第一次查询到被遍历的结点中标签id不是第一次出现,则已存的重复次数为前一次遍历所存储的重复次数。本实施例中,预设初始值为零,预设递增值是1。可以理解,在其他实施例中,预设递增值也可以是其他正整数。

s164:遍历完目标标识的链表后,根据已存的重复次数获取目标标识对应的动态标签变化次数。

若目标标识的链表有多个,则可以是遍历完目标标识的一个链表,此时获取的目标标识对应的动态标签变化次数,为所遍历的链表中动态标签总的变化次数;当前,也可以是遍历目标标识的所有链表,此时获取的目标标识对应的动态标签变化次数,为目标标识的所有链表中所有动态标签总的变化次数。

具体地,目标标识对应的动态标签的变化次数根据已存的重复次数、预设初始值和预设递增值确定。例如,若预设初始值为零、预设递增值为1,则目标标识对应的动态标签的变化次数等于最终已存的重复次数。

通过索引链表、遍历链表中的结点,根据结点中的标签id不是第一次出现的次数来统计目标标识的动态标签变化次数,对动态标签变化情况的查询统计方便快捷,可以满足即时查询需求。

应该理解的是,虽然图1和图3-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1和图3-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图6所示,提供了一种动态标签处理装置,包括:信息获取模块110、链表存储模块120、结点新增模块130和链表更新模块140,其中:

信息获取模块110用于获取用户标识和用户标识对应的动态标签信息。

链表存储模块120用于根据用户标识和动态标签信息生成结点,并采用链表结构存储结点得到用户标识的链表。

结点新增模块130用于在检测到用户标识对应的新增动态标签信息时,根据用户标识和对应的新增动态标签信息生成新增结点。

链表更新模块140用于在对应用户标识的链表中插入新增结点。

上述动态标签处理装置,通过根据获取的用户标识和动态标签信息生成结点,采用链表结构存储结点得到用户标识的链表,若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点,并将新增结点插入对应用户标识的链表,使得在链表中记录有新增动态标签信息。由于动态标签的变化次数不可预知,而链表具有充分的灵活性和动态性,以链表形式存储用户标识和对应的动态标签信息,有效解决了动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。

在一个实施例中,链表结构为双向循环链表结构。双向循环链表结构的连续性更强,且在特定查询的场景下,双向循环链表结构的遍历上会更快。通过采用双向循环链表结构,可以提高数据存储的便利性。

在一个实施例中,动态标签信息包括动态标签的标签id及与标签id对应的动态标签的标签值,同一用户标识对应多个不同的标签id。本实施例中,链表存储模块120包括结点生成单元(图未示)和连接存储单元(图未示)。结点生成单元用于根据用户标识、各动态标签的标签id及各动态标签的标签值分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id及标签id对应的标签值。连接存储单元用于采用链表结构将存储相同用户标识和相同标签id的结点存储为一个链表,得到对应用户标识和对应标签id的链表。

通过将存储相同用户标识和相同标签id的结点存储为一个链表,将不同动态标签分开存储,便于分类处理。具体地,所有的链表均存储在同一个数据库内。

在一个实施例中,用户标识对应的新增动态标签信息包括:新的动态标签的标签id及对应的标签值,或者已有的标签id对应的新的标签值。即,检测到用户标识对应的新增动态标签信息,包括:接收到新的动态标签的标签id及对应的标签值,或者接收到已有的标签id对应的新的标签值。如此,将标签id的新增和标签值的更改均视为动态标签的变化情况,使得链表能够记录标签id的新增和标签值的更改,记录的变化内容更完整。

对应地,本实施例中,链表更新模块140在新的动态标签的标签id或新的标签值所对应的用户标识和对应标签id的链表中,插入新增结点。

在一个实施例中,动态标签信息还包括当前时刻和当前时刻对应的记录id。对应地,结点生成单元根据用户标识、各动态标签的标签id、各动态标签的标签值、当前时刻和记录id,分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id、标签id对应的标签值、当前时刻和对应的记录id。通过存储用户标识、标签id、标签值、当前时刻和记录id,结点所存储的数据多样且便于识别。

在一个实施例中,上述动态标签处理装置还包括数量统计模块(图未示),用于获取待统计数量的标签id;根据标签id对用户标识的链表进行分组,生成各标签id对应标签值个数的视图;从视图中读取待统计数量的标签id所对应的标签值个数,得到统计数量。

通过对链表分组并生成视图,从视图中读取待统计数量的标签id的标签值个数,对标签id的标签值个数的查询统计响应速度快,可以满足即时查询需求。

在一个实施例中,上述动态标签处理装置还包括变化次数统计模块(图未示),用于获取待统计对象的用户标识,得到目标标识;以目标标识为索引,提取目标标识的链表;按顺序遍历目标标识的链表中的各结点,若被遍历的结点中标签id不是第一次出现,则增加已存的重复次数;遍历完目标标识的链表后,根据已存的重复次数获取目标标识对应的动态标签变化次数。

通过索引链表、遍历链表中的结点,根据结点中的标签id不是第一次出现的次数来统计目标标识的动态标签变化次数,对动态标签变化情况的查询统计方便快捷,可以满足即时查询需求。

关于动态标签处理装置的具体限定可以参见上文中对于动态标签处理方法的限定,在此不再赘述。上述动态标签处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储链表。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种动态标签处理方法。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

获取用户标识和用户标识对应的动态标签信息;根据用户标识和动态标签信息生成结点,并采用链表结构存储结点得到用户标识的链表;若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点;在对应用户标识的链表中插入新增结点。

上述计算机设备,通过根据获取的用户标识和动态标签信息生成结点,采用链表结构存储结点得到用户标识的链表,若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点,并将新增结点插入对应用户标识的链表,使得在表中记录有新增动态标签信息。由于动态标签的变化次数不可预知,而链表具有充分的灵活性和动态性,以链表形式存储用户标识和对应的动态标签信息,有效解决了动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。

在一个实施例中,链表结构为双向循环链表结构。通过采用双向循环链表结构,可以提高数据存储的便利性。

在一个实施例中,动态标签信息包括动态标签的标签id及与标签id对应的动态标签的标签值,同一用户标识对应多个不同的标签id。处理器执行计算机程序时还实现以下步骤:

根据用户标识、各动态标签的标签id及各动态标签的标签值分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id及标签id对应的标签值;采用链表结构将存储相同用户标识和相同标签id的结点存储为一个链表,得到对应用户标识和对应标签id的链表。

如此,通过将不同动态标签分开存储,便于分类处理。

在一个实施例中,用户标识对应的新增动态标签信息包括:新的动态标签的标签id及对应的标签值,或者已有的标签id对应的新的标签值。如此,将标签id的新增和标签值的更改均视为动态标签的变化情况,使得链表能够记录标签id的新增和标签值的更改,记录的变化内容更完整。

在一个实施例中,动态标签信息还包括当前时刻和当前时刻对应的记录id。处理器执行计算机程序时还实现以下步骤:

根据用户标识、各动态标签的标签id、各动态标签的标签值、当前时刻和记录id,分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id、标签id对应的标签值、当前时刻和对应的记录id。

如此,通过存储用户标识、标签id、标签值、当前时刻和记录id,结点所存储的数据多样且便于识别。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取待统计数量的标签id;根据标签id对用户标识的链表进行分组,生成各标签id对应标签值个数的视图;从视图中读取待统计数量的标签id所对应的标签值个数,得到统计数量。

通过对链表分组并生成视图,从视图中读取待统计数量的标签id的标签值个数,对标签id的标签值个数的查询统计响应速度快,可以满足即时查询需求。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取待统计对象的用户标识,得到目标标识;以目标标识为索引,提取目标标识的链表;按顺序遍历目标标识的链表中的各结点,若被遍历的结点中标签id不是第一次出现,则增加已存的重复次数;遍历完目标标识的链表后,根据已存的重复次数获取目标标识对应的动态标签变化次数。

通过索引链表、遍历链表中的结点,根据结点中的标签id不是第一次出现的次数来统计目标标识的动态标签变化次数,对动态标签变化情况的查询统计方便快捷,可以满足即时查询需求。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取用户标识和用户标识对应的动态标签信息;根据用户标识和动态标签信息生成结点,并采用链表结构存储结点得到用户标识的链表;若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点;在对应用户标识的链表中插入新增结点。

上述计算机可读存储介质,通过根据获取的用户标识和动态标签信息生成结点,采用链表结构存储结点得到用户标识的链表,若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点,并将新增结点插入对应用户标识的链表,使得在链表中记录有新增动态标签信息。由于动态标签的变化次数不可预知,而链表具有充分的灵活性和动态性,以链表形式存储用户标识和对应的动态标签信息,有效解决了动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。

在一个实施例中,链表结构为双向循环链表结构。通过采用双向循环链表结构,可以提高数据存储的便利性。

在一个实施例中,动态标签信息包括动态标签的标签id及与标签id对应的动态标签的标签值,同一用户标识对应多个不同的标签id。计算机程序被处理器执行时还实现以下步骤:

根据用户标识、各动态标签的标签id及各动态标签的标签值分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id及标签id对应的标签值;采用链表结构将存储相同用户标识和相同标签id的结点存储为一个链表,得到对应用户标识和对应标签id的链表。

如此,通过将不同动态标签分开存储,便于分类处理。

在一个实施例中,用户标识对应的新增动态标签信息包括:新的动态标签的标签id及对应的标签值,或者已有的标签id对应的新的标签值。如此,将标签id的新增和标签值的更改均视为动态标签的变化情况,使得链表能够记录标签id的新增和标签值的更改,记录的变化内容更完整。

在一个实施例中,动态标签信息还包括当前时刻和当前时刻对应的记录id。计算机程序被处理器执行时还实现以下步骤:

根据用户标识、各动态标签的标签id、各动态标签的标签值、当前时刻和记录id,分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签id、标签id对应的标签值、当前时刻和对应的记录id。

如此,通过存储用户标识、标签id、标签值、当前时刻和记录id,结点所存储的数据多样且便于识别。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取待统计数量的标签id;根据标签id对用户标识的链表进行分组,生成各标签id对应标签值个数的视图;从视图中读取待统计数量的标签id所对应的标签值个数,得到统计数量。

通过对链表分组并生成视图,从视图中读取待统计数量的标签id的标签值个数,对标签id的标签值个数的查询统计响应速度快,可以满足即时查询需求。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取待统计对象的用户标识,得到目标标识;以目标标识为索引,提取目标标识的链表;按顺序遍历目标标识的链表中的各结点,若被遍历的结点中标签id不是第一次出现,则增加已存的重复次数;遍历完目标标识的链表后,根据已存的重复次数获取目标标识对应的动态标签变化次数。

通过索引链表、遍历链表中的结点,根据结点中的标签id不是第一次出现的次数来统计目标标识的动态标签变化次数,对动态标签变化情况的查询统计方便快捷,可以满足即时查询需求。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1