|
Post by account_disabled on Jan 28, 2024 6:41:03 GMT
读到这个标题,很多人可能都摸不着头脑。“有点什么在本文中,我们将了解什么是按位运算符,以及它们的使用在当今的计算时代是否仍然相关。 1 和 0 库存图片 示例用例 此处列出了按位运算符,但为了真正理解示例,我们将只关注其中一个:按位与( &)。一个例子让我很感兴趣。这就是我们要做的——直接进入一个例子。 想象一下,您有一个网站,给定用户可以在该网站上拥有特定权限。例如,像 SitePoint 这样的杂志: 作者可以 CRUD 草稿并编辑他们的个人资料。 除了上述内容之外,编辑还可以查看 CRUD 草稿和已完成的帖子,以及 CRUD 作者简介。 除上述之外,管理员还可以添加管理员权限。 由于用户可以拥有多个权限,因此有多种方法可以在数据库和使用数据库的系统中定义权限。 双重连接 添加角色,添加权限,将权限附加到连接表中的角色,然后创建另一个连接表并将某些角色绑定到某些用户。 这种方法创建了四个额外的表: 权限 角色 权限<->角色 角色<->用户 相当大的开销。想象一下必须编辑这些或定期在应用程序中的一些经常访问的列表中列出它们。只有大量缓存才能避免此应用程序在重负载下崩溃。 不过,一个优点是,通过使用复杂的权限很好地定义角色,您只需将用户固定到角色中就可以了 - 它使连接表保持轻便和快速。 单一连接 添加权限,添加联接表,给某些用户附加一些权限 这种方法创建了两个额外的表: 权限 权限<->用户 开销比 WhatsApp 号码数据 前面的示例要少得多,但连接表中的条目要多得多,因为用户可以拥有很多权限(仅用于起草的 CRUD 本身就有 4 个权限)。由于有大量用户和大量权限,该表很快就会变得很重。 纵队踩踏事件 为每个权限在用户表中添加一列,然后将其数据类型设为tinyint(1)(基本上是布尔值)以检查权限是“打开”还是“关闭”。 为用户设置权限将如下所示 这种方法没有添加额外的表,但不必要地将表扩展到巨大的宽度,并且每次添加新权限时都需要修改数据库。 当您知道在可预见的将来最多拥有两到三个权限时,这是一个很好的方法,但不应该用于更多的事情。 然而,由于从远处看,列列表类似于二进制数 (1010),因此这种方法是进入另一个……的绝佳方式。 按位方法 在我们深入研究这种方法之前,让我们先上一堂二进制速成课。 二进制数 所有计算机都将数据存储为二进制,则不能随意选择 543,而必须是 1024。随着数字变大,情况会变得更加复杂。 由于我们的计算机在 64 位 CPU 上运行 64 位操作系统(大多数 - 有些甚至仍然停留在 32 位!),这意味着数字最多只能有 64 位。这意味着您只能存储给定用户最多 64 个权限的排列。对于中小型网站来说这已经足够了,但是在大型网站上,这可能会成为一个问题。draft_permissions解决方案是针对不同的权限上下文( 、等)使用不同的列account_permissions。这些列中的每一列都可以单独包含 64 种权限的排列,这对于要求最苛刻的网站来说也足够了。
|
|