一种处理用户标签的方法、装置、计算设备及存储介质与流程

文档序号:19471839发布日期:2019-12-21 02:23阅读:143来源:国知局
一种处理用户标签的方法、装置、计算设备及存储介质与流程

本申请涉及金融(fintech)科技的计算机技术领域,尤其涉及一种处理用户标签的方法、装置、计算设备及存储介质。



背景技术:

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(finteh)转变,用户标签技术也不例外,但由于金融行业的安全性、实时性要求,也对用户标签技术提出的更高的要求。

用户标签是用于对用户特征进行描述的,用户数据都是多维的,因此用户标签一般也是从多个维度进行描述,用户标签是精细化运营的基础,能有效提高流量的分发效率和转化率,通过用户标签技术,可以实现根据用户特征和价值进行精准化营销。

对于用户的多维度的用户标签,一般是通过数据库来进行维护的,以mysql数据库为例,是通过一个字段来对应存储一个用户标签,随着用户标签的更精细化划分,用户标签的维度也越来越大,用户标签的类型也越来越多,面对大量的用户标签,需要通过增加字段的方式来进行存储,然而,增加字段的流程比较麻烦,有可能影响正常业务,并且在数据量较大时,执行数据库定义语言(datadefinitionlanguage,ddl)操作对数据库可用性的影响较大。



技术实现要素:

本申请实施例提供一种处理用户标签的方法、装置、计算设备及存储介质,用于实现对用户标签的有效存储,降低对数据库的正常业务的影响。

第一方面,提供一种处理用户标签的方法,所述方法包括:

获得标签操作指令,其中,所述标签操作指令用于指示对目标用户的待操作用户标签进行预定标签操作;

调取所述目标用户对应的标签字段,并确定所述待操作用户标签在预设的枚举类中的排列顺位,其中,所述标签字段中的位的取值用于表征用户标签对应的状态,所述枚举类中依序记录有多个用户标签;

根据所述排列顺位确定所述待操作用户标签在所述标签字段中的目标位置,并根据所述目标位置的取值确定所述待操作用户标签的状态;

根据所述标签操作指令和所述待操作用户标签的状态,进行所述预定标签操作。

在一种可能的设计中,所述标签字段包括至少一个分段,每个分段均包括预定个数的位,根据所述排列顺位确定所述待操作用户标签在所述标签字段中的目标位置,包括:

将所述排列顺位与所述预定个数进行预定计算处理,得到第一值和第二值;

根据所述第一值确定所述待操作用户标签在所述标签字段中的目标分段;

根据所述第二值确定所述待操作用户标签在所述目标分段中的所述目标位置。

在一种可能的设计中,将所述排列顺位与所述预定个数进行预定计算处理,得到第一值和第二值,包括:

以所述排列顺位作为被除数、所述预定个数作为除数进行计算,并将得到的商确定为所述第一值,以及将得到的余数确定为所述第二值。

在一种可能的设计中,每个分段为数据库中字段最长的字段类型的字段。

在一种可能的设计中,根据所述标签操作指令和所述待操作用户标签的状态,进行所述预定标签操作,包括:

根据所述第二值,对预定二进制序列进行移位操作,得到移位后的二进制序列;其中,所述预定二进制序列包括所述预定个数的位;

根据标签操作类型与位运算方式之间的对应关系,确定与所述预定标签操作对应的目标位运算方式;

将所述移位后的二进制序列与所述目标分段对应的二进制序列按照所述目标位运算方式进行位运算,以得到位运算后的二进制序列;

根据所述位运算后的二进制序列,确定所述预定标签操作对应的操作结果。

在一种可能的设计中,所述预定标签操作为打标签操作或去标签操作,则,根据所述位运算后的二进制序列,确定所述预定标签操作对应的操作结果,包括:

以所述位运算后的二进制序列更新所述目标分段对应的二进制序列,以在所述目标位置处执行打标签操作或去标签操作。

在一种可能的设计中,所述预定标签操作为查看标签操作,则,根据所述位运算后的二进制序列,确定所述预定标签操作对应的操作结果,包括:

确定所述位运算后的二进制序列对应的二进制值;

根据预设的二进制值与是否存在用户标签之间的对应关系和所述位运算后的二进制序列对应的二进制值,确定所述目标位置是否存在所述待操作用户标签。

第二方面,提供一种处理用户标签的装置,包括:

获得模块,用于获得标签操作指令,其中,所述标签操作指令用于指示对目标用户的待操作用户标签进行预定操作;

调取模块,用于调取所述目标用户对应的标签字段,其中,所述标签字段中的位的取值用于表征用户标签对应的状态;

第一确定模块,用于确定所述待操作用户标签在预设的枚举类中的排列顺位,所述枚举类中依序记录有多个用户标签;

第二确定模块,用于根据所述排列顺位确定所述待操作用户标签在所述标签字段中的目标位置;

第三确定模块,用于根据所述目标位置的取值确定所述待操作用户标签的状态;

标签操作模块,用于根据所述标签操作指令和所述待操作用户标签的状态,进行所述预定标签操作。

在一种可能的设计中,所述标签字段包括至少一个分段,每个分段均包括预定个数的位,所述第二确定模块用于:

将所述排列顺位与所述预定个数进行预定计算处理,得到第一值和第二值;

根据所述第一值确定所述待操作用户标签在所述标签字段中的目标分段;

根据所述第二值确定所述待操作用户标签在所述目标分段中的所述目标位置。

在一种可能的设计中,所述第二确定模块用于:

以所述排列顺位作为被除数、所述预定个数作为除数进行计算,并将得到的商确定为所述第一值,以及将得到的余数确定为所述第二值。

在一种可能的设计中,每个分段为数据库中字段最长的字段类型的字段。

在一种可能的设计中,所述标签操作模块用于:

根据所述第二值,对预定二进制序列进行移位操作,得到移位后的二进制序列;其中,所述预定二进制序列包括所述预定个数的位;

根据标签操作类型与位运算方式之间的对应关系,确定与所述预定标签操作对应的目标位运算方式;

将所述移位后的二进制序列与所述目标分段对应的二进制序列按照所述目标位运算方式进行位运算,以得到位运算后的二进制序列;

根据所述位运算后的二进制序列,确定所述预定标签操作对应的操作结果。

在一种可能的设计中,所述预定标签操作为打标签操作或去标签操作,所述标签操作模块用于:

以所述位运算后的二进制序列更新所述目标分段对应的二进制序列,以在所述目标位置处执行打标签操作或去标签操作。

在一种可能的设计中,所述预定标签操作为查看标签操作,所述标签操作模块用于:

确定所述位运算后的二进制序列对应的二进制值;

根据预设的二进制值与是否存在用户标签之间的对应关系和所述位运算后的二进制序列对应的二进制值,确定所述目标位置是否存在所述待操作用户标签。

第三方面,提供一种计算设备,所述计算设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面中的任一种方法所包括的步骤。

第四方面,供一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述第一方面中的任一种方法所包括的步骤。

本申请实施例中,利用数据库中的字段(标签字段)所包括的位(bit)的取值来表征用户标签对应的状态,也就是说,可以通过字段中的位来承载用户标签,例如可以用一个位的两种二进制值来表示一个用户标签的两种状态,例如用户标签为“性别”,则可以以1表示男,以0表示女,所以,通过字段包括的位来分别存储用户标签的方式,相当于是对字段进行了扩量使用,例如对于一个64位的字段来说,以位存储用户标签的方式相对于相关技术中以整个字段存储用户标签的方式可以存储更多数量的用户标签,在这样的存储机制下,可以存储更多的用户标签,从而提高用户标签的存储容量,进而提高用户标签的存储率,这样就无需频繁地进行增加字段的ddl操作,所以可以尽量地减少对数据库的正常业务的影响,同时也可以减少对数据库可用性的影响。

基于上述介绍的以位存储用户标签的存储机制,在获得目标用户对应的用于针对待操作用户标签进行预定标签操作的标签操作指令时,可以从用户标签的存储数据中调取该目标用户对应的标签字段,再根据待操作用户标签在预设的枚举类中的排列顺位来确定该待操作用户标签在标签字段中的目标位置,进而可以根据该目标位置上的二进制值确定待操作用户标签对应的状态,再根据标签操作指令和待操作用户标签对应的状态,在目标位置处进行前述的预定标签操作。所以,基于按位存储用户标签的标签存储机制,通过本申请实施例中的标签操作方式可以对不同类型的标签操作进行相应处理,从而提高标签操作的灵活性,并且通过位运算的方式可以进行批量标签操作,所以可以在一定程度上提高标签操作的操作效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例中的以字段中的位存储用户标签的示意图;

图2为本申请实施例中的以字段中的位存储用户标签的另一示意图;

图3为本申请实施例中的以字段中的位存储用户标签的另一示意图;

图4为本申请实施例中的处理用户标签的方法的流程图;

图5为本申请实施例中的处理用户标签的装置的结构框图;

图6为本申请实施例中的计算设备的结构示意图;

图7为本申请实施例中的计算设备的另一结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。

如前所述的,随着用户标签的定位维度越来越多,用户标签划分的越来越精细,所以用户标签的种类和数量也越来越多,对于用户标签的增量存储是目前需要考虑的一个问题。在现有的通过数据库表中的一个字段来存储一个用户标签的存储方式的基础上,为了能够尽量多地存储用户标签,本申请实施例提出了通过字段中的位来存储用户标签的存储机制,通过按位存储机制可以充分利用字段中的位,以提高用户标签存储的灵活性和存储效率,实现对用户标签的增量存储。

基于本申请实施例中的按位存储机制,由于字段中的每个位可以包括1和0两种二进制取值,所以可以通过字段包括的位的不同的二进制值来表示用户标签对应的标签状态。

在一种可能的实施方式中,可以将本申请实施例中的每种用户标签设置两种状态,进而可以1个位来表示这种类型的用户标签。举例来说,以“性别”这种用户标签为例,可以设置“男”、“女”这两种标签状态,例如可以以1表示“男”,以及以0表示“女”;又例如对于“年龄”这种用户标签,例如可以设置“年龄大于等于35岁”、“年龄小于35岁”这两种标签状态,并且以1表示“年龄大于等于35岁”,以及以0表示“年龄小于35岁”,等等。

在另一种可能的实施方式中,可以为某些用户标签设置多于两种的标签状态,此时则可以以多个位的二进制序列来表示多种类型的标签状态,例如对于“个人征信”这种用户标签,例如可以设置“征信特别好”、“征信较好”、“征信较差”这三种标签状态,则可以以2个位组成的二进制序列来表示该三种标签状态,例如以11表示“征信特别好”、以01或10表示“征信较好”以00表示“征信较差”,等等;又例如,对于“学历”这种用户标签,例如可以设置“博士”、“硕士”、“本科”、“本科以下”这四种标签状态,则可以以2个位组成的二进制序列来表示该四种标签状态,例如以11表示“博士”、以10表示“硕士”、以01表示“本科”、以00表示“本科以下”,等等。

为了对不同用户的用户标签进行区分,可以以用户标识作为主键索引,以mysql数据库为例,例如可以用户id作为主键索引,请参见图1和图2所示,图1和图2为基于本申请实施例中的按位存储机制所存储的多个用户的多个用户标签的示意说明。

在图1和图2中,以用户id作为主键索引,标识出了a、b、c、d这四个用户的用户标签情况。

在图1和图2中,每个用户的所有用户标签以标签字段表示,而标签字段又包括tag0和tag1这两个字段,tag0和tag1或者又可以称作标签字段中的分段,在图1和图2中是以tag0和tag1这两个分段均包括8位为例进行图示说明,在具体实施过程中,tag0和tag1的字段类型例如可以是数据库中字段最长的字段类型,以mysql数据库为例,tag0和tag1例如均是包括64位的bigint字段。在图1和图2中,以1-16这16个标签编号表示16种用户标签,例如以“1”表示“学历”、以“2”表示“年龄”,以“3”表示“个人征信”、以“5”表示“新老客户”、以“9”表示“购买能力”、以“11”表示“客户级别”、以“14”表示“房产数量”,等等,通过图1和图2可见,用户的每个用户标签(即1-16中的每个数字)对应1个二进制位,即是以字段中一个位来表示一个用户标签的两种标签状态。

需要说明的是,以一个用户标签包括两种标签状态为例,可以以一个位的两种二进制取值(即0和1)来分别表示,而二进制取值与对应的标签状态之间的对应关系,可以预先定义。

在具体实施过程中,例如可以将所有用户标签的初始状态都设置为0(在其它实施方式中,或者也可以全部设置为1),如图1所示,进一步地,当需要修改某个用户的某个用户标签的状态时,可以将对应的位的二进制值由0修改为1,即例如图2所示。以“5”表示的“新老客户”这种用户标签为例,根据预先定义的二进制取值与标签状态的对应关系,例如当对应字段位的二进制值为0时表示“新客户”,以及当对应字段位的二进制值为1时表示“老客户”,通过图2可见,用户a、b、c均为“老客户”,而用户d为“新客户”。

再参见图3所示,图3示出了用户a的所有用户标签对应的标签状态,用户a的标签字段中包括的两个分段以taga0、taga1表示,当要对用户a的某个用户标签(例如个人征信)进行对应的标签操作时,可以先找到“个人征信”对应的字段位,然后再对该字段位进行相应操作。

当然,在具体实施过程中,还可以按照具体业务场景部署其它类型的用户标签,以及还可以为各种用户标签设置不同的标签状态,图1-图3只是本申请实施例中的示意性说明。

对于图1-图3中部署的多个用户标签,在具体实施过程中,可以定义一个枚举类,进而将所有用户标签以该枚举类表示,即可以将图1-图3中的各个用户标签定义为该枚举类中的枚举元素,并且将各个用户标签在枚举类中依序排列好,例如定义的枚举类为:

typetagstye=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)。

可见,在该枚举类中,1-16这些标签编号对应的用户标签按照编号由小到大的顺序排列,每个用户标签在该枚举类中具有对应的排列顺序(例如称作排列顺位),例如标签编号为1的用户标签在该枚举类中的排列顺位是第1位,标签编号为8的用户标签在该枚举类中的排列顺位则是第8位。再将定义好的枚举类编译到jar包中,进而提供给数据库的接入系统使用。按照该枚举类,中的所有用户标签的排列顺位,可以按照相同的顺序对应设置这些用户标签在标签字段中的位的位置,换言之,可以采用该枚举类中用户标签相同的排列顺序,以标签字段中的对应顺序的位来承载相应的用户标签,例如标签编号为8的用户标签(即“购买能力”)在枚举类中的排列顺序是第8,那么在标签字段中也可以第8个位来承载“购买能力”这个用户标签。当然,前述采用相同排列顺序建立的枚举类中的用户标签与标签字段中的位的映射关系只是一种示意性的举例说明,在具体实施过程中,例如还可以采用倒序的方式建立该映射关系,或者还可以采用一定的转换规则进行转换之后建立该映射关系,本申请实施例不做限制。

如上所述的,用户的标签字段中包括的各个字段可以是字段长度最长的字段类型,如mysql中的bigint,这样,可以利用字段类型为bigint的字段中的各个位来存储一个用户标签,因为bigint占用8字节(byte),共64位(bit),所以通过一个bigint类型的字段可以存储64个用户标签,这样可以尽量的增大用户标签的存储数量,也就是说,在选择用于存储用户标签的字段类型时,可以选择对应数据库中的字段最长(即包括的位数最多的)的字段类型来存储用户标签,这样可以使用较少数量的字段,以单个字段的多位数来换取更少数量的字段的个数。另外,以使用包括64位的bigint的字段类型为例,一个bigint字段最多存储64个用户标签,当需要存储更多的用户标签时,则需要增加字段,例如需要存储的用户标签数量是98个,那么进一步地可以再增加一个字段类型为bigint的字段,即如图1-图2中的tag0和tag1,这样通过增加一次字段的方式可以尽量多地增加字段位,以便于通过较少次数的字段增加而得到相对较多的字段位,也就是说,若利用多个字段来联合存储多个用户标签时,多个字段可以均是字段最长的字段类型,这样,不仅可以尽量地增加用户标签的存储数量,同时,对于字段结构相同的多个字段,在字段位扩容时操作也比较方便,并且在根据每个字段所包括的位数反向计算某个用户标签所在的具体位时也较为方便,计算效率较高。

为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并行执行。

请参见图4所示的本申请实施例提供的处理用户标签的方法的流程图,图1所示的流程描述如下。

步骤401:获得标签操作指令,其中,该标签操作指令用于指示对目标用户的待操作用户标签进行预定标签操作。

基于上述结合图1-图3所介绍的按位存储用户标签的存储机制,在具体实施过程中,可以进行查看标签、设置标签(又称为打标或者打标签)、修改标签和删除标签(又称为去标或者去标签)等多种类型的标签操作。当需要进行某种类型的标签操作时,可以首先确定需要进行标签操作的标签对象,本申请实施例中将该需要进行标签操作的对象例如称作待操作用户标签,并且,假设该待操作用户标签对应的用户称作目标用户,即需要对目标用户的该待操作用户标签进行标签操作。进一步地,再根据该目标用户、待操作用户标签以及对应的标签操作类型(例如称作预定标签操作)生成标签操作指令,进而可以将该标签操作指令下发给数据库。

结合图2理解,假设标签操作指令所针对的目标用户是用户a,以及对应的待操作用户标签是标签编号为5所对应的“新老客户”这一用户标签。

步骤402:调取目标用户对应的标签字段。

目标用户的用户id为“a”,在具体实施过程中,结合图2理解,例如可以目标用户的用户id(即a)作为主键索引,从图2所示的存储数据中确定出与“a”对应的标签字段,所调取出的用户a的标签字段即如图3所示。

步骤403:确定待操作用户标签在预设的枚举类中的排列顺位,其中,标签字段中的位的取值用于表征用户标签对应的状态,该枚举类中依序记录有多个用户标签。

步骤404:根据排列顺位确定待操作用户标签在标签字段中的目标位置。

步骤405:根据目标位置的取值确定待操作用户标签的状态。

参见前述对于预先定义的枚举类的说明,假设是采用相同的排列顺序建立枚举类中的用户标签与标签字段中的位的映射关系,所以用户的标签字段中的“新老客户”这一用户标签的排列顺位与其在枚举类中的排列顺位一样,即都是第5位,所以“新老客户”这一待操作用户标签在用户a的标签字段中的目标位置也为第5位。例如按照预先设定的二进制取值与对应的标签状态之间的对应关系可知,“新老客户”对应的二进制值为0时表示“新客户”,以及当对应的二进制值为1时表示“老客户”,如图3所示的,第5位的字段位为1,而1表示的标签状态是“老客户”,所以可以确定用户a是老客户。

在实际中,用户的标签字段包括至少一个分段,即,用户的标签字段可能只包括一个分段,或者也可能包括多个分段(例如图1-图3中的包括两个分段),并且假设各个分段均包括预定个数的位,即各个分段包括的位数是相等的,均为预定个数,例如图1-图3中的两个分段均包括8位。在确定待操作用户标签在标签字段中的目标位置的过程中,可以将待操作用户标签在标签字段中的排列顺位与预定个数进行预定计算处理,以得到第一值和第二值。例如,以m表示待操作用户标签在标签字段中的排列顺位,以n表示标签字段中的各个分段所包括的位数,可以通过特定的计算方式对m和n进行计算,以得到两个值,进而再根据第一值确定待操作用户标签在所签字段中的具体分段(例如称作目标分段),并进一步地根据第二值确定待操作用户标签在该目标分段中的具体位置(即目标位置)。也就是说,可以通过特定计算方式来计算待操作用户标签在标签字段中到底以哪一位来进行承载表示的,提供一种后台自动计算位置的方式,可以快速地从标签字段多包括的多个位中准确地确定出当前的待操作标签所对应表示的位,进而提高标签操作效率。

在一种具体实施方式中,例如可将m作为被除数、以n作为除数来进行除法计算,将进行除法计算得到的商作为前述的第一值,以及将得到的余数作为前述的第二值,即利用商和余数在标签字段中进行用户标签的标识位的定位。结合图3理解,采用前述介绍的方式确定用户a的待操作用户标签“新老客户”的排列顺位m为5,而标签字段的各个分段包括的位数n为8,而5÷8的结果是商0余5,0即为前述的第一值,表明“新老客户”的目标分段是标签字段中的第0个分段(即taga0),而5为前述的第二值,表明“新老客户”的目标位置是taga0分段中第5个位;又例如,采用前述介绍的方式确定用户a的待操作用户标签“房产数量”的排列顺位m为14,而标签字段的各个分段包括的位数n为8,而14÷8的结果是商1余6,1即为前述的第一值,表明“房产数量”的目标分段是标签字段中的第1个分段(即taga1),而6为前述的第二值,表明“房产数量”的目标位置是taga1分段中第6个位。

步骤406:根据标签操作指令和待操作用户标签的状态,进行预定标签操作。

如前所述的,标签操作的类型较多,针对前述的标签操作指令可能指示不同类型的标签操作,例如,标签操作指令所指示的预定标签可能是打标签操作、查看标签操作或者去标签操作,等等。

基于本申请实施例中提供的按位存储用户标签的存储机制,可以采用位运算的方式来执行标签操作。通过位运算的方式,本身并不会提取数据表中本身存储的数据,而是在其基础之上进行预定的位运算来实现标签操作的目的。

在前述介绍的通过第一值和第二值确定目标位置的基础上,可以根据第二值对预定二进制序列进行移位操作,以得到移位后的二进制序列,其中的预定二进制序列例如是取值为1或者0所对应的二进制序列,并且预定二进制序列所包括的二进制位数与用户标签的标签字段中各个分段所包括的位数相同,继续图1-图3的例子,例如预定二进制序列是00000001,即是包括8位的表示1的二进制序列。再根据标签操作类型与位运算方式之间的对应关系,确定与预定标签操作对应的目标位运算方式,例如该对应关系表明,若标签操作类型为查看标签操作,则对应的目标位运算方式为“与”操作;若标签操作类型为打标签操作,则对应的目标位运算方式为“或”操作;若标签操作类型为去标签操作,则对应的目标位运算方式为“按位取反后再与”操作,等等。进而再将移位后的二进制序列与待操作用户标签所在的目标分段对应的二进制序列按照确定出目标位运算方式进行位运算,以得到位运算后的二进制序列;最后根据位运算后的二进制序列,确定预定标签操作对应的操作结果。

也就是说,在按照前述方式介绍的确定出待操作用户标签在标签字段的目标位置之后,可以按照预定的标签操作类型与位运算方式的对应关系,确定与标签操作指令中所指示的预定类型操作对应的目标位运算方式,进而进行相应的位运算处理。通过位运算的方式进行标签操作,可以无需提取数据表中实际存储的数据内容,这样在多个标签任务并发更新时,可以尽量避免出现数据与预期不一致的问题,无需考虑枷锁,可以尽量减少对正常业务的影响,提高数据库的可用性。

在一种可能的实施方式中,若预定标签操作为查看标签操作,则可以先确定位运算后的二进制序列对应的二进制值;并根据预设的二进制值与是否存在用户标签之间的对应关系和该位运算后的二进制序列对应的二进制值,确定目标位置是否存在待操作用户标签。例如,若想查看某个用户的指定标签x,则可以先按照用户id主键取出该用户的所有用户标签,再通过前述的方式确定出指定标签x在标签字段中的目标位置;最后再用1左移n位(进行除法运算中的取余结果)的值和指定标签x所在的目标分段的二进制序列进行“与”操作,如果结果大于0,则说明该用户有指定标签x,否则说明没有指定标签x。例如,假如目标分段的二进制序列为00100100,1的二进制序列为00000001,1左移2位为得到的移位后二进制序列为00000100,将移位后二进制序列为00000100与目标分段的二进制序列做按位“与”操作,结果为00000100,可见该结果大于0,则表示此用户有指定标签x。

在一种可能的实施方式中,若预定标签操作为打标签操作或去标签操作,则可以位运算后的二进制序列更新目标分段对应的二进制序列,以在目标位置处执行打标签操作或去标签操作。例如,若想给某个用户打上指定标签x,可以采用前述的方式确定出指定标签x在标签字段中的目标位置;最后用1左移n位(进行除法运算中的取余结果)的值与指定标签x所在的目标分段的二进制序列进行“或”操作,结果更新到目标分段中,即完成打标操作。

又例如,若想给某个用户去掉指定标签x,可以采用前述的方式确定出指定标签x在标签字段中的目标位置;最后用1左移n位(进行除法运算中的取余结果)的值,按位取反后,与指定标签x所在的目标分段的二进制序列做“与”操作,结果更新到目标分段中,即完成去标操作。

本申请实施例中,利用字段中的位来存储用户标签,可以扩大字段的标签存储量,实现用户标签的增量存储,进而提高用户标签的存储率,这样可无需频繁地进行增加字段的ddl操作,减少对数据库的正常业务影响,进一步地,基于按位存储的标签存储机制,可以采用位运算进行各种标签操作,可独立或批量进行标签任务,提高了标签操作的效率,并且采用位运算的方式可无需提取数据表中实际存储的数据内容,这样在多个标签任务并发更新时,可以尽量避免出现数据与预期不一致的问题,提高数据库的可用性。

基于同一发明构思,本申请实施例提供一种处理用户标签的装置。该处理用户标签的装置可以是硬件结构、软件模块、或硬件结构加软件模块。该处理用户标签的装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图5所示,本申请实施例中的处理用户标签的装置包括获得模块501、调取模块502、第一确定模块503、第二确定模块504、第三确定模块505和标签操作模块506,其中:

获得模块501,用于获得标签操作指令,其中,标签操作指令用于指示对目标用户的待操作用户标签进行预定操作;

调取模块502,用于调取目标用户对应的标签字段,其中,标签字段中的位的取值用于表征用户标签对应的状态;

第一确定模块503,用于确定待操作用户标签在预设的枚举类中的排列顺位,枚举类中依序记录有多个用户标签;

第二确定模块504,用于根据排列顺位确定待操作用户标签在标签字段中的目标位置;

第三确定模块505,用于根据目标位置的取值确定待操作用户标签的状态;

标签操作模块506,用于根据标签操作指令和待操作用户标签的状态,进行预定标签操作。

在一种可能的实施方式中,标签字段包括至少一个分段,每个分段均包括预定个数的位,第二确定模块504用于:

将排列顺位与预定个数进行预定计算处理,得到第一值和第二值;

根据第一值确定待操作用户标签在标签字段中的目标分段;

根据第二值确定待操作用户标签在目标分段中的目标位置。

在一种可能的实施方式中,第二确定模块504用于:

以排列顺位作为被除数、预定个数作为除数进行计算,并将得到的商确定为第一值,以及将得到的余数确定为第二值。

在一种可能的实施方式中,每个分段为数据库中字段最长的字段类型的字段。

在一种可能的实施方式中,标签操作模块506用于:

根据第二值,对预定二进制序列进行移位操作,得到移位后的二进制序列;其中,预定二进制序列包括预定个数的位;

根据标签操作类型与位运算方式之间的对应关系,确定与预定标签操作对应的目标位运算方式;

将移位后的二进制序列与目标分段对应的二进制序列按照目标位运算方式进行位运算,以得到位运算后的二进制序列;

根据位运算后的二进制序列,确定预定标签操作对应的操作结果。

在一种可能的实施方式中,预定标签操作为打标签操作或去标签操作,标签操作模块506用于:

以位运算后的二进制序列更新目标分段对应的二进制序列,以在目标位置处执行打标签操作或去标签操作。

在一种可能的实施方式中,预定标签操作为查看标签操作,标签操作模块506用于:

确定位运算后的二进制序列对应的二进制值;

根据预设的二进制值与是否存在用户标签之间的对应关系和位运算后的二进制序列对应的二进制值,确定目标位置是否存在待操作用户标签。

前述的处理用户标签的方法的实施例涉及的所有相关内容均可以援引到本申请施例中的处理用户标签的装置所对应的功能模块的功能描述,在此不再赘述。

本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

基于同一发明构思,本申请实施例还提供一种计算设备,该计算设备是具备通信、计算、存储功能的设备,该计算设备例如是服务器或者服务器集群,该计算设备可以利用数据库对用户标签进行存储,并且支持对用户标签进行多种标签操作。如图6所示,本申请实施例中的计算设备包括至少一个处理器601,以及与至少一个处理器601连接的存储器602和通信接口603,本申请实施例中不限定处理器601与存储器602之间的具体连接介质,图6中是以处理器601和存储器602之间通过总线600连接为例,总线600在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线600可以分为地址总线、数据总线、控制总线等,为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在本申请实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以执行前述的推荐多媒体内容的方法中所包括的步骤。

其中,处理器601是计算设备的控制中心,可以利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,计算设备的各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,处理器601主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器601可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通信接口603是能够用于进行通信的传输接口,例如可以通过通信接口603接收数据或者发送数据。

参见图7所示的计算设备的进一步地的结构示意图,该计算设备还包括帮助计算设备内的各个器件之间传输信息的基本输入/输出系统(i/o系统)701、用于存储操作系统702、应用程序703和其他程序模块704的大容量存储设备705。

基本输入/输出系统701包括有用于显示信息的显示器706和用于用户输入信息的诸如鼠标、键盘之类的输入设备707。其中显示器706和输入设备707都通过连接到系统总线600的基本输入/输出系统701连接到处理器601。所述基本输入/输出系统701还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备705通过连接到系统总线600的大容量存储控制器(未示出)连接到处理器601。所述大容量存储设备705及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备705可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

根据本发明的各种实施例,该计算设备包还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该计算设备可以通过连接在所述系统总线600上的通信接口603连接到网络708,或者说,也可以使用通信接口603来连接到其他类型的网络或远程计算机系统(未示出)。

基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质可以是计算机可读存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的处理用户标签的方法的步骤。

基于同一发明构思,本申请实施例还提供一种处理用户标签的装置,该处理用户标签的装置包括至少一个处理器及存储介质,当该存储介质中包括的指令被该至少一个处理器执行时,可以执行如前述的处理用户标签的方法的步骤。

基于同一发明构思,本申请实施例还提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现如前述的处理用户标签的方法的步骤。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。

在一些可能的实施方式中,本申请实施例提供的处理用户标签的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文述描述的根据本本申请各种示例性实施方式的处理用户标签的方法中的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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