在项目开发过程中,遇到这样一个场景:需要在数据库表中记录系统向A、B、C等第三方系统同步数据是否成功,后面还有可能有D、E、F系统。受位与、或、非、异或在权限管理中的应用启发,我遇到的场景和权限类似,因此,采用位运算来处理。
1.对第三方系统同步结果进行描述,同步失败值0,代表所有第三方系统同步数据成功
第三方系统名称 | 第三方系统ID | 同步失败值 | 同步失败描述 |
A系统 | 1 | 1(2的0次方) | A系统同步失败 |
B系统 | 2 | 2(2的1次方) | B系统同步失败 |
C系统 | 3 | 4(2的2次方) | C系统同步失败 |
2.A、B、C三个系统都同步失败: 1| 2 |4=7;A、B系统失败:1|2=3;B、C系统失败:2|4=6;
判断B系统同步失败 x & 2 !=0,如:7 & 2 !=0
3.当我们需要向将某个系统同步失败的结果移除时,操作为:~x & X,如:A、B、C系统都失败,需要移除C失败结果时
~4 & 7即可,这里没有采用异或的原因是,当数据中A、B、C三个系统都同步成功时,即数据库中的这个字段值为0,此时, 如果要移除某个系统失败的结果,那么就会有问题