# SSM实战项目——Java高并发秒杀API
## 项目介绍
>何为秒杀?
所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。
>为何选择Java高并发秒杀作为实战项目?
* 秒杀业务场景具有典型事务特性
* 秒杀/红包类需求越来越常见
>为何使用SpringMVC+Spring+MyBatis框架
* 框架易于使用和轻量级
* 低代码侵入性
* 成熟的社区和用户群
>能从该项目得到什么收获?
* 框架的使用和整合技巧
* 秒杀分析过程与优化思路
>项目来源
这是慕课网上的一个免费项目教学视频,名为Java高并发秒杀API,一共有如下四节课程,附带视频传送门(在视频中老师是用IDEA,本文用的是Eclipse)
* [Java高并发秒杀API之业务分析与DAO层](http://www.imooc.com/learn/587)
* [Java高并发秒杀API之Service层](http://www.imooc.com/learn/631)
* [Java高并发秒杀API之Web层](http://www.imooc.com/learn/630)
* [Java高并发秒杀API之高并发优化](http://www.imooc.com/learn/632)
## 相关技术介绍
>MySQL
* 表设计
* SQL技巧
* 事务和行级锁
>MyBatis
* DAO层设计与开发
* MyBatis合理使用
* 与Spring整合
>Spring
* Spring IOC整合Service
* 声明式事务运用
>SpringMVC
* Restful借口设计和使用
* 框架运作流程
* Controller开发技巧
>前端
* 交互设计
* Bootstrap
* jQuery
>高并发
* 高并发点和高并发分析
* 优化思路并实现
## 开发环境
* **操作系统**:Windows 8
* **IDE工具**:Eclipse
* **JDK**:JDK1.7
* **中间件**:Tomcat 7.0
* **数据库**:MySQL 5.0
* **构建工具**:Maven
* **框架**:SSM
## 项目总结
>本文根据慕课网的视频教学进行了相应的学习总结,全文较长,分为四节,附带CSDN传送门
* [**Java高并发秒杀API(一)之业务分析与DAO层**](http://blog.csdn.net/lewky_liu/article/details/78159983)
* [**Java高并发秒杀API(二)之Service层**](http://blog.csdn.net/lewky_liu/article/details/78162149)
* [**Java高并发秒杀API(三)之Web层**](http://blog.csdn.net/lewky_liu/article/details/78162153)
* [**Java高并发秒杀API(四)之高并发优化**](http://blog.csdn.net/lewky_liu/article/details/78166080)
>项目源码
* [**源码下载**](http://download.csdn.net/download/lewky_liu/10013556)
* [**GitHub地址**](https://github.com/lewky/Seckill)
>How to play
* 将下载的源码解压后作为Maven项目导入到IDE工具中;或者将从GitHub克隆下来的项目作为Maven项目导入到IDE工具中
* 打开项目中的jdbc.properties文件,修改里边的url,username和password
* 将项目部署到Tomcat上并启动
* 可以直接用IDE内嵌的Tomcat启动项目
* 或者将本项目通过**mvn clean package**命令打成war包并丢到本地安装的Tomcat的webapps目录下,接着启动Tomcat即可
* 在浏览器上访问:`http://localhost:8080/seckill`
---
# [Java高并发秒杀API(一)之业务分析与DAO层](http://blog.csdn.net/lewky_liu/article/details/78159983)
>本SSM实战项目使用了Maven进行依赖管理,如果有不清楚Maven是什么的可以参考[这篇文章](http://blog.csdn.net/lewky_liu/article/details/78138381)
## 1. 创建Maven项目和依赖
### 1.1 创建项目前需要先安装Maven,并设置好环境变量
* [Maven下载](http://download.csdn.net/download/lewky_liu/10000144)
* 设置环境变量
* 新建变量`MAVEN_HOME`,值为Maven的目录`X:\XXX\apache-maven-XXX`
* 将`%MAVEN_HOME%\bin`添加到`Path`变量下
* 运行CMD,输入`mvn -v`后可以看到Maven的版本信息等则表示安装成功
### 1.2 创建Maven项目有两种方式,如下
**第一种创建方式:使用命令行手动创建**
mvn archetype:generate -DgroupId=com.lewis.seckill -DartifactId=seckill -Dpackage=com.lewis.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp
在视频中使用的是`archetype:create`,该方法已被废弃,请使用`archetype:generate`来创建。命令行执行后会创建一个`maven-archetype-webapp`骨架的Maven项目,其中`groupId`是项目组织唯一的标识符,实际对应JAVA的包的结构;`artifactId`是项目的唯一的标识符,实际对应项目的名称;`package`一般是`groupId`+`artifactId`,是自动生成的,可以修改
**第二种创建方式:借助IDE工具的Maven插件来创建项目**
>Eclipse安装Maven插件
* 不知道怎么Maven插件的请参考[该博文](http://blog.csdn.net/wode_dream/article/details/38052639),推荐使用link方式手工安装的方式
* 如果是手工安装Maven插件的,可能会缺少pom.xml 图形化编辑工具,请另外添加进去,具体情况请参考[该博文](http://www.micmiu.com/software/build/eclipse-m2e-plugins/)
* 已经安装了Maven插件的请走下一个步骤
* `File`→`New`→`Other...`→`Maven Project`→`Next`,进入如下界面
![Maven1](https://github.com/lewky/MarkdownImages/blob/master/resource/CSDN/Maven1.jpg?raw=true)
* 点击`Next`,选择要构建的骨架`maven-archetype-webapp`,如下图
![Maven2](https://github.com/lewky/MarkdownImages/blob/master/resource/CSDN/Maven2.jpg?raw=true)
* 点击`Next`,填写`groupId=com.lewis.seckill`,`DartifactId=seckill`,`package=com.lewis.seckill`(根据实际情况填写),然后`Finish`
>如果是第一次使用Eclipse的Maven插件来创建Maven项目的可能会遇到一些问题,可以参考[该博文](http://blog.csdn.net/lewky_liu/article/details/78138381)
### 1.3 修改pom.xml文件
当创建完Maven项目后会在根目录下有一个pom.xml文件,Maven项目通过pom.xml进行项目依赖的管理,如果没有该xml文件,Eclipse不会将该项目当作一个Maven项目
>添加项目需要的jar包依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lewis</groupId>
<artifactId>seckill</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>seckill Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--补全项目依赖 -->
<!--1.日志 java日志有:slf4j,log4j,logback,commons-logging
slf4j,commons-logging:是规范/接口 日志实现:log4j,logback
使用:slf4j+logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.1</version>
</dependency>
<!--实现slf4j接口并整合 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.1</version>
</dependency>
<!--2.数据库相关依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.1</version>
</dependency>
<!--3.dao框架:MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!--mybatis自身实现的spring整合依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
<!--4.Servlet web相关依赖 -->
<dependency>
<groupId>taglibs</groupId>
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
SSM实战项目——Java高并发秒杀API 何为秒杀? 所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。 为何选择Java高并发秒杀作为实战项目? 秒杀业务场景具有典型事务特性 秒杀/红包类需求越来越常见 为何使用SpringMVC+Spring+MyBatis框架 框架易于使用和轻量级 低代码侵入性 成熟的社区和用户群 能从该项目得到什么收获? 框架的使用和整合技巧 秒杀分析过程与优化思路 相关技术介绍 MySQL 表设计 SQL技巧 事务和行级锁 MyBatis DAO层设计与开发 MyBatis合理使用 与Spring整合 Spring Spring IOC整合Service 声明式事务运用 SpringMVC Restful借口设计和使用 框架运作流程 Controller开发技巧 前端 交互设计 Bootstrap jQuery 高并发 高并发点和高并发分析 优化思路并实现
资源推荐
资源详情
资源评论
收起资源包目录
SSM实战项目——Java高并发秒杀API.zip (41个子文件)
sql
execute_seckill.sql 1KB
schema.sql 2KB
pom.xml 5KB
备注.txt 39KB
src
test
java
com
lewis
dao
cache
RedisDaoTest.java 1KB
SuccessKilledDaoTest.java 1KB
SeckillDaoTest.java 1KB
service
SeckillServiceTest.java 3KB
main
resources
logback.xml 451B
spring
spring-web.xml 2KB
spring-dao.xml 3KB
spring-service.xml 1KB
jdbc.properties 142B
mybatis-config.xml 1KB
java
com
lewis
mapper
SuccessKilledDao.xml 1KB
SeckillDao.xml 2KB
web
SeckillController.java 4KB
dao
SuccessKilledDao.java 636B
cache
RedisDao.java 2KB
SeckillDao.java 875B
service
SeckillService.java 2KB
impl
SeckillServiceImpl.java 6KB
enums
SeckillStatEnum.java 719B
entity
Seckill.java 1KB
SuccessKilled.java 1KB
exception
RepeatKillException.java 414B
SeckillCloseException.java 379B
SeckillException.java 311B
dto
SeckillResult.java 871B
Exposer.java 2KB
SeckillExecution.java 2KB
webapp
WEB-INF
web.xml 1006B
jsp
list.jsp 2KB
detail.jsp 3KB
common
tag.jsp 199B
head.jsp 770B
index.jsp 79B
resources
script
seckill.js 6KB
META-INF
MANIFEST.MF 36B
.gitignore 405B
README.md 38KB
共 41 条
- 1
资源评论
程序媛小y
- 粉丝: 5613
- 资源: 102
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- c语言对对碰游戏源码.zip
- 新录音.m4a
- shufflenet模型-基于人工智能的卷积网络训练识别中药饮片-不含数据集图片-含逐行注释和说明文档.zip
- resnet模型-基于图像分类算法对7种水果识别-不含数据集图片-含逐行注释和说明文档.zip
- JMeter使用教程.md
- JMeter使用教程.md
- mobilenet模型-基于图像分类算法对农作物病害部位识别-不含数据集图片-含逐行注释和说明文档.zip
- 【资源免费分享】MP4文件自动分轨工具(内附使用录像介绍)
- densenet模型-基于人工智能的卷积网络训练识别人行为-不含数据集图片-含逐行注释和说明文档.zip
- JMeter使用教程.md
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功