基于SSM框架的秒杀系统【源码+数据库+spring+springMVC+mybatis】

目录

一、需求

二、使用工具

三、技术栈

四、数据库设计

五、实现

六、秒杀的业务逻辑

七、使用枚举表述常量数据字典

八、自定义秒杀异常

8.1 事务

8.2 页面倒计时

8.3 安全

源代码 


一、需求

1.1 原则
    单个账号单个商品仅限购买一次(使用主键冲突来实现)

1.2 前台展示
    PC端:按单品区分
    倒计时:结束时间和即将开始时间
 
1.3 后台设置内容
    开始时间、结束时间(PC端按单品设置、移动端按时间段设置)
    商品库存数量设置

1.4 功能逻辑
    库存锁定(拖取商品后,原商品库存减少)
    库存返还(活动结束后,剩余库存返还至原商品)
    同一个用户购买一次后变更立即购买按钮,移除或变灰不可点

5.并发优化
    使用redis缓存数据优化,超时的基础上一致性维护
    调整数据库操作语句顺序
    事务SQL在数据库中执行(存储过程),因为本地执行sql速度很快,减少GC的影响

二、使用工具

maven(构建项目),git(版本控制工具),myeclipse(集成开发环境),junit(测试)

三、技术栈

spring,springmvc,mybatis(框架),mysql(数据库)
redis(缓存),bootstrap(页面),html,css,javascript,jquery(前端)

四、数据库设计

CREATE TABLE `seckill` (
  `seckill_id` bigint(20) NOT NULL auto_increment COMMENT '商品库存id',
  `name` varchar(120) NOT NULL COMMENT '商品名称',
  `number` int(11) NOT NULL COMMENT '库存数量',
  `create_time` timestamp NOT NULL default CURRENT_TIMESTAMP COMMENT '创建时间',
  `start_time` timestamp NOT NULL default '0000-00-00 00:00:00' COMMENT '秒杀开启时间',
  `end_time` timestamp NOT NULL default '0000-00-00 00:00:00' COMMENT '秒杀结束时间',
  PRIMARY KEY  (`seckill_id`),
  KEY `idx_start_time` (`start_time`),
  KEY `idx_end_time` (`end_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT&#
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老杨没掉头发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值