一个简单的版本比较算法
三月 08, 2019
1.问题产生
服务器同学遇到了一个问题,我们在做强制更新,在服务上做版本比较,用mongodb compile 比较两个字符串发现1.0.1.9
比1.0.1.11
版本号大。假设客户端当前的版本是1.0.1.9
,在服务器上创建了一个要强制更新的版本号1.0.1.11
,这个时候因为mongodb compile 1.0.1.9
比1.0.1.11
版本号大,所以不能直接从列表中获取到要更新的版本。
服务器强制更新列表
游戏名称 | 版本号 |
---|---|
王者荣耀 | 1.0.1.11 |
王者荣耀 | 1.0.1.4 |
吃鸡游戏 | 1.0.1.8 |
2.解决办法
强制更新列表添加一个long型字段存储版本号转化值,如下表:
游戏名称 | 版本号 | 版本号值 |
---|---|---|
王者荣耀 | 1.0.1.11 | 281474976776203 |
王者荣耀 | 1.0.1.4 | 281474976776196 |
吃鸡游戏 | 1.0.1.8 | 281474976776200 |
思考:
一个long型64位相当于8个字节,每个字节是8位,平均分成四份,每份是2个字节。
2个字节相当于short型,有符号可以达到3万多,没符号的可以达到6万多,完全可以存储每个位数值。
代码步骤:
1 | public static long testSaveBit(){ |
最后生成的long型值就可以正确的比较版本号
查看评论