潍坊网站建设小程序制作,wordpress 批量修改字体,网站建好后维护麻烦吗,wordpress最简单搬家一、为什么使用位图#xff1f; 使用位图能有效实现 用户签到 等行为#xff0c;用数据库表记录签到#xff0c;将占用很多存储#xff1b;但使用 位图BitMap#xff0c;就能 大大减少存储占用
二、关于位图 本质上是String类型#xff0c;最小长度8位#xff08;一个字… 一、为什么使用位图 使用位图能有效实现 用户签到 等行为用数据库表记录签到将占用很多存储但使用 位图BitMap就能 大大减少存储占用
二、关于位图 本质上是String类型最小长度8位一个字节位数不够表示则扩容每次扩容以字节为单位最大占用内存为512MB用来操作位
三、操作 引言由于偏移量offset与数组下标结果一致这里我就将offset当成二进制数组下标来讲解 1设置二进制数组中指定下标的值
语法setbit key offset value字段描述offset二进制数组中相对于0号位置的偏移量或者下标value给指定下标设置的值0或1
设置val 二进制数组中下标为0的位置值为1设置完后二进制数组为 10000 0000如
setbit val 0 1
2获取指定下标的值
语法getbit key offset字段描述offset二进制数组中相对于0号位置的偏移量或者下标
获取val 二进制数组中下标为0位置的值如
getbit val 0
3统计1的数量
语法 bitcount key
4查询指定值第一次出现的下标
语法bitpos key value字段描述value指定的值0或1
5多个二进制数组进行位运算
语法bitop and | or | xor | not destkey key1 key2 ...作用将这些key进行位运算不包含destkey运算的结果放到destkey中字段描述destkey存放的位置key*所有进行位运算的二进制数组and | or | xor | notand与or或xor异或not非
6取出二进制数组中指定范围的数据转换为十进制返回
语法bitfield_ro key [get type offset] ...作用取出部分二进制数据如0011 1100取出0011返回0011转为十进制为3字段描述type第一个位置表示类型i代表有符号整数最高位0为正1为负u代表无符号整数后面紧接着取出位的数量如u5代表从起始位置取出5位表示无符号整数offset起始偏移量或起始下标
假如num 的二进制形式为0011 1100从下标为2的位置取出4位作为无符号整数返回十进制结果为15
bitfield_ro num get u4 2
7操作二进制数组中指定范围的数据
语法bitfield key [get type offset] [set type offset value] [incrby type offset value]作用操作部分二进制数据字段描述type第一个位置表示类型i代表有符号整数最高位0为正1为负u代表无符号整数后面紧接着操作位的数量offset起始偏移量或起始下标value要操作的值可以是任意值 ① bitfield key [get type offset] 作用获取二进制数组中连续某一部分的数据转换为十进制 假如num 的二进制形式为0011 1100从下标为2的位置取出4位作为无符号整数返回十进制结果为15
bitfield num get u4 2 ② bitfield key [set type offset value] 作用将指定部分的二进制数据的十进制形式设置为value如果位数不够则取最后几位 假如num二进制为0011 1100 设置下标从1开始数3位也就是011将8二进制1000赋值到这三位上就成了000那么num将变为0000 1100 操作如下
bitfield num get u4 2 ③ bitfield key [incrby type offset value] 作用将指定部分的二进制数据加上value保留原先长度个位 假如num二进制为0011 1100 那么取出下标2到3位置数据为11转换为十进制为3value为10那么相加的结果就为13二进制为1101,保留两位为01用01替换原来的10那么num的二进制结果为0001 1100操作如下
bitfield num incrby u2 2 10