分组方法及装置与流程

文档序号:12908089阅读:203来源:国知局
分组方法及装置与流程

本发明涉及数据处理技术领域,具体而言,涉及一种分组方法及装置。



背景技术:

在互联网产品的实际生产环境中,会有很多场景需要将用户分到不同的组别,以使其对应的用户能够体验不同的算法或服务。现有技术中,缺乏一种可按预设比例自动根据用户id将海量用户进行分组的方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分组方法及装置,以改善上述问题。

本发明实施例提供一种分组方法,所述方法包括:

获得包括多个组项的配置文件,所述多个组项为按预设比例设置;

解析所述配置文件,得到所述多个组项的分布数组;

根据所述配置文件生成密钥字符串及密钥随机数,并根据所述密钥字符串和所述密钥随机数生成混淆因子;

利用所述混淆因子对获得的用户id进行数据转换,得到转换数值;

按预设规则对所述转换数值与所述分布数组进行处理,得到处理结果,根据所述处理结果得到所述用户id所属组项。

进一步地,所述解析所述配置文件,得到所述多个组项的分布数组的步骤,包括:

解析所述配置文件,获得所述多个组项的分组数组,其中,所述组项为n个,n为正整数;

将所述分组数组中前i项组项的分组数值进行累加,获得第i项组项的分布数值,其中,i=1,2,…,n;

改变i值,获得n个组项的分布数值,根据获得的n个组项的分布数值得到n个组项的分布数组。

进一步地,所述根据所述密钥字符串和所述密钥随机数生成混淆因子的步骤,包括:

计算得到所述密钥字符串中的各字符的ascii值;

对所述密钥随机数进行位偏移运算,根据位偏移运算后的密钥随机数和所述密钥字符串中的各所述字符的ascii值,得到更新的密钥随机数;

结合更新前后的密钥随机数得到混淆因子。

进一步地,所述根据所述配置文件生成密钥字符串及密钥随机数的步骤,包括:

根据所述配置文件的业务信息及版本信息生成密钥字符串,并设置密钥随机数。

进一步地,所述按预设规则对所述转换数值与所述分布数组进行处理,得到处理结果的步骤,包括:

将所述转换数值分别与所述分布数组中的第i项组项的分布数值以及第i+1项组项的分布数值进行比较,得到比较结果。

进一步地,所述按预设规则对所述转换数值与所述分布数组进行处理,得到处理结果,根据所述处理结果得到所述用户id所属组项的步骤,包括:

将所述转换数值分别与所述分布数组中的第i项组项的分布数值以及第i+1项组项的分布数值进行做差处理;

若所述转换数值与第i项组项的分布数值的差值大于预设值,且所述转换数值与第i+1项组项的分布数值的差值小于所述预设值,则判定所述用户id属于第i+1项组项。

本发明另一较佳实施例提供一种分组装置,所述分组装置包括获取模块、解析模块、生成模块、转换模块以及处理模块;

所述获取模块用于获得包括多个组项的配置文件,所述多个组项为按预设比例设置;

所述解析模块用于解析所述配置文件,得到所述多个组项的分布数组;

所述生成模块用于根据所述配置文件生成密钥字符串及密钥随机数,并根据所述密钥字符串和所述密钥随机数生成混淆因子;

所述转换模块用于利用所述混淆因子对获得的用户id进行数据转换,得到转换数值;

所述处理模块用于按预设规则对所述转换数值与所述分布数组进行处理,得到处理结果,根据所述处理结果得到所述用户id所属组项。

进一步地,所述解析模块包括分组数组获取单元、累加单元及分布数组获取单元;

所述分组数组获取单元用于解析所述配置文件,获得所述多个组项的分组数组,其中,所述组项为n个,n为正整数;

所述累加单元用于将所述分组数组中前i项组项的分组数值进行累加,获得第i项组项的分布数值,其中,i=1,2,…,n;

所述分布数组获取单元用于改变i值,获得n个组项的分布数值,根据获得的n个组项的分布数值得到n个组项的分布数组。

进一步地,所述生成模块包括计算单元、更新单元以及混淆因子生成单元;

所述计算单元用于计算得到所述密钥字符串中的各字符的ascii值;

所述更新单元用于对所述密钥随机数进行位偏移运算,根据位偏移运算后的密钥随机数和所述密钥字符串中的各所述字符的ascii值,得到更新的密钥随机数;

所述混淆因子生成单元用于结合更新前后的密钥随机数得到混淆因子。

进一步地,所述处理模块包括差值计算单元以及判定单元;

所述差值计算单元用于将所述转换数值分别与所述分布数组中的第i项组项的分布数值以及第i+1项组项的分布数值进行做差处理;

所述判定单元用于在所述转换数值与第i项组项的分布数值的差值大于预设值,且所述转换数值与第i+1项组项的分布数值的差值小于所述预设值时,判定所述用户id属于第i+1项组项。

本发明实施例提供的分组方法及装置,通过解析包括多个按预设比例设置的组项的配置文件以获得密钥字符串及密钥随机数,并根据密钥字符串和密钥随机数生成混淆因子。利用混淆因子对用户id进行数据转换,并根据转换结果将用户id按预设比例进行分组。本发明提供的分组方案具备数学理论依据,可通过生成不同的混淆因子以将用户id按预设比例分设于不同的组别中。通过该分组方案,可根据需求对用户id实现指定比例分组,以为其对应的用户提供不同的服务。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的一种分组方法的应用场景示意图。

图2为本发明实施例提供的服务器的示意性结构框图。

图3为本发明实施例提供的分组方法的流程图。

图4为图3中步骤s103的子步骤的流程图。

图5为图3中步骤s105的子步骤的流程图。

图6为图3中步骤s109的子步骤的流程图。

图7为本发明实施例提供的分组装置的功能模块框图。

图8为本发明实施例提供的解析模块的功能模块框图。

图9为本发明实施例提供的生成模块的功能模块框图。

图10为本发明实施例提供的处理模块的功能模块框图。

图标:100-服务器;110-分组装置;111-获取模块;112-解析模块;1121-分组数组获取单元;1122-累加单元;1123-分布数组获取单元;113-生成模块;1131-计算单元;1132-更新单元;1133-混淆因子生成单元;114-转换模块;115-处理模块;1151-差值计算单元;1152-判定单元;120-处理器;130-存储器;200-用户端。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,除非另有明确的规定和限定,术语“安装”、“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

请参阅图1,为本发明实施例提供的一种分组方法的应用场景示意图。该场景包括服务器100和用户端200。所述用户端200通过网络与所述服务器100通信连接,以进行数据通信或交互。在本实施例中,所述用户端200可以包括多个(图中只示出一个),多个所述用户端200与所述服务器100通信连接。

其中,所述用户端200可以是但不限于个人电脑、平板电脑、智能手机、移动上网设备、数字电视等。所述服务器100可以是网络服务器、数据库服务器,可以是单独的服务器也可以是服务器集群等。

请参阅图2,为本发明实施例提供的上述服务器100的示意性结构框图。所述服务器100包括分组装置110、处理器120及存储器130。其中,所述存储器130与所述处理器120之间直接或间接的电性连接,以实现数据的传输或交互。所述分组装置110包括至少一个可以软件或固件的形式存储于所述存储器130中或固化在所述服务器100的操作系统中的软件功能模块。所述处理器120用于执行所述存储器130中存储的可执行模块,例如所述分组装置110包括的软件功能模块或计算机程序。

请参阅图3,是本发明实施例提供的一种应用于上述服务器100的分组方法的流程图。所应说明的是,本发明提供的方法不以图3及以下所述的具体顺序为限制。下面将对图3中示出的各步骤进行详细说明。

步骤s101,获得包括多个组项的配置文件,所述多个组项为按预设比例设置。

步骤s103,解析所述配置文件,得到所述多个组项的分布数组。

在互联网产品的实际生产环境中,会有很多场景需要将用户分到不同的组别,以体验不同的算法或服务。假设此处有一系列用户id,userlds=[10000001,…,10000049,…],现有a、b、c三种算法,需要将这一系列的用户id进行分组,使其对应的用户能够体验a、b、c三种不同的算法之一,以便来对比这三种算法。

可选地,需要获得一配置文件,该配置文件为对用户id进行分组的依据。可选地,所述配置文件中包括多个组项,且所述多个组项为按预设比例进行设置。其中,每个组项所占的比例大于0但小于1,并且所有组项所占比例之和等于1。

可选地,请参阅图4,在本实施例中,步骤s103包括步骤s1031、步骤s1033和步骤s1035三个子步骤。

步骤s1031,解析所述配置文件,获得所述多个组项的分组数组,其中,所述组项为n个,n为正整数。

步骤s1033,将所述分组数组中前i项组项的分组数值进行累加,获得第i项组项的分布数值,其中,i=1,2,…,n。

步骤s1035,改变i值,获得n个组项的分布数值,根据获得的n个组项的分布数值得到n个组项的分布数组。

可选地,首先对所述配置文件进行解析,获得所述配置文件中多个组项的分组数组,其中,所述配置文件中组项的个数可为n个,n为正整数。假设在所述配置文件中包含a、b、c三个组项,且三个组项分别所占的比例为0.2、0.2、0.6,则获得的上述组项的分组数组为groups=[0.2,0.2,0.6]。

将获得的多个组项的分组数组中的前i项组项的分组数值进行累加,以获得第i项组项的分布数组,其中i=1,2…,n。则不断改变i的取值,可获所述配置文件中所有组项的分布数组,所述组项的分布数组可按以下方式计算获得:groupsums[1]=groups[1],groupsums[i]=groups[1]+…+groups[i]。例如,针对上述的a、b、c三个组项分别的分布数组则为:

groupsums[1]=groups[1]=0.2

groupsums[2]=groups[1]+groups[2]=0.2+0.2=0.4

groupsums[3]=groups[1]+groups[2]+groups[3]=0.2+0.2+0.6=1

步骤s105,根据所述配置文件生成密钥字符串及密钥随机数,并根据所述密钥字符串和所述密钥随机数生成混淆因子。

可选地,在本实施例中,不同的配置文件携带有不同的业务信息及版本信息,可根据获得的所述配置文件的业务信息和版本信息生成密钥字符串。例如,若所述配置文件的业务名为“key”,其版本号version为“1.0”,则生成的密钥字符串为keystr=“key1.0”。此外,还需设置一密钥随机数keyrandom,以便后续根据该密钥随机数keyrandom和密钥字符串keystr生成混淆因子。

可选地,请参阅图5,在本实施例中,步骤s105包括步骤s1051、步骤s1053和步骤s1055三个子步骤。

步骤s1051,计算得到所述密钥字符串中的各字符的ascii值。

步骤s1053,对所述密钥随机数进行位偏移运算,根据位偏移运算后的密钥随机数和所述密钥字符串中的各所述字符的ascii值,得到更新的密钥随机数。

步骤s1055,结合更新前后的密钥随机数得到混淆因子。

可选地,在本实施例中,在获得密钥字符串keystr和密钥随机数keyrandom后,首先,遍历该密钥字符串keystr中的每个字符,获得各字符其对应的ascii值,例如,将该密钥字符串keystr的第一字符其对应的ascii值记为tmp1。同时,对所述密钥随机数keyrandom进行位偏移运算,例如,将所述密钥随机数keyrandom左偏移5位得到tmp2,将该密钥随机数keyrandom右偏移2位得到tmp3,取tmp1、tmp2和tmp3三者的和,记为tmpsum。然后将得到的tmpsum与进行位偏移之前的密钥随机数keyrandom进行异或运算,得到更新后的密钥随机数keyrandom。再将更新后得到的密钥随机数keyrandom进行位偏移运算,并结合所述密钥字符串keystr的第二个字符其对应的ascii值,得到其和,再将得到的和与该更新后的密钥随机数keyrandom进行异或运算,以再次对密钥随机数进行更新。按此逻辑,一直到遍历完所述密钥字符串中每一个字符为止,最终得到的更新的密钥随机数keyrandom即为生成的混淆因子key。在本实施例中,例如,密钥字符串keystr=“key1.0”,且密钥随机数keyrandom=1315423911,则得到的混淆因子key=1453132441224974378。

步骤s107,利用所述混淆因子对获得的用户id进行数据转换,得到转换数值。

在本实施例中,将获得的用户id与生成的混淆因子进行一系列的计算,从而对用户id进行数据转换,得到转换数值。其中,所述用户id可以是所述服务器100从与其通信连接的用户端200所获得,也可以是所述服务器100预存的用户id,在本实施例中,对此并不作具体限制。假设,从海量的用户id中任意取一id数longnum,将longnum与生成的混淆因子按如下方式进行计算:将longnum与所述混淆因子相乘,将得到的乘积整除1000,取得其余数之后将余数加1,再将得到的和除以1000,最终得到的小于等于1的数即为得到的转换数值transferredlongnum。即transferredlongnum=(longnum*key%1000+1)/1000。在本实施例中,若将longnum取为10000049,则得到的转换数值transferredlongnum=0.8129。

步骤s109,按预设规则对所述转换数值与所述分布数组进行处理,得到处理结果,根据所述处理结果得到所述用户id所属组项。

在本实施例中,将得到的转换数值分别与上述获得的多个组项的分布数组中的第i项组项的分布数值以及第i+1项的分布数值进行比较,根据比较结果,对用户id的所属组项进行判别。

可选地,请参阅图6,在本实施例中,步骤s109可以包括步骤s1091和步骤s1093两个子步骤。

步骤s1091,将所述转换数值分别与所述分布数组中的第i项组项的分布数值以及第i+1项组项的分布数值进行做差处理。

步骤s1093,若所述转换数值与第i项组项的分布数值的差值大于预设值,且所述转换数值与第i+1项组项的分布数值的差值小于所述预设值,则判定所述用户id属于第i+1项组项。

对得到的转换数值进行所属组别的判别,从而得到其对应的用户id所属组别,在本实施例中,可采用下述方式对转换数值进行组项判别:将转换数值分别与分布数组中的第i项组项的分布数值以及第i+1项的分布数值进行做差,即transferredlongnum-groupsums[i]以及transferredlongnum-groupsums[i+1]。若所述转换数值与第i项组项的分布数值的差值大于预设值,且所述转换数值与第i+1项组项的分布数值的差值小于所述预设值,例如,所述预设值为0.0001,即:

则可以判定该转换数值transferredlongnum对应的用户id属于第i+1项组项。在此例中,若得到的转换数值为0.8129,则可以得到与其对应的转换前的用户id,即10000049所属组项为c组。并且在混淆因子不变且配置文件分组情况不变的情况下,该用户id所属组项也不会改变。

采用本实施例提供的分组方法对海量的用户id进行分组,最终得到的分组结果比例接近预设设定的指定比例,即0.2:0.2:0.6。在上述例子中,对10000000到20000000这一系列的用户id数字进行分组,分组结果为2016015:1999974:5984011,接近0.2:0.2:0.6,以大数定律为根据,证明对海量用户id的分组结果与预设的指定比例组项保持一致。

请参阅图7,为本发明实施例提供的一种分组装置110的功能模块框图。所述分组装置110包括获取模块111、解析模块112、生成模块113、转换模块114以及处理模块115。

所述获取模块111用于获得包括多个组项的配置文件,所述多个组项为按预设比例设置。具体地,该获取模块111可用于执行图3中所示的步骤s101,具体的操作方法可参考步骤s101的详细描述。

所述解析模块112用于解析所述配置文件,得到所述多个组项的分布数组。具体地,该解析模块112可用于执行图3中所示的步骤s103,具体的操作方法可参考步骤s103的详细描述。

所述生成模块113用于根据所述配置文件生成密钥字符串及密钥随机数,并根据所述密钥字符串和所述密钥随机数生成混淆因子。具体地,该生成模块113可用于执行图3中所示的步骤s105,具体的操作方法可参考步骤s105的详细描述。

所述转换模块114用于利用所述混淆因子对获得的用户id进行数据转换,得到转换数值。具体地,该转换模块114可用于执行图3中所示的步骤s107,具体的操作方法可参考步骤s107的详细描述。

所述处理模块115用于按预设规则对所述转换数值与所述分布数组进行处理,得到处理结果,根据所述处理结果得到所述用户id所属组项。具体地,该处理模块115可用于执行图3中所示的步骤s109,具体的操作方法可参考步骤s109的详细描述。

可选地,请参阅图8,在本实施例中,所述解析模块112包括分组数组获取单元1121、累加单元1122及分布数组获取单元1123。

所述分组数组获取单元1121用于解析所述配置文件,获得所述多个组项的分组数组,其中,所述组项为n个,n为正整数。具体地,该分组数组获取单元1121可用于执行图4中所示的步骤s1031,具体的操作方法可参考步骤s1031的详细描述。

所述累加单元1122用于将所述分组数组中前i项组项的分组数值进行累加,获得第i项组项的分布数值,其中,i=1,2,…,n。具体地,该累加单元1122可用于执行图4中所示的步骤s1033,具体的操作方法可参考步骤s1033的详细描述。

所述分布数组获取单元1123用于改变i值,获得n个组项的分布数值,根据获得的n个组项的分布数值得到n个组项的分布数组。具体地,该分布数组获取单元1123可用于执行图4中所示的步骤s1035,具体的操作方法可参考步骤s1035的详细描述。

可选地,请参阅图9,在本实施例中,所述生成模块113包括计算单元1131、更新单元1132以及混淆因子生成单元1133。

所述计算单元1131用于计算得到所述密钥字符串中的各字符的ascii值。具体地,该计算单元1131可用于执行图5中所示的步骤s1051,具体的操作方法可参考步骤s1051的详细描述。

所述更新单元1132用于对所述密钥随机数进行位偏移运算,根据位偏移运算后的密钥随机数和所述密钥字符串中的各所述字符的ascii值,得到更新的密钥随机数。具体地,该更新单元1132可用于执行图5中所示的步骤s1053,具体的操作方法可参考步骤s1053的详细描述。

所述混淆因子生成单元1133用于结合更新前后的密钥随机数得到混淆因子。具体地,该混淆因子生成单元1133可用于执行图5中所示的步骤s1055,具体的操作方法可参考步骤s1055的详细描述。

可选地,请参阅图10,在本实施例中,所述处理模块115包括差值计算单元1151以及判定单元1152。

所述差值计算单元1151用于将所述转换数值分别与所述分布数组中的第i项组项的分布数值以及第i+1项组项的分布数值进行做差处理。具体地,该差值计算单元1151可用于执行图6中所示的步骤s1091,具体的操作方法可参考步骤s1091的详细描述。

所述判定单元1152用于在所述转换数值与第i项组项的分布数值的差值大于预设值,且所述转换数值与第i+1项组项的分布数值的差值小于所述预设值时,判定所述用户id属于第i+1项组项。具体地,该判定单元1152可用于执行图6中所示的步骤s1093,具体的操作方法可参考步骤s1093的详细描述。

综上所述,本发明提供的一种分组方法及装置,通过解析包括多个按预设比例设置的组项的配置文件以获得密钥字符串及密钥随机数,并根据密钥字符串和密钥随机数生成混淆因子。利用混淆因子对用户id进行数据转换,并根据转换结果将用户id按预设比例进行分组。本发明提供的分组方案具备数学理论依据,可通过生成不同的混淆因子以将用户id按预设比例分设于不同的组别中。通过该分组方案,可根据需求对用户id进行分组,以为其对应的用户提供不同的服务。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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