美文网首页
位运算的简单应用-权限管理

位运算的简单应用-权限管理

作者: milovetingting | 来源:发表于2020-01-16 23:32 被阅读0次

个人博客

http://www.milovetingting.cn

位运算的简单应用-权限管理

位运算在实际的开发中,有很多巧妙的应用场景。如:

  1. 一个存放正整数的数组,里面有一个数字只出现一次,其它数字都出现两次,求只出现一次的数字。

  2. 不用临时变量,交换两个数字的值。

  3. Android中Window设置Flag

    public void setFlags(int flags, int mask) {
        final WindowManager.LayoutParams attrs = getAttributes();
        attrs.flags = (attrs.flags&~mask) | (flags&mask);
        mForcedWindowFlags |= mask;
        dispatchWindowAttributesChanged(attrs);
    }
  1. 产品具有某些Feature,这些Feature可以利用位运算来存储。

下面利用位运算来简单模拟权限管理

权限管理类

public class PermissionManager {

    public static final int PERMISSION_NONE = 1;

    public static final int PERMISSION_A = 1 << 1;

    public static final int PERMISSION_B = 1 << 2;

    public static final int PERMISSION_C = 1 << 3;

    public static final int PERMISSION_D = 1 << 4;

    private int mPermission = PERMISSION_NONE;

    private static class PermissionManagerHolder {
        static PermissionManager sPermissionManager = new PermissionManager();
    }

    private PermissionManager() {

    }

    public static PermissionManager getInstance() {
        return PermissionManagerHolder.sPermissionManager;
    }

    /**
     * 添加权限
     * @param permission
     */
    public void addPermission(int permission) {
        if (hasPermission(permission)) {
            return;
        }
        mPermission |= permission;
    }

    /**
     * 移除权限
     * @param permission
     */
    public void removePermission(int permission) {
        if (!hasPermission(permission)) {
            return;
        }
        mPermission &= ~permission;
    }

    /**
     * 判断是否有权限
     * @param permission
     * @return
     */
    public boolean hasPermission(int permission) {
        return (mPermission & permission) != 0;
    }

}

使用

public static void main(String[] args) {
        System.out.println("没有添加任何权限----------");
        PermissionManager permissionManager = PermissionManager.getInstance();
        checkPermission(permissionManager);
        System.out.println("添加权限A----------");
        System.out.println("添加权限B----------");
        System.out.println("添加权限C----------");
        permissionManager.addPermission(PermissionManager.PERMISSION_A);
        permissionManager.addPermission(PermissionManager.PERMISSION_B);
        permissionManager.addPermission(PermissionManager.PERMISSION_C);
        checkPermission(permissionManager);
        System.out.println("删除权限C----------");
        permissionManager.removePermission(PermissionManager.PERMISSION_C);
        checkPermission(permissionManager);
    }

    public static void checkPermission(PermissionManager permissionManager) {
        System.out.println("PERMISSION_A exist:" + permissionManager.hasPermission(PermissionManager.PERMISSION_A));
        System.out.println("PERMISSION_B exist:" + permissionManager.hasPermission(PermissionManager.PERMISSION_B));
        System.out.println("PERMISSION_C exist:" + permissionManager.hasPermission(PermissionManager.PERMISSION_C));
        System.out.println("PERMISSION_D exist:" + permissionManager.hasPermission(PermissionManager.PERMISSION_D));
    }

输出结果:

没有添加任何权限----------
PERMISSION_A exist:false
PERMISSION_B exist:false
PERMISSION_C exist:false
PERMISSION_D exist:false
添加权限A----------
添加权限B----------
添加权限C----------
PERMISSION_A exist:true
PERMISSION_B exist:true
PERMISSION_C exist:true
PERMISSION_D exist:false
删除权限C----------
PERMISSION_A exist:true
PERMISSION_B exist:true
PERMISSION_C exist:false
PERMISSION_D exist:false

位运算并不限于权限管理,具有多个状态的应用场景,都可以用到。

相关文章

  • 位运算的简单应用-权限管理

    个人博客http://www.milovetingting.cn 位运算的简单应用-权限管理 位运算在实际的开发中...

  • PHP 权限管理 位运算

    最近在搞一个权限管理,就是通过位或运算来验证权限,来分享一下实现原理。 权限管理,核心就是权限分配和权限验证两点。...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 位运算和权限管理系统

    在Linux文件系统中,用户对文件或目录有:读、写、执行三种权限,分别使用数字:4、2、1三个数字。三者之间可任意...

  • JavaScript 中的位运算和权限设计

    1. 内容概要 2. JavaScript 位运算 2.1. Number 2.2. 位运算 3. 位运算在权限系...

  • android 手机查看APP权限使用记录

    设置-应用管理-权限管理-右上角权限使用记录

  • 权限判断-位运算

    角色权限判断,这应该是大部分应用都有的功能,那么如何进行权限判断? 这里说下我们用的思路,可能会比较low,各位看...

  • 位运算应用

    取模 由于偶数的最低位为 0,奇数为 1,所以取模运算可以用位操作来代替。 取整 位掩码 通过定义这些选项,可以用...

  • 位运算的应用

    位运算 程序中的所有数在计算机内存中都是以二进制的形式存储的。位运算说穿了,就是直接对整数在内存中的二进制位进行操...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

网友评论

      本文标题:位运算的简单应用-权限管理

      本文链接:https://www.haomeiwen.com/subject/elwqzctx.html