黑盒测试:不需要写代码,给输入值,看程序能否能够输出期望值
白盒测试:需要写代码的,关注程序具体的执行流程
黑盒测试:不需要写代码,给输入值,看程序能否能够输出期望值
白盒测试:需要写代码的,关注程序具体的执行流程
stream属于管道流,只能被消费(使用)一次
第一恶搞stream流调用完毕,就会流到下一个stream上
而第一个stream使用完毕就会关闭
list和listFile:遍历的是构造方法中给出的目录
如果构造方法中给出的目录路径不存在或者给出的路径不是一个目录,会抛出空指针
listFile():返回一个file数组,表示该file目录中的所有的子文件或目录,遍历的是构造方法中给出的目录,会获取目录中的所有文件/文件夹,把文件/文件夹封装为file对象,多个file对象存储到file数组
list()返回一个string数组,表示该file目录中的所有的子文件或目录,遍历的是构造方法中给出的目录,会获取目录中的所有文件/文件夹的名字,把获取的多个名称存储到一个string类型的数组中
function接口
接口用来根据一个类型的数据得到另一个类型的数据,前者称之为前置条件,后者称之为后置条件
抽象条件:apply
逻辑表达式:可以连接多个判断的条件
&&
||
!
需求:判断一个字符串,有两个判断条件
判断字符串>5
判断字符串是否包含a
predicate接口中有一个and方法,表示并且关系,可以用于连接两个判断条件
predicate<T>:
作用:对某种数据类型的数据进行判断,结果返回一个布尔值
predicate接口中包含一个抽象方法
boolean test(T t):用来对指定数据类型进行判断的方法
默认方法:andThen
作用:需要两个consumer接口,可以把两个两个consumer接口组合到一起,再对数据进行消费
consumer接口:消费型接口
泛型执行什么类型,就可以使用accept方法消费什么类型的数据
accept()
supplier<T>生产型接口
制定接口的泛型是什么类型,那么接口的get方法就会生产什么类型的数据
lamabda的特点:延迟加载
lamabda的使用前提:必须存在函数式接口
使用lamabda表达式作为参数传递,仅仅是把参数传到showLog方法中,只有满足条件,日志的等级是一级,才会进行字符串的拼接
否则就不进行字符串的拼接
所以不会存在性能浪费
lambda的延迟执行:
性能浪费日志案例
发现以下代码存在一些性能浪费的问题
调用showLog方法,传递第二个参数是一个拼接的字符串拼接好,然后再调用showLog方法
public static void showLog(int level,String message){
if (level==1){
syso
}
}
public static void main(String[]arges){
String msg1="hello";
String msg2="world"
String msg3="java"
}
函数式接口的使用:一般可作为方法的参数和返回值
函数式接口:有且只有一个抽象方法的借口,称之为函数式接口
当然接口中可以包含其他的方法(默认,静态,私有)
@functionInterface:可以检测接口是否是一个函数式接口
实现步骤:
创建一个本地字节输入流FileInputStream对象,构造方法中要绑定要读去的数据源
创建一个客户端,构造方法中绑定服务器的ip地址和端口号
使用socket中的方法getOutPutStream,获取网络字节输出流OutPutStream对象
使用本地字节输入流FileInputStream对象中的read,读取本地文件
使用网络输出流OutPutStream对象中的方法write,把读取到的文件传到服务器上去
使用socket中的方法getInputStream,获取网络字节输入流InputStream对象
使用网络字节输入流InputStream对象中的方法read读取服务回写的数据
释放资源(FileInputStream,socket)
客户端和服务器和本地硬盘进行读写,需要使用自己创建的字节留对象(本地流)
客户端和服务端之间进行读写,必须使用socket中提供的字节流对象(网络流)
网络上传文件的原理就是文件的复制
明确:数据源
数据目的地
tcp痛心的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据
端口号:一个逻辑端口,我们无法看到,可以使用一些软件查看端口号
当我们使用网络软件一打开,那么操作系统就会为网络软件分配一个随机地端口号或者网络软件在打开的时候和系统要指定的端口号
常用的端口号: