我们于2021/07/27 的学习目标是:java8新特性和数据库,核心任务为:
1、学习技术:
1)、引用
2)、Stream流
3)、数据库
2、文档总结
1)、引用
方法引用:
可以通过方法引用的方式简化Lambda表达式()->{}
语法:
对象::成员方法名
public static void test1(List list){
PrintStream ps = System.out;
list.forEach(ps::println);
list.forEach(System.out::println);
}
类名::静态方法名
public static void test2(Integer i1,Integer i2){
BiFunction<Integer,Integer,Integer> function = Math::max;
System.out.println(function.apply(i1,i2));
}
类名::成员方法名
public static void test3(String s1,String s2){
BiPredicate<String,String> pre = String::equals;
System.out.println(pre.test(s1,s2));;
}
Lambda体的实现是否通过调用了另外一个方法实现
内部所引用方法的返回值是否与Lambda的返回值保持一致
特殊:
Lambda参数列表的第一个参数作为内部引用成员方法的对象存在
Lambda参数列表的第二个参数开始(如果有)作为内部引用方法的参数列表
构造器引用:
类名::new
//Supplier<Employee> sup = ()-> new Employee();
Supplier<Employee> sup = Employee::new;
System.out.println(sup.get());
Function<String,Employee> fun = s -> new Employee(s);
fun = Employee::new;
System.out.println(fun.apply("yinwei"));
数组引用:
类型[]::new
Function<Integer,Integer[]> fun2 = i -> new Integer[i];
fun2 =Integer[]::new;
System.out.println(Arrays.toString(fun2.apply(5)));
2)、Stream流
概念:根据数据源所产生的元素序列
数据源是集合和数组,侧重点在数据的存储。
Stream流:关注数据的计算
注意:
流本身不能存储数据
流不能修改数据源中的数据
流是一次性的流,流式操作的每一步都会返回一个持有结果的新流
延迟执行|惰性加载:当不进行终止行为的时候,不会执行流式中间操作
过程:
- 获取|创建新stream
- 流式中间操作
- 终止行为(返回的结果不在stream)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Class001_Stream {
public static void main(String[] args) {
//1.Collection--> stream
List<Integer> list = new ArrayList<>();
//顺序流
Stream<Integer> stream = list.stream();
//并行流
Stream<Integer> stream2 = list.parallelStream();
System.out.println(stream2);
//2) Arrays.stream(array)
Stream stream3 = Arrays.stream(new String[]{"1"});
System.out.println(stream3);
//3)Stream.of(数据1,数据2,数据3...)
Stream stream4 = Stream.of("a","b");
stream4.forEach(System.out::println);
//4)Stream.of(数组)
Stream stream5 = Stream.of(new String[]{"abc","bcd"});
stream5.forEach(System.out::println);
}
}
3)、数据库
概念:数据库是按照数据结构来组织、存储和管理数据的仓库。数据库现在已经成为数据管理的重要技术。
DBMS:数据库管理系统,是操纵和管理数据库的大型软件。它对数据库进行统一的管理和控制,以保证数据库的安全与完整。
根据存储模型可将数据库划分为关系型数据库和非关系型数据库。
关系型数据库指二维表格模型及其之间的联系组成的数据组织。
Oracle RDBMS|Pracle Database是甲骨文公式的数据库管理系统。
SQL是数据库语言,通用,功能更强的关系型数据库语言。
DDL:数据定义系统
DML:数据管理语言
DQL:数据查询语言
DML:数据管理语言
DCL:数据库控制语言
关系型数据库以表为单位
对表的理解:
表是属于用户的
表是逻辑表(概念表),不是物理表
表结构:表名、字段(名称+类型+约束)、记录
重要的系统服务:OracleServiceXE,OracleXETNSListener
查询语句select * from emp
三范式:在设计数据库时,存在行业标准,也称范式。一般遵循三个条件(三范式)。
1NF:指数据库表每一列都是不可分割的基本数据项
2NF:先满足1NF,要求数据表的每个数据必须唯一被区分。
3NF:先满足2NF,要求一个数据库表中不包含已在其他表中已包含的非关键字信息。即属性不依赖其他非主属性。
简而言之,最终的目的是避免数据重复冗余。
1NF:à列不可再分的最小原子(避免重复)
2NF:à主键依赖(确定唯一)
3NF:à消除传递依赖(建立主外键关系,拆分表)
约束:主外键约束
主表:具有主键字段
从表:添加一个外键字段
外键字段关联主表的主键字段
外键字段中能够出现的值,必须是在主表的主键字段中已有的值。