java 自定义函数接口_java 函数接口 自定义函数接口 函数式编程 Stream流

本文介绍了Java中的自定义函数接口,强调了其在函数式编程中的重要性,并通过实例展示了如何创建和使用函数接口。同时,文章探讨了服务器端文件上传的优化策略,包括文件名称优化、接收文件的循环处理和多线程接收,以提高效率。此外,文章还详细讲解了Lambda表达式的延迟加载特性,以及如何利用Lambda和自定义函数接口优化代码。最后,文章简述了Java 8中的Stream流,展示了如何使用Stream流简化集合数据处理,实现更高效的编程。
摘要由CSDN通过智能技术生成

文件上传优化:

1.文件名称优化需要优化

服务端,在保存文件的名称如果名称固定,那么最终会导致服务器硬盘,只会保留一个文件,对上传的文件名称优化,

//文件名称定义规则:

System.currenTimeMillis(); + new Random().nextInt(1000000);

2.服务端接收文件的优化

服务器端,接受一个文件之后就关闭了,后面的其他客户端无法继续上传文件,使用循环进行改进,可以不段的接收不同客户端传输过来的文件

//使用循环

while(true){

Socket socket serverSocket.accept();

}

3.服务器端接收客户端文件的效率优化

服务器端在接收文件的时候,假如某个客户端给你传输一个大文件,此时就不能在接受其他用户文件,所以可以使用多线程技术优化接收效率

while(true){

Socket serverSocket = serverSocket.accept();

//使用多线程技术,提高程序的效率

//有一个客户端上传文件,我就开启一个线程,完成文件的上传

new Thread(new Runnable(){

//重写run方法,设置线程任务

@Override

public void run(){

//使用网络字节输入流对象

InputStream is = socket.getInputStream();

//指定一个目录

File file = new File("D:\\upload");

if(!file.exits()){

file.mkdirs();

}

//防止同名的文件被覆盖

String filename = ""+System.currenTimeMillis(); + new Random().nextInt(1000000)+".jpg";

//构建一个本地文件字节输出流对象

new FileOutputStream(file + filename;)

//一读一写文件的上传,最终把文件写入到服务器短的硬盘当中

……

}

}).start();

}

//服务器端不关闭

serSocket.close();

函数式接口

概念:

函数式接口在Java指的是:有且仅有一个抽象方法的接口就称为函数式接口.(默认方法,私有方法不管)

函数式接口,适用于函数式编程的,在Java当中的函数式编程体现在Lambda表达式,所以函数式接口就是用来服务Lambda表达式.

只有确保接口当中有且仅有一个抽象方法,Java中的Lambda才能顺利的进行推导.Lambda就是匿名内部类的缩写

备注:"语法糖",是指使用更加便利方便但是原理不变的代码语法.就比如遍历集合的时候使用for-each语法,其实地层使用的是迭代器,这便是"语法糖".

格式:

只有确保接口当中有且仅有一个抽象方法即可:

修饰符 interface IterfaceName{

//只能定义一个抽象方法

public abstract 返回值 方法名称(参数列表);

//还可以定义其他的非抽象方法

}

public interface FunctionInterfaceOne {

public abstract void show01();

public default void show02(){

//…

}

//void show03();//不是函数接口了 有且仅有一个抽象方法,才称为函数式接口

}

@FunctionalInterface注解

与@Override注解作用类似,Java8中专门为函数式接口引入一个新注解@FunctionalInterface,该注解主要定义在接口上,一旦接口使用该注解,</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值