Lambda表达式10-27
数据库 增加 数据
update history_system_monitor set create_time ='2020-10-29 14:18:00' where system_ip = 10.44.1.130"
群演 10-28
昆四总结 10-28晚
体检 10-29上午
Lambda表达式
/**
* 使用lambda表达式的前提
* 必须具有接口
* 接口中有且仅有一个抽象方法
* 接口中智能定义常量和抽象方法
* 方法的参数或局部类型必须为lambda对应的接口类型,才可以使用
* 大概格式方法((参数)->{方法体});
*
* Lambda表达式无参 无返回
*
*/
public class LambdaDemo {
//给定一个导演Director接口 内涵唯一的抽象方法makeMovie 且无参数 无返回值 使用lambda表达式在test中完成
public static void main(String[] args) {
//Lambda表达式无参 无返回
invokeDirector(()->System.out.println("接口中有且已有一个抽象方法"));
//Lambda表达式有参 有返回
sumDemo(20,50,(int a,int b)->{
return a+b;
});
}
public static void invokeDirector(Director director){
director.makeMovie();
}
private static void sumDemo(int a ,int b,LambdaYoucan lambdaYoucan){
int res=lambdaYoucan.sum(a, b);
System.out.println(res);
}
}
Lambda联系
public class Test {
/**
* 定义Student类 name score
* 测试类 定义一个学生数组 存储学生信息
* 使用lambda表达式省略格式 对学生数组按照考试成绩由高到底
* @param args
*/
public static void main(String[] args) {
//学生数组
Student[] arr={new Student("nihao",100),
new Student("shini",360)
};
Arrays.sort(arr,(s1,s2)->s2.getScore()-s1.getScore());
//遍历
for (Student aa: arr
) {
System.out.println(aa);
}
}
}
网络编程
IP地址:网络计算机设备的唯一标识
端口号:计算机里应用程序的唯一标识
TCP协议 三次握手 客户端与服务器
UDP协议面向无连接协议
TCP网络程序
public class InternetDemo {
/**
* TCP网络程序
* 创建TCP服务器端 端口号为8888
* 等待客户端连接 如果有客户端连接 获取到客户端对象
* 获取到对象之后 当前在服务器读取数据 客户端传送数据
* 分析
* TCP三次握手
* @param args
*/
public static void main(String[] args)throws Exception{
// //创建服务器对象
// ServerSocket serverSocket = new ServerSocket(8888);
// //等待客户端连接 如有客户端连接 获取到客户端对象
// Socket acceptSocket = serverSocket.accept();
// //当前在服务器中 要读区数据 需要输入流 有客户端提供
// InputStream inputStream = acceptSocket.getInputStream();
// //读取数据
// int a;
// byte[] bytes = new byte[1024];
// while ((a= inputStream.read(bytes))!=-1){
// System.out.println(new String(bytes,0,a));
// }
// //释放资源
// inputStream.close();
// //服务器一般不会关闭
// //serverSocket.close();
//创建客户端对象
Socket socket =new Socket("127.0.0.1",8888);
//写数据 需要输出流 客户端提供
OutputStream outputStream = socket.getOutputStream();
//写数据
outputStream.write("我是客户端".getBytes());
//释放资源
outputStream.close();
socket.close();
}
}
getInputStream getOutputStream
客户端上的使用
1.getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到输入流其实就是从服务器端发回的数据。
2.getOutputStream方法得到的是一个输出流,客户端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给服务器端的数据。
服务器端上的使用
1.getInputStream方法得到的是一个输入流,服务端的Socket对象上的getInputStream方法得到的输入流其实就是从客户端发送给服务器端的数据流。
2.getOutputStream方法得到的是一个输出流,服务端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给客户端的数据。
客户端
public class MyClientDemo {
/**
* 客户端
* 把图片文件发送到服务器端并读取回馈信息
* 判断文件是否存在及格式是否为JPG 并要求文件小于2M
* 服务端
* 接收客户端发送过来的图片数据 进行存储后 回馈一个“上传成功”字样
* 支持多用户并发访问
* @param args
*/
public static void main(String[] args)throws IOException {
//文件所在位置
File file =new File("C:\\timg (1).jfif");
//判断
if (!file.exists()){
return;
}if (!file.getName().endsWith(".jfif")){
return;
}
//创建服务器
Socket socket =new Socket("127.0.0.1",9999);
//输出流
OutputStream outputStream = socket.getOutputStream();
//读取本地文件
FileInputStream fileInputStream =new FileInputStream(file);
int a;
byte[] aa =new byte[1024];
//是否读到本地字节
while ((a=fileInputStream.read(aa))!=-1){
outputStream.write(aa,0,a);
}
socket.shutdownOutput();
/**
* getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到输入流其实就是从服务器端发回的数据。
*
* getOutputStream方法得到的是一个输出流,客户端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给服务器端的数据。
*/
InputStream inputStream = socket.getInputStream();
int i = inputStream.read(aa);
System.out.println(new String(aa,0,i));
fileInputStream.close();
outputStream.close();
socket.close();
}
}
服务器端
/**
* getInputStream方法得到的是一个输入流,服务端的Socket对象上的getInputStream方法得到的输入流其实就是从客户端发送给服务器端的数据流。
*
* getOutputStream方法得到的是一个输出流,服务端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给客户端的数据。
*/
public class MyServerDemo {
public static void main(String[] args)throws IOException {
//服务器
ServerSocket serverSocket =new ServerSocket(9999);
while (true){
//等待客户端连接 获取客户端对象
Socket accept = serverSocket.accept();
//支持多用户并发访问
new Thread(){
@Override
public void run() {
try {
//读取客户端的数据数据
InputStream inputStream = accept.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(System.currentTimeMillis() + ".jfif");
int a;
byte[] aa = new byte[1024];
while ((a=inputStream.read(aa))!=-1){
fileOutputStream.write(aa,0,a);
}
/**
* getInputStream()获取的输入流指向getOutputStream()获得的输出流
* 这样就简单建立起了服务器与客户端的连接。
*/
//发送给客户端的数据
OutputStream outputStream = accept.getOutputStream();
outputStream.write("上传成功".getBytes());
outputStream.close();
fileOutputStream.close();
inputStream.close();
accept.close();
}catch (Exception e){
e.printStackTrace();
}
}
}.start();
}
}
}