seckill

Java高并发秒杀系统API

慕课网课程:

  1. Java高并发秒杀API之业务分析与DAO层
  2. Java高并发秒杀API之Service层
  3. Java高并发秒杀API之web层
  4. Java高并发秒杀API之高并发优化
  5. Java秒杀系统方案优化 高性能高并发实战

秒杀功能

  • 秒杀接口暴露
  • 执行秒杀
  • 相关查询

代码开发阶段


技术总结

联合主键,避免重复秒杀

-- 秒杀成功明细表
-- 联合主键
PRIMARY KEY (seckill_id, user_phone),

在这里使用秒杀商品id+用户手机号作为秒杀成功的一个联合主键。当用户使用该手机秒杀同一件商品时从数据库层面来说是不允许的。
可以从单元测试的日志查看:

	private static final Log log = LogFactory.get();

	@Test
	public void testInsertSuccessKilled() {
		String seckillId = "c18c169938c311e89fa754ee75c6aeb0";
		String userPhone = "18701012345";
		int insertCount = successKilledMapper.insertSuccessKilled(seckillId, userPhone);
		log.info("insertCount: {}", insertCount);
	}

执行结果:

  1. 第一次:INFO cn.colg.dao.SuccessKilledMapperTest - insertCount: 1 表示插入成功
  2. 第二次:INFO cn.colg.dao.SuccessKilledMapperTest - insertCount: 0 表示插入失败
使用注解控制事务方法的优点

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>	改为	<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>	改为	<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt"%>

使用说明

  1. 首先从github上把项目传到本地,可以直接下载项目的压缩包,点击Clone or download,然后Download Zip。也可以通过git,使用git clone https://github.com/colg-cloud/seckill 命令,把项目克隆到本地
  2. 然后修改数据库连接信息,在resources目录下jdbc.properties配置文件中修改
  3. 使用maven tomcat7插件启动项目, 进入项目目录,打开cmd输入:mvn tomcat7:run

Visit original content creator repository
https://github.com/sheep-cloud/seckill

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *