黑马点评项目
文章平均质量分 82
洒水水儿
码不停题
展开
-
黑马点评-用户签到业务
把每一个bit位对应当月的每一天,形成了映射关系。用0和1标示业务状态,这种思路就称为位图(BitMap)。这样我们就用极小的空间,来实现了大量数据的表示。Redis中是利用string类型数据结构实现BitMap,因此最大上限是512M,转换为bit则是 2^32个bit位。用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条。每签到一次需要使用(8 + 8 + 1 + 1 + 3 + 1)共22 字节的内存,一个月则最多需要600多字节。原创 2024-03-08 21:44:47 · 208 阅读 · 0 评论 -
黑马点评-附近商户实现
Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,根据经纬度来检索数据。GEO本质上是基于sortedSet实现的,在Sorted Set中,每个成员都是与一个分数(score)相关联的,这个分数用于对成员进行排序。然而,在GEO数据结构中,Redis内部使用一个叫geohash的算法将每个地理位置的经纬度转换为一个64位的整数,这个整数在Sorted Set中被用作分数(score)。用户在使用GEO相关命令进行操作时,通常不需要直接处理这个分数。原创 2024-03-08 21:27:15 · 763 阅读 · 0 评论 -
黑马点评-好友关注实现
针对用户的操作,可以对用户进行关注和取消关注功能:需要实现两个接口:关注和取关接口判断是否关注的接口。原创 2024-03-08 21:03:46 · 451 阅读 · 0 评论 -
黑马点评-发布探店笔记
探店笔记类似点评网站的评价,往往是图文结合。原创 2024-03-08 19:59:23 · 358 阅读 · 1 评论 -
黑马点评-异步秒杀实现
我们来回顾一下下单流程当用户发起请求,此时会请求nginx,nginx会访问到tomcat,而tomcat中的程序,会进行串行操作,分成如下几个步骤1、查询优惠卷2、判断秒杀库存是否足够3、查询订单4、校验是否是一人一单5、扣减库存6、创建订单在这六步操作中,又有很多操作是要去操作数据库的,而且还是一个线程串行执行, 这样就会导致我们的程序执行的很慢,所以我们需要异步程序执行。原创 2024-03-08 11:50:49 · 629 阅读 · 0 评论 -
黑马点评-分布式锁业务
分布式系统部署了多个tomcat,每个tomcat都有一个属于自己的jvm,那么假设在服务器A的tomcat内部,有两个线程,这两个线程由于使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的,但是如果现在是服务器B的tomcat内部,又有两个线程,但是他们的锁对象写的虽然和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2实现互斥,这就是集群环境下,syn锁失效的原因,在这种情况下,我们就需要使用分布式锁来解决这个问题。原创 2024-03-08 00:04:03 · 1163 阅读 · 0 评论 -
黑马点评-优惠券秒杀业务
每个店铺都可以发布同类优惠券,当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,所以他们的id是不能一样的, 于是乎我们需要保证id的唯一性。原创 2024-03-05 19:43:30 · 1451 阅读 · 0 评论 -
黑马点评-商户查询业务
这一部分主要在查询商户的场景下分析了缓存的更新、穿透和雪崩的问题,最后给出一个实际场景中的实用类。原创 2024-03-03 22:50:35 · 947 阅读 · 0 评论 -
黑马点评-短信登录业务
模型如下。原创 2024-03-03 16:33:03 · 1035 阅读 · 0 评论