关闭

java编程中使用二进制进行权限或状态控制

标签: java二进制oracle二进制判断状态
268人阅读 评论(0) 收藏 举报
分类:

直接看代码以及注释吧。

    @Test
    public void main() {
        // PC WEB端
        int pc = 1 << 0;// ...0001=1

        // Android端
        int android = 1 << 1;// ...0010=2

        // iOS端
        int ios = 1 << 2;// ...0100=4

        // WindowsPhone
        int wp = 1 << 3;// ...1000=8

        //----------------校验开始-----------------
        //表示只适用于PC WEB端
        int pcAndAndroid = pc | android;
        //判断是否有android端
        System.out.println((pcAndAndroid & android) == android);// true
        //判断是否有ios
        System.out.println((pcAndAndroid & ios) == ios);// false
        //去掉android,加入ios,判断是否有ios,   pcAndAndroid & (~android) 去掉android
        System.out.println((((pcAndAndroid & (~android)) | ios) & ios) == ios);// true
        //去掉android,加入ios,判断是否有android,  false
        System.out.println((((pcAndAndroid & (~android)) | ios) & android) == android);// false

        //--------------
        // android/ios/win phone
        int aiw = android | ios | wp;
        //判断是否有android 并且有win phone
        System.out.println((aiw & (android | wp)) == (android | wp));// true
        //判断是否有android 并且有pc
        System.out.println((aiw & (android | pc)) == (android | pc));// false
    }

顺便看看Oracle数据库怎么弄,比较麻烦咯,不建议这么搞,毕竟数据存进去也得计算一次

位与的操作,在应用程序里是经常会用到的, 
Oracle也提供这样的函数 
BITAND(x,y) 
SQL> select bitand(7, 31) from dual; 
BITAND(7,31) 
------------ 
7 
但是Oracle里没有提供bitOr的函数,没关系 
bitand和bitOR是有关系的。 
关系如下 
BITOR(x,y) = (x + y) - BITAND(x, y); 
BITXOR(x,y) = BITOR(x,y) - BITAND(x,y) = (x + y) - BITAND(x, y) * 2; 
SQL> select 7+31-bitand(7, 31) as bitor from dual; 
BITOR 
---------- 
31 
0
0
查看评论

使用二进制进行权限或状态控制

文章转载出处:http://blog.csdn.net/scorpio3k/article/details/8100890 基本概念[java] view plain copy print?package test;    public c...
  • u013129944
  • u013129944
  • 2017-03-21 15:54
  • 178

使用二进制权限控制

/* 引言:     使用二进制权限控制,可以减少程序的逻辑判断,如有50 种权限需要验证,   一般会写 if...else if...else if 或 if(n==1 || n==2 || ... n=50 )   这种写法。   &...
  • xxj_jing
  • xxj_jing
  • 2015-03-25 16:34
  • 3129

二进制记录商品状态,超详细代码

这是一个经典的小案例案列,通过该案列解决以下问题: 1.一个页面输入,输出数据 2.屏蔽掉各种因为未定义变量的错误 3.二进制的开关控制方式:  默认为0,想打开就是 亦或(^)默认状态,想关就再 亦或(^) 上次的状态. 附上代码 <?php /** * Cr...
  • theqtkc
  • theqtkc
  • 2016-06-02 00:38
  • 359

二进制权限控制(一)

二进制权限控制(一)标签(空格分隔):工作日志 测试markdown目录二进制权限控制一 目录 名词解释 权限管理 名词解释以1为例,1的二进制编码为:0000 0000 0000 0001 原码机器原码,1的原码是0000 0000 0000 0001 反码正数的原码是自己,除符号位以外(高位)负...
  • dinghui139
  • dinghui139
  • 2015-06-25 10:40
  • 903

工作流管理系统开发之六 表单权限与流程的权限控制

在设计工作流系统的时候,常常会碰到这样的情况:           同一张表单需要在流程的多个环节中处理,且各环节的处理情况不一致,有的节点可写,有的节点之可读。   例如,同一张报销...
  • LikeLaura
  • LikeLaura
  • 2016-10-14 19:01
  • 1239

C# 使用二进制 逻辑(与、或、非)位移运算 控制系统权限

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Grass.Authorize { /// /// 二进制授权帮助类,最多支持 62 种...
  • xxj_jing
  • xxj_jing
  • 2014-12-17 15:36
  • 3583

二进制开关实现

开发中总是存在着各种状态的保持。都是字段的话,相当麻烦。使用二进制状态存储就方便多了。 public class a { /** * 获取当前index状态,[0,1]; * @param value 存储的开关数据int32 * @param index ...
  • color_wind
  • color_wind
  • 2015-12-01 17:21
  • 797

通过二进制对权限进行控制

适用时间场景1.对用户所有列表人群进行群发消息,但是要确定其发送人群,例如:男,女,未定义,群组;但是接受参数只能是一个时。 场景2.用户登录对其权限进行判断时;具体使用一般用枚举或常量对其权限或状态进行初始化。以发送人群为例public enum SengType { MAN(1),WO...
  • boom_man
  • boom_man
  • 2017-07-31 09:03
  • 688

Sql Server 将截断字符串或二进制数据

今天在创建数据库表的时候,出现了这个问题 消息 8152,级别 16,状态 14,第 1 行 将截断字符串或二进制数据. 语句已终止.(好悲伤呀) 原来是因为我表中有一个记录的varchar(50)这个长度设置的小了。 建议:如果字段较长不好控制,可以设置varchar(max)试一试
  • LL_DaXue
  • LL_DaXue
  • 2016-11-26 21:27
  • 1438

将截断字符串或二进制数据 语句终止

1、今天执行 alter table tblvainfo alter column id varchar not null;时候出现 消息8152,级别16,状态14,第1 行 将截断字符串或二进制数据。 语句已终止。  查阅后知道,是原来我在修改字段长度的时候表中有数据,如果这些数据很重...
  • jc_benben
  • jc_benben
  • 2013-07-15 12:02
  • 1921
    个人资料
    • 访问:76351次
    • 积分:1261
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:1篇
    • 译文:0篇
    • 评论:56条
    文章分类
    最新评论