秒杀系统 mysql_秒杀系统-介绍

秒杀系统

ffa394a55823818d1fcba347f8c82abc.png

秒杀系统其实是针对库存做的系统。用户成功秒杀商品,对于我们系统的操作就是减库存和记录用户的购买明细。用户的购买明细包括记录谁购买成功、购买成功的时间和付款信息。而对于减库存操作,需要考虑到以下两个问题:

(1)若是用户成功秒杀商品,我们记录了其购买明细,却没有减库存。会导致商品的超卖。

(2)减了库存却没有记录用户的购买明细,导致商品的少卖。

对于上述两个问题,可以通过MySQL内置的事务机制进行处理,它可以准确的帮我们完成减库存和记录用户购买明细的过程。

对于秒杀系统,我们只是实现秒杀的一些功能:

(1)秒杀接口的暴露。

(2)执行秒杀的操作。

(3)相关查询,比如说列表查询,详情页查询。

秒杀系统包括包括三个模块的设计,DAO层、Service层和Web层的设计,另外考虑到系统高并发的问题,从而设计了系统高并发的处理。在系统设计之前,为了更好地理解系统的开发过程,对相关技术进行描述。

6.3.1 相关技术介绍

MySQL:

创建相关表、事务的应用和行级锁。

DAO:

数据访问对象基本上是一个对象或接口,它提供对基础数据库或任何其他持久存储的访问。

MyBatis:

MyBATIS是支持自定义SQL、存储过程和高级映射的第一类持久性框架。MybATIS消除了几乎所有的JDBC代码和手动设置参数和检索结果。MyBatis可以使用简单的XML或注释的配置和地图图元,地图接口和java POJO(Plain Old java对象)到数据库的记录。

SLF4J:

java的简单日志门面(是slf4j)作为一个简单的立面或抽象的各种日志框架(例如java.util.logging,logback,log4j)允许用户插入所需的部署时间日志框架。

登录项目

Logback:

回溯的目的是作为流行的Log4J项目的继承者,拿起Log4J离开的地方。

日志回退的架构足够通用,以便在不同的情况下应用。目前,回溯被分为三个模块:回溯核心、回溯经典和回溯访问。

回溯核心模块为其他两个模块奠定基础。LogLogic经典模块可以被同化到Log4J的一个显著改进的版本中。此外,回溯经典本身实现了SLF4J API,这样您就可以轻松地在回溯和其他日志记录框架之间来回切换,例如Log4J或JavaUTIL日志(JUL)。

回溯访问模块与Servlet容器(如Tomcat和JETTY)集成,提供HTTP访问日志功能。注意,您可以轻松地在LogCub核心之上构建自己的模块。

C3P0:

C3P0是一个易于使用的库,通过使用JDBC3规范定义的功能和JDBC2的可选扩展来增强传统JDBC驱动程序“企业就绪”。

Spring framework:

Spring框架是java平台的一个应用框架和反转控制容器。该框架的核心功能,可以在任何java应用程序使用,但也有在顶部的java EE平台构建Web应用的扩展。

Spring MVC框架:

Spring WebMVC框架提供了模型视图控制器(MVC)体系结构和准备好的组件,这些组件可以用来开发灵活和松散耦合的Web应用程序。MVC模式导致分离应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑),同时在这些元素之间提供松散耦合。

该模型封装应用程序数据,一般来说,它们将由POJO组成。

视图负责渲染模型数据,一般来说,它生成客户端浏览器可以解释的HTML输出。

控制器负责处理用户请求并建立适当的模型并将其传递给视图进行渲染。

taglib:

TAGLIB指令声明您的JSP页面使用一组自定义标记,标识库的位置,并提供一种标识JSP页面中自定义标记的方法。

JSTL:

JavaServer页面标准标签库(JSTL)是一个有用的JSP标签集合,它封装了许多JSP应用程序共同的核心功能。JSTL支持常见的结构化任务,如迭代和条件语句、用于操纵XML文档的标记、国际化标记和SQL标记。

protostuff:

具有支持后向兼容性(模式演进)和验证的内置支持的序列化库。

MySQL:

Create related tables,the applications of transaction and row-level lock.

DAO:

The Data Access Object is basically an object or an interface that provides access to an underlying database or any other persistence storage.

MyBatis:

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

SLF4J:

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

Logback Project

Logback:

Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off.

Logback's architecture is sufficiently generic so as to apply under different circumstances. At present time, logback is divided into three modules, logback-core, logback-classic and logback-access.

The logback-core module lays the groundwork for the other two modules. The logback-classic module can be assimilated to a significantly improved version of log4j. Moreover, logback-classic natively implements the SLF4J API so that you can readily switch back and forth between logback and other logging frameworks such as log4j or java.util.logging (JUL).

The logback-access module integrates with Servlet containers, such as Tomcat and Jetty, to provide HTTP-access log functionality. Note that you could easily build your own module on top of logback-core.

c3p0:

c3p0 is an easy-to-use library for making traditional JDBC drivers "enterprise-ready" by augmenting them with functionality defined by the jdbc3 spec and the optional extensions to jdbc2.

Spring framework:

The Spring Framework is an application frameworkand inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform.

Spring - MVC Framework:

The Spring Web MVC framework provides Model-View-Controller (MVC) architecture and ready components that can be used to develop flexible and loosely coupled web applications. The MVC pattern results in separating the different aspects of the application (input logic, business logic, and UI logic), while providing a loose coupling between these elements.

The Model encapsulates the application data and in general they will consist of POJO.

The View is responsible for rendering the model data and in general it generates HTML output that the client's browser can interpret.

The Controller is responsible for processing user requests and building an appropriate model and passes it to the view for rendering.

taglib:

The taglib directive declares that your JSP page uses a set of custom tags, identifies the location of the library, and provides a means for identifying the custom tags in your JSP page.

JSTL:

The JavaServer Pages Standard Tag Library (JSTL) is a collection of useful JSP tags which encapsulates the core functionality common to many JSP applications. JSTL has support for common, structural tasks such as iteration and conditionals, tags for manipulating XML documents, internationalization tags, and SQL tags.

protostuff:

A serialization library with built-in support for forward-backward compatibility (schema evolution) and validation.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MOSS中自定义WebService

(转http://tech.ddvip.com/2008-10/122527111786701.html,更详细见msdn:http://msdn.microsoft.com/zh-cn/library/ms464040.aspx) MOSS中已经提供的webservice都放在虚拟目录_vti_bin中,对应的物理目录为c:Program FilesCommon FilesMicroso…

C语言排序算法总结

From: http://www.diybl.com/course/6_system/linux/Linuxjs/20091028/180420.html 排序算法一直都是让我头疼的算法。为了全面掌握排序算法,我就整理了常用的排序算法。 首先我们来了解一些基本概念: (1)稳定排序和非稳定排序 简…

js计算数组中每个元素出现的次数(2种方法)

js计算数组中每个元素出现的次数(2种方法) js动态生成唯一id Javascript生成全局唯一标识符(GUID,UUID)的方法

执行execute时对象名 retime_record 无效_MyBatis 的执行流程怎么可以讲的这么透彻

前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置…

iOS统计项目的代码总行数

如果要统计ios开发代码,包括头文件的,CD到项目目录下,命令如下 ① 列出每个文件的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l ② 列出代码行数总和f…

C/C++中预编译#,##,#error作用

From: http://bluefairy218.blog.163.com/blog/static/313917532008456397524/ #是生成字符串: #define a(x) #x a(bc) > "bc" ##是连接: #define a(x) abc##x a(123) > abc123 #error是生成…

WCF安全之ASP.NET兼容模式

本文是利用ASP.NET兼容模式实现WCF安全的一个完整示例,其中用到了ASP.NET的Forms身份验证及Membership,并启用了角色管理。 由于整套安全方案完全利用ASP.NET相关功能实现,而未用到WCF安全策略相关的包括WCF身份验证、WCF授权及WCF传输安全等…

javase基础复习攻略《七》

容器是什么?通俗的讲容器指可以装其它东西的器皿,前面我们提到的数组便是容器的一种,容器的概念在JAVA中便可以理解为用来存储其它对象的器皿。本篇就让我们一起来认识一下JAVA为我们提供的容器类。 1、容器API: J2SDK提供的容器A…

mysql2000数据库四合一_MSSQL2000四合一

MSSQL2000四合一是包含了MS Sql Server 2000 DEVELOPER、ENTERPRISE、PERSONAL、STANDARD 四个版本。在解压目录下有 SQL2000-KB884525-SP4-x86-CHS.EXE 这是SQL 2000 的 sp4 补丁。记录安装完后一定要安装上。个人版、企业版、专业版、开发版SQL Server 2000 是 Microsoft .NE…

数据库的种类

From:http://www.job168.com/info/read_87955.html 数据库的种类 大型数据库有:Oracle、Sybase、DB2、SQL server 小型数据库有:Access、MySQL、BD2等。 2007年4月29日消息,国外媒体报道,据权威调研机构IDC初步数据显示&#x…

Visual Studio Code超级装逼编辑自带火花插件Power Mode

Visual Studio Code超级装逼编辑自带火花插件Power Mode

IE6不支持PNG图片透明效果的完美解决方案(完善版)

可怜的IE6,不支持PNG图片透明,这已经是其众多“BUG”中,不是那么显眼的一个,但也是让部分人头痛的一个了。(今天在机房那破机器上IE6忘了抓图了,现在想给大家看效果也难啊。)发个PNG大家看看。 …

更改VS的运行主窗体

Program.cs中Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());把new Form1()改成你需要启动的窗体转载于:https://www.cnblogs.com/moyuling/p/4337593.html

jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)

1、将连接Mysql数据库的jar文件,放到ActiveMQ的lib目录下2、修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式2.1 修改原来的kshadb的持久化数据的方式2.2 连接Mysql的配置(注意配置文件放置的位置)3、将数据持久化Mysql的运行截图3.1 …

Dynamic Performance Tables not accessible,Automatic Statistics...

From: http://igogo007.iteye.com/blog/443609 使用的PLSQL Developer 工具在对oracle 10g插入数据或查询数据的时候都会报以下错误:Dynamic Performance Tables not accessible, Automatic Statistics Disabled for this session. You can disable statistics…

看完这篇不要告诉我不会封装ant design弹框组件了

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 获取前端学习知识 1设计需求 封装一个弹框组件 直接调用接口 2技术栈 ant designreact 设计第一步 绘制样式 <ModalmaskClosable{false}visible{visible}title{签收协议}onOk{this.handleSignFor}onCancel…