文档章节

用二进制进行权限管理

KingMing
 KingMing
发布于 2015/04/22 15:56
字数 536
阅读 157
收藏 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
粉丝 8
博文 33
码字总数 3989
作品 0
厦门
私信 提问
Linux权限管理简介

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

kolbe
2016/02/26
182
2
【小知识大道理】被忽视的位运算

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

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

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

mac_zhao
2011/05/02
0
0
dotCMS 1.9 RC1 发布

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

红薯
2010/07/07
259
0
Karson/fastadmin

FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。 主要特性 基于验证的权限管理系统 支持无限级父子级权限继承,父级的管理员可任意增删改子级管理员及权限设置 支持单管理员多角...

Karson
2017/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 查询当天、本周,本月,上一个月的数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 wher......

BraveLN
15分钟前
1
0
Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构

前面几节中,都是通过java层调用到jni中,jni向下到c++层并未介绍 看下Java层一个方法在c++层 MediaPlayer后续过程 frameworks/av/media/libmedia/MediaPlayer.cpp 找一个我们之前熟悉的setDa...

天王盖地虎626
33分钟前
1
0
【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)

1、前言   框框博客在线报时:2018-11-07 19:31:06   当前MySQL最新版本:8.0.13 (听说比5.7快2倍)   官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MySQL 8 要比 MySQL 5.7 快 2 ...

Code辉
33分钟前
0
0
oracle dg备库重建redolog:ora-00313,ora-00312

trace文件: Errors in file /crbank/dbs/app/product/diag/rdbms/rdbs/dbs/trace/dbs_mrp0_24445130.trc: ORA-00313: open failed for members of log group 8 of thread 1 ORA-00312: onl......

hnairdb
47分钟前
1
0
深入分析Java I/O的工作机制 (一)

1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合,类库包括接口、抽象类、具体类等。 I/O是机器获取和交互信息的主要渠道。 java在I/O上也一直在做持续的优化,在1.4版开始...

java菜分享
56分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部