黑马点评
文章平均质量分 92
仿大众点评学习过程记录, 结合官方笔记记录的.
原视频地址: https://www.bilibili.com/video/BV1cr4y1671t
Masked5
These violent delights have violent ends
And in their triumph die, like fire and powder,
Which, as they kiss, consume.
展开
-
点评项目最后一篇:基于HyperLogLog实现UV统计
具体实现方式是,为每个时间点或者日期等维度创建一个独立的HyperLogLog对象,在记录用户的UV时,先将用户ID或IP等信息进行哈希处理得到一个指纹(fingerprint),然后利用Redis提供的PFADD命令将这个指纹添加进对应的HyperLogLog集合中。UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。通常来说UV会比PV大很多,所以衡量同一个网站的访问量,我们需要综合考虑很多因素,所以我们只是单纯的把这两个值作为一个参考值。原创 2023-05-08 18:00:32 · 726 阅读 · 0 评论 -
BitMap实现用户签到
我们只需要让得到的10进制数字和1做与运算就可以了,因为1只有遇见1 才是1,其他数字都是0 ,我们把签到结果和1进行与操作,每与一次,就把签到结果向右移动一位,依次内推,我们就能完成逐个遍历的效果了。Java逻辑代码:获得当前这个月的最后一次签到数据,定义一个计数器,然后不停的向前统计,直到获得第一个非0的数字即可,每得到一个非0的数字计数器+1,直到遍历完所有的数据,就可以获得当前月的签到总天数了。从最后一次签到开始向前统计,直到遇到第一次未签到为止,计算总的签到次数,就是连续签到天数。转载 2023-05-08 17:43:08 · 507 阅读 · 1 评论 -
使用GEOSearch实现附近商户功能
我们要做的事情是:将数据库表中的数据导入到redis中去,redis中的GEO,GEO在redis中就一个menber和一个经纬度,我们把x和y轴传入到redis做的经纬度位置去,但我们不能把所有的数据都放入到menber中去,毕竟作为redis是一个内存级数据库,如果存海量数据,redis还是力不从心,所以我们在这个地方存储他的id即可。SpringDataRedis的2.3.9版本并不支持Redis 6.2提供的GEOSEARCH命令,因此我们需要提升其版本,修改自己的POM。转载 2023-05-08 17:04:57 · 272 阅读 · 0 评论 -
使用Set实现共同关注,使用Feed流实现笔记推送
针对用户的操作:可以对用户进行关注和取消关注功能。实现思路:需求:基于该表数据结构,实现两个接口:关注是User之间的关系,是博主与粉丝的关系,数据库中有一张tb_follow表来标示:注意: 这里需要把主键修改为自增长,简化开发。FollowControllerFollowService2 共同关注想要去看共同关注的好友,需要首先进入到这个页面,这个页面会发起两个请求1、去查询用户的详情2、去查询用户的笔记以上两个功能和共同关注没有什么关系,大家可以自行将笔记中的代码拷贝到idea中就可以实现这两个转载 2023-05-08 16:55:22 · 126 阅读 · 0 评论 -
达人探店功能实现
造成这个问题的原因是,我们现在的逻辑,发起请求只是给数据库+1,所以才会出现这个问题。因为我们的数据是不能重复的,当用户操作过之后,无论他怎么操作,都是。tb_blog:探店笔记表,包含笔记中的标题、文字、图片等。转载 2023-05-08 16:52:11 · 45 阅读 · 0 评论 -
基于Redis的Stream结构作为消息队列,实现异步秒杀下单
举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。什么是消息队列:字面意思就是存放消息的队列。原创 2023-05-08 16:31:50 · 1264 阅读 · 0 评论 -
基于阻塞队列实现异步秒杀
秒杀业务的优化思路是什么?先利用Redis完成库存余量、一人一单判断,完成抢单业务再将下单业务放入阻塞队列,利用独立线程异步下单基于阻塞队列的异步秒杀存在哪些问题?内存限制问题数据安全问题。原创 2023-05-08 15:40:28 · 579 阅读 · 0 评论 -
分布式锁Redisson对于(不可重入、不可重试、超时释放、主从一致性)四个问题的应对
那么什么是Redission呢Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。Redission提供了分布式锁的多种多样的功能针对上述四个问题,Redission提供了自己的解决方案首先Redission支持可重入锁当第一次获取锁失败时,如果已经设置了等待时间的话,则Redisson会等待一段时间后重新尝试获取锁。如果在重试次数。原创 2023-05-08 15:23:52 · 2333 阅读 · 0 评论 -
利用Redis的SetNx一步步实现分布式锁并改进
利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性。原创 2023-05-08 11:15:21 · 3218 阅读 · 1 评论 -
优惠卷秒杀功能、全局唯一ID、乐观锁解决超卖问题、悲观锁实现一人一单、集群下锁失效问题
课程中的使用方式是没有像cas一样带自旋的操作,也没有对version的版本号+1 ,他的操作逻辑是在操作时,对版本号进行+1 操作,然后要求version 如果是1 的情况下,才能操作,那么第一个线程在操作后,数据库中的version变成了2,但是他自己满足version=1 ,所以没有问题,此时线程2执行,线程2 最后也需要加上条件version =1 ,但是现在由于线程1已经操作过了,所以线程2,操作时就不满足version=1 的条件了,所以线程2无法执行成功。原创 2023-05-07 21:25:27 · 790 阅读 · 0 评论 -
查询缓存实现、缓存更新策略选择、解决缓存穿透&缓存雪崩&缓存击穿问题
缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据例 1 : Static final ConcurrentHashMap < K , V > map = new ConcurrentHashMap < >();// 本地用于高并发 例 2 : static final Cache < K , V > USER_CACHE = CacheBuilder . newBuilder() . build();原创 2023-05-07 20:14:44 · 544 阅读 · 0 评论 -
基于Redis优化验证码登录流程, 解决登录状态刷新问题
当注册完成后,用户去登录会去校验用户提交的手机号和验证码,是否一致,如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key,当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到。所以咱们后来采用的方案都是基于redis来完成,我们把session换成redis,redis数据本身就是共享的,就可以避免session共享的问题了。原创 2023-05-06 23:00:22 · 536 阅读 · 0 评论 -
基于Session实现短信验证码登录流程
用户将验证码和手机号进行输入,后台从session中拿到当前验证码,然后和用户输入的验证码进行校验,如果不一致,则无法通过校验,如果一致,则后台根据手机号查询用户,如果用户不存在,则为用户创建账号信息,保存到数据库,无论是否存在,都会将用户信息保存到session中,方便后续获得当前登录信息。通过以上讲解,我们可以得知 每个用户其实对应都是去找tomcat线程池中的一个线程来完成工作的, 使用完成后再进行回收,既然每个请求都是独立的,所以在每个用户去访问我们的工程时,我们可以使用。登录, 不存在则创建。原创 2023-05-06 22:29:06 · 1212 阅读 · 0 评论 -
点评项目导入
实战篇我们要学习以下内容这一块我们会使用redis共享session来实现通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容通过本章节,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列我们利用Redis的GEOHash来完成对于地理坐标的操作主要是使用Redis来完成统计功能使用Redis的BitMap数据统计功能基于Set集合的关注原创 2023-05-06 21:29:07 · 751 阅读 · 1 评论