`

二进制 授权管理 java

    博客分类:
  • java
 
阅读更多

package org.qincy.binary;

public class BinaryRightsTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		/**
		 * 四种权限 ,当前定义为int,以下二进制表示只取后四位作说明
		 */

		// 添加
		int c = 1;// ...0001=2^0
		// 查询
		int r = 2;// ...0010=2^1
		// 修改
		int u = 4;// ...0100=2^3
		// 删除
		int d = 8;// ...1000=2^4

		/**
		 * 
		 * 大家可以观察四种权限的二进制表示的规律 ,都是2的N次方,
		 * 就表示本身,添加权限有最后一位为其它为0,查询倒数第二位为1其它都为0,修改倒数第三个为1其它都为0,删除倒数第四个为1其它都为0
		 * 
		 */

		/**
		 * 这样表示有哪种权限时可以用 |(按位或) 操作
		 * 
		 */

		// 用户A有添加和修改权限
		int usera = c | r | u;
		
		System.out.println("10-usera="+usera+",10-usera="+Integer.toBinaryString(usera)); // 十进制转二进制  

		// 用户B有添加和删除权限
		int userb = c | d;
		
		System.out.println("10-userb="+userb+",10-userb="+Integer.toBinaryString(userb)); // 十进制转二进制  
		/**
		 * 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限
		 */
		System.out.println();
		if ((usera & u) == u) {
			System.out.println("用户a有更新权限");
		} else {
			System.out.println("用户a没有有更新权限");
		}

		/**
		 * 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值
		 */
		System.out.println();
		if ((userb & u) == u) {
			System.out.println("用户b有更新权限");
		} else {
			System.out.println("用户b没有更新权限");
		}

		System.out.println("==>给用户b添加更新权限");
		userb = userb | u;

		if ((userb & u) == u) {
			System.out.println("用户b有更新权限");
		} else {
			System.out.println("用户b没有更新权限");
		}

		/**
		 * 取消用户某种权限,用用户权限和要取消的权限按位取反后进行按位 操作,再覆盖之前权限值
		 */
		System.out.println();
		if ((usera & r) == r) {
			System.out.println("用户a有查询权限");
		} else {
			System.out.println("用户a没有查询权限");
		}

		System.out.println("==>取消用户a的查询权限");
		usera = usera & (~r);

		if ((usera & r) == r) {
			System.out.println("用户a有查询权限");
		} else {
			System.out.println("用户a没有查询权限");
		}
	}

}
[size=x-small][/size][size=medium][/size]

分享到:
评论

相关推荐

    SqlServer与Oracle保存与读取图片二进制流

    当涉及到存储非结构化数据,如图片时,通常会以二进制大对象(BLOB)的形式来处理。本文将深入探讨如何在SQL Server 2008和Oracle数据库中保存和读取图片的二进制流。 1. **二进制流**:二进制流是一种数据表示方式...

    mysql 二进制转换工具

    MySQL二进制转换工具主要涉及的是数据库管理和网络安全方面的技术,特别是与数据编码、文件传输以及权限提升相关的操作。在MySQL中,二进制格式通常用于存储和处理原始数据,如图像、音频或自定义文件,因为这些数据...

    Oracle,SQL2000,MYSQL存取图片或二进制数据的功能文件

    在数据库管理领域,存储和检索图片或二进制数据是一项常见的需求。Oracle、SQL Server 2000以及MySQL这三种流行的数据库系统都提供了相应的方法来处理这些非结构化数据。下面将详细介绍这三个数据库系统在存储和访问...

    Fabric1.4.4的二进制文件.zip

    总之,Fabric 1.4.4的二进制文件是构建、部署和管理企业级区块链网络的重要资源。它包含了所有必要的组件,如Orderer、Peer、CA服务器、链码容器和其他辅助工具,以支持一个健壮、安全且高性能的分布式系统。通过...

    arm64环境下iotdb二进制安装包

    在Linux arm64环境下安装Apache IoTDB(IoT Database)二进制包是一个涉及系统兼容性、软件包管理以及数据库配置的过程。Apache IoTDB是一款专为物联网(IoT)设计的时序数据库管理系统(TSDB),它具有高性能、低...

    linux-JDK1.8二进制安装包

    这里我们探讨的是如何通过二进制安装包的方式进行安装。首先,我们要了解JDK(Java Development Kit),它是Oracle公司提供的用于开发和运行Java应用程序的工具集合,包含JRE(Java Runtime Environment)以及编译器...

    zabbix-java-gateway.tar.zip

    《Zabbix Java Gateway详解——构建高效监控系统的关键组件》 Zabbix Java Gateway是Zabbix监控系统中的...通过对Java语言的熟练掌握和对后端服务的深入理解,我们可以充分利用这一工具,提升IT系统的管理和维护效率。

    nacos1.4.1二进制压缩包

    Nacos是阿里巴巴开源的一款分布式服务治理和配置中心的框架,主要应用于微服务架构中的服务发现、配置管理和控制台管理。Nacos 1.4.1是该框架的一个稳定版本,提供了一系列增强特性和性能优化。下面我们将深入探讨...

    Java图书管理系统

    如果采用序列化技术,如Java自带的对象序列化,那么`books`文件可能包含了对象的二进制表示,可以快速加载到内存中。 总的来说,这个Java图书管理系统展示了Java在后端开发中的强大能力,包括数据库操作、用户权限...

    JAVA程序与PLC之间的通信

    因此,需要将PLC的二进制数据解析为Java理解的格式,同时也要将Java的数据转换为适合PLC的格式。 4. **异常处理**:在通信过程中,网络中断、超时等问题是常见的,因此良好的异常处理机制是必不可少的。Java的try-...

    Java+SqlServer超市管理系统

    8. `bin`:编译后的字节码文件(.class)存放的地方,这些文件是Java虚拟机(JVM)执行的二进制形式。 在实际开发过程中,为了保证系统稳定运行,还需要关注数据安全性、性能优化、异常处理和事务管理等方面。同时...

    基于JAVA的websocket实现(含java后端)

    WebSocket协议定义了帧结构,用于封装各种类型的数据,如文本、二进制等。 在Java中,我们可以使用Java API for WebSocket (JSR 356)来实现WebSocket服务。这个API是Java EE的一部分,提供了创建WebSocket服务器...

    JAVA_API1.6文档(中文)

    javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的...

    自己整理的flex与java结合的学生管理系统-很好的入门及提升的例子

    LCDS支持AMF(Action Message Format),这是一种二进制协议,能以高效的方式传输数据,提高应用性能。在学生管理系统中,LCDS处理Flex的Remoting调用,将前端的请求路由到相应的Java方法,并将结果转换为AMF格式...

    taobao-sdk-java-auto.zip

    1. "taobao-sdk-java-auto_1479188381469-20190920.jar" - 这是主SDK的二进制文件,包含了所有必要的类和库,使得开发者可以直接在Java项目中引用,实现与淘宝接口的交互,包括钉钉扫码登录的相关功能。 2. "taobao...

    BasicAuth的Java服务端实现

    4. **Base64编码**:Base64是一种编码方式,用于将任意二进制数据转换为ASCII字符串,以便在HTTP头中传输。 5. **Eclipse工程配置**:理解Eclipse项目结构,如何导入和运行项目,以及如何调试和测试。 6. **Maven...

    FsServer:Julia 的基于 TCP 的 Erlang 二进制术语服务器

    总的来说,FsServer 是一个强大的工具,它利用 Julia 的高性能和 Erlang 的二进制协议,为开发者提供了在分布式系统中高效、安全地管理文件的解决方案。通过深入学习和使用 FsServer,可以提升跨语言协作的能力,...

    基于Java的实例开发源码-CKFinder文件管理器for Java.zip

    下载请求则返回指定文件的二进制流,客户端浏览器接收到后自动开始下载。 6. **安全性考虑**: 使用CKFinder时,安全是个重要议题。必须确保只有授权用户能访问和操作文件,这可能需要结合用户认证系统和角色权限...

    SQL2005怎样将图片存入数据库表中

    - **易用性**: 只需处理简单的文本路径,无需复杂的二进制数据处理。 - **存储效率**: 避免了大量的二进制数据存储,减少数据库空间占用。 - **缺点**: - **安全性问题**: 图片存储在文件系统中,容易被未授权...

    java 利用webservice传输文件

    2. **数据转换**:如果文件是以特定格式(如二进制或特定文本格式)传输的,JACOB可能用于将这些数据转换为COM组件可以理解的格式,以便进一步处理。 3. **文件上传**:在Web服务的客户端端,JACOB可以帮助将本地...

Global site tag (gtag.js) - Google Analytics