文档章节

用二进制进行权限管理

KingMing
 KingMing
发布于 2015/04/22 15:56
字数 536
阅读 148
收藏 9
点赞 0
评论 0

用二进制进行权限管理

直接给例子吧!例子中将讲解 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
厦门
dotCMS 1.9 RC1 发布

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

红薯
2010/07/07
254
0
【小知识大道理】被忽视的位运算

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

曲高和寡_健
2017/11/21
0
0
Linux权限管理简介

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

kolbe
2016/02/26
182
2
UbuntuLinux系统下修改文档权限的方法

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

mac_zhao
2011/05/02
0
0
Karson/fastadmin

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

Karson
2017/04/28
0
0
CentOS下mysql多实例操作指南

Mysql工作中无处不在,无数次安装,优化,一直没有时间,整理进行归档,最近在做mysql的Dass服务,把最近遇到的问题,进行整理,梳理一份操作指南;供大家参考; 序言 Mysql多实例即一台服务...

wx5b1a94da546db
06/08
0
0
Linux学习命令汇总八——find命令选项及特殊文件权限suid,sgid,sticky

本章Blog相关Linux知识点 find与grep的不同点: find为文件搜索命令——用来在指定目录下查找文件,而grep 为文本搜索命令——根据用户指定的文本模式对目标文件进行逐步搜索,显示能够被匹配...

Wish_亮
06/28
0
0
MySQL简单安全的十个设置方法

Mysql的默认安装参数是mysql性能最好的配置方法,但会造成数据部安全,且服务器也面临被***的风险,也有可能会在短时间内,出现一些性能的问题 这边文章从不同的角度去配置mysql的参数,提高...

天真花语
07/03
0
0
CentOS6.5菜鸟之旅:文件权限详解

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

bengozhong
2016/01/21
26
0
websphere 概要文件的作用

WebSphere Application Server V6 引进了概要文件(profile)概念,目的是将产品的二进制文件(binaries)与用户数据物理分离,并使用户能定义多组用户数据。从而使管理变得更加简单。 在 We...

dml124
2012/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部