`
zzc1684
  • 浏览: 1231091 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

BigInteger权限判断示例

    博客分类:
  • Java
阅读更多

 

这里我介绍一种很常用,也比较Professor的权限控制思路。
把具体的权限设置为一个正整数值,如果一个用户有多个权限的话,比如1,2权限,那么我们设置值的时候就是 num.setBit(1),num.setBit(2),然后把返回的num值保存在session中,要验证是否有权限的话,只要从session中 取得保存的num,然后执行下num.test(权限值),如果返回true就是有权限的,否则无权限。下面例子:

    package com.hundsun.network.post.settle.job;  
      
    import java.math.BigInteger;  
      
    public class TestBigInteger {  
      
        public static void main(String[] args) {  
            //初始  
            BigInteger num = new BigInteger("0");  
            num = num.setBit(2);  
            num = num.setBit(1);  
            System.out.println(num);  
            System.out.println(num.testBit(2));  
            System.out.println(num.testBit(1));  
            System.out.println(num.testBit(3));  
        }  
      
    }  

 

 

 

返回的结果是:

6
true
true
false

为什么是6呢? 6= 2^2 + 2^1 其实计算的值是2的权的和

好处是,session中存储权限的空间很小,一个整数就代表了所有的权限,验证的时候计算速度也很快。

 

分享到:
评论

相关推荐

    java基础知识

    如果源文件中除了公共类之外还包含了其他非公共类(如私有类或默认访问权限的类),这些非公共类可以与公共类放在同一个源文件中,但源文件的名字仍然需要与公共类的名字保持一致。 **示例代码解释:** ```java //...

    JAVA中常见的异常

    这种异常通常是因为数组索引计算错误或边界条件判断不当导致的。 **示例代码:** ```java int[] arr = new int[3]; System.out.println(arr[3]); ``` 在这个例子中,尝试访问数组`arr`的第四个元素会导致`...

    DefendYourCode:设计时考虑到安全性的示例代码

    这可能导致意料之外的行为,如循环计数错误或者安全关键的条件判断失误。在Java中,可以使用BigInteger或BigDecimal类来处理大整数,以防止溢出。同时,对整数操作进行边界检查也是必要的。 路径保护则是另一个重要...

    在Laravel 中实现是否关注的示例

    在上述提供的代码片段中,我们看到一个条件判断,如果当前登录的用户不是查看用户本人,就会显示关注或取消关注的表单。`isFollowing()`方法是假设在`User`模型中定义的,用来检查用户是否关注了指定的用户: ```...

    java常见异常

    - 使用更安全的算术操作替代,如BigInteger和BigDecimal类。 #### 4. `java.lang.ArrayIndexOutOfBoundsException` **描述**:当数组索引超出数组范围时抛出此异常。 **示例**:尝试访问一个不存在的数组元素: `...

    java面试宝典

    需要具体代码示例才能判断。 **1.50 多线程有几种实现方法?同步有几种实现方法?** - 实现多线程的方法有两种:继承`Thread`类或实现`Runnable`接口。 - 同步可以通过`synchronized`关键字或`ReentrantLock`等显式...

    java2016面试题目

    其他类必须声明为非公共的(如默认权限,即没有任何访问修饰符)。例如,在`Main.java`文件中,你可以定义一个名为`Main`的公共类和其他非公共类。 #### 2. Java有没有goto? - **答案解析**:Java语言本身并不支持...

    Java面试宝典2010版.pdf

    - 其他非公共类(默认访问权限的类或内部类)可以在同一个文件中定义。 2. **Java中的`goto`关键字** - Java中没有传统意义上的`goto`关键字。 - 但在Java中可以通过标签化的`break`和`continue`来模拟`goto`的...

    Java 面试宝典

    由于给出的 "部分内容" 中没有具体代码示例,因此无法判断代码的不妥之处。 #### 17. 作用域关键字 public、private、protected 和默认(无)的区别 - public:类、方法、变量可被任何其他对象访问。 - private:...

    java面试宝典 吐血推荐,很全面

    - **知识点**: `public`表示公有,`private`表示私有,`protected`表示受保护,不写默认为包私有或默认访问权限。 - **注意事项**: 不同的访问修饰符决定了成员的可见性范围。 **18. Overload和Override的区别。...

    面试题大全

    设计一个能够处理百亿级别的计算器涉及到大数运算,可以使用`BigInteger`类来进行操作。 #### 10. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? `final`修饰符用于声明不可变对象。如果...

    Java面试宝典2010版

    方法同步需要具体代码示例才能判断,但通常使用`synchronized`关键字修饰方法或代码块。 #### 50. 多线程实现和同步方法 多线程可以通过继承`Thread`类、实现`Runnable`接口或使用`Callable`接口和`Future`任务来...

    JAVA经典教材笔记

    - BigInteger类的特点:处理任意精度的整数。 - BigDecimal类的作用:处理任意精度的小数。 - **对象克隆技术** - 克隆技术的意义:复制对象。 - 实现克隆的方式:实现Cloneable接口并重写clone()方法。 - **...

    Java面试宝典2011版

    如果第一个条件为假,则不会执行第二个条件的判断。 ##### 4、在JAVA中如何跳出当前的多重嵌套循环? - **答案**:可以使用`break`语句来跳出当前的循环。如果需要跳出外层循环,可以使用标记来实现。例如: ```...

    Java面试宝典2013版

    未提供具体的代码示例,无法判断其中的问题所在。 #### 17. 访问控制符的作用域 - `public`: 对任何类可见。 - `private`: 只对当前类可见。 - `protected`: 对同一包内的类和子类可见。 - 不写访问控制符: 默认为`...

    Java面试宝典2018

    - **非公共类**:可以在同一个文件中定义多个非公共类(即默认访问权限的类)。 #### 2. Java有没有goto? Java语言中**没有**`goto`关键字。`goto`在C和C++中作为控制流关键字使用,但在Java中被保留但未启用。...

    2005-2011年全新各大公司j2ee面试题汇总大全

    - 其他非公共类(即默认访问权限的类)数量不限。 #### 2. Java中的`goto` - Java语言中没有传统意义上的`goto`语句。`goto`在Java中是一个保留关键字,但在实际编程中并不使用。 - Java通过其他结构(如循环控制...

    Java 面试宝典 2012版 pdf

    设计大数计算器需要考虑数据溢出问题,使用`BigInteger`类可以处理任意大的整数。 ### 10. `final`关键字 使用`final`关键字修饰变量时,主要是引用不能变。如果是基本类型,则值不能变;如果是对象类型,引用指向...

Global site tag (gtag.js) - Google Analytics