• 数据库设计——如何利用一个整数型字段为用户打上63个标


      “标”的作用是为了标示一个用户特性,例如“卖家标”的作用就是标示这个用户是卖家;这种标需求很广,但是这种标有个特性就是只有2种状态:有或者没有,在计算机中就是0或者1;这就好办了,在表中增加整数型字段,整数的每个二进制bit位就可以作为一个标,这样大大节省了空间,例如long型整数就可以为63个标所用(java中long整型有64位)。

    怎么打标:打标就是把标对应字段的某个bit位 置为1;将某个标(tag)定义为一个特定数字,数字为2的n次方,例如1024(2的10次方),要打这个标的话实际进行“或”操作:tag= tag|1024,这样tag字段的第11位就变成了1,对其它bit位没影响。

    怎么去标:去标就是把标对应字段的某个bit位置为0,只要进行的操作为:tag=tag&~1024,这样就把第11位置为0了,对其它bit位没影响。

    怎么读标:读标的操作就是判断标对应的bit位是否为1,判断tag字段是否有1024标(具体这个数字对应哪种状态,记录在数据字典中),tag&1024==1204?有标:没有标。

    PS.如果63个标还不够怎么办?再增加个tag字段呗。由于这种打标方式,简单高效,可封装成接口addTag(String tagColumn ,int tag), removeTag(String tagColumn ,int tag)。

  • 相关阅读:
    eslint 屏蔽html的检查
    css 自定义悬浮窗写法
    echarts象形图图例显示问题
    win10上rocketMQ的部署过程
    死锁以及如何避免死锁
    volatile的一个例子-通俗易懂
    Java四种引用类型
    记录下:安全|API接口安全性设计(防篡改和重复调用)
    了解聚集索引,非聚集索引,联合索引,索引覆盖
    mybatis 查询树形结构
  • 原文地址:https://www.cnblogs.com/xujanus/p/3627939.html
Copyright © 2020-2023  润新知