大数据入门
大数据的概念:
海量数据,具有高增长率,数据类型多样化,一定时间内无法使用常规软件工具进行捕捉,管理和处理的数据集合。
大数据的5V特征:
Volume(大量):数据的大小决定所考虑的数据的价值和潜在的信息
Velocity(速度):获得数据的速度
Variety(多样):数据类型的多样性
Value(价值):合理运用大数据,以低成本创造高价值
Veracity(真实):数据的质量
大数据的应用场景:
预测犯罪,预测流感的爆发,预测选举,根据手机定位和交通数据,规划城市,根据库存和需求,实施调价,推动医疗信息化发展,远程医疗
大数据的发展前景:
1.大数本身的价值体现
2.大数据推动科技领域的发展
3.大数据产业链的形成
4.国家大力扶持大数据行业的发展
Java简介
Java诞生于1995年,是由Sun公司推出的一种面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承,指针等概念,因此Java语言具有功能强大和简单易用的两个特征。Java语言作为静态的面向对象编程语言的代表,极好的实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
1996年,发布JDK1.0
1999年,发布J2SE,J2EE,J2ME
2005年,更名为Java SE,Java EE,Java ME
2009年,被Oracle收购
2011年,由Oracle发布Java 7
2014年,由Oracle发布Java 8
2017年,由Oracle发布Java 9
2018年3月,由Oracle发布Java 10
2018年9月,由Oracle发布Java 11
2019年3月,由Oracle发布Java 12
2019年9月,由Oracle发布Java 13
Java的特点
面向对象
Java是一种面向对象的语言,它对对象中的类,对象,继承,封装,多态,接口,包等均有很好的支持,为了简单起见,Java只支持类之间的单继承,但是可以使用接口来实现多继承。使用Java语言开发程序,需要采用面向对象的思想设计程序和编写代码
平台无关性
平台无关性的具体表现在于,Java是”一次编写,到处运行(Write Once,Run anyWhere)“的语言,因此采用Java语言编写的程序具有很好的可移植性,而保证这一点的正是Java的虚拟机机制。在引入虚拟机之后,Java语言在不同平台的运行不需要重新编译
简单
Java语言的语法和C++语法很相近,使得很多程序员学起来很容易。对Java来说,他舍弃了很多C++难以理解的特性,如操作符的重载和多继承等,而且Java语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单
解释执行
Java程序在Java平台运行时会编译成字节码文件,然后可以在有Java环境的操作系统上运行。在运行文件,Java的解释器对这些字节码进行解释执行,执行过程需要加入的类在连接阶段被载入到运行环境中
多线程
Java语言是多线程的,这也是Java语言的一大特性,它必须由Thread类和它的子类来创建。Java支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的run()方法,要执行的方法就写在run()方法体内
分布式
Java语言支持Internet应用的开发,在Java的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括了URL,URLConnection,Socket等,Java的RIM机制也是开发分布式应用的重要手段
健壮性
Java的强类型机制,异常处理,垃圾回收机制等都是Java健壮性的重要保证。对指针的丢弃是Java的一大进步。另外,Java的异常机制也是健壮性的一大体现
高性能
Java的高性能主要是相对于其他的高级脚本语言来说的,随着JIT(Just In Time)的发展,Java的运行速度也越来越高
安全性
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防止恶意代码的攻击。除了Java语言具有很多的安全特性以外,Java还通过网络下载的类增加一个安全方法机制,分配不用的名字空间一方替代本地的同名类,并包含安全管理机制
Java的执行机制
Java程序的执行分为两步:编译,运行
01)编译:将Java源程序,编译为.class字节码文件
02)运行:将.class文件加载到JVM虚拟机中,执行
Java的相关名词
JDK:
Java Development Kit,Java开发环境
包含了JRE,Java核心类库,开发工具包(编译器+调试工具)
JRE:
Java RunTime Environment,Java运行环境
包含了JVM和解释器,完整的Java运行环境
JVM:
Java Virtual Machine,Java虚拟机
使用软件在不同的操作系统中,模拟相同的环境(Java实现跨平台的根本原因)
进制
常用的进制可以分为以下几种:
二进制:0b开头,由0和1组成
八进制:0开头,由0,1,2,3,4,5,6,7组成
十进制:不能由0开头,由0,1,2,3,4,5,6,7,8,9组成
十六进制:以0-9,a-f来表示自然数
进制转换
每一个八进制都可以等价替换成三个二进制位。
划分从右向左进行,如果二进制数的左边不够三位,直接在高位补零凑齐三位。
当八进制数转换成二进制数时,将上述过程反转,有一点需记住,每一个八进制的书必须对应三位二进制位,如果八进制数在转换时得到的二进制数不够三位,直接在最左边用零补齐。
每一个十六进制位可以等价替换成四个二进制位,跟二进制与八进制的转化规则类似。
实例:
二进制转八进制:0b 110 111 100 011 = 06743
二进制转十六进制:0b 110 111 100 011 = 0b 1101 1110 0011 = 0xde3
八进制转二进制:03533 = 0b 011 101 011 011
八进制转十六进制:03533 = 0b 011 101 011 011 = 0b 0111 0101 1011 = 0x75b
十六进制转二进制:0xeeaa3d = 0b 1110 1110 1010 1010 0011 1101
十六进制转八进制:0xeeaa3d = 0b 1110 1110 1010 1010 0011 1101 = 0b 111 011 101 010 101 000 111 101 = 073525075
原码补码反码
数据类型转换:
位是计算机最小储存单位,但是因为位能表示的数太小了,所以习惯上我们将字节作为计算机存储的最小单位,每一个二进制位称为一个比特(bit),每八个bit成为一个字节(byte)。
单位换算:
8 bit = 1 byte
1024 byte = 1 kb
1024 kb = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
1024 TB = 1 PB
1024 PB = 1 EB
1024 EB = 1 ZB
负数的表示:
在使用二进制表示数字时,最高位(符号位)不是用来用来表示数字大小的,而是用来表示数字正负的,0代表正数,1表示负数
补码的引入:
在数据运算中由于符号位的存在,符号位会直接参与运算,会导致计算结果出现问题,例如:
8 + (-8)
8 的原码为:0000 1000
-8 的原码为:1000 1000
二者直接相加得:1001 0000 = -16 显然不正确
故为了规避在计算过程中,符号位参与运算,导致结果出错,人们引入了补码,规避了这个问题,在计算机中,所有数据存储与运算,都是以补码的形式进行的
原码:一个数的二进制表示形式
反码:正数的反码与原码相同,负数的反码是原码符号位不变,其他位按位取反
补码:正数的补码和原码相同,负数的补码是反码+1
例,8的原码是:0000 1000,所以他的原码反码补码全是0000 1000
-8的原码是:1000 1000,反码:1111 0111,补码:1111 1000
补码运算:
在计算机中,所有数据的存储和运算,都是以补码的形式进行的,因此,在进行数据运算的时候,将数据计算出补码,再进行运算
8 + (-8) = 0
0000 1000 + 1111 1000 = 1 0000 0000
在上述的计算结果中,出现了多出一位的情况,称为溢出。如果出现了溢出的情况,溢出位直接社区不要,即最后的计算结果是0000 0000,结果为0
Java语法基础
标识符的命名规则:
1.由字母,数字,下划线(_)和美元符号($)组成
2.不能以数字作为开头
3.区分大小写
4.长度无限制,但最好不要超过15个字符
5.不能与系统关键字或者保留字重名
标识符的命名习惯:
1.见名知意
2.驼峰命名法
3.包名全部小写,常量字母都大写
数据类型:
在Java当中,数据类型分为两类,基本数据类型和引用数据类型
基本数据类型有:byte,short,int,long,float,double,char,boolean
引用数据类型有:String
字符扩展:
Java字符采用的是Unicode编码,每个字符占两个字节。
常用的字符集:
中国:GBK
美国:ASCII
日本:UTF
unicode:世界统一编码
常见的ASCII码:
0:48
1:49
A :65
a :97
转义字符:
\n : 换行符
\r :回车符
\t:制表符
数据类型划分:
byte < short < char < int < long < float < double
运算符
算术运算符
++:自增
++在前,先自增,再赋值运算
++在后,先赋值运算,再自增
–:自减
–在前,先自减,再赋值运算
–在后,先赋值运算,再自减
无论在前还是在后,变量的值一定发生了改变
逻辑运算符
&:逻辑与,两真为真,有假为假,两假为假
|:逻辑或,有真为真,全假为假
!:逻辑非
^:逻辑异或,相同为假,不同为真
&&:&的加强版,全真为真,有假为假
||:|的加强版,全假为假,有真为真
位运算符
&:按位与,对补码的每一位进行与运算
|:按位或,对补码的每一位进行或运算
^:按位异或,对补码的每一位进行异或运算
~:按位取反,对补码的每一位进行取反操作,包括符号位
<<:位左移运算,将补码的每一位依次向左移动指定的位数(相当于*2的多少次)
》》:位右移运算,将补码的每一位向右移动指定的位数,左侧补符号位(相当于/2的多少次)
三目运算符
布尔表达式/布尔变量?值1:值2
?之前的boolean值若为true,则整体结果为值1,反之为值2
运算优先级
第一级:括号运算符((),[])
第二级:一元运算符(!,+,-)位逻辑运算符(~),自增自减运算符(++,–)
第三级:算术运算符(*,/(求商),%(求余))
第四级:算术运算符(+,-)
第五级:位左移,位右移运算符(<<,>>)
第六级:关系运算符(>,>=,<,<=)
第七级:关系运算符(==,!=)
第八级:位逻辑运算符(&(与))
第九级:位逻辑运算符(^(异或))
第十级:位逻辑运算符(|(或))
第十一级:逻辑运算符(&&(短路与))
第十二级:逻辑运算符(||(短路或))
第十三级:三目运算符(?:)
第十四级:赋值运算符(=)
变量
Java中的变量分为成员变量和局部变量两种,没有全局变量的概念,但由于多数人都是先学的C语言,C语言有全局变量的概念,所以我们把被static修饰的成员变量称为全局变量。
成员变量
- 成员变量定义在类中,在整个类中都可以被访问。
- 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
- 成员变量有默认初始化值。
局部变量
- 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
- 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
- 局部变量没有默认初始化值