秒杀系统 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…

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

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

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…

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 …

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

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

mysql 报错3534_win7下安装MYSQL报错:MYSQL 服务无法启动的3534问题

win7下安装MYSQL,只到“net start mysql”这一步报错:3534的错误&#xff1a;是直接官网下载的压缩文件.不是安装文件.解决方法:1:环境变量PATH添加完成(例如&#xff1a;h:\mysql\\bin2:在mysql目录下&#xff0c;新建data目录。3:在mysql目录下 新建新建一个默认配置文件my.i…

Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映

前言&#xff1a; 如果你已经厌倦了使用PPT设置路径、设置时间、设置动画方式来制作动画特效、那么Impress.js将是你一个非常好的选择。 用它制作的PPT将更加直观、效果也是嗷嗷美观的。 当然&#xff0c;如果用它来装X&#xff0c;是需要付出一些代价的&#xff0c;不过如果你…

mysql gtid 主主_mysql GTID主从复制(主库在线,添加新丛库)

要求&#xff1a;1、 主库上线&#xff0c;主库不停止服务的前提下做主从复制2、 新添加一个丛库操作&#xff1a;1、 在主库导出数据(主库正常运行)&#xff1b;2、 将主库的sql文件传到丛库&#xff1b;3、 丛库恢复数据库&#xff…

JS 画饼图,折线图

网址&#xff1a; http://www.hcharts.cn/demo/index.php 效果图&#xff1a; 它的网址里面都很全的。简单实用扣代码即可 使用时注意数据格式即可 1         //获取mood_evalue的百分比2 $total_mood_evalue 0;3 //初始化key的数组&…

vim、gvim在windows下中文乱码的终极解决方案

From: http://www.liuhuadong.com/archives/68/index.html vim、gvim在windows下中文乱码的终极解决方案 在windows下vim的中文字体显示并不好&#xff0c;所以我们需要调整字体显示编码为utf-8&#xff0c;只有这样才能使用美观的中文。这时候可能出现很多中文乱码。 如&#…

mysql业务繁忙时能建索引吗_MySQL DBA面试高频三十问

原标题&#xff1a;MySQL DBA面试高频三十问前言本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水.前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,…