大数据第九天内容

笔记部分:

创建线程方式

-----------------

1.Thread

2.Runnable{public void run();}

class Man extends Person implements Runnable{

public void run(){

...

}

}

new Car().start();

new Thread(new Man()).start();

eclipse

---------------

alt + ///代码辅助

alt + 上箭头//向上移动一行

alt + 下箭头//向上移动一行

alt + shift + 上箭头        //向上复制一行

alt + shift + 下箭头        //向下复制一行

ctrl + D//删除一行

String

-----------------

1. ==     //判断是否是同一对象。判断对象的内存地址。

2. equals     //是判断两个对象内容是否相同。

split(String reg);     //按照指定的字符串进行拆分,返回值数组。

substring(int start);        //取子串操作,指定起始索引之后的所有字符

substring(int start,int end);//取子串操作,指定起始索引和结束索引之间的全部字符,

//包含起始索引,不含结尾索引。[a,b)属于半开半闭区间。

byteByte     //包装类

shortShort

intInteger

longLong

floatFloat

douleDouble

booleanBoolean

charCharacter

byte b = 127 ;

Byte b = new Byte(127);

StringBuffer

字符串缓冲区

StringBuffer是字符串变量,它的对象是可以扩充和修改的。

append方法可以追加字符串,字符,对象等

和String相比:当String方法执行Sting=String+i等情况时,实际上String对象是不可改变对象,因此不断地在创建对象,并字符串池中也不断增加,原来对像再被回收,String执行效率低。

StringBuffer中的方法是被synchronized修饰的,是同步的,线程安全的,同一时间只有一个对像可以执行,锁是执行时的当前StringBuffer对象

StringBuilder没有被synchronized修饰的,非同步的

性能不一致,StringBuilder在每次访问的时候不需要判断对像锁是否被占用,性能更好效率更高。

作业部分:

1.蜜蜂和熊的生产消费关系,熊在蜂蜜满10斤吃掉。蜜蜂一次生产一斤蜂蜜,且蜜蜂生成一斤蜂蜜花费的时间是10s。

十只蜜蜂和两只熊。

代码:

package com.work.ten;

class Bear extends Thread{

	private FengMi fengmi;

	private String bearname;

	public Bear(FengMi fengmi,String  bearname){

		this.fengmi=fengmi;

		this.bearname=bearname;

	}

	public void run(){

		while(true){

		synchronized(fengmi){

		if (fengmi.getFengmiWeight()<10) {

		try {

		fengmi.wait();

		}
		catch (Exception e){

		}

		}

		else if(fengmi.getFengmiWeight()>=10&&fengmi.getFengmiWeight()%10==0){

			    
				fengmi.ChiFemgmi();

				System.out.println("10 斤蜂蜜被"+bearname+"吃掉,剩余"+fengmi.getFengmiWeight()+"斤蜂蜜");

			try{

				fengmi.notifyAll();

			}

			catch(Exception e){

			}	

		}

		}

		yield();

	}

}

}

class FengMi {

	private static int fengmiWeight=0; //蜜罐中蜂蜜数量

	private  final int fengmiWeightMax=20; //蜜罐中蜂蜜数量上限

	public  int getFengmiWeight() {
		return fengmiWeight;
	}

	public int getFengmiWeightMax() {
		return fengmiWeightMax;
	}

	public void CreateFemgmi() { //生产蜂蜜
		this.fengmiWeight += 1;
	}

	public void ChiFemgmi() { //吃蜂蜜
		this.fengmiWeight -=10;
	}

}

class Bee extends Thread{

	private FengMi fengmi;

	private String  beename;

	public Bee(FengMi fengmi,String beename){

		this.fengmi=fengmi;

		this.beename=beename;

	}

	public void run(){

		int i=1;

		while(true){

		synchronized(fengmi){

		if(fengmi.getFengmiWeight()<fengmi.getFengmiWeightMax()){

			if(fengmi.getFengmiWeight()==0){

				try{

					fengmi.CreateFemgmi();

					System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜");

					fengmi.notifyAll();

					Thread.sleep(10);

					System.out.println("经过10ms,蜜蜂休息好了");

				}

				catch(Exception e){

				}

			}

			else {

				if (fengmi.getFengmiWeight()%10==0){

					try{

						fengmi.CreateFemgmi();

						System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜");

						fengmi.notifyAll();

						Thread.sleep(10);

						System.out.println("经过10ms,蜜蜂休息好了");

					}

					catch(Exception e){

					}

					}

				else {

					try{

						fengmi.CreateFemgmi();

						if(fengmi.getFengmiWeight()%10==0){

							System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜,熊可以来采了");
						}

						else  System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜");

						fengmi.notifyAll();

						Thread.sleep(10);

						System.out.println("经过10ms,蜜蜂休息好了");

					}

					catch(Exception e){

					}

				}

				}
			}

		else {

			System.out.println("蜂蜜满了");

			try{			

			fengmi.wait();

			}
			catch(Exception e){

			}

			}	

		}

		i++;

		yield();

		}

	}

}

class 	BeeBearModel2{

	public static void main(String[] args){

		FengMi fengmi=new FengMi();

		Bear bear1=new Bear(fengmi,"Bear1");	

		Bee bee1=new Bee(fengmi,"Bee1");	

		Bee bee2=new Bee(fengmi,"Bee2");	

		bear1.start();

		bee1.start();

		bee2.start();
	}

}

作业1运行结果(部分):

蜂蜜采集好了,目前一共18斤蜂蜜

经过10ms,蜜蜂休息好了

蜂蜜采集好了,目前一共19斤蜂蜜

经过10ms,蜜蜂休息好了

蜂蜜采集好了,目前一共20斤蜂蜜,熊可以来采了

经过10ms,蜜蜂休息好了

10 斤蜂蜜被Bear1吃掉,剩余10斤蜂蜜

蜂蜜采集好了,目前一共11斤蜂蜜

经过10ms,蜜蜂休息好了

蜂蜜采集好了,目前一共12斤蜂蜜

经过10ms,蜜蜂休息好了

蜂蜜采集好了,目前一共13斤蜂蜜

经过10ms,蜜蜂休息好了

作业2

取出两个字符串中最大的公共子串。

package com.work.nine;

public class Find {

	private String checkString1;

	private String checkString2;

	public String getCheckString1() {
		return checkString1;
	}

	public void setCheckString1(String checkString1) {
		this.checkString1 = checkString1;
	}

	public String getCheckString2() {
		return checkString2;
	}

	public void setCheckString2(String checkString2) {
		this.checkString2 = checkString2;
	}

	public Find(String checkString1,String checkString2){

		this.checkString1=checkString1;

		this.checkString2=checkString2;
	}

	public String FindMaxPublicString(boolean result){

		if(checkString1==null||checkString2==null) return "";

		else{

			String temp=this.checkString2;

		if(result){

			temp=temp.toLowerCase();

			String String1Lower=this.checkString1.toLowerCase();

			String String2Lower=this.checkString2.toLowerCase();

			if(String1Lower.equals(String2Lower)) return this.checkString1;

			else{

					while(!String1Lower.contains(temp)){

						temp=temp.substring(0, temp.length()-1);
					}

					return temp;

				}

		}

 

		else{

			if(this.checkString1.equals(this.checkString2)) return this.checkString1;

			else{

					while(!this.checkString1.contains(temp)){

						temp=temp.substring(0, temp.length()-1);
					}

					return temp;

				}

		}

		}

}

}

package com.work.nine;

class MaxPublicStringDemo{

	public static void main(String[] args){

		Find find1=new Find("ABCDEFG","");

		Find find2=new Find("ABCDEFG","ABCDEFG");

		Find find3=new Find("ABCDEFG","HIGKLMN");

		Find find4=new Find("ABCDEFG","AB");

		Find find5=new Find("ABCDEFG","ab");

		Find find11=new Find("ABCDEFG","AABBCCD");

		System.out.println("最大的公共子串为"+find1.FindMaxPublicString(false));

		System.out.println("最大的公共子串为"+find2.FindMaxPublicString(false));

		System.out.println("最大的公共子串为"+find3.FindMaxPublicString(false));

		System.out.println("最大的公共子串为"+find4.FindMaxPublicString(false));

		System.out.println("最大的公共子串为"+find5.FindMaxPublicString(false));

		System.out.println("最大的公共子串为"+find11.FindMaxPublicString(false));

		System.out.println("--------------------------------------------");

		Find find6=new Find("ABCDEFG","");

		Find find7=new Find("ABCDEFG","ABCDEFG");

		Find find8=new Find("ABCDEFG","AACCEEG");

		Find find9=new Find("ABCDEFG","AB");

		Find find10=new Find("ABCDEFG","abcdefg");

		System.out.println("最大的公共子串为"+find6.FindMaxPublicString(true));

		System.out.println("最大的公共子串为"+find7.FindMaxPublicString(true));

		System.out.println("最大的公共子串为"+find8.FindMaxPublicString(true));

		System.out.println("最大的公共子串为"+find9.FindMaxPublicString(true));

		System.out.println("最大的公共子串为"+find10.FindMaxPublicString(true));

	}

}

结果:

最大的公共子串为

最大的公共子串为ABCDEFG

最大的公共子串为

最大的公共子串为AB

最大的公共子串为

最大的公共子串为A

--------------------------------------------

最大的公共子串为

最大的公共子串为ABCDEFG

最大的公共子串为a

最大的公共子串为ab

最大的公共子串为ABCDEFG

作业3

StringBuffer是线程安全的,StringBuilder不是线程安全。单线程访问情况下,性能是否一致?

性能不一致,StringBuilder在每次访问的时候不需要判断对像锁是否被占用,性能更好效率更高。

作业4

完成8种基本数据类包装类的练习,完成自动拆装箱操作。

package com.work.nine;

public class chaizhuang {

	public static void main(String[] args){

		// byte类型的自动装箱与拆箱
        Byte b1 = 1;
        byte b2 = b1;
        System.out.println("Byte " + (b1 == b2));

        // Short类型的自动装箱与拆箱
        Short s1 = 1;
        short s2 = s1;
        System.out.println("Short " + (s1 == s2));

        // Integer类型的自动装箱与拆箱
        Integer int1 = 1;
        int int2 = int1;
        System.out.println("Integer " + (int1 == int2));

        // Long类型的自动装箱与拆箱
        Long long1 = 1L;
        long long2 = long1;
        System.out.println("Long " + (long1 == long2));

        // Float类型的自动装箱与拆箱
        Float f1 = 3.1415f;
        float f2 = f1;
        System.out.println("Float " + (f1 == f2));

        // Double类型的自动装箱与拆箱
        Double d1 = 3.1415d;
        double d2 = d1;
        System.out.println("Double " + (d1 == d2));

        // 字符类型的自动装箱与拆箱
        Character c1 = ‘a‘;
        char c2 = c1;
        System.out.println("Character" + (c1 == c2));

        // Boolean类型的自动装箱与拆箱
        Boolean bool1 = false;
        boolean bool2 = bool1;
        System.out.println("Boolean " + (bool1 == bool2));

	}

}
时间: 2024-08-24 08:11:02

大数据第九天内容的相关文章

2019年,该怎样去系统学习大数据,知识+内容+教程

大数据作为2019年比较热门的技术,受到越来越多的关注,那么对于一个想进入大数据的朋友来说,最想知道的是:大数据学什么?今天科多大数据就和你们一起来分享一篇关于大数据学习内容体系介绍的文章. 大数据技术体系太庞杂了,基础技术覆盖数据采集.数据预处理.分布式存储.NOSQL数据库.多模式计算(批处理.在线处理.实时流处理.内存处理).多模态计算(图像.文本.视频.音频).数据仓库.数据挖掘.机器学习.人工智能.深度学习.并行计算.可视化等各种技术范畴和不同的层面.另外大数据应用领域广泛,各领域采用

大数据云计算学习内容

Linux大纲 1.Linux的介绍,Linux的安装:VMware Workstation虚拟软件安装过程.CentOS虚拟机安装过程 2.了解机架服务器,采用真实机架服务器部署linux 3.Linux的常用命令:常用命令的介绍.常用命令的使用和练习 4.Linux系统进程管理基本原理及相关管理工具如ps.pkill.top.htop等的使用: 5.Linux启动流程,运行级别详解,chkconfig详解 6.VI.VIM编辑器:VI.VIM编辑器的介绍.VI.VIM扥使用和常用快捷键 7.

大数据第八天内容

笔记: jar --------------- jar cvf xxx.jar -C classes/ . 进程 ----------------- 进程之间内存式隔离的.内存不共享. 线程 ----------------- 程序执行过程中,并发执行的代码段. 线程之间可以共享内存. Thread : 线程类. start() //通知cpu,可以开始执行该线程. run() //线程具体执行的代码段. Thread t = new Thread(); t.start(); Thread.cu

大数据学习怎么样

大数据已经成为不可阻挡的时代潮流,伴随着大数据时代的到来也产生了一些相应的培训机构,各种各样的培训机构都出现了,这时候大多数人都有了一个疑惑,那就是培训机构到底哪家才好?该怎么选择才不会做错路,进错门.今天我帮大家分析一下大数据培训机构应该怎么来选择,要注意哪些方面. 千锋教育深度破译趋势密码,高在起点赢在前沿,开发大数据引领群雄,一流的技术让我们不得不服. 从技术层面看,千锋教育紧贴行业发展,着眼未来需求,开发.收集.储存.计算一站到底,爬虫技术挖掘数据价值,直击大数据核心,助攻求职竞争力,让

【51CTO学院三周年】大数据,让我找到了继续努力的方向

时间都去哪了? --记我将要到来的工作四周年 不知不觉间,工作马上就要满四周年了.从初出校门的楞小伙,变成了人夫,也即将成为人父,总是会感叹,"时间都去哪了?" 还记得刚工作那时,每天上班都很煎熬,领导分配的工作,很多东西都不会,需要请教项目组的其他同事,有时候,老是请教别人觉得很简单的问题,也会让自己觉得很脸红.所以,自己就告诉自己,一定要自己好好努力,多学习,多看书.慢慢的,买的书越来越多,会的东西也也来越多了.从每天写代码的小弟,也转变成了管理和写代码兼顾的项目经理. 虽然现在工

上海Cloudera Hadoop大数据培训:CCAH、CCP:DE

上海Cloudera Hadoop大数据培训:CCAH.CCP:DE 北京.上海.广州长期开班 3月上海开班时间:管理员(3月1-4日):开发者(3月23-26日) [其他课程安排请咨询]15000519329(陈老师) QQ群:Cloudera大数据 478790619 课程内容: [Cloudera Apache Hadoop管理员课程] 课时:4天 学习系统管理的概念和Apache Hadoop的最佳实践, 从安装和配置到负载均衡和调优. 这个4天的的课程通过动手时间来赋予你部署的经验,

决胜大数据时代:Hadoop&amp;Yarn&amp;Spark企业级最佳实践(8天完整版脱产式培训版本)

Hadoop.Yarn.Spark是企业构建生产环境下大数据中心的关键技术,也是大数据处理的核心技术,是每个云计算大数据工程师必修课. 课程简介 大数据时代的精髓技术在于Hadoop.Yarn.Spark,是大数据时代公司和个人必须掌握和使用的核心内容. Hadoop.Yarn.Spark是Yahoo!.阿里淘宝等公司公认的大数据时代的三大核心技术,是大数据处理的灵魂,是云计算大数据时代的技术命脉之所在,以Hadoop.Yarn.Spark为基石构建起来云计算大数据中心广泛运行于Yahoo!.阿

决胜大数据时代:Hadoop&amp;Yarn&amp;Spark企业级最佳实践(3天)

Hadoop是云计算的事实标准软件框架,是云计算理念.机制和商业化的具体实现,是整个云计算技术学习中公认的核心和最具有价值内容. Yarn是目前公认的最佳的分布式集群资源管理框架: Mahout是目前数据挖掘领域的王者:        工业和信息化部电信研究院于2014年5月发布的“大数据白皮书”中指出: “2012 年美国联邦政府就在全球率先推出“大数据行动计划(Big data initiative)”,重点在基础技术研究和公共部门应用上加大投入.在该计划支持下,加州大学伯克利分校开发了完整

大数据分析师培训项目

摘要:Big Data“大数据”是继云计算.物联网之后IT产业又一次颠覆性的技术变革.对国家治理模式.对企业的决策.组织和业务流程.对个人生活方式都将产生巨大的影响.美国将大数据提升为国家战略,中国虽然还没有明确提出,但已经把大数据上升为与国防一样的高度.我国政府对大数据的敏感度快速提高,并正在采取措施.所以说,中国已经步入大数据时代,这种重视是由政府层面自上而下进行普及的,可能还未普及到普通百 大数据分析师培训项目 课程背景 Big Data“大数据”是继云计算.物联网之后IT产业又一次颠覆性