java 抢票、库存量功能

想做一个库存量或者说抢票这样的类似功能

每购买一个,库存量-1 ,我的思路:
synchronize(clazz ){ //加锁,线程安全
int size = selectTotolSize(id); //得到库存量
if(size > 0){ //库存量大于0
size --;
}
updateNum(size) ; //更新库存量
}
请问思路可以吗??因为大量的修改数据库的操作,效率我不知道怎么样??
还是加一个缓存,先把库存量保存,一定时间再修改数据库??
求各位大神指点!!感激不尽!!

0

3个回答

如果你们的网站上面只有一个服务器,其实是没有问题的,之前我也曾经处理过类似问题,但是,如果有多台服务器,这个时候就需要考虑到分布式
具体可以参考http://blog.csdn.net/tannafe/article/details/6123412

1

如果你只是做一个习作,那么无可厚非,但是如果你真的打算做一个这样的系统,仅仅是在应用层线程并发以及同步,这种程序是毫无伸缩性可言的。换一句话说,这种程序根本没用。因为绕来绕去除了徒增程序复杂度以外,还是没法把程序扩展到多个服务器上。

1
curiouslearnerdhh
wive 恩恩,不是一个习作,是电子商务一个网站的功能,商品可以设置库存量,还有抢红包的功能,这和抢票系统就非常类似了,也要控制数量,现在不知道怎么实现,如果用户量大的话,怎么才是最好的方案?谢谢
4 年多之前 回复

你看看这个。
如果是并发系统的话那就另说了。

0
curiouslearnerdhh
wive 电子商城的一个功能,可以抢优惠券,要控制优惠券的数量,不知道怎么实现性能好,求指点
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA版12306抢票工具
JAVA版12306抢票工具,实现时间是2015-2016当前是2017-06-11不废话,上截图1、登录界面 2、主界面 3、订单界面 有话要说 原本是私人项目,但作者时间有限无法继续更新,因此交给广大coding伙计们。16年该项目可以实现登录、查票、刷票、查询订单、退订等功能。其中部分控件被我重写或修改。有些地方试试双击,比如席别那里,选择后想删除只要双击该席别就行。17年发现查票和提
java多线程模拟抢票
public class Test {  public static void main(String[] args) throws InterruptedException {   int time = 50;   int num = 50;   int people = 100;   TestThread t1 = new TestThread();   Thread[] thre
抢票软件12306java版
1、抢票软件的原理2、12306抓包分析
抢票系统的简单实现
引言 马上寒假了,想试试自己写一个抢票系统,占个坑。 1、splinter >>> from splinter.browser import Browser >>> b = Browser(driver_name="chrome") >>> b.visit("http://www.qq.com") 但是,运行第二行时出错, File "selenium\webdriver\com
多线程抢票
功能实现:多线程模拟售票系统 定义一个车票类,车票类拥有票号属性、 车票状态(未售、售出)属性和拥有者(String类型)属性;在主线程中定义一个票库(ArrayList数组列表)初始化票库并生产200张票; 定义一个乘客类继承自线程类,有一个名字(String类型)属性, 乘客类每隔10毫秒就去票库中查看有没票,如果有票就抢一张过来 (把车票标为售出状态,并把车票的拥有者标为自己的名字), 每个乘客抢到20张票就停止运行。 在主线程中创建10个乘客类并启动它们(开始抢票), 要求每个乘客
教你如何秒杀12306,JAVA程序抢票成功!分享~~~[附截图]
GOHOME最新版出世了!!!支持多人订票及指定车次等功能!!!更方便! JAVA程序GOHOME自动抢票成功!非常棒~~~不多说,直接截图上教程说明! 大家都在抢票,可谁让咱们是程序员呢。程序员就得用自己的方式抢票。咱不和农民工兄弟抢,咱在网上抢。祝大家好运~ GOHOME最新版下载地址: 点击下载最新版 不想注册的点击这里下载 没有分的点击下
多线程解决现实中的抢票问题(初级)
多线程解决现实中的抢票问题 以下为两种解决方式: 1.实现Runnable接口 2.继承自Thread 1.第一种方法(正确)Public class A extends Thread{ Public static int tickets = 100; Public static String str = new String(
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果 二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享 最近考虑到要过年回家买票,想到12306的反应迟钝,卡死、、,我就气愤,于是想着闲着也是闲着,索性再把我毕业答辩时所做的12306抢票软件给更新下,还是用自己的抢票软件来抢票吧,要不还是的站着回去,哎哎,只怪外出打工者太多,火车太少啊。好了,步入正题吧,先看看我最近的成果吧。        
java多线程之三种同步方法实现抢火车票
package com.homework; import java.util.concurrent.locks.ReentrantLock; class Ticket implements Runnable{ int count=3; ReentrantLock rt=new ReentrantLock(); //第三种方法,显示加锁,效率最高 Object obj=new Objec...
Java多线程:多线程模拟抢票应用
实现代码 package com.oumuv.ticket; /** * 多线程抢票应用 */ public class TicketModel { public static void main(String[] args) { TicketModel ticketModel = new TicketModel(); Ticket ticket ...
抢票软件的12306java实现
抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,
redis实现秒杀抢票功能
一,前言 实践是检验真理的唯一标准,纸上得来终觉浅嘛!想认识一个人,光靠个人资料怎么行,哪怕见面聊上那么一两句,那也是会产生很多偶然性的结果,俗话说,患难见真情,当然,此处不是让你去患难,而是和redis进行一个简单的交互,那其中机理虽不说详识,但大致什么样子和总体印象还是会有的。话不多说,撸起袖子就是干! 二,具体操作 1,打开eclipse,新建Maven工程, 2,额外导入jar包:...
教你如何秒杀12306,JAVA程序抢票成功!----阿冬专栏
教你如何秒杀12306,JAVA程序抢票成功! 来自:http://jingyan.baidu.com/article/ab69b270c403412ca7189f95.html 12306.cn 火车票 网络购票助手 1.1 要过年,先回家!要回家先买票!虽然大家翘首以盼的火车票终于实现网络购票了,但由于其各方面的不成熟,即使是常用电脑的
12306抢票系统无界面版本——(4)完成购票与抢票
引言 因为老师突然给了个比赛,所以就和我朋友一起参加了,我负责的工作是项目整合和界面的绘画,使用的语言是python,用pyQT5画的界面。项目完成这里我做一些笔记。 前面的爬取就直接看我朋友的文章吧 获取验证码:https://blog.csdn.net/r244925932/article/details/81227873 获取车票信息:htt...
高并发的下单、抢票等问题解决方法的原理分析
①为什么不能用数据库自带的表锁功能? 由于下单、抢票等是要写入数据库的,对数据库进行修改,所以采用的写锁,这样,被锁定的数据表就无法被其他地方使用,无论修改还是查询。比如一位用户购买商品时,锁定了商品表,另一位用户在浏览商品,则不能再去访问这张数据表了,不能访问表,意味着这一段时间加载不出商品,而高并发情况下,有很多的人下单。浏览商品,这段很短的锁表时间被放大化,会拖延整个网站的访问速度。 ②...
多线程售票lock锁(一)
package testlock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class SellTicket implements Runnable { // 定义票 private int tickets = 100;
12306抢票软件实现(二)
近期好多人私信我,能不能需要分享完整代码。为了帮助大家,我以及将代码整理和教学视频我已经上传了CSDN,欢迎私信交流,共同学习共同进步:代码及视频下载地址 求给五星好评,谢谢啦 前面已经介绍了实现登录12306(https://blog.csdn.net/zjt980452483/article/details/81167765),如果想实现免输入验证码的话,可以借助一些打码平台,这个部分大家可...
不花冤枉钱就能回家 --- 程序员教你如何高效抢票
临近过年回家,抢一张回家过年的票是越来越难。你用12306抢吧,点的太慢。拼不过抢票软件的速度。你用智行携程飞猪等软件抢吧,差价太大,一张票就得多花好几十块钱。 一票难求的问题一直都存在。这是铁道部每年的说法。(现在好像都不说了,因为太难解决了)。 在这种情况下。我们应该如何高效,免费抢到回家的车票呢? 下面我就来分享一下当前很流行的,几乎所有程序员都在用的一款神器---【12306 b...
java最新 抢票2017版
自己练手写的一个java最新抢票小程序 2017-01-06测试可用 仅供大家学习交流参考.不足之处请多多包涵
分布式、高并发、高性能场景(抢购、秒杀、抢票、限时竞答)数据一致性解决方案
技术指标: PV(Page View, 页面浏览量)在千万级别 QPS(Query Per Second, 每秒处理请求数)在百万级别 数据量在千亿级别 接口响应速度不能超过150毫秒 用户提交请求到页面呈现不能超过3秒 架构设计: 1. 从LAMP架构转为面向服务架构(服务可以用多种开发语言实现,不受一种开发语言限制) 2. 对海量数据做Sharding分片,分库分表 3. 从有状态服务改为...
12306抢票程序java源码
此资源包含完整的抢票程序 java源码,可直接导入到eclipse中,能直接运行打开, 自动识别验证码,可以自定义出发站点和车次及座位,具有强大的刷票能力,也能方便程序员们二次开发
多线程并发之抢火车票案例--解决方案一(同步代码块解决)
package com.thread;/** * 抢票示例 * @author 11011844 * */class ThreadTrain implements Runnable {private Object obj =new Object();private int trainCount=100;//设置100张火车票public void run() {while(trainCount&g...
商品库存的基本概念
如果某种商品的库存量过多,overstock,那么可能存在问题。比如一定时期内卖不出去,会导致 1 占用现金流。这个很重要,一件商品售价100块钱,在年初的时候卖出去和在年末卖出去的概念是大不一样的。理解成现金也是有个折旧率的。 2 占用库房空间,浪费租金成本。 3 消耗不必要的人力物力水电。 4 间接影响其他商品的备货。 所以控制商品库存不超过合理的数量非常重要,可以节省成本,降低运营
Python突破12306最后一道防线,实现自动抢票(附源码)
一年一度的春运又来了,今年我自己写了个抢票脚本。使用Python+Splinter自动刷新抢票,可以成功抢到。(依赖自己的网络环境太厉害,还有机器的好坏)Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互,Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,
Linux之线程同步与互斥,模拟抢票系统
线程的同步与互斥 相关背景概念 临界区 :每个线程内部访问自己资源的代码叫做临界区: 临界资源 :多个执行流共享的资源叫做临界资源 互斥 :在任何时刻,只能有且仅有一个执行流访问临界区的临界资源 原子性 :一个操作不会被任何调度机制打断,要么完成,要么没完成,只有两种状态,常见的++,–都不是原子操作,因为汇编代码不止一条 互斥量mutex 大部分情况,线程使用的数据都是局部变量,变量的地址...
火车抢票源码
火车票抢票源码,很管用,可能有些过时了,作为学习使用还是可以的。
12306自动抢票软件代码实现
昨天我发的是抓取的12306数据包,然后分析了一下,今天按照昨天的分析 用代码实现了,如果有需要的同学们可以看一下 ,实现的功能有,登录,验证码识别,自动查票,有余票点击预定, 差了最后一步提交订单。同学们可以自己研究一下。 import requests import time import dmpt import re import random from copyheader
微信公众号抢票系统开发笔记
本次组队小作业的开发项目是微信公众号的抢票系统。我负责的是管理员的一些后台操作以及公众号内通过点击按钮、回复文字可以实现的一些票务功能的后端开发。 以下是我在开发过程中遇到的问题、解决方法以及开发的一些心得体会。 前期准备工作 开发环境是64位windows系统,MySQL版本为8.0.12,Django版本为1.9.5。由于django不支持python3.7,因此本次使用的是python3.6...
Python3.6实现12306火车票自动抢票,附源码
Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编...
12306抢票体验
1..环境:Ubuntu虚拟机+python抢票小程序+Virtualenv沙箱 2.抢票流程 十一国庆假期,抢票车次G395,放票时间是12:30分,为了能第一时间抢到飘飘,减少登陆验证时间,程序定时12:28启动,留2分钟时间进行CDN验证和登陆验证码识别,2分钟内cookies不会过期 3.误差 昨天测试的定时抢票妥妥的,然后挂起虚拟机,在Windows主机上看了些技术博客,就再没上...
12306 抢票
一年一度的抢票季又来临了,话说有点技术就是好,会python语言就更棒啦,今年抢票不再是难题。难缠的购票平台验证码,看看我是如何用python来快速解决抢票软件的。 首先大家需要有splinter、还需要一个浏览器的驱动(我推荐chrome)具体下载地址和安装方法就不介绍了,现在网络很发达,百度一下你就知道!你只要根据自己的电脑系统选择相应的下载包就可以喽。我的习惯是解压后直接放到C:Windo...
利用Python抢票,攻破12306的最后一道防线
为了方面和节约时间,本次使用的python编译器和解释器分别为pycharm,python3.6.1RC
教你如何秒杀12306,JAVA程序抢票成功 分享 附截图
教你如何秒杀12306,JAVA程序抢票成功 分享 附截图
5. python多进程锁-实现简易抢票
一、主题 Lock类与RLock类相同:由于进程之间随机调度:某进程可能执行n条后,CPU接着执行其他进程。为了多个进程同时操作一个内存中的资源时不产生混乱,我们使用锁。 Lock类与RLock类的区别:无论是Lock还是RLock,提供的方法都非常简单,acquire和release。但是Lock和RLock的区别是什么呢?RLock允许在同一线程...
看到的redis简单例子,类似于抢票的非常简单例子
package sencondKill; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.jgroups.util.UUID; import redis.clients.jedis.Jedis; impor
Github上最新发布的12306 自动抢票开源工具(Python)
12306 鉴于市场上的大多数抢票软件的安全问题和效率问题,就手动修改了开源的代码来为自己赢得捡漏的机会,谁叫本电脑是linux系统呢。缩减刷新的频率也是一种策略,哈哈!!! 这是一款工具 这是一款抢票工具 这是一款 12306 自动抢票开源工具 这是一款 12306 自动抢票开源工具基础上优化更改的捡漏器 学习Python中有不明白推荐加入交流群                 号:9...
现阶段最新的12306爬虫,python助你抢票成功!
  此次要实现的目标是登录12306网站和查看火车票信息。 具体步骤                 学习Python中有不明白推荐加入交流群                 号:516107834                 群里有志同道合的小伙伴,互帮互助,                 群里有不错的学习教程!   一、登录 登录功能是通过使用selenium实现的,用到了超级...
12306---抢票分析
研究了12306官网每5秒自动查询是否有票的相关代码,是利用了ajax技术对指定接口进行查询,如果返回值为有票,那就告知用户有票了并进入订票界面。官网用5秒一次的刷新速度,是保证了服务器在全国同时购票的几万人每5秒一次访问的情况下不崩溃而设定的较为理想的值,但很多抢票软件都是以更短的时间轮询以期在最快的时间内获取是否有票的信息。为保证尽可能地刷到票,我就把这个时间设定为0.5秒,并将超时时间设定为
PHP 高并发、抢票、秒杀 解决方案
对于抢票、秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比 如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人
买票系统模拟Java高并发(ConcurrentQueue的解决方案)
需求: 对于买票系统,容器中放入1000张票,开启10个线程抢票。 (1)很容易想到用加锁的办法解决线程并发问题 下面使用synchronized关键字解决 1public class SellTicket{2    static ListString> tickets = new LinkedListString>();//1.初始化票容器3    4
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python学院抢票 python抢票脚本教程