`

转 用二进制进行权限管理

 
阅读更多

 

转自:http://blog.csdn.net/buyaore_wo/article/details/6878991

 

直接给例子吧!例子中将讲解 1.权限表示 2.权限判断 3.添加权限 4.取消权限public class Test {

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

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

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

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

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

		// 用户A有添加和修改权限
		int usera = c | r | u;

		// 用户B有添加和删除权限
		int userb = c | d;

		/**
		 * 2222---- 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限
		 */

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

		/**
		 * 3333---- 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值
		 */

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

		// 给用户b添加更新权限
		userb = userb | u;

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

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

}
 
分享到:
评论

相关推荐

    最近再想做权限的控制,写了一个小程序.有兴趣的朋友可以下载看看用二进制做权限设置.

    总结来说,用二进制做权限设置是一种常见的系统编程技巧,它利用位运算高效地管理文件或资源的访问权限。这个程序可能是为了演示如何在不同的编程语言中实现这样的功能,对于理解操作系统底层的工作机制以及提升安全...

    二进制流与图片的相互转换

    通过以上两个函数的实现,我们可以轻松地在图片和二进制流之间进行转换。这对于数据库存储、网络传输等应用场景非常有用。同时,我们也需要注意实际应用中的各种细节问题,确保程序的稳定性和安全性。

    bes二进制查看工具

    用户可以使用该工具打开和查看二进制文件的内容,查看其结构和模式,这对于软件开发者、系统管理员以及安全研究人员来说非常有用。例如,当需要查看或修改磁盘映像、内存转储或网络封包时,这样的工具就显得不可或缺...

    vb 转二进制串并运算判断第几位为0

    本文将深入探讨如何将数字转换为二进制串,并进行运算以判断特定位置的数字是否为0,以及如何利用这种技术实现灵活的权限管理。 首先,让我们了解二进制。二进制是计算机科学中的基础,它只使用0和1两个数字表示...

    mysql 二进制转换工具

    MySQL二进制转换工具主要涉及...综上所述,MySQL二进制转换工具涉及了数据库的二进制数据处理、文件传输、权限管理以及网络安全等多个方面。在实际操作中,需要兼顾效率和安全性,遵循最佳实践来确保系统的稳定和安全。

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

    在数据库中,二进制流常用于存储无法直接用文本格式表示的数据。 2. **SQL Server 2008与图片存储**: - **创建表结构**:在SQL Server中,可以创建一个包含BLOB字段的表,如`ImagesTable`,包含一个名为`...

    二进制文件查看器合集.rar

    "二进制文件查看器合集.rar"这个压缩包文件,正如其名,集合了多种二进制文件查看工具,适用于Windows 7操作系统,并且推荐在管理员模式下运行,以获取更全面的权限,确保能够读取和分析任何系统级别的二进制数据。...

    besnew-超强二进制文件查看工具

    支持16进制,10进制,二进制,8进制查看。 可自定义列数,独特码查找、不定帧长查看。方便数据帧分析。 免安装。 使用时可能需要先使用管理员权限启动。 注意事项: 1,一定要解压出来再用。 2,默认需要先打开bes,...

    读写二进制文件

    在计算机科学中,二进制文件(Binary File)是一种存储数据的特殊文件,其中的数据以机器可理解的二进制格式编码。与文本文件不同,二进制文件不依赖特定字符编码,而是直接包含原始数据,如图像、音频、视频、程序...

    解决SU二进制文件过旧的问题

    在Android系统中,SU二进制文件是用于获取超级用户权限的关键组件,它允许用户以root权限执行操作。"解决SU二进制文件过旧的问题"这个标题表明我们需要讨论的是如何更新或修复已经过时的SU二进制文件,以确保系统的...

    AndroidManifest二进制文件格式分析

    分析`AndroidManifest`的二进制文件通常需要对Android的资源管理和二进制文件格式有深入的理解。可以借助反编译工具,如Apktool、dex2jar等,来查看和解析二进制`AndroidManifest`。这些工具能够将二进制数据重新...

    图片存储到数据库保存二进制文件,并在DATAGRIDVIEW中显示出来

    你需要创建一个能够容纳图片二进制数据的字段,通常使用`VARBINARY(MAX)`或`BLOB`类型。 - 使用ADO.NET或者Entity Framework等ORM(对象关系映射)框架与数据库进行交互。例如,你可以创建一个`SqlCommand`对象来...

    处理二进制文件源代码

    处理二进制文件时,需要注意数据溢出、文件权限、内存管理等问题。确保正确处理文件异常,如无法打开、读取或写入文件的情况。此外,当读取未知格式的二进制文件时,避免试图解析超出文件长度的数据,以防止缓冲区...

    vs2008 c# 二进制搜索

    在本文中,我们将深入探讨如何使用Visual Studio 2008(VS2008)中的C#语言来实现一个二进制搜索功能,并能够修改进程中运行的二进制代码。这个功能允许开发者对程序的内存进行操作,将二进制数据转化为字符串,从而...

    自己用c#写的一个小工具,可以打开二进制文件,保存二进制文件,主要是对二进制文件打开后可全部自动清0,并保存!

    通过这个小工具,开发者可以更便捷地进行二进制文件的管理,尤其是批量清零操作,节省了手动操作的时间,提高了工作效率。在实际应用中,这样的工具还可以扩展,例如添加预览功能、支持多种操作(如替换、查找等)...

    office doc二进制文件格式解析

    这种二进制文件格式自1980年代中期以来一直存在,并在多个版本的Word中进行了改进和发展。本文将深入探讨DOC文件的结构、组成部分以及解析过程。 1. **文件结构** DOC文件由一系列二进制数据组成,这些数据包含了...

    在Android中调用二进制可执行程序

    但是,由于Android自身的特性(如应用程序的安全沙箱、资源管理机制等),直接在Android上运行二进制文件与在普通Linux系统上有所不同。 #### 知识点二:传统方式与新方法的区别 在Android中,通常有两种方式来...

    Tcpdump 下载[二进制文件,直接执行,无需安装]

    在大多数类Unix系统中,如Linux,用户可以直接在终端中运行这个文件,通常使用命令`./tcpdump`(可能需要赋予执行权限,用`chmod +x tcpdump`)来启动程序。 使用Tcpdump时,可以指定各种参数来控制抓包的行为。...

    图片以二进制存取数据库

    在IT领域,尤其是在数据库管理中,将图片以二进制数据存储是一种常见的做法。这种方式能够有效地处理和存储非结构化数据,如图像、音频或视频文件。本文将深入探讨“图片以二进制存取数据库”的概念,以及如何在C#...

    使用二进制存取用户头像

    3. 整体性:将头像数据存储在数据库中,便于进行数据备份和恢复,同时易于实现权限控制和访问管理。 三、操作流程 1. 读取图像:使用编程语言(如Python、Java、PHP等)的库函数读取图像文件,将其转化为二进制流...

Global site tag (gtag.js) - Google Analytics