位与运算在权限管理中的应用

     前不久,在设计个性化定制预警消息功能时,通过位与运算方法实现了该功能,现同大家一块分享。

     预警系统需提供设定什么时间为工作日,工作日设置,采用简单的按星期设置方式,用户可设定在每周的某几天为工作日,在工作日和非工作日可分别设置其接受预警消息的方式,如:短信/邮件。如果用户除周六、日为假日,我们将对应的工作日位标识为“1”,非工作日标识为“0”,如:

    sun mon tue thr wed fri sat   二进制   十进制

     0   1   1   1   1   1   0    0111110    62

    

即:用户具有的总权限 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^0 = 62  同理,也可以用位标识方法对工作日、非工作日预警方式进行标识。

通过位与运算,我们可以很简单实现权限判断,如下方法:

    /**
     * 实现,单操作权限判断
     * @param userPurview 用户具有的总权限
     * @param optPurview 权限位

     * @return 权限校验,有权限返回true,反之false
     */

    public static boolean checkPower(int userPurview, int optPurview){
        int purviewValue = (int)Math.pow(2, optPurview);
        return (userPurview & purviewValue) == purviewValue;
    }
如:判断是否周一为工作日,则: checkPower(62,1)为true,通过该方式实现权限判断,是不是很方便,根据此原理,在工作日和非工作日接受预警消息的方式同样实现起来非常简单。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值