受到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 二进制 权限管理相关推荐

  1. java边界布局东南西北_JAVA swing布局管理器实例解析

    组件在容器(比如Jframe)中的位置和大小是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理. 种类 java共提供了五种布局管理器,只介绍三种是最常见的布局管 ...

  2. java实现权限_Java实现权限管理的两种方式

    编辑特别推荐: 种方式:利用filter.xml文件和用户信息表配合使用来实现权限管理. 1.过滤器filter package cn.com.aaa.bbb.filter; import java. ...

  3. java 改变文件权限_Java文件权限

    java 改变文件权限 Java File class contains methods to check file permissions for the application user. The ...

  4. java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...

    本文介绍了Java二进制搜索树遍历操作. 与您分享以供参考,如下: 前言: 在Java Binary Search Tree Basics的上一节中,我们了解了该树及其相关知识,并对Binary Se ...

  5. java spring事务管理系统_Java Spring-事务管理概述

    2017-11-11 23:05:39 事务(Transaction):是逻辑上一组操作,要么全都成功,要么全都失败. 一.事务的特性 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 ...

  6. java 项目数据库脚本命名_java项目酒店管理(含数据库脚本)

    java项目酒店管理(含数据库脚本) java 2020-6-27 下载地址 https://www.codedown123.com/26975.html java项目酒店管理(含数据库脚本) 资源下 ...

  7. java ee小程序_JAVA EE社团管理升级版-微信小程序端说明文档

    CLUB+社团管理系统 系统模块设计 微信用户 浏览所有社团(分类) 浏览所有活动 (分类) 加入社团(不可重读加入) 加入活动 (不可重复加入) 修改个人身份信息 登录 查看自己已加入的社团 查看自 ...

  8. java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...

    一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...

  9. java实现权限_Java实现常用权限控制算法

    一种常用的权限控制算法的实现,参考LINUX/UNIX权限编码 这里笔者介绍一种很常用,也比较专业的权限控制思路. 要换成其他的语言主,自己转一下就可以了. 这里用java语言描述,其实都差不多的. ...

最新文章

  1. 微软牛津计划-语音转文本-文本转语音代码和实现
  2. python四大软件-9个使用Python的世界级软件公司
  3. 区块链BaaS云服务(13)广州微链GGC全球游戏链(Global Game Chain)
  4. Python内置函数filter()和匿名函数lambda解析
  5. PHP添加mcrypt扩展模块(亲测)
  6. 可接受任意数量参数的函数
  7. Linux学习总结(八)-磁盘格式化,挂载,swap扩容
  8. http发送16进制报文_图解HTTP 第三章HTTP报文内的HTTP信息
  9. sed,awk,grep教程
  10. [PSP3000完美破~解]5.03彻底告别刷机!让3K和V3可关机
  11. oracle网络ora文件,Oracle错误—ORA-03113:在通信信道文件的末尾(归档日志处理)...
  12. QQ,MSN,旺旺在线客服代码
  13. 为什么双11快递一年比一年快?阿里新供应链架构解读
  14. Python-基于request豆瓣电影票房信息爬取,简单粗暴
  15. 旋翼无人机及摄影测量基础
  16. 壹度DIY_微信小程序组件_小程序插件开发
  17. 对于软件,我是认真的
  18. 扇入Fan-in和扇出Fan-out
  19. 大数据技术原理与应用(林子雨)-NoSQL数据库单元测验
  20. Java取数的整数及小数部分

热门文章

  1. HarmonyOS 正式登陆华为手机,4月陆续升级!
  2. 如何用一句话证明你是程序员?
  3. 湘苗培优|从入门到精通
  4. 是!“不会数据分析的,全是假程序员”!HR:太真实……
  5. 当你使用微信和QQ时,请不要忘记ICQ这个伟大的公司!
  6. 阿里巴巴创始人马云持股降至 4.8%;传小冰将从微软分拆,沈向洋“回归”;Electron 8.4.0 发布| 极客头条
  7. JavaScript 简史 1
  8. 腾讯加持,雷军力荐,这款游戏手机要火?
  9. Pandas 数据处理三板斧,你会几板?
  10. 那位全心投入本地生活的首席科学家!