
正文
java秒杀活动代码实现 java秒杀系统设计
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用JAVA怎么写一个秒杀器。求具体代码
最好不要用java写秒杀器java秒杀活动代码实现,因为你就算用 httpclient 拿到的也是未经过渲染的html页面,很多页面js都没有加载,你根本不知道渲染之后的页面长什么样子,你最好学学木鱼的火车票抢票助手,java秒杀活动代码实现他用的是 firefox 的插件 scriptish 来写抢票脚本,其实抢票跟秒杀是一个原理的,java秒杀活动代码实现我第一个秒的程序就是照着他的程序改的,用这个上手也比较容易,但是要求你对javascript比较熟悉,不过比用java实现靠谱多了
相关问答
Q1: java秒杀并发怎么处理
用redis,比如秒杀一个商品,把该商品的信息放在redis中,主要是那个库存量,抢购的时候在redis中操作数据非常快,每秒差不多8万次读写操作,这样的并发量已经够用了
Q2: Java如何解决超卖
一、人数阀门设计:进行用户人群过滤。
商品数量只有100份,秒杀人数有10000人,那么我们就设计1道阀门(根据情况,可以设计3道或者2道都可以的)。
在整点的时候,我们对点击了“购买”按钮后,我们只运行500人进入信息填写页面,信息填写完成后提交订单。效果如下:
①商品详情点击购买(秒杀)--》②输入信息提交订单--》③进行支付
10000人 500人 (这里也可以设计阀门,只允许多少人进入支付)
其他未进入的如何处理乃?显示已抢完或者排队等待(这就是后面要提到的排队系统设计)。
二、会员排队设计:对用户进行排队,排在前面的先购买
这相当于是消息队列模式了,如果秒杀是立即知道结果,排队可能会有点鸡肋。
在第二步②输入信息提交订单后进行排队,排在前面的先购买,排在后面的后购买
三、问答问题设计:过滤掉一些反应慢的用户
在第一步①点击购买后跳转到问题页面,用户必须回答正确问题后,方可进入后面的流程
四、库存缓存设计:缓存库存,判断用户购买的商品是否还有,不读取数据库,速度快,也不会增加数据库负担,
经过前面的过滤,超卖的可能性比较低了提前将商品库存缓存起来,到下单购买的时候,用户购买了就减1,每次都通过库存缓存判断一下,如果为0就显示已抢完。
五、页面静态设计:尽量静态缓存化【CDN那些这里不做考虑】
第一步①商品详情页面,尽量进行缓存,减轻大批量用户在访问商品页面的时候,大量查询数据库。
问答问题页面:全静态,加载快,无数据库负担。
排队等待页面:全静态,加载快,无数据库负担。
排队结束页面:全静态,加载快,无数据库负担。
Q3: Java代码实现抽奖:从班级的学号中抽出一个一等奖,两个二等奖,三个三等奖
抽取问题, 重点是 同一个学号不能重复被抽取.
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以了
参考代码:数组法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过了
for (int i = 0; i stuNums; i++) {
nums[i]=i+1;//给学号赋值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i 2; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i 3; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; i stuNums; i++) {
list.add(i+1);
}
System.out.println("有序"+list);
Collections.shuffle(list);//打乱顺序
System.out.println("乱序"+list);
System.out.println("A等"+list.get(0));
System.out.println("B等"+list.get(1));
System.out.println("B等"+list.get(2));
System.out.println("C等"+list.get(3));
System.out.println("C等"+list.get(4));
System.out.println("C等"+list.get(5));
}
}
Q4: 用java如何实现秒杀流程啊
不考虑多服务器java秒杀活动代码实现,限制线程池java秒杀活动代码实现的大小和队列java秒杀活动代码实现的限制来实现。
代码如下java秒杀活动代码实现:
package org.zhang;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 单服务器用线程池实现秒杀的思路一
*
* @author zhanghaijun
*
*/
public class ExecutorsTest {
public static boolean flag = true; // 秒杀物品的标记
public static void main(String[] args) {
ThreadPoolExecutor pool = new ThreadPoolExecutor(1, 1, 0L,
TimeUnit.MILLISECONDS, new SynchronousQueueRunnable());
ThreadTest t1 = new ThreadTest("张三");
ThreadTest t2 = new ThreadTest("李四");
ThreadTest t3 = new ThreadTest("王五");
try {
pool.execute(t1);
} catch (Exception e) {
System.out.println(t1.getUserName() + "没有抢到");
}
try {
pool.execute(t3);
} catch (Exception e) {
System.out.println(t3.getUserName() + "没有抢到");
}
try {
pool.execute(t2);
} catch (Exception e) {
System.out.println(t2.getUserName() + "没有抢到");
}
pool.shutdown();
}
}
class ThreadTest extends Thread {
private String userName;
public ThreadTest(String userName) {
super();
this.userName = userName;
}
@Override
public void run() {
try {
Thread.sleep(200);
if (ExecutorsTest.flag) {
System.out.println(this.userName + "秒杀成功");
ExecutorsTest.flag = false;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
关于java秒杀活动代码实现和java秒杀系统设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






