java 二进制 归属权限_java 二进制 权限管理
受到linux权限管理的方案启发,写个java的二进制权限管理,欢迎点评。
public class MyPermission {
//优缺点
//优点,速度快,效率高
//缺点,二进制不易识别,需要维护权限字典
public static void main(String[] args) {
// 1.用户模块 增修删 7 1 2 3
// 2.购买模块 增修删 7 1 2 3
// 3.积分模块 增修删 7 1 2 3
// 174
// 查看
System.out.println(hasPermis("174", 3, 1));
}
/**
*
* @Title: hasPermis
* @Description: 判断用户是否有莫个模块的莫个权限
* @param str 权限字符串
* @param model 需要验证模块
* @param permis 需要验证权限
* @param @return 参数 @return
* boolean 返回类型 @throws
*/
public static boolean hasPermis(String str, int model, int permis) {
// 获取对应模块值
String s = str.substring(model - 1, model);
// 转换为二进制字符串
if (Integer.parseInt(s) > 7) {
return false;
}
String bs = Integer.toBinaryString(Integer.parseInt(s));
if (bs.length() < 3) {
int num = Integer.parseInt(bs);
bs = String.format("%03d", num);
//System.out.println(bs);
}
//System.out.println((int)bs.charAt(permis - 1) );
return (int)bs.charAt(permis - 1) == 49 ? true : false;
}
}
_________________________________________________________________________
上个方案,权限控制有限,如果碰到收藏,下载,分享等权限就不行了。使用如下方案:
public class Permission2 { /****************************************** * 这是做测试相当于从数据库里取出的权限值 /一般根据一个模块id 取出它的crud 值就可以了 删除A---0 修改A---1 添加A---2 * 删除B---3 修改B---4 添加B---5 ...... 理论上可以有N个操作 * * 用户有权限:添加A---2;删除B---3;修改B---4 2的2次方+2的3次方+2的4次方=28 purview权限值 * *******************************************/ static int purView = 28; // 需要判断的权限值 static int bdel = 3; static int bupd = 4; static int badd = 5; public static void main(String[] args) { // 判断是否有权限 System.out.println(judgePermission(purView, bdel)); System.out.println(judgePermission(purView, bupd)); System.out.println(judgePermission(purView, badd)); // 为用户添加权限 // 例如 为用户添加 修改A---1 权限 int newPurView = addPermission(purView, 1); System.out.println(newPurView); System.out.println(judgePermission(newPurView, 1)); System.out.println(judgePermission(newPurView, bdel)); System.out.println(judgePermission(newPurView, badd)); // 修改用户的权限,返回新权限 // 例如减去莫个权限 减去修改A---1 权限 int newPurView2 = fixPermission(newPurView, 1); System.out.println(newPurView2); System.out.println(judgePermission(newPurView2, 1)); System.out.println(judgePermission(newPurView2, bdel)); System.out.println(judgePermission(newPurView2, badd)); } public static boolean judgePermission(int purView, int p) { int i = 1 << p; // System.out.println( purView&i); return (purView & i) == i ? true : false; } public static int addPermission(int purView, int p) { int addP = 1 << p; return purView + addP; } public static int fixPermission(int purView, int p) { // 不含有改权限的时候,返回原权限值 if (!judgePermission(purView, p)) { return purView; } int subP = 1 << p; return purView - subP; } }
java 二进制 归属权限_java 二进制 权限管理相关推荐
- java边界布局东南西北_JAVA swing布局管理器实例解析
组件在容器(比如Jframe)中的位置和大小是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理. 种类 java共提供了五种布局管理器,只介绍三种是最常见的布局管 ...
- java实现权限_Java实现权限管理的两种方式
编辑特别推荐: 种方式:利用filter.xml文件和用户信息表配合使用来实现权限管理. 1.过滤器filter package cn.com.aaa.bbb.filter; import java. ...
- java 改变文件权限_Java文件权限
java 改变文件权限 Java File class contains methods to check file permissions for the application user. The ...
- java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...
本文介绍了Java二进制搜索树遍历操作. 与您分享以供参考,如下: 前言: 在Java Binary Search Tree Basics的上一节中,我们了解了该树及其相关知识,并对Binary Se ...
- java spring事务管理系统_Java Spring-事务管理概述
2017-11-11 23:05:39 事务(Transaction):是逻辑上一组操作,要么全都成功,要么全都失败. 一.事务的特性 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 ...
- java 项目数据库脚本命名_java项目酒店管理(含数据库脚本)
java项目酒店管理(含数据库脚本) java 2020-6-27 下载地址 https://www.codedown123.com/26975.html java项目酒店管理(含数据库脚本) 资源下 ...
- java ee小程序_JAVA EE社团管理升级版-微信小程序端说明文档
CLUB+社团管理系统 系统模块设计 微信用户 浏览所有社团(分类) 浏览所有活动 (分类) 加入社团(不可重读加入) 加入活动 (不可重复加入) 修改个人身份信息 登录 查看自己已加入的社团 查看自 ...
- java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...
一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...
- java实现权限_Java实现常用权限控制算法
一种常用的权限控制算法的实现,参考LINUX/UNIX权限编码 这里笔者介绍一种很常用,也比较专业的权限控制思路. 要换成其他的语言主,自己转一下就可以了. 这里用java语言描述,其实都差不多的. ...
最新文章
- 微软牛津计划-语音转文本-文本转语音代码和实现
- python四大软件-9个使用Python的世界级软件公司
- 区块链BaaS云服务(13)广州微链GGC全球游戏链(Global Game Chain)
- Python内置函数filter()和匿名函数lambda解析
- PHP添加mcrypt扩展模块(亲测)
- 可接受任意数量参数的函数
- Linux学习总结(八)-磁盘格式化,挂载,swap扩容
- http发送16进制报文_图解HTTP 第三章HTTP报文内的HTTP信息
- sed,awk,grep教程
- [PSP3000完美破~解]5.03彻底告别刷机!让3K和V3可关机
- oracle网络ora文件,Oracle错误—ORA-03113:在通信信道文件的末尾(归档日志处理)...
- QQ,MSN,旺旺在线客服代码
- 为什么双11快递一年比一年快?阿里新供应链架构解读
- Python-基于request豆瓣电影票房信息爬取,简单粗暴
- 旋翼无人机及摄影测量基础
- 壹度DIY_微信小程序组件_小程序插件开发
- 对于软件,我是认真的
- 扇入Fan-in和扇出Fan-out
- 大数据技术原理与应用(林子雨)-NoSQL数据库单元测验
- Java取数的整数及小数部分
热门文章
- HarmonyOS 正式登陆华为手机,4月陆续升级!
- 如何用一句话证明你是程序员?
- 湘苗培优|从入门到精通
- 是!“不会数据分析的,全是假程序员”!HR:太真实……
- 当你使用微信和QQ时,请不要忘记ICQ这个伟大的公司!
- 阿里巴巴创始人马云持股降至 4.8%;传小冰将从微软分拆,沈向洋“回归”;Electron 8.4.0 发布| 极客头条
- JavaScript 简史 1
- 腾讯加持,雷军力荐,这款游戏手机要火?
- Pandas 数据处理三板斧,你会几板?
- 那位全心投入本地生活的首席科学家!