当前位置: 首页 > news >正文

网站文章页的排名怎么做wordpress数据库端口

网站文章页的排名怎么做,wordpress数据库端口,icp网站备案系统,英文网站 模板这里是小咸鱼的技术窝#xff08;CSDN板块#xff09;#xff0c;我又开卷了 之前经手的项目运行了10多年#xff0c;基于重构#xff0c;里面有要实现一些诸如签到的需求#xff0c;以及日历图的展示#xff0c;可以用将签到信息存到传统的关系型数据库#xff08;MyS… 这里是小咸鱼的技术窝CSDN板块我又开卷了 之前经手的项目运行了10多年基于重构里面有要实现一些诸如签到的需求以及日历图的展示可以用将签到信息存到传统的关系型数据库MySql、Oracle 然后用 Sql 进行统计、也可以借助 Redis 中的 BitMap来实现签到需求。俩者的区别就在于一个签到了100万年的项目你用Mysql无论如何进行分库分表落地到磁盘的上的数据体量都很大且查询速度会变慢但是用 Redis 存储数据占用的内存小且统计效率更快。当然如果你怕Redis挂也可以存俩份数据一份放Mysql一份放Redis利用 Redis 缓存考勤结果加快查询效率但是占用的机器磁盘过大的问题还是没解决下面介绍用 BitMap 如何实现下面这个签到日历。 这个项目的签到用到了海康的人脸识别SDK靠每天进行人脸识别打卡然后记录签到信息的就拿手动点击签到来说。整个流程如下。 用户点击签到按钮发起一个签到请求给我们先调用 getbit 命令判断今天有没有进行签到过没有然后调用 setbit 命令把签到结果存入 BitMap期间用户重复点击签到也没事BitMap多次重复设置值的操作是幂等的 BitMap 介绍 https://redis.io/commands/bitop/ 下面的这段洋文是官网对BitMap的介绍 Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type which is treated like a bit vector. Since strings are binary safe blobs and their maximum length is 512 MB, they are suitable to set up to 2^32 different bits. 位图不是实际的数据类型而是在字符串类型上定义的一组面向位的操作该操作被视为位向量。由于字符串是二进制安全blob字符串最大为512 MB因此它们适合设置为2^32个不同的位。从这段话中我们可以知道BitMap 其实就是一个二进制的容器并且他的二进制位最大为 2^32 位512Mb 512 * 1024 * 1024 * 8 2^32个bit位当然我们签到只用的到31 bit 位因此针对于签到需求来说Bitmap初始结构长这样 0000000000000000000000000000000 联想一下我们一个月最大 31 天1号签到了我们在第一bit位设置为1就好了同理在第2345天签到了在对应的bit位设置值为1就好了BitMap是不是很适合签到场景。并且它提供了很多统计API。 SETBIT key offset value将指定偏移量上的位设置为1或0。 GETBIT key offset获取指定偏移量上的位的值。 BITCOUNT key start end计算指定key的Bitmap中1的数量。 BITOP operation destkey key [key...]对多个key进行位运算并将结果存储到destkey中。operation可以是AND、OR、XOR、NOT等。 BITPOS key 1 start end查找指定key的Bitmap中第一个1的偏移量。 BITPOS key 0 start end查找指定key的Bitmap中第一个0的偏移量。 BITPOS key 0 start从start的位置开始查找指定key的Bitmap中第一个0的偏移量。 SET key value将指定key的Bitmap设置为指定的值。 GET key获取指定key的Bitmap的值。 //类型u代表无符号十进制i代表带符号十进制 BITFIELD key get u3 0从偏移量offset0开始取3位获取无符号整数的值返回的值是一个十进制数 INCRBY u4 4 1从偏移量offset4后开始取4位得到一个对应的二进制数然后转换成10进制加1利用 bitcount 命令我们可以快速统计出用户本月签到了多少天利用 setbit 命令我们可以快速记录签到信息利用 getbit 命令我们可以快速判断用户今天是否已经签到 值得注意的是 BITCOUNT key start end 命令中的 start end 指的是 byte 的区间而 1 byte 8 bit。那么执行如下命令 bitcount char 0 8的结果是10就不奇怪了统计范围是 0-8 byte区间转换成 bit 区间就是 0-64。0-64范围内有 10个1。因此结果是10而不是3 签到场景里面一般都不会直接去给Bitmap设置字符串设置字符串还要去转换成对应的ACSII码然后存入BitMap而是用 setbit 命令按bit设置值。 注意点二 例如 执行 setbit key 8 1 命令存储的是 0000000010000000 而不是 000000001低bit 位会用 0 补齐因为 byte 是最小的存储单元。这些个个细节要搞清楚哦。 另外BitMap也支持二进制数与、或运算平常很少用这个。跟着我大声朗读运算法则与运算都是1才为1或运算有1就是1。 mac:0set a a (01100001) OK mac:0set b b (01100010) OK mac:0bitop and andres a b (a、b与运算结果设置到anres) 1 mac:0bitop or orres a b a、b或运算结果设置到orresBitMap的源码自行去翻阅redis安装目录下的 src里面的c文件蹲一个c语言大佬 BitMap签到脚手架 接着用Jedis实现因为Api命名和原始redis命令很接近。实际开发中合理织入自己的业务逻辑即可。 Slf4j Api(tags Bit签到) RestController RequestMapping(/bit) public class BitController {Autowiredprivate Jedis jedis;ApiOperation(获取签到天数)PostMapping(/userSignCount)public Result userSignCount(RequestBody RedisRequest redisRequest) {//相当于执行 bitcount user:sign:uid:yyyyMM 0 31 命令return Result.success(jedis.bitcount(buildSignKey(redisRequest.getUid(),getDate(redisRequest.getDateStr())), 0, 31));}ApiOperation(签到/补签)PostMapping(/userSign)public Result sign(RequestBody RedisRequest redisRequest) {//日期字符串转DateDate date getDate(redisRequest.getDateStr());//该日期该月的第几天int offset DateUtil.dayOfMonth(date) - 1;//user:sign:uid:yyyyMMString signKey buildSignKey(redisRequest.getUid(), date);Assert.isFalse(jedis.getbit(signKey, offset), 今天以及签到过了);//相当于执行 setbit user:sign:uid:yyyyMM offset 1 命令jedis.setbit(signKey, offset, true);return Result.success(getContinuousSignCount(redisRequest.getUid(), date));}/*** 统计截止日之前连续签到的天数* param userId 用户id* param date 截止日* return*/private int getContinuousSignCount(Integer userId, Date date) {int dayOfMonth DateUtil.dayOfMonth(date);//相当于执行 bitfield user:sign:uid:yyyyMM u10 0 命令ListLong list jedis.bitfield(buildSignKey(userId, date), get, u dayOfMonth, 0);if (list null || list.isEmpty()) {return 0;}int signCount 0;long v list.get(0) null ? 0 : list.get(0);// i 表示位移操作次数for (int i dayOfMonth; i 0; i--) {// 右移再左移如果等于自己说明最低位是 0表示未签到if (v 1 1 v) {// 低位 0 且非当天说明连续签到中断了if (i ! dayOfMonth) {break;}} else {signCount;}// 右移一位并重新赋值相当于把最低位丢弃一位v 1;}return signCount;}private String buildSignKey(Integer userId, Date date) {return String.format(user:sign:%d:%s, userId,DateUtil.format(date, yyyyMM));}/*** 获取日期*/private Date getDate(String dateStr) {if (StrUtil.isBlank(dateStr)) {return new Date();}try {return DateUtil.parseDate(dateStr);} catch (Exception e) {throw new RuntimeException(请传入yyyy-MM-dd的日期格式);}}}BitMaq去重 因为字符串最大为512mb因此可以算出BitMap的最大长度是2的32次方。约42亿个bit位。去重也很简单就拿我的QQ号去重来说QQ: 3273448110在 3273448110 的bit位置上设置为1就好了同理其他QQ号在自己的Bit位上设置为1最终统计BitMap有多少个1就得到了不重复QQ号的个数。 总结 本文涵盖了BitMap从Api使用到落地到常用场景的上的真实业务体现。以及使用上的注意事项。 这里是小咸鱼的技术窝
文章转载自:
http://www.morning.niukaji.com.gov.cn.niukaji.com
http://www.morning.rqgjr.cn.gov.cn.rqgjr.cn
http://www.morning.nnwpz.cn.gov.cn.nnwpz.cn
http://www.morning.ndltr.cn.gov.cn.ndltr.cn
http://www.morning.lkxzb.cn.gov.cn.lkxzb.cn
http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn
http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn
http://www.morning.coatingonline.com.cn.gov.cn.coatingonline.com.cn
http://www.morning.lhgqc.cn.gov.cn.lhgqc.cn
http://www.morning.llcsd.cn.gov.cn.llcsd.cn
http://www.morning.qtsks.cn.gov.cn.qtsks.cn
http://www.morning.skbkq.cn.gov.cn.skbkq.cn
http://www.morning.klcdt.cn.gov.cn.klcdt.cn
http://www.morning.bangaw.cn.gov.cn.bangaw.cn
http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn
http://www.morning.kzyr.cn.gov.cn.kzyr.cn
http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn
http://www.morning.brwei.com.gov.cn.brwei.com
http://www.morning.glwyn.cn.gov.cn.glwyn.cn
http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn
http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn
http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn
http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn
http://www.morning.npxht.cn.gov.cn.npxht.cn
http://www.morning.qrlkt.cn.gov.cn.qrlkt.cn
http://www.morning.bnzjx.cn.gov.cn.bnzjx.cn
http://www.morning.rdmz.cn.gov.cn.rdmz.cn
http://www.morning.pynzj.cn.gov.cn.pynzj.cn
http://www.morning.brzlp.cn.gov.cn.brzlp.cn
http://www.morning.dygqq.cn.gov.cn.dygqq.cn
http://www.morning.hyxwh.cn.gov.cn.hyxwh.cn
http://www.morning.ailvturv.com.gov.cn.ailvturv.com
http://www.morning.hphrz.cn.gov.cn.hphrz.cn
http://www.morning.hclplus.com.gov.cn.hclplus.com
http://www.morning.flncd.cn.gov.cn.flncd.cn
http://www.morning.dkfb.cn.gov.cn.dkfb.cn
http://www.morning.qwrb.cn.gov.cn.qwrb.cn
http://www.morning.fbjqq.cn.gov.cn.fbjqq.cn
http://www.morning.llyjx.cn.gov.cn.llyjx.cn
http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn
http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn
http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn
http://www.morning.fplqh.cn.gov.cn.fplqh.cn
http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn
http://www.morning.hqmfn.cn.gov.cn.hqmfn.cn
http://www.morning.zlnmm.cn.gov.cn.zlnmm.cn
http://www.morning.yrycb.cn.gov.cn.yrycb.cn
http://www.morning.pflry.cn.gov.cn.pflry.cn
http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn
http://www.morning.xhddb.cn.gov.cn.xhddb.cn
http://www.morning.hptbp.cn.gov.cn.hptbp.cn
http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn
http://www.morning.khyqt.cn.gov.cn.khyqt.cn
http://www.morning.rqqct.cn.gov.cn.rqqct.cn
http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn
http://www.morning.hmmtx.cn.gov.cn.hmmtx.cn
http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn
http://www.morning.kyzxh.cn.gov.cn.kyzxh.cn
http://www.morning.nlkhr.cn.gov.cn.nlkhr.cn
http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn
http://www.morning.syxmx.cn.gov.cn.syxmx.cn
http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn
http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn
http://www.morning.jfbrt.cn.gov.cn.jfbrt.cn
http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn
http://www.morning.gassnw.com.gov.cn.gassnw.com
http://www.morning.xgbq.cn.gov.cn.xgbq.cn
http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn
http://www.morning.jmlgk.cn.gov.cn.jmlgk.cn
http://www.morning.rdzgm.cn.gov.cn.rdzgm.cn
http://www.morning.rjcqb.cn.gov.cn.rjcqb.cn
http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn
http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com
http://www.morning.rdtq.cn.gov.cn.rdtq.cn
http://www.morning.bysey.com.gov.cn.bysey.com
http://www.morning.rzmlc.cn.gov.cn.rzmlc.cn
http://www.morning.xtxp.cn.gov.cn.xtxp.cn
http://www.morning.cwtrl.cn.gov.cn.cwtrl.cn
http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn
http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn
http://www.tj-hxxt.cn/news/250097.html

相关文章:

  • 苏州网站建设情况威海网站建设威海
  • 做外销网站营销成功案例分享及感悟
  • 一般的网站是由什么语言做的中国最强十大私企
  • 网站建设制度制定河北省网络科技网站
  • 网站排名高权重低电商网站设计案例
  • 网站开发工程师应聘书范文1000西安seo外包服务
  • 徐州公司做网站安徽网站开发与维护专业
  • 怎样做网站二级页面临潼微网站建设
  • jsp网站开发存在的问题衡水seo
  • 孝感网站开发的公司无锡企业建站系统
  • 网站模板 chinaz什么是精准营销
  • 专门教做衣服的网站软通动力和中软国际对比
  • 专业型网站网站古典风格中药医药企业网站模板源码
  • 江苏做帖子网站宁波建设网站公司推荐
  • 科技股份公司网站模板安徽建设厅网站官网
  • 好牛网站建设网页怎么制作长面
  • 肇庆网站制作策划网站开发工程师学什么区别
  • 天河网站开发wordpress改模版
  • 深圳企业网站建设推广外包服务商学剪辑有必要报班吗
  • 免费发布信息网站大全666六安网站建设价格
  • 网站建设漠环熊掌号做的网站有广告图片
  • 装修公司网站模板教育机构网站制作模板
  • 汕头模版网站建设apache建设本地网站
  • 网站开发接入本地天地图seo大牛
  • 网站建设的意见建议做网站公司哪家强
  • 网站设计建网站做非物质文化遗产网站的风险
  • 学校网站内容玉林专业网站建设
  • 网站开发工具排名现在哪个行业做网站需求多点
  • 云网站建站建设门户网站需要多少钱
  • 深圳网站建设价钱重庆网站推广工具