文档章节

用二进制进行权限管理

KingMing
 KingMing
发布于 2015/04/22 15:56
字数 536
阅读 155
收藏 9

用二进制进行权限管理

直接给例子吧!例子中将讲解 1.权限表示 2.权限判断 3.添加权限 4.取消权限

public class Test {
/**
* @param args
*/
public static void main(String[] args) {
/**
* 四种权限 ,当前定义为int,以下二进制表示只取后四位作说明
*/
// 添加
int c = 1;// ...0001
// 查询
int r = 2;// ...0010
// 修改
int u = 4;// ...0100
// 删除
int d = 8;// ...1000
/**
*
* 大家可以观察四种权限的二进制表示的规律 ,都是2的N次方,
* 就表示本身,添加权限有最后一位为其它为0,查询倒数第二位为1其它都为0,修改倒数第三个为1其它都为0,删除倒数第四个为1其它都为0
*
*/
/**
*1111---- 这样表示有哪种权限时可以用 |(按位或) 操作
*
*/
// 用户A有添加和修改权限
int usera = c | r | u;
// 用户B有添加和删除权限
int userb = c | d;
/**
* 2222---- 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限
*/
if ((usera & u) == u) {
System.out.println("用户a有更新权限");
} else {
System.out.println("用户a没有有更新权限");
}
/**
* 3333---- 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值
*/
if ((userb & u) == u) {
System.out.println("用户b有更新权限");
} else {
System.out.println("用户b没有更新权限");
}
// 给用户b添加更新权限
userb = userb | u;
if ((userb & u) == u) {
System.out.println("用户b有更新权限");
} else {
System.out.println("用户b没有更新权限");
}
/**
* 4444---- 取消用户某种权限,用用户权限和要取消的权限按位取反后进行按位 操作,再覆盖之前权限值
*/
if ((usera & r) == r) {
System.out.println("用户a有查询权限");
} else {
System.out.println("用户a没有查询权限");
}
//取消用户a的查询权限
usera = usera & (~r);
if ((usera & r) == r) {
System.out.println("用户a有查询权限");
} else {
System.out.println("用户a没有查询权限");
}
}
}

本文转载自:http://www.cnblogs.com/caojinqin/p/tao310.html

共有 人打赏支持
KingMing
粉丝 6
博文 33
码字总数 3989
作品 0
厦门
私信 提问
【小知识大道理】被忽视的位运算

Bitwise Operation导语 众所周知计算机是基于二进制01进行运算的,理所当然地,位运算相对于各种算术运算更加贴合计算机的二进制语义,运算效率会更快。这样计算机是舒服了,人类读起来就太生...

曲高和寡_健
2017/11/21
0
0
UbuntuLinux系统下修改文档权限的方法

Ubuntu的许多操作是在终端中进行的,通过sudo命令管理的文件是由root持有权限的,一般用户是无法改变的。在图形界面上,我们可以通过属性中的权限选项夹进行操作。但是一旦文件的属性显示当前...

mac_zhao
2011/05/02
0
0
Linux权限管理简介

一、权限简介 我们可以通过 ls -l 命令查看文件的类型、文件大小、文件权限详细信息,例如: 其中第一个d代表的是文件的类型,rwxrwx--- 代表的是权限信息,第一个 root 代表的是该文件的所属...

kolbe
2016/02/26
182
2
dotCMS 1.9 RC1 发布

dotCMS 是一个Java开发的功能强大的内容管理系统(CMS)。 该版本对用户界面进行了全面的改造,基于 Dojo 框架编写,大大提升了多站点的管理,支持 CMIS Web服务,提供国际化的管理界面,提升了...

红薯
2010/07/07
254
0
CentOS6.5菜鸟之旅:文件权限详解

一、前言                                 Linux下所有资源、设备均被视作文件来操作,而文件权限则是决定用户可各文件操作的范围,无论是平时使用Linux,...

bengozhong
2016/01/21
26
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis 中$与#的区别,预防SQL注入

一直没注意Mybatis 中$与#的区别,当然也是更习惯使用#,没想到避免了SQL注入,但是由于要处理项目中安全渗透的问题,不可避免的又遇到了这个问题,特此记录一下。 首先是共同点: 在mybatis...

大雁南飞了
7分钟前
0
0
Cydia的基石:MobileSubstrate

在MAC与IOS平台上,动态库的后缀一般是dylid,而加载这些动态库的程序叫做dynamic linker(dyld)。这个程序有很多的环境变量来设置程序的一些行为,最为常用的一个环境变量叫做"DYLD_INSERT_...

HeroHY
10分钟前
0
0
Spring Clould负载均衡重要组件:Ribbon中重要类的用法

Ribbon是Spring Cloud Netflix全家桶中负责负载均衡的组件,它是一组类库的集合。通过Ribbon,程序员能在不涉及到具体实现细节的基础上“透明”地用到负载均衡,而不必在项目里过多地编写实现...

Ala6
19分钟前
0
0
让 linux 删除能够进入回收站

可以参考这个贴子 https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79543316 从那个git地址 把saferm.sh下载下来 把saferm.sh复制到 /usr/bin 目录下 在用~/目下 的.bashrc 下加一句这...

shzwork
29分钟前
0
0
Qt那些事0.0.9

关于QThread,无F*k说的。文档说的差不多,更多的是看到很多人提到Qt开发者之一的“你TM的做错了(You're doing it wrong...)”,这位大哥2010年写的博客,下面评论很多,但主要还是集中在2...

Ev4n
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部