CN109271383B - 动态标签处理方法、装置、计算机设备和存储介质 - Google Patents
动态标签处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109271383B CN109271383B CN201811033243.XA CN201811033243A CN109271383B CN 109271383 B CN109271383 B CN 109271383B CN 201811033243 A CN201811033243 A CN 201811033243A CN 109271383 B CN109271383 B CN 109271383B
- Authority
- CN
- China
- Prior art keywords
- label
- dynamic
- linked list
- tag
- user identification
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种动态标签处理方法、装置、计算机设备和存储介质。该方法包括:获取用户标识和用户标识对应的动态标签信息;根据用户标识和动态标签信息生成结点,并采用链表结构存储结点得到用户标识的链表;若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点;在对应用户标识的链表中插入新增结点。采用本方法能够有效解决动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种动态标签处理方法、装置、计算机设备和存储介质。
背景技术
在计算机数据处理过程中,常用标签来记录信息的分类或内容。按照数量和内容的可变性,标签可分为静态标签和动态标签,其中,静态标签是数量和内容固定不变的标签,动态标签是数量和内容可随时间变化的标签。例如,为企业构建用户信息全貌的用户画像库中,用户画像的用户标签包括动态标签和静态标签,表示用户自然性质的内容采用静态标签,表示用户行为性质的内容采用动态标签。
静态标签和动态标签存储的数据量通常比较大,存储量大,而且相对于静态标签,动态标签由于具有动态性,存储更为复杂。传统的存储动态标签的方式,一般是直接采用多表存储,一个周期存储一张动态标签的表。这种一周期一表的存储方式不能很好地体现动态标签的变化轨迹,数据比较离散。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高存储连续性的动态标签处理方法、装置、计算机设备和存储介质。
一种动态标签处理方法,所述方法包括:
获取用户标识和所述用户标识对应的动态标签信息;
根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;
若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;
在对应用户标识的链表中插入所述新增结点。
一种动态标签处理装置,所述装置包括:
信息获取模块,用于获取用户标识和所述用户标识对应的动态标签信息;
链表存储模块,用于根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;
结点新增模块,用于在检测到所述用户标识对应的新增动态标签信息时,根据所述用户标识和对应的新增动态标签信息生成新增结点;
链表更新模块,用于在对应用户标识的链表中插入所述新增结点。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取用户标识和所述用户标识对应的动态标签信息;
根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;
若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;
在对应用户标识的链表中插入所述新增结点。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取用户标识和所述用户标识对应的动态标签信息;
根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;
若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;
在对应用户标识的链表中插入所述新增结点。
上述动态标签处理方法、装置、计算机设备和存储介质,通过根据获取的用户标识和动态标签信息生成结点,采用链表结构存储结点得到用户标识的链表,若检测到用户标识对应的新增动态标签信息,则根据用户标识和对应的新增动态标签信息生成新增结点,并将新增结点插入对应用户标识的链表,使得在链表中记录有新增动态标签信息。由于动态标签的变化次数不可预知,而链表具有充分的灵活性和动态性,以链表形式存储用户标识和对应的动态标签信息,有效解决了动态标签信息的动态存储问题,且动态标签对应的动态标签信息的每次变化都可记录在对应用户标识的链表内,数据存储不离散、连续性高。
附图说明
图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的标签值个数。
具体地,可以是采用分组函数或分组语句对链表进行分组以生成视图。例如,用户标识的链表存储在数据库内,采用数据库的group by生成所有标签ID对应标签值个数的视图。
S153:从视图中读取待统计数量的标签ID所对应的标签值个数,得到统计数量。
具体地,采用数据库的group by生成所有标签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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种动态标签处理方法,所述方法包括:
获取用户标识和所述用户标识对应的动态标签信息;
根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;
若检测到所述用户标识对应的新增动态标签信息,则根据所述用户标识和对应的新增动态标签信息生成新增结点;
在对应用户标识的链表中插入所述新增结点;
所述动态标签信息包括动态标签的标签ID及与所述标签ID对应的所述动态标签的标签值,同一用户标识对应多个不同的标签ID;
所述根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表,包括:
根据所述用户标识、各动态标签的标签ID及各动态标签的标签值分别生成多个结点,所述结点的数据域存储所述用户标识、所述用户标识所对应动态标签的标签ID及所述标签ID对应的标签值;
采用链表结构将存储相同用户标识和相同标签ID的结点存储为一个链表,得到对应用户标识和对应标签ID的链表。
2.根据权利要求1所述的方法,其特征在于,所述链表结构为双向循环链表结构。
3.根据权利要求2所述的方法,其特征在于,所述用户标识对应的新增动态标签信息包括:新的动态标签的标签ID及对应的标签值,或者已有的标签ID对应的新的标签值。
4.根据权利要求2所述的方法,其特征在于,所述动态标签信息还包括当前时刻和当前时刻对应的记录ID;所述根据所述用户标识、各动态标签的标签ID及各动态标签的标签值分别生成多个结点,所述结点的数据域存储所述用户标识、所述用户标识所对应动态标签的标签ID及所述标签ID对应的标签值,包括:
根据所述用户标识、各动态标签的标签ID、各动态标签的标签值、所述当前时刻和所述记录ID,分别生成多个结点,所述结点的数据域存储所述用户标识、所述用户标识所对应动态标签的标签ID、所述标签ID对应的标签值、所述当前时刻和对应的记录ID。
5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表之后,还包括:
获取待统计数量的标签ID;
根据所述标签ID对所述用户标识的链表进行分组,生成各标签ID对应标签值个数的视图;
从所述视图中读取所述待统计数量的标签ID所对应的标签值个数,得到统计数量。
6.根据权利要求1-4中任意一项所述的方法,其特征在于,所述根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表之后,还包括:
获取待统计对象的用户标识,得到目标标识;
以所述目标标识为索引,提取所述目标标识的链表;
按顺序遍历所述目标标识的链表中的各结点,若被遍历的结点中标签ID不是第一次出现,则增加已存的重复次数;
遍历完所述目标标识的链表后,根据已存的重复次数获取述目标标识对应的动态标签变化次数。
7.一种动态标签处理装置,其特征在于,所述装置包括:
信息获取模块,用于获取用户标识和所述用户标识对应的动态标签信息;
链表存储模块,用于根据所述用户标识和所述动态标签信息生成结点,并采用链表结构存储所述结点得到所述用户标识的链表;
结点新增模块,用于在检测到所述用户标识对应的新增动态标签信息时,根据所述用户标识和对应的新增动态标签信息生成新增结点;
链表更新模块,用于在对应用户标识的链表中插入所述新增结点;
动态标签信息包括动态标签的标签ID及与标签ID对应的动态标签的标签值,同一用户标识对应多个不同的标签ID;
所述链表存储模块包括结点生成单元和连接存储单元,所述结点生成单元用于根据用户标识、各动态标签的标签ID及各动态标签的标签值分别生成多个结点,结点的数据域存储用户标识、用户标识所对应动态标签的标签ID及标签ID对应的标签值;
所述连接存储单元用于采用链表结构将存储相同用户标识和相同标签ID的结点存储为一个链表,得到对应用户标识和对应标签ID的链表。
8.根据权利要求7所述的装置,其特征在于,所述链表更新模块在新的动态标签的标签ID或新的标签值所对应的用户标识和对应标签ID的链表中,插入新增结点。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811033243.XA CN109271383B (zh) | 2018-09-05 | 2018-09-05 | 动态标签处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811033243.XA CN109271383B (zh) | 2018-09-05 | 2018-09-05 | 动态标签处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271383A CN109271383A (zh) | 2019-01-25 |
CN109271383B true CN109271383B (zh) | 2021-01-08 |
Family
ID=65187270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811033243.XA Active CN109271383B (zh) | 2018-09-05 | 2018-09-05 | 动态标签处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271383B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422668B (zh) * | 2020-11-10 | 2023-04-07 | 北京百度网讯科技有限公司 | 用于网络社区的存储方法、装置、电子设备及可读介质 |
CN114124863B (zh) * | 2021-09-14 | 2023-11-14 | 微梦创科网络科技(中国)有限公司 | 一种消息连续性识别方法、装置和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276334A (zh) * | 2007-03-29 | 2008-10-01 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
CN102541925A (zh) * | 2010-12-21 | 2012-07-04 | 中国移动通信集团山西有限公司 | 一种实现详细话单的快速存储和检索的方法及装置 |
CN103064881A (zh) * | 2012-12-03 | 2013-04-24 | 深圳市汇川控制技术有限公司 | 动态内存分配中的环形数据管理器及环形数据管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136079B (zh) * | 2011-03-07 | 2014-08-20 | 中兴通讯股份有限公司 | 一种读写器与标签卡之间的动态认证方法及实现装置 |
CN108268545B (zh) * | 2016-12-30 | 2020-11-10 | 中移(杭州)信息技术有限公司 | 一种分级的用户标签库的创建的方法和装置 |
CN106921664B (zh) * | 2017-03-05 | 2019-12-10 | 南京白下高新技术产业园区投资发展有限责任公司 | 一种共享单车标签生成装置 |
-
2018
- 2018-09-05 CN CN201811033243.XA patent/CN109271383B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276334A (zh) * | 2007-03-29 | 2008-10-01 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
CN102541925A (zh) * | 2010-12-21 | 2012-07-04 | 中国移动通信集团山西有限公司 | 一种实现详细话单的快速存储和检索的方法及装置 |
CN103064881A (zh) * | 2012-12-03 | 2013-04-24 | 深圳市汇川控制技术有限公司 | 动态内存分配中的环形数据管理器及环形数据管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109271383A (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106502745B (zh) | 一种函数调用方法和装置 | |
CN107729227B (zh) | 应用程序测试范围确定方法、系统、服务器和存储介质 | |
CN107704604B (zh) | 一种消息持久化方法、服务器和计算机可读存储介质 | |
CN109271383B (zh) | 动态标签处理方法、装置、计算机设备和存储介质 | |
CN110109894B (zh) | 非关系型数据库的实现方法、装置、存储介质和设备 | |
CN110245028B (zh) | IoT-MQ的消息存储方法、装置、计算机设备和存储介质 | |
CN109672608B (zh) | 根据时间发送消息的方法 | |
CN109299205B (zh) | 将规划行业使用的空间数据进行入库的方法和装置 | |
CN111143178A (zh) | 用户行为分析方法、装置及设备 | |
CN112256318B (zh) | 一种用于依赖产品的构建方法及设备 | |
CN111723097A (zh) | 应用程序接口配置方法、装置、计算机设备和存储介质 | |
CN110413994B (zh) | 热点话题生成方法、装置、计算机设备和存储介质 | |
CN109656474B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN109522305B (zh) | 一种大数据去重方法及装置 | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN107330031A (zh) | 一种数据存储的方法、装置及电子设备 | |
CN108073709B (zh) | 一种数据记录的操作方法、装置、设备和存储介质 | |
US8407187B2 (en) | Validating files using a sliding window to access and correlate records in an arbitrarily large dataset | |
CN116361153A (zh) | 固件代码的测试方法、装置、电子设备、存储介质 | |
CN110119351B (zh) | 一种测试用例执行方法及装置 | |
CN108073712B (zh) | 信息系统中的主数据删除方法、装置和计算机设备 | |
CN109284260B (zh) | 大数据文件读取方法、装置、计算机设备及存储介质 | |
Brazeau et al. | Morphological phylogenetic analysis with inapplicable data | |
CN105260425A (zh) | 基于云盘的文件显示方法及装置 | |
CN111339574B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |