一 . 前言
这一篇来趣味性的探讨一下 , 如何通过更少的空间描述更多的信息
在数据库里面 ,通常我们会用数字的递进来描述状态等信息 , 但是如果想进行更复杂的操作 , 就有必要对二进制有一定理解了.
二 . 单数中描述信息
单数中保存多个信息的意思是 : 我们能把多少信息存储到一串数字里面. 这里直接来通过一些案例来说明用法
用单个数字来表示状态
这也是业务中最常见的一种使用方式 , 通过数字 1,2,3 等来描述一个状态 , 这种方式有一定的可读性 , 也有足够的扩展性
如果从二进制的角度说 , 这是一种进位体现状态的方式.
用单个数字来描述多个状态 : 包含多种状态
单数描述多个信息这一块首先能想到的就是 Linux 的权限表示法 , 在Linux 中有四种权限 , 分别如下 :
这种表示法的方式很简单, 从表象上来说就是两数相加 , 把初始状态设为 1 / 2 / 4 , 更复杂的状态则是初始状态的组合.
这种模式从二进制的角度看的话能更明显 , 每一位都标识一种状态.在更复杂的场景中, 还可以通过质数的数学特性 , 来做更多的扩展
用单个数字来描述不同维度的信息 : 包含状态和数量
这种体现最有代表的就是线程池的表现方式. 在线程池对象ThreadPoolExecutor 中 , 有个属性可秀了 , 它叫 ctl.
//