当前位置: 首页 > article >正文

数据库中 用一个值实现类似linux中的读 写执行以及理解安卓杂用的按位或运算

数据库定义了一个字段叫 allow,

4 读2 写 1 执行 如果是 7 就代表是可读可写 可执行 ,如果是5 就是可读 可执行 , 那具体代码咋写呢

[Flags]
public enum Permission
{None = 0,Execute = 1,Write = 2,Read = 4
}// 假设你从数据库取到的 allow 值是一个整数
int allow = 5; // 代表 读+执行bool canRead = (allow & (int)Permission.Read) != 0;
bool canWrite = (allow & (int)Permission.Write) != 0;
bool canExecute = (allow & (int)Permission.Execute) != 0;
Console.WriteLine($"Read: {canRead}, Write: {canWrite}, Execute: {canExecute}");

数据库的判断实现

SELECTid,allow,CASE WHEN (allow & 4) != 0 THEN '是' ELSE '否' END AS 可读,CASE WHEN (allow & 2) != 0 THEN '是' ELSE '否' END AS 可写,CASE WHEN (allow & 1) != 0 THEN '是' ELSE '否' END AS 可执行
FROM your_table;

举一反三
我们也可以在代码中这样表示

下面就代表我定义了一个可读可写的,

int allow = Permission.READ | Permission.WRITE; // 4 | 2 = 6(二进制 110)

判断

boolean canRead = (allow & Permission.READ) != 0;
boolean canWrite = (allow & Permission.WRITE) != 0;
boolean canExecute = (allow & Permission.EXECUTE) != 0;

完整案例

public class Permission {public static final int EXECUTE = 1; // 001public static final int WRITE = 2;   // 010public static final int READ = 4;    // 100public static void main(String[] args) {int allow = READ | WRITE; // 4 | 2 = 6System.out.println("Can Read: " + ((allow & READ) != 0));System.out.println("Can Write: " + ((allow & WRITE) != 0));System.out.println("Can Execute: " + ((allow & EXECUTE) != 0));}
}

ok
然后来到了安卓的伪代码

public class View {// 定义系统 UI 的标志位public static final int SYSTEM_UI_FLAG_VISIBLE            = 0x00000000; // 默认可见public static final int SYSTEM_UI_FLAG_FULLSCREEN         = 0x00000004; // 隐藏状态栏public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION    = 0x00000002; // 隐藏导航栏public static final int SYSTEM_UI_FLAG_IMMERSIVE_STICKY   = 0x00001000; // 沉浸式模式private int systemUiVisibility = SYSTEM_UI_FLAG_VISIBLE;public void setSystemUiVisibility(int flags) {systemUiVisibility = flags;System.out.println("已设置 UI flags = " + Integer.toBinaryString(flags));}public int getSystemUiVisibility() {return systemUiVisibility;}
}public class Activity {private View decorView = new View();public void onCreate() {// 组合多个 UI flags:全屏 + 隐藏导航栏 + 沉浸模式int flags = View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;decorView.setSystemUiVisibility(flags);// 检查是否设置了全屏if ((decorView.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0) {System.out.println("✅ 全屏模式已开启");}}
}

ok再来复习一下安卓的常见代码

Intent intent = new Intent(context, MyActivity.class);// 添加多个 flag
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);// 判断是否包含某个 flag
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {Log.d("Intent", "是 NEW_TASK 启动模式");
}
Paint paint = new Paint();// 开启抗锯齿、滤波、描边
paint.setFlags(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG);

c#

[Flags]
public enum Permission
{None   = 0,Query  = 1,  // 0001Add    = 2,  // 0010Edit   = 4,  // 0100Delete = 8   // 1000
}

使用示例

class Program
{static void Main(){// 组合权限:查询 + 编辑Permission userPerm = Permission.Query | Permission.Edit;// 判断是否有“添加”权限if ((userPerm & Permission.Add) == Permission.Add){Console.WriteLine("有添加权限");}else{Console.WriteLine("没有添加权限");}// 添加“删除”权限userPerm |= Permission.Delete;// 移除“查询”权限userPerm &= ~Permission.Query;Console.WriteLine($"当前权限: {userPerm}");}
}

相关文章:

数据库中 用一个值实现类似linux中的读 写执行以及理解安卓杂用的按位或运算

数据库定义了一个字段叫 allow, 4 读2 写 1 执行 如果是 7 就代表是可读可写 可执行 ,如果是5 就是可读 可执行 , 那具体代码咋写呢 [Flags] public enum Permission {None 0,Execute 1,Write 2,Read 4 }// 假设你从数据库取到的 allow 值是一个整数…...

什么是数据驱动?以及我们应如何理解数据驱动?

在谈到企业数字化转型时,很多人都会说起“数据驱动”,比如“数据驱动运营”、“数据驱动业务”等等。 在大家言必称“数据驱动”的时代背景下,我相信很多人并未深究和思考“数据驱动”的真正含义,只是过过嘴瘾罢了。那么&#xff…...

opencv(C++) 图像滤波

文章目录 介绍使用低通滤波器对图像进行滤波工作原理均值滤波器(Mean Filter / Box Filter)高斯滤波器(Gaussian Filter)案例实现通过滤波实现图像的下采样工作原理实现案例插值像素值(Interpolating pixel values)双线性插值(Bilinear interpolation)双三次插值(Bicu…...

【线上故障排查】缓存热点Key导致Redis性能下降的排查与优化(面试题 + 3 步追问应对 + 案例分析)

一、高频面试题 问题1:什么是缓存热点Key?它对Redis性能有什么影响? 参考答案: 缓存热点Key指的是短时间内被大量请求访问的缓存键。因为Redis是单线程处理请求的,一旦某个Key被高频访问,会导致线程长时间忙于处理它,其他请求只能排队等待,这会让Redis整体响应变慢、…...

cuda_fp8.h错误

现象: cuda_fp8.h错误 原因: CUDA Toolkit 小于11.8,会报fp8错误,因此是cuda工具版本太低。通过nvcc --version查看 CUDA Toolkit 是 NVIDIA 提供的一套 用于开发、优化和运行基于 CUDA 的 GPU 加速应用程序的工具集合。它的核心作用是让开发…...

Java设计模式从基础到实际运用

第一部分:设计模式基础 1. 设计模式概述 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结,它描述了在软件设计过程中一些不断重复出现的问题以及该问题的解决方案。设计模式是在特定环境下解决软件设计问题…...

网络安全基础--第九天

动态路由: 所有路由器上运行同一种动态路由协议,之后通过路由器协商沟通,最终计算生成 路由条目。 静态路由的优点: 1.选路是由管理员选择,相对更好控制,更加合理 2.无需占用额外资源 3.更加安全 缺点…...

鸿蒙如何引入crypto-js

import CryptoJS from ohos/crypto-js 报错。 需要先安装ohom:打开DevEco,点击底部标签组(有Run, Build, Log等)中的Terminal,在Terminal下执行: ohpm install 提示 install completed in 0s 119ms&…...

通过HIVE SQL获取每个用户的最大连续登录时常

样本数据导入: drop table if exists user_login; create table user_login ( user_id bigint ,login_date string ) ;insert into table user_login values (1,2025-04-01) ,(1,2025-04-02) ,(1,2025-04-03) ,(1,2025-04-05) ,(1,2025-04-06) ,(2,2025-04-01) …...

如何轻松将 iPhone 备份到外部硬盘

当您的iPhone和电脑上的存储空间有限时,您可能希望将iPhone备份到外部硬盘上,这样可以快速释放iPhone上的存储空间,而不占用电脑上的空间,并为您的数据提供额外的安全性。此外,我们还提供 4 种有效的解决方案&#xff…...

Matlab数据类型

本篇介绍我在南农matlab课程上的所学,我对老师ppt上的内容重新进行了整理并且给出代码案例。主要内容在矩阵。如果真的想学matlab,我不认为有任何文档能够超过官方文档,请移步至官网,本篇说实话只是写出来给自己和学弟学妹作期末复…...

痉挛性斜颈带来的困扰

当颈部不受控制地扭转歪斜,生活便被打乱了节奏。颈部肌肉异常收缩,导致头部不自觉偏向一侧或后仰,不仅让外观明显异于常人,还会引发持续的酸痛与僵硬感。长时间保持扭曲姿势,肩颈肌肉过度紧绷,甚至会牵连背…...

AI觉醒前兆,ChatGPT o3模型存在抗拒关闭行为

帕利塞德研究公司(Palisade Research)近期开展的一系列测试揭示了先进AI系统在被要求自行关闭时的异常行为。测试结果显示,OpenAI的实验性模型"o3"即使在明确收到允许关闭的指令后,仍会主动破坏关机机制。 测试方法与异常发现 研究人员设计实…...

Flask项目进管理后台之后自动跳回登录页面,后台接口报错422,权限问题

今天准备部署一个python项目,先从代码仓down下来本地测了一下,发现登录成功后又自动跳回登录页了,然后后台接口报错422显示没权限,应该是token解析时出错,但是开发这个项目的同事是没问题的。 本来以为是浏览器或者配…...

HarmonyOS如何优化鸿蒙Uniapp的性能?

针对鸿蒙Uniapp应用的性能优化,可以围绕渲染效率、资源管理、代码逻辑等核心方向展开,结合鸿蒙系统特性和ArkUI框架能力进行针对性调整 一、滚动与动画性能优化 帧率优化 使用requestAnimationFrame替代setTimeout/setInterval处理滚动和动画&#xff0…...

使用逆强化学习对网络攻击者的行为偏好进行建模

摘要 本文提出了一种整体方法,利用逆强化学习(IRL)从系统级审计日志中对攻击者偏好进行建模。对抗建模是网络安全中的一项重要能力,它使防御者能够描述潜在攻击者的行为特征,从而能够归因于已知的网络对抗团体。现有方…...

青少年编程与数学 02-020 C#程序设计基础 12课题、使用控件

青少年编程与数学 02-020 C#程序设计基础 12课题、使用控件 一、控件二、控件的分类1. 按功能分类2. 按可见性分类 三、控件的核心特性(一) 属性(Properties) - 控件的"状态描述"1. 外观属性2. 布局属性3. 行为属性4. 数据绑定属性 (二) 方法(Methods) - 控件的"…...

一文认识并学会c++模板初阶

文章目录 泛型编程:概念 函数模板概念:🚩函数模板格式原理:🚩函数模板实例化与非模板函数共存 类模板类模板实例化 泛型编程: 概念 🚩编写与类型无关的通用代码,是代码复写一种手段…...

基于深度学习的工业OCR实践:仪器仪表数字识别技术详解

引言 在工业自动化与数字化转型的浪潮中,仪器仪表数据的精准采集与管理成为企业提升生产效率、保障安全运营的关键。传统人工抄录方式存在效率低、易出错、高危环境风险大等问题,而OCR(光学字符识别)技术的引入,为仪器…...

java导入excel

这样读取excel时,得到的是结果值,而不是单元格的公式 import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil;InputStream inputStream file.getInputStream(); ExcelReader reader ExcelUtil.getReader(inputStream, 1); L…...

回头看,FPGA+RK3576方案的功耗性能优势

作者:Hello,Panda 各位朋友,大家好,熊猫君这次开个倒车,在这个广泛使用Xilinx(Altera)高端SoC的时代,分享一个“FPGAARM”实现的低功耗高性能传统方案。 图1 瑞芯微RK3576电路 当前&#xff0c…...

csharp ef入门

全局安装 dotnet ef 命令行工具 要 全局安装 dotnet ef 命令行工具(即在任何项目目录下都能使用 dotnet ef 命令),请按以下步骤操作: ✅ 全局安装步骤(推荐) 在终端中运行以下命令: bash复制…...

长短期记忆网络:从理论到创新应用的深度剖析

一、引言 1.1 研究背景 深度学习在人工智能领域的发展可谓突飞猛进,而长短期记忆网络(LSTM)在其中占据着至关重要的地位。随着数据量的不断增长和对时序数据处理需求的增加,传统的神经网络在处理长序列数据时面临着梯度消失和梯…...

LiveNVR 直播流拉转:Onvif/RTSP/RTMP/FLV/HLS 支持海康宇视天地 SDK 接入-视频广场页面集成与视频播放说明

LiveNVR直播流拉转:Onvif/RTSP/RTMP/FLV/HLS支持海康宇视天地SDK接入-视频广场页面集成与视频播放说明 一、视频页面集成1.1 关闭接口鉴权1.2 视频广场页面集成1.2.1 隐藏菜单栏1.2.2 隐藏播放页面分享链接 1.3 其它页面集成 二、播放分享页面集成2.1 获取 iframe 代…...

MySQL索引与性能优化入门:让查询提速的秘密武器【MySQL系列】

本文将深入讲解 MySQL 索引的底层原理、常见类型、使用技巧,并结合 EXPLAIN 工具分析查询执行计划,配合慢查询日志识别瓶颈,逐步建立起系统的 MySQL 查询优化知识体系。适合有一定基础、希望在数据量增长或面试中脱颖而出的开发者阅读。 一、…...

进程间通信IV System V 系列(linux)

目录 消息队列 原理 操作 补充概念 信号量 (原子性计数器) 原理 操作 (和共享内存相似) 总结 小知识 消息队列 原理 在内核中建立一个队列,进程可以相互进行通信,通过队列进行IPC,就是进程之间发送带类型的数据块。 操作 接口和共享…...

设计模式——建造者设计模式(创建型)

摘要 本文详细介绍了建造者设计模式,这是一种创建型设计模式,旨在将复杂对象的构建过程与其表示分离,便于创建不同表示。文中阐述了其设计意图,如隐藏创建细节、提升代码可读性和可维护性,并通过构建电脑的示例加以说…...

AWS WebRTC:获取ICE服务地址(part 3):STUN服务和TURN服务的作用

STUN服务和TURN服务的作用: 服务全称作用是否中继流量适用场景STUNSession Traversal Utilities for NAT 协助设备发现自己的公网地址(srflx candidate) ❌ 不中继,仅辅助NAT 穿透成功时使用TURNTraversal Using Relays around N…...

使用Yolov8 训练交通标志数据集:TT100K数据集划分

使用Yolov8 训练交通标志数据集:TT100K数据集划分(一) 一、数据集下载二、划分数据集三、目录放置 一、数据集下载 官方网址:TT100K 数据集对比 源码如下: def classes(filedir):with open(filedir) as f:classes …...

NLP学习路线图(十三):正则表达式

在自然语言处理(NLP)的浩瀚宇宙中,原始文本数据如同未经雕琢的璞玉。而文本预处理,尤其是其中至关重要的正则表达式技术,正是将这块璞玉转化为精美玉器的核心工具集。本文将深入探讨正则表达式在NLP文本预处理中的原理…...