Java项目——黑马点评实战篇

一、项目总介绍

(一)项目技术

        SpringBoot+MySql+Lombok+MyBatis-Plus+Hutool+Redis

(二)项目描述

        黑马点评项目是一个前后端分离项目,类似于大众点评,实现了发布查看商家,达人探店,点赞,关 注等功能,业务可以帮助商家引流,增加曝光度,也可以为用户提供查看提供附近消费场所。主要用来配合学习 Redis 的知识。
        

二、短信登录

(一)导入黑马点评项目

1、提供的SQL文件生成的表

2、项目架构

前后端分离部署(因为重点是学习Redis的企业开发,为避免麻烦,未使用微服务开发)

解释上图:

前端部署在nginx服务器上,

基于Session实现登录
集群的session共享问题
基于Redis实现共享session登录

三、商户查询缓存

四、优惠券秒杀

(一)全局ID生成器

(二)实现优惠券秒杀下单

(三)超卖问题

引出:

上节课的秒杀是自己在页面点击实现的,而真实秒杀场景下用户每秒下单量可能达到数万,在如此强大的高并发下,会出现什么问题呢?会不会超卖呢?

使用jmeter实现高并发场景:

问题分析:

分析线程问题:

理想情境下:

高并发实际情况:

原因:多个线程操作共享的资源,并且操作资源的代码有好几行,在这之间多个线程相互穿插,就出现了安全问题。(Java多线程安全问题

超卖问题是典型的多线程安全问题,针对这一问题的常见解决方案就是加锁

锁有两种——悲观锁、乐观锁。

两种锁对比如下:

乐观锁的两种实现方案:

版本号法、CAS法

利用以上的锁,可以实现避免超卖问题

(四)一人一单

解决了超卖问题,还有一个问题待解决——

黄牛下单,一个人买完所有券,所以要实现一人一单功能。

由上面的分析,仅在下单前做一个user_id与voucher_id是否存在的判断即可

代码修改:

(五)分布式锁

(六)Redis优化秒杀

(七)Redis消息队列实现异步秒杀

五、达人探店

六、好友关注

七、附近的商户

八、用户签到UV统计

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值