用户权力详解_PHP-php教程
作者:鸳鸯520_205 | 来源:互联网 | 2017-05-14 02:18
有耐心就看完(还是算法重要)用户初始权值:Enable0;假如一个用户有第一项权力Select,则用户权值:EnableEnable+1;假如一个用户有第二项权力Insert,则用户权值:EnableEnable+2;假如一个用户有第三项权力Update,则用户权值:EnableEnable+4;
有耐心就看完(还是算法重要) 用户初始权值:Enable = 0; 假如一个用户有第一项权力Select,则用户权值:Enable = Enable + 1; 假如一个用户有第二项权力Insert,则用户权值:Enable = Enable + 2; 假如一个用户有第三项权力Update,则用户权值:Enable = Enable + 4; 假如一个用户有第四项权力Delete,则用户权值:Enable = Enable + 8; 为什么依次+1、+2、+4、+8,而不是+1、+2、+3、+4呢? 假如是+1、+2、+3、+4: 假如一个用户有第一项权力Select,则用户权值:Enable = Enable + 1; 假如一个用户有第二项权力Insert,则用户权值:Enable = Enable + 2; 假如一个用户有第三项权力Update,则用户权值:Enable = Enable + 3; 假如一个用户有第四项权力Delete,则用户权值:Enable = Enable + 4; 那么当用户权值:Enable = 3时,你就无法判断用户到底是同时拥有 第一项权力Select和第二项权力Insert两项权利,还是仅拥有第三项权力Update, 前一种权值算法就可以避免这种情况。 但是当采用前一种权值算法时,怎样由用户的权值Enable快速知道用户拥有哪几项权 力呢?假如是用户权值Enable = 5,用户拥有第一项权力Select和第三项权力Update, 注意不拥有第二项权力Insert。 下面我将用户权力列表: 权力 拥有权力用户的权值Enable SelectItem:( 1, 3, 5, 7, 9, 11, 13, 15 ) InsertItem:( 2, 3, 6, 7, 10, 11, 14, 15 ) UpdateItem:( 4, 5, 6, 7, 12, 13, 14, 15 ) DeleteItem:( 8, 9, 10, 11, 12, 13, 14, 15 ) 可见并不是权值Enable大的用户就拥有“更多”的权力, 假如 :用户权值Enable = 3,用户拥有第一项权力(Select)和第二项权力(Insert),共两项权利, 用户权值Enable = 4,用户拥有第三项权力(Update),仅一项权利。 仔细观察“用户权力列表”: SelectItem:( 1, 3, 5, 7, 9, 11, 13, 15 ): 1 = 0 + 2 的0次幂;3 = 2 的1次幂 + 2 的0次幂;5 = 2 的2次幂 + 2 的0次幂; InsertItem:( 2, 3, 6, 7, 10, 11, 14, 15 ): 2 = 0 + 2 的1次幂;3 = 2 的0次幂 + 2 的1次幂;6 = 2 的2次幂 + 2 的1次幂; UpdateItem:( 4, 5, 6, 7, 12, 13, 14, 15 ): 4 = 0 + 2 的2次幂;5 = 2 的0次幂 + 2 的2次幂;6 = 2 的2次幂 + 2 的2次幂; DeleteItem:( 8, 9, 10, 11, 12, 13, 14, 15 ):8 = 0 + 2 的3次幂;9 = 2 的0次幂 + 2 的3次幂 10 = 2 的1次幂 + 2 的3次幂; 规律总结如下: 拥有第一项权力Select用户的权值:Enable = ? + 2 的0次幂;(其中?亦必须拆成2 的N次幂相加的情况) 拥有第二项权力Insert用户的权值:Enable = ? + 2 的1次幂;(其中?亦必须拆成2 的N次幂相加的情况) 拥有第三项权力Update用户的权值:Enable = ? + 2 的2次幂;(其中?亦必须拆成2 的N次幂相加的情况) 拥有第四项权力Delete用户的权值:Enable = ? + 2 的3次幂;(其中?亦必须拆成2 的N次幂相加的情况) 到此已经很清楚了: 只要将用户的权值Enable拆成2 的N次幂相加的情况, 如果其中有N=0,则拥有第一项权力Select, 如果其中有N=1,则拥有第二项权力Insert, 如果其中有N=2,则拥有第三项权力Update, 如果其中有N=3,则拥有第四项权力Delete, 那么怎样将用户权值Enable快拆成2 的N次幂相加的情况呢? 呵呵!只要将Enable转化为二进制,从右向左依次取基,若基为的位则拥有相应权利, 举例: (11)10=(1011)2,即拥有第一、二、四项权力,和“用户权力列表”相符; (12)10=(1100)2,即拥有第三、四项权力,和“用户权力列表”相符; (15)10=(1111)2,即拥有第一、二、三、四项权力,和“用户权力列表”相符; 当权利等级极其复杂时,该算法可以很快知道用户权力: 例如: 共8个等级,用户权值Enable=67;(67)10=(1000011)2,即拥有第一、六、七项权力, 用户权值Enable=67;(159)10=(10011111)2,即拥有第一、四、五、六、七、八项权力。 到此结束,希望没有浪费您的时间,对您有所启发。
推荐阅读
本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ...
[详细]
蜡笔小新 2024-11-13 09:55:03
Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ...
[详细]
蜡笔小新 2024-11-13 09:49:14
CDA数据分析师团队出品,作者:徐杨老师,编辑:Mika。本文将帮助您了解如何撰写一份高质量的数据分析师简历,特别是对于转行者。 ...
[详细]
蜡笔小新 2024-11-12 18:20:52
本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ...
[详细]
蜡笔小新 2024-11-12 18:13:16
基于二次预测的H.264分数像素运动估计算法在这项研究中,提出了一种基于二次预测的H.264分数像素运动估计(ME)算法。这里ÿ ...
[详细]
蜡笔小新 2024-11-12 17:53:48
在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ...
[详细]
蜡笔小新 2024-11-12 16:40:04
本文探讨了数据标注在自动驾驶领域的具体应用,包括多种标注类型及其重要性。 ...
[详细]
蜡笔小新 2024-11-12 15:39:05
数字中心的数据应用分析团队在“厦门大数据安全开放创新应用大赛·交通专题”中荣获算法赛一等奖。 ...
[详细]
蜡笔小新 2024-11-12 15:05:13
本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ...
[详细]
蜡笔小新 2024-11-12 15:02:28
重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ...
[详细]
蜡笔小新 2024-11-12 14:57:05
字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ...
[详细]
蜡笔小新 2024-11-12 14:07:25
本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ...
[详细]
蜡笔小新 2024-11-12 13:13:21
探讨如何在Go语言中高效地处理大规模切片的去重操作,特别是针对百万级数据量的场景。 ...
[详细]
蜡笔小新 2024-11-12 12:56:52
本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ...
[详细]
蜡笔小新 2024-11-12 12:37:08
本文介绍了家用计算机和计算器的基本功能和使用方法,通过具体的例子展示了如何利用计算器进行高效的数学计算。文章还探讨了计算工具的发展历史及其未来趋势。 ...
[详细]
蜡笔小新 2024-11-12 12:06:16