start

第九周作业

本小妞迷上赌 提交于 2019-12-02 09:09:25
实验报告 完成火车站售票程序的模拟。 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3)卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情况。 1)实验代码 package text8; public class MyThread implements Runnable{ private int tickets=1000; public int getTickets() { return tickets; } public void setTickets(int tickets) { this.tickets = tickets; } public void run() { while(true) { synchronized(this){ try { if(tickets>0) { System.out.println(Thread.currentThread().getName()+":是第 "+tickets+" 张票 "); tickets--; } Thread.sleep(1000); }catch(Exception e) { System.out.println(e.getMessage()); } } if(tickets<=0){ break; } } } } package text8; public class Text8

Java中Runnable和Thread的区别

可紊 提交于 2019-12-02 09:05:19
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。 下面看例子: package org.thread.demo; class MyThread extends Thread{ private String name; public MyThread(String name) { super (); this .name = name; } public void run(){ for ( int i= 0 ;i< 10 ;i++){ System.out.println( "线程开始:" + this .name+ ",i=" +i); } } } package org.thread.demo; public class ThreadDemo01 { public static void main(String[] args) { MyThread mt1= new MyThread( "线程a" ); MyThread mt2= new MyThread( "线程b" ); mt1.run(); mt2.run(); } } 但是,此时结果很有规律

第九周

谁都会走 提交于 2019-12-02 05:06:37
实验任务详情: 完成火车站售票程序的模拟。 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3)卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情况。 源代码: package Nine; class MyThread implements Runnable{ private int ticket=1000; public void run() { for(int i=0;i<1000;i++) { this.sell(); } } public synchronized void sell() { if(ticket>0) { try { Thread.sleep(1000); } catch(Exception e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"售出:"+ticket--); } } }; public class Test { public static void main(String[] args) { MyThread a1=new MyThread(); new Thread(a1,"窗口A1").start(); new Thread(a1,"窗口A2").start(); new Thread(a1,

随机数模块

戏子无情 提交于 2019-12-02 00:10:17
模块:random random() 方法返回随机生成的一个实数 1. 整数   random.randrange(ss)       ----- 返回从0-ss区间内的随机整数         random.randrange(start,end,step)       ----- 返回从start-end区间内,并且步长为step的一个整数 区间不包括end数值 必须start值<end值           start默认为0,step默认为1,有step必有start      random.randint(start,end)       ----- 返回start-end区间内的一个整数,起码两个数都为整 数,且start数值小于等于end数值,否则报错     2. 浮点数   random.random()       ----- 返回介于0到1之间的浮点数      random.uniform(start,end)       ----- 返回介于start-end之间的浮点数,start和end的值也可能出现,这里起始数值可以是浮点数,并且与起始数值大小无关    3. 序列操作   random.choice(ss)       ----- 从非空序列ss中随机选取一个元素,如果为空序列,则引发indexerror,当然序列中的元素类型无限定     

ForkJoinPool

ぃ、小莉子 提交于 2019-12-01 22:50:41
/** * T12_ForkJoinPool 分而治之 * Fork: 分叉 * Join: 合并 * * 将一个任务拆分多个任务执行(可以无限切分),然后将结果合并 * * 比如大量的并行计算, 如下: 求100_0000个数字之和, 使用多线程 */ public class T12_ForkJoinPool { static int[] nums = new int[100_0000]; static final int MAX_NUM = 5_0000; // 每个线程最多可以运行5万个数字相加 static Random random = new Random(); // 初始化这100_000个数字, 每个数字范围在100之内 static { for (int i = 0; i < nums.length; i++) { nums[i] = random.nextInt(100); } // 所有数字和, 事先计算: //System.out.println(Arrays.stream(nums).sum()); // 使用单线程stream api 进行求和 } /** * RecursiveAction: 递归操作 没有返回值 * RecursiveTask: 递归操作,有返回值 */ static class AddTask extends

多线程的两种启动方式的简单总结

 ̄綄美尐妖づ 提交于 2019-12-01 08:49:11
1. 继承Thread类,重写run方法,new出对象.start()即可。 public class Thread3 extends Thread{ @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println(this.getName()+":"+i+"这是线程"); } } } 2. 实现Runnable接口,实现run方法,把实现类的对象obj传给new Thread(obj),再用Thread 类的对象.start()方法来启动线程。 public class Thread2 implements Runnable { @Override public void run() { for (int i = 0; i < 20; i++) { String name = Thread.currentThread().getName(); System.out.println(name+":"+i); } } } //测试类 public class testThread { public static void main(String[] args) { Thread2 thread2 = new Thread2(); Thread thread = new Thread

hadoop集群启动及各服务启动命令

≯℡__Kan透↙ 提交于 2019-12-01 02:37:38
1)Hadoop的启动(先启动zookeeper) 3台都得启动 zookeeper /export/servers/zookeeper-3.4.9/bin/zkServer.sh start /export/servers/zookeeper-3.4.9/bin/zkServer.sh status 查看状态 /export/servers/zookeeper-3.4.9/bin/zkServer.sh stop 关闭 在node01执行启动hadoop操作: cd /export/servers/hadoop-2.7.5/ bin/hdfs namenode -format 此步只在初次启动时操作 sbin/start-dfs.sh sbin/start-yarn.sh 上面2步合并为 sbin/start-all.sh sbin/mr-jobhistory-daemon.sh start historyserver 2)node03开启mysql /etc/init.d/mysqld start 登录测试: mysql -uroot -p 123456 3)azkaban集群启动 1.先启动 exec-server 进入到azkaban-exec目录下执行2个命名 bin/start-exec.sh curl -G "node03:$(<./executor.port)

python(二)之字符串和列表

こ雲淡風輕ζ 提交于 2019-11-30 19:37:50
字符串 1. 定义  由字符组成的序列,注意单个字符就是子串 2. 创建:变量=字符串 方式:单引号、双引号、三引号 单引号和双引号使用方式类似,交替使用的时候,会输出特殊的字符 三引号自带换行 空字符串 s=“” 空格“ ” 不一样 3. 字符串的操作 (1)运算符 + * in not in is is not < > == + * 新创建了字符串。 (2)索引:获取单个元素 字符串[index]: 从0开始,正数从左到右 负数从右到左 注意:如果越界会报错 界限:-len() ----len()-1 (3)切片:获取多个元素 字符串[start:end] Start end 的方向,默认是从左到右,这时候,start<end Start end都可以是正数,负数,0 Start默认值:0 End默认值:len(s) 包含start,不包含end 如果越界,不会报错。 4. 字符串的相关方法 (1)count(s,start,end):返回统计s的个数   S:要统计的子串   Start end :起始位置,终止位置,包含start,不包含end   默认start end不写,从头找到尾   如果只写一个参数,默认是start (2)index:返回的是要查找子串的位置   如果找不到会报错   Index(s,start,end) (3)find: 同index

[LeetCode] 167. Two Sum II - Input array is sorted

别说谁变了你拦得住时间么 提交于 2019-11-30 18:01:18
因为是已经排好序的array,所以用two pointer从两边往中间逼近,注意最后返回的下标 + 1 1 /** 2 * @param {number[]} numbers 3 * @param {number} target 4 * @return {number[]} 5 */ 6 var twoSum = function(numbers, target) { 7 // corner case 8 if (numbers === undefined || numbers.length < 2) { 9 return [-1, -1]; 10 } 11 12 // normal case 13 let start = 0; 14 let end = numbers.length - 1; 15 while (start < end) { 16 const sum = numbers[start] + numbers[end]; 17 if (sum === target) { 18 return [start + 1, end + 1]; 19 } else if (sum < target) { 20 start++; 21 } else { 22 end--; 23 } 24 } 25 return [-1, -1]; 26 }; 来源: https://www