“角色应用权限管理”中“质数”的运用
(任何引用请注明:转载于美人山下http://beautyhill.blogspot.com)
一、需求与分析
在用户日益增多时,对用户进行角色(等级)分类、区别对待显得相当必要。一方面通过积分等奖励措施、鼓励用户经常性的访问,从而提高站点价值;另一方面通过应用分级,用户由角色限制访问,规避在资源发布过程中可能带来的版权等诸多风险,同时通过用户积分(虚拟钱币)消费回收,降低发布成本;等等。
对用户进行分类,可绝不是简单的活。
用户的角色(等级,以下均简称“角色”),类似人在社会中的身份。我,在家里,面对母亲是“儿子”,面对表妹是“表哥”;在学校,面对老师是“学生”,面对食堂是“顾客”;在社会,面对商店是“顾客”,面对美女是“帅哥”;在公司,面对总裁是“雇员”,面对下属是“老大”。共有4个应用:“家”、“学校”、“社会”、“公司”;其下又分若干子类。
1. “儿子”成人前可以理直气壮地向妈妈要钱,但要在妈妈年老后负责赡养;
2. “顾客”可以购买食堂、商店里面的食品或货物;
3. “帅哥”可以和美女勾勾搭搭(美女间勾勾搭搭要受到道德约束);
4. “老大”可以对下属进行训话。
以上便是几个角色和应用之间的时间处理关系。需要注意的是,各应用的角色间是有交叉的:学校食堂的“顾客”和社会商店的“顾客”,履行的职责(恪守的规则)基本相同。
在同一个应用下的角色,也会出现简单的“级别”差异。比如:“人”和“男人”的关系,“男人”能做的,“人”都能做;但“人”能做的,“男人”不竟然都可以做(比如“怀孕”)。
通过上面的讨论,我初步将应用按两种性质分类:区域与事件。
“家”、“学校”、“公司”等是不同的区域,各区域有其对应的角色类型。
“购物”、“学习”、“勾搭”等是不同的事件,各事件有其对应的角色类型。
“区域”与“事件”,前者标识范围,后者标识操作。
二、设计与建模
计算机对数的运算效率要远高于网络数据传输过程,因此,通过数的运算,压缩网络数据量是非常好的提议。此外,数的统一性,便于应用间的“语言”交互,所要注意的,是如何保证对“数”“结构”的良好建模。
“质数”与“合数”的关系,有点像钥匙与锁的匹配,所不同的是,两种数之间是多对多的关系。但这种多对多反而带来好处:有利于资源复用的模型。
一定数范围内,“质数”的个数一般比“合数”少,甚至少得多。
通常的系统中,“角色”的个数一般比“应用”少,甚至少得多。
当我把角色设想成某个“质数”时,任何“应用”在我眼里不过是一个(组)“合数”,当该“应用”对该“角色”开放时,其“合数”(组员)能被该“质数”整除。
构建如下“角色”:
1. 儿子(2),表哥(3)
2. 学生(5),顾客(学校)(7),
3. 帅哥(11),顾客(社会)(13)
4. 雇员(17),老大(19),
5. 顾客(7);
构建如下“应用”:
1. 家庭应用:区域(2×3);事件:要钱(2),欺负(3)
2. 学校应用:区域(5×7);事件:学习(5),购买(7)
3. 社会应用:区域(11×7);事件:勾搭(11),购买(7)
4. 公司应用:区域(17×19);事件:领工资(17),训话(19 )
当面对某“应用”进行“角色”权限判断时:
1. “应用”申请。
2. “角色”是否整除“区域(事件)”?是,继续;否,“应用”返回。
3. “角色”享受“应用”中的服务。
4. “应用”返回。
我构造的模型有这样的特点:“儿子(2)”、“表哥(3)”可以在“家庭应用(区域6)”中活动,同时,儿子可以享受“要钱(2)”事件,“表哥”可以享受“欺负(3)”事件,等等。这与实际情况基本符合。而且由于质数的特点,这一算法也绝对不会出错。
谈谈“男人”与“人”。有没有必要使得所有可被“男人”整除的“应用”,均乘以“人”而使得其也能被“人”整除?否!对于这样极其明显的包含关系的角色定义,可以用“质数”加“权”解决。定义“人”(2),定义“男人”(2^2),即“男人”(4),这样,对于所有“男人”通过的应用事件,“人”是肯定适用的。
那么“女人”呢?怎样模拟“女人”与“男人”的平等,同时相同地归属于“人”?稍后作答。
提两个问题:
1. 产品部门对角色数目的要求是无止境的,从“小小神童”到“至尊水友”,中间少则跨越几十级,多则上百级!“质数”可不那么好找啊!
2. 开发部门对应用数目的统计是吓死人的,从“首页登录”到“提示错误”,中间少则几百个事件,多则上万个!总有个“质数”的积会溢出啊!
为了使“质数”运用得到更好的扩展性,我提议用“多维质数”。
1. 儿子(2,1,1,1),简写[1,2];表哥(3,1,1,1),简写[1,3];
2. 学生(1,2,1,1),简写[2,2];顾客(学校)(1,3,1,1),简写[2,3];
3. 帅哥(1,1,2,1),简写[3,2];顾客(社会)(1,1,3,1),简写[3,3];
4. 雇员(1,1,1,2),简写[4,2];老大(1,1,1,3),简写[4,3];
注意:以上角色“质数矩阵”中,只能有一元为数,其他必须均为1!这样才能防止不同角色相乘的积(应用权限)相同。
构建如下“应用”:
1. 家庭应用:区域(6,1,1,1);事件:要钱(2,1,1,1),欺负(3,1,1,1)
2. 学校应用:区域(1,6,1,1);事件:学习(1,2,1,1),购买(1,3,1,1)
3. 社会应用:区域(1,1,6,1);事件:勾搭(1,1,2,1),购买(1,1,3,1)
4. 公司应用:区域(1,1,1,6);事件:工资(1,1,1,2),训话(1,1,1,3)
当面对某“应用”进行“角色”权限判断时:
1. “应用”申请。
2. “角色”是否整除“区域(事件)”(参见下一章节“实现与案例”中的整除定义)?是,继续;否,“应用”返回。
3. “角色”享受“应用”中的服务。
4. “应用”返回。
谈谈“男人”与“女人”。定义“人”(2,1,1,1),那么“女人”(2×2,1,1,1),“男人”(2×3,1,1,1)。你看,多么和谐的男女平等,与生理学的基因理论又如此贴切!
受质数乘积的限制,建议只使用少数质数作为基本数,而角色的扩充,通过多维矩阵实现。同时引入“排除型应用”,即该应用只记录所有被排除(限制)的角色乘积。实验证明,int型可以接受2到43内的14个质数中的最大6个质数连乘而不溢出,因此,2到43内的质数是非常好的基本数组。这14个质数是(排名不分先后):
2,3,5,7,11,13,17,19,23,29,31,37,41,43
如果角色中有嵌套行为,可以通过“基因质数”实现,要注意的是,这些角色必须在统一维度。多层嵌套,还可以考虑“质数加权”。
三、实现与案例
定义1.0:质数(Prime Number)为:P1、P2、P3、P4、……
其中,Pi=2,3,5,7,11,13,……,其中,i=1,2,3,……
定义1.1:质数(Prime Number)相乘,若:Pi、Pj,
其中,Pi,Pj=2,3,5,7,11,13,……,i,j=1,2,3,……
则Pi×Pj=最小公倍数(Pi,Pj)
定义1.2:质数(Prime Number)与数(Number)相乘,若:Pi、Nj,
其中,Pi=2,3,5,7,11,13,……,Nj=1,2,3,……,i,j=1,2,3,……
则Pi×Nj=最小公倍数(Pi,Nj)
定义1.3:数(Number)与质数(Prime Number)相乘,若:Ni、Pj,
其中,Ni=1,2,3,……,Pj=2,3,5,7,11,13,……,i,j=1,2,3,……
则Ni×Pj=最小公倍数(Ni,Pj)
定义2.0:角色(Role)为:R1、R2、R3、R4、R5、R5、R6、……
其中,Ri=(……,1,1,Pj,1,1,……),简写[j,Pj],
其中,i,j=1,2,3,……,且j为Pj的维序号
特殊的,约定Pj可以为非质数1,此时为“绝对超级角色”;
约定Pj可以为非质数0,此时为“绝对受限角色”。
定义2.1:角色(Role)相乘,若:Ri=(……,1,1,Pj,1,1,……),
Rk=(……,1,1,Pj,1,1,……),则Ri×Rk=(……,1,1,Pj×Pj,1,1,……),
其中,i,j,k=1,2,3,……
定义3.0:应用(Application)为:A1、A2、A3、A4、A5、……
其中,Ai=Rj×Rk×……×Rm,其中,i,j,k,m=1,2,3,……
特殊的,约定Ai可以为非角色积(0,0,……,0),此时为“绝对开放应用”;
约定Ai可以为非角色积(1,1,……,1),此时为“绝对限制应用”。
约定Ai可以为带负号的-(……,Ni,……),此时为“排除型应用”,负号不参与运算。
推论3.1:应用(Application)与角色(Role)相乘,若:Ai=(Nj,Nk,……,Nm),
Rn=(Po,Pp,……,Pq),则Ai×Rn=(Nj×Po,Nk×Pp,……,Nm×Pq),
其中,i,j,k,m,o,p,q=1,2,3,……
推论3.2:角色(Role)与应用(Application)相乘,若:Ri=(Pj,Pk,……,Pm),
An=(No,Np,……,Nq),则Ri×An=(Pj×No,Pk×Np,……,Pm×Nq),
其中,i,j,k,m,o,p,q=1,2,3,……
定义4.0:角色(Role)取摩应用(Application)为:Ri=(Pj,Pk,……,Pm),
An=(No,Np,……,Nq),则Ri|An=(Pj|No,Pk|Np,……,Pm|Nq),
其中,i,j,k,m,o,p,q=1,2,3,……
定义4.1:角色(Role)整除应用(Application)为:Ri=(Pj,Pk,……,Pm),
An=(No,Np,……,Nq),则Ri|An=(0,0,……,0),
其中,i,j,k,m,o,p,q=1,2,3,……
定义5:角色(Role)拥有应用(Application)的权限为:该角色整除该“非排除型应用”,或不可整除该“排除型应用”。
案例:
PPLive网站现有角色4个,分别为:
1. 管理员(RAdmin)
2. 高级用户(RHight)
3. 一般用户(RMiddle)
4. 受限用户(RLow);
现有应用4个,分别为:
1. 登录(ALogin),对所有人开放
2. 阅读文章(ARead),对RL不开放
3. 发表文章(ANew),对RH、RA开放
4. 修改删除文章(AEdit),对RA开放
定义:
RA(2,1),RH(3,1),
RM(1,5),RL(1,7);
则:
AL(6,35),AR(6,5),
AN(6,1),AE(2,1)。
其中,
RA可定义为(1,1),
AL等同于(0,0),
AR等同于-(1,7)
Howard(howard.queen@hotmail.com)
2007-8-15


没有评论:
发表评论