zoukankan      html  css  js  c++  java
  • 用二进制进行权限管理

    例子中将讲解 1.权限表示 2.权限判断 3.添加权限 4.取消权限

    1. public class Test {  
    2.   
    3.     /** 
    4.      * @param args 
    5.      */  
    6.     public static void main(String[] args) {  
    7.   
    8.         /** 
    9.          * 四种权限 ,当前定义为int,以下二进制表示只取后四位作说明 
    10.          */  
    11.   
    12.         // 添加  
    13.         int c = 1;// ...0001  
    14.         // 查询  
    15.         int r = 2;// ...0010  
    16.         // 修改  
    17.         int u = 4;// ...0100  
    18.         // 删除  
    19.         int d = 8;// ...1000  
    20.   
    21.         /** 
    22.          *  
    23.          * 大家可以观察四种权限的二进制表示的规律 ,都是2的N次方, 
    24.          * 就表示本身,添加权限有最后一位为其它为0,查询倒数第二位为1其它都为0,修改倒数第三个为1其它都为0,删除倒数第四个为1其它都为0 
    25.          *  
    26.          */  
    27.   
    28.         /** 
    29.          *1111---- 这样表示有哪种权限时可以用 |(按位或) 操作 
    30.          *  
    31.          */  
    32.   
    33.         // 用户A有添加和修改权限  
    34.         int usera = c | r | u;  
    35.   
    36.         // 用户B有添加和删除权限  
    37.         int userb = c | d;  
    38.   
    39.         /** 
    40.          * 2222---- 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限 
    41.          */  
    42.   
    43.         if ((usera & u) == u) {  
    44.             System.out.println("用户a有更新权限");  
    45.         } else {  
    46.             System.out.println("用户a没有有更新权限");  
    47.         }  
    48.   
    49.         /** 
    50.          * 3333---- 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值 
    51.          */  
    52.   
    53.         if ((userb & u) == u) {  
    54.             System.out.println("用户b有更新权限");  
    55.         } else {  
    56.             System.out.println("用户b没有更新权限");  
    57.         }  
    58.   
    59.         // 给用户b添加更新权限  
    60.         userb = userb | u;  
    61.   
    62.         if ((userb & u) == u) {  
    63.             System.out.println("用户b有更新权限");  
    64.         } else {  
    65.             System.out.println("用户b没有更新权限");  
    66.         }  
    67.   
    68.         /** 
    69.          * 4444---- 取消用户某种权限,用用户权限和要取消的权限按位取反后进行按位 操作,再覆盖之前权限值 
    70.          */  
    71.           
    72.         if ((usera & r) == r) {  
    73.             System.out.println("用户a有查询权限");  
    74.         } else {  
    75.             System.out.println("用户a没有查询权限");  
    76.         }  
    77.           
    78.         //取消用户a的查询权限  
    79.         usera = usera & (~r);  
    80.           
    81.         if ((usera & r) == r) {  
    82.             System.out.println("用户a有查询权限");  
    83.         } else {  
    84.             System.out.println("用户a没有查询权限");  
    85.         }  
    86.     }  
    87.   
    88. }  
  • 相关阅读:
    ORA00600 [4400][48]错误一例
    西宁旅记:管中窥豹
    ORA00600: INTERNAL ERROR CODE, ARGUMENTS: [729], [10992], [SPACE LEAK] Example
    Exadata Server Hardware Details
    Script:收集RAC性能诊断信息
    Find Past Image in RAC Global Cache
    诊断RAC数据库的启动
    Script To Monitor RDBMS Session UGA and PGA Current And Maximum Usage Over Time
    Performance: PostgreSQL VS SQLSERVER
    Internal_Function with Encryption in SQL PLAN
  • 原文地址:https://www.cnblogs.com/shenjun/p/3088601.html
Copyright © 2011-2022 走看看