精华内容
下载资源
问答
  • 关于java--火车站买票

    2021-02-12 16:11:26
    看了翁恺老师的视频(b站版)后,我对于老师课上讲的火车站买票的小程序(现在只是一段代码)我觉得可以这样添加些,求大佬精简修改。import java.util.Scanner;public class njava01{public static void main(String[]...

    看了翁恺老师的视频(b站版)后,我对于老师课上讲的火车站买票的小程序(现在只是一段代码)我觉得可以这样添加些,求大佬精简修改。

    import java.util.Scanner;

    public class njava01{

    public static void main(String[]args){

    Loop:for(int i=0;i<=10;i++){

    System.out.println("Please type in the ticket number you want to buy :");

    Scanner in = new Scanner(System.in);

    int ticket = in.nextInt();

    if(ticket==1||ticket==2||ticket==3){

    switch (ticket){

    case 1:

    System.out.println("Please put in money :");

    int money1 = in.nextInt();

    if(money1 >= 10){

    System.out.println("Here is your ticket.");

    System.out.println("Pay back you $"+(money1-10));

    System.out.println("****ticket01****");

    System.out.println("**From A to B **");

    System.out.println("**price : 10$ **");

    }else{

    System.out.println("Your money is not enough.");

    }

    break;

    case 2:

    System.out.println("Please put in money :");

    int money2 = in.nextInt();

    if(money2 >= 12){

    System.out.println("Here is your ticket.");

    System.out.println("Pay back you $"+(money2-12));

    System.out.println("****ticket02****");

    System.out.println("**From A to C **");

    System.out.println("**price : 12$ **");

    }else{

    System.out.println("Your money is not enough.");

    }

    break;

    case 3:

    System.out.println("Please put in money :");

    int money3 = in.nextInt();

    if(money3 >= 16){

    System.out.println("Here is your ticket.");

    System.out.println("Pay back you $"+(money3-16));

    System.out.println("****ticket03****");

    System.out.println("**From A to D **");

    System.out.println("**price : 16$ **");

    }else{

    System.out.println("Your money is not enough.");

    }

    break;

    }

    break Loop;

    }else if(i<10){

    System.out.println("You leave "+(9-i)+" times chance to try.");

    }else{

    System.out.println("You type in too many times error number");

    System.out.println("Sorry, your account is locked, please try again in the next time.");

    }

    }

    System.out.println(" ");

    System.out.println("Have good time on JavaStation !");

    }

    }

    展开全文
  • #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;pthread.h&gt; pthread_cond_t cond; //这里要用到条件变量 pthread_mutex_t mutex; ... int i =...
    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    
    pthread_cond_t cond;                 //这里要用到条件变量
    pthread_mutex_t mutex;
    
    int ticketcount = 100;
    
    void delay()
    {
    	int i = 10000, j;
    	while(i > 0)
    	{
    		j = 10000;
    		while(j > 0)
    		{
    			j--;
    		}
    		i--;
    	}
    }
    
    void *ticketA(void *arg)
    {
    	int cur_ticket;
    	while(1)
    	{
    		pthread_mutex_lock(&mutex);
    		cur_ticket = ticketcount;
    		delay();
    		if(cur_ticket <= 51)                  //条件变量的信号提醒
    		{
    			pthread_cond_signal(&cond);
    		}
    		if(cur_ticket <= 0)
    		{
    			pthread_mutex_unlock(&mutex);
    			break;
    		}
    		printf("A mai %d\n", cur_ticket);
    		cur_ticket--;
    		ticketcount = cur_ticket;
    		pthread_mutex_unlock(&mutex);
    	}
    }
    
    void *ticketB(void *arg)
    {
    	int cur_ticket;
    	while(1)
    	{
    		pthread_mutex_lock(&mutex);
    		cur_ticket = ticketcount;
    		if(cur_ticket >= 51)
    		{
    			pthread_cond_wait(&cond, &mutex);   //等待提醒
    		}
    		cur_ticket = ticketcount;
    		delay();
    		if(cur_ticket <= 0)
    		{
    			pthread_mutex_unlock(&mutex);
    			break;
    		}
    		printf("B mai %d\n", cur_ticket);
    		cur_ticket--;
    		ticketcount = cur_ticket;
    		pthread_mutex_unlock(&mutex);
    	}
    }
    int main()
    {
    	int ret, i;
    	pthread_t tid[2];
    
    	pthread_mutex_init(&mutex, NULL);
    	pthread_cond_init(&cond, NULL);             //初始化条件变量
    
    	ret = pthread_create(&tid[0], NULL, ticketA, NULL);
    	if(ret != 0)
    	{
    		perror("pthread_create");
    		exit(1);
    	}
    
    	ret = pthread_create(&tid[1], NULL, ticketB, NULL);
    	if(ret != 0)
    	{
    		perror("pthread_create");
    		exit(1);
    	}
    
    	void *status;
    	for(i = 0; i < 2; i++)
    	{
    		pthread_join(tid[i], &status);
    	}
    
    	pthread_cond_destroy(&cond);          //销毁条件变量
    	pthread_mutex_destroy(&mutex); 
    
    	return 0;
    }

     

    展开全文
  • 嗯嗯嗯,记录一下自己最近自己又研究了一下关于Thread和Runnable实现线程同步买票 1,实现Runnable接口,重写里面run()方法,比较推荐的一种方式 避免了单继承局限性 增强程序的扩展性,将设置程序线程任务和开启新...

    嗯嗯嗯,记录一下自己最近自己又研究了一下关于Thread和Runnable实现线程同步买票

    1,实现Runnable接口,重写里面run()方法,比较推荐的一种方式

    避免了单继承局限性
    增强程序的扩展性,将设置程序线程任务和开启新线程进行了分离

    
    ### 使用同步代码块方式
    
    public class RunnableSale implements Runnable {
        private int ticket = 100;
        Object obj = new Object();
    
        @Override
        public void run() {
            while (true) {
                synchronized (obj){
                    if (ticket > 0) {
                        try {
                            Thread.sleep(new Random().nextInt(10));
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
    
                        System.out.println(Thread.currentThread().getName()
                                + "=======" + "卖出第" + ticket-- + "张票");
                    }
                }
    
            }
    
        }
    }
    
    ### 同步方法方式实现
    public class RunnableSale implements Runnable {
        private int ticket = 100;
        Object obj = new Object();
    
        @Override
        public void run() {
            while (true) {
                sale();
            }
    
        }
    
        private void sale() {
            if (ticket > 0) {
                try {
                    Thread.sleep(new Random().nextInt(10));
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
    
                System.out.println(Thread.currentThread().getName()
                        + "=======" + "卖出第" + ticket-- + "张票");
            }
        }
    }
    
    
    ### 测试
    public class SaleFlat{
    
        public static void main(String[] args) {
    
            RunnableSale run=new RunnableSale();
            for (int i = 1; i < 5; i++) {
                new Thread(run,i+"号窗口").start();
            }
        }
    }
    
    

    结果
    在这里插入图片描述

    注意

       private int ticket = 100;
    
       1,这里ticket为普通的int就可,因为我们在用的使用使用的是同一个RunnableSale对像
       2,同步方法的锁对象是this
    

    使用Thread类实现

    ### 使用同步代码块实现
    public class SaleTicket extends Thread {
        public SaleTicket(String name) {
            super(name);
        }
    
        private static int ticket = 100;
        String str = "suo";
    
        @Override
        public void run() {
            while (true) {
                synchronized (str){
                    if (ticket > 0) {
                        if (ticket == 50) {
                            try {
                                Thread.sleep(new Random().nextInt(10));
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        System.out.println(this.getName() + "卖出第" + ticket-- + "张票");
                    }
                }
            }
        }
    
    
    }
    
    
    ### 使用同步方法执行
    
    public class SaleTicket extends Thread {
        public SaleTicket(String name) {
            super(name);
        }
    
        private static int ticket = 100;
        String str = "suo";
    
        @Override
        public void run() {
            sale();
        }
    
        private synchronized void sale() {
            while (true) {
                if (ticket > 0) {
                    if (ticket == 50) {
                        try {
                            Thread.sleep(new Random().nextInt(10));
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.println(this.getName() + "卖出第" + ticket-- + "张票");
                }
            }
        }
    
    
    }
    
    
    测试
    public class SaleFlat{
    
        public static void main(String[] args) {
    
            for (int i = 1; i < 5; i++) {
                SaleTicket t=new SaleTicket(i+"号窗口");
                t.start();
            }
    
        }
    
    

    注意

    这里同步代码块使用this结果
    在这里插入图片描述

    private static int ticket = 100;
    1,这里必须为static,因为在使用的时候我们是创建了4个对象,所以不会公用这个成员变量
    ,必须声明静态不然每个窗口单独买100张
    2,这里同步方法我用this作锁对象并不可以,我个人认为呢这里锁对象本来是要求必须为同一对象
    但是使用这里创建了4个对象,每个this都是不一样的,无法起到同步作用,要是不是这样的
    希望前辈们留言告知呀呀呀呀
    
    展开全文
  • 为什么今年买票难?

    千次阅读 2020-01-31 11:48:26
    熟悉的12306,如今PC端购票...铁总这么一操作,黄牛也表示头疼,但铁总又推出富有商业价值的车票候补功能,直接让第三方抢票抢票软件凉了一大截,关于候补购票,暂时不聊,能否候补到,完全看你的运气,阿弥陀佛!

    12306
    熟悉的12306,如今PC端购票界面以及APP比以往好看多了,不愧是阿里的手笔。

    为什么 12306 一放票就瞬间没票了?

    这个问题无疑为最纠结的,其实很简单,12306是全中国爬虫光顾次数最多的网站没有之一。

    出行软件,抢票软件的爬虫对着12306每秒钟恨不得撸几十万次数据,就为撸出一个[这趟车有余票]的结果。

    12306那些极其坑爹的验证测试
    验证码

    本意就是为了分辨真人和网络爬虫,因为软件并不认识谁是姚明,这能把绝大部分网络爬虫阻挡在外。但凡事有例外,而且抢票软件的程序也是另有千秋。这里不得不提到另外有一种叫做“打码平台”的东西

    打码平台雇佣了很多叔叔阿姨,坐在电脑面前,专门帮人识别验证码。那边抢票软件遇到了验证码,系统就会自动把这些验证码传到叔叔阿姨面前,他们手工选好哪个是姚明,然后再把结果传回去。简简单单,轻松愉快。

    当然,这样的打码平台还有记忆功能。如果叔叔阿姨已经标记了这张图是“姚明”,那么下次这张图片再出现的时候,打码平台的系统就直接判断它是“姚明”。12306也有自己的验证图片库,但是更新频率肯定低于打码平台的识别速率,久而久之,图片库里的图片就会被识别完,这样,爬虫软件就又畅通无阻了。

    公开数据显示年关时节左右,12306“最高峰时1天内页面浏览量达813.4亿次,1小时最高点击量59.3亿次,平均每秒164.8万次。”所以,你觉得你抢得过抢票软件么?

    关于铁总锁票

    不光上面说到的爬虫软件抢票,还有关于铁总锁票的问题,我觉得锁全程无疑是正确的,假设我们把一辆车浓缩为一个座位,从A开往F
    A-F
    如果说不锁全程,那么最好的情况是,1号乘客买了A-C,二号乘客买了C-E,3号乘客买了E-F
    A-C、C-E、E-F
    但是实际上这只是理想状态,绝大多数情况下会出现,当一个短途区间被售出,如果另一个区间和这个区间有重合,那么将会有一个人买不到票
    A-E
    所以目前情况只能先将长途车票售出,等长途车票购票需求饱和后,才开始将剩下的车票拆分为短途售出,在将来,铁总在年终春运,迫切的需要跨站购票功能,假设A-B和E-F被卖,而你又需要B-F的票,那么系统根据匹配余票,自动给你减少区间,购买B-E的票,剩下的换乘其他交通工具,以达到回家的目的。

    B-E

    铁总这么一操作,黄牛也表示头疼,但铁总又推出富有商业价值的车票候补功能,直接让第三方抢票抢票软件凉了一大截,关于候补购票,暂时不聊,能否候补到,完全看你的运气,阿弥陀佛!

    展开全文
  • 书中给出了两种很优雅的解法,尤其是第二种(构造sigma序列的方法),但由于太过精妙,我等凡人在没看过的情况下实在是很难想到。看完后想到种比较俗的做法,比较容易想得到,而且也比较好记。...
  • Python + selenium + requests实现12306全自动买票

    万次阅读 多人点赞 2018-09-08 15:36:10
    整个买票流程可以再快一点,不过为了稳定起见,有些地方等待了一些时间 完整程序,拿去可用 整个程序分了三个模块:购票模块(主体)、验证码识别模块、余票查询模块 购票模块: from selenium import webdriver...
  • 现在年轻人喜爱在网上参与一些关于微信投票拉票的活动,那么既然是拉票的活动就要知道微信人工拉票价格多少对不对,还有跟免费微信投票拉票软件的操作流程咱们也需求知道一些,可是我发现在网上许多关于微信投票拉...
  • 关于微信投票活动存在微信人工刷票数的情况解析,越来越多的人在平常生活中使用微信,以微信为载体的许多功能就被开发和使用了起来,比如——微信投票。于是乎,微信上兴起了各种投票,从小学生到gov部门的投票活动...
  • 乘客:买票! 售票员:去哪里? 乘客:北京! 售票员:什么时候? 乘客:明天! 售票员:几点? 乘客:上午十点 售票员:十点十五分的行么? 乘客:有没有早一点的? 售票员:九点五十五的. 乘客:那就这...
  • 转自:从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南 引子:  大约两个月前,我在练习一些招聘的笔试题中,有一道和卡特兰数相关。那时还没来得及开始仔细看《编程之美》,就先翻到那一章节...
  • 题目 1163: 排队买票

    2021-05-04 21:19:31
    题目描述 题目描述 有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。...我开始做的时候有些不理解,网上的大部分题解是关于卡特兰数的(不用说,我看不懂hah) 然后我就在想这个问
  • 深度优先之买票

    2018-11-01 14:32:46
    2. 一看到题目是不是觉得有点似曾相识,没错,这也是未名湖畔那道题目转换场景之后的题目,只不过那道题目是关于溜冰鞋的,但是本质上是一模一样的,我们可以使用dfs来解决,因为问题规模完全不大,所以使用dfs来...
  • 本来这节内容是要到后面来说的,...多线程的相关概念,就不用说了的,自己可以去网上查找,有一大堆关于它的讲解~ 先来看看买票的程序: package me.javen.thread.one; public class TicketDemo { public static
  • 编程之美之买票找零

    千次阅读 2014-08-13 19:22:54
    题目:假设有2N个人在排队买票,其中有N个人手持50元的钞票,另外有N个人手持100元的钞票,假设开始售票时,售票处没有零钱,问这2N个人有多少种排队方式,不至使售票处出现找不开钱的局面?
  • 本题为要求说明题,无需作答 【简答题】线程简单调度2: 模拟3个人排队买票,张三、李四、王五,售票员只有3张5元现金,电影票5元一张,张三拿20元一张的人民币拍在李四前面,李四排在王五前面,那么一张10元的人民币,王五...
  • NULL 博文链接:https://vincent-com.iteye.com/blog/1341407
  • #pragma mark - NSThread买票 - (void)threadSaleTicketWithName:(NSString *)name {  //使用NSThread时,线程调用的方法一定要使用@autoreleasepool(自动释放池)  @autoreleasepool {  while (YES) { ...
  • ——关于构建安全、稳定、高吞吐量的火车票网络售票系统几个方面原文出处:引:火车出行是人们常用、便捷的一种出行方式,基于中国的人口多的情况,中国的火车出行人数非常庞大。为了解决火车票订票难、抵制“黄牛”...
  • 关于dubbo的安装和zookeeper的使用这里不做详解. 进入正题: 首先我们先启动zookeeper的服务端和客户端 zk服务端 zk客户端 执行 dubbo-admin\target 下的dubbo-admin-0.0.1-SNAPSHOT.jar java -jar dubbo-admin-0.0.1...
  • 需要字典形式,形式如:{“G529”:["O","M"],"G403":["O","M"]}多车次就多个键值对 :param passengers: 需要买票的乘车人,需要为一个列表 """ self.driver = driver self.from_station = from_station self.to_...
  • 原标题:DNF最新BUG,玩家打团买票后材料消失,无法引炸直接退队!大家好欢迎收看本期的游戏内容,小新说游戏给你带来有趣的游戏资讯,今天小新要给大家带来的是DNF实力劝退,玩家打团买票后材料消失,无法引炸直接...
  • 春运买票难解决

    2006-01-19 12:22:55
    关于这个问题的原因,许多文章都说过. 要解决这个问题,关键不是让票不到黄牛党手里,因为他们可以用合法手段买票.关键是打击他们的卖票行为,让他们感觉到后果很严重...现在对举报人的奖励是优先买票,票都没了,优先有个...
  • C# 调用12306接口,实现登录、查票、买票。【免责申明】本文只为学习使用,若有用作商业、其他行为,与本人无关。 使用工具 - UI bootstrap - 后台C# - 插件 datetimepicker.js,select.jsUI界面效果预览UI界面...
  • 买票案例出现的两个问题 ②. 同步代码块synchronized ③. 同步方法 说明 (1). 关于synchronized关键字底层原理参考如下文章 (2). Juc18_Java内存模型、对象头Mark Word、实例数据、对齐填充、谈谈new Object( )占多...
  •  在今年4月底中央纪委监察部《中共中国南方航空集团公司党组关于巡视整改情况的通报》中就提到,要“着力解决客票销售环节利益输送突出的问题”。而要求采取的方式,则是“对代理人进行全面清理,严格评估和准入审核”...
  • 一个关于排队的问题

    2019-08-14 16:49:34
    需求 一个拓展训练班,教练带队,要把成员按照性别随机分成5组,最好保证男女比例尽量平均。 程序流程 教练在后台添加一个队伍,id为1;指定队伍有5个分组,team_num=5。 ...学员来到报名页,填写自己的选择的队伍,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,474
精华内容 2,189
关键字:

关于买票