00:00
各位同学大家好,接下来为大家带来一个一线互联网大厂的真实的生产案例,帮助大家更好的掌握future。那么来案例精简,从电商网站的一个真实的比价需求,这个需求开始给大家进行介绍,那么在希望大家在通过本案例的训练以后,那么在简历上说清楚。彻底掌握了computer future,它是什么?怎么用的?用在哪?在项目当中你解决了哪些问题,可以更好的帮助大家进行挑战大场的练习。好,那么同学们话不多讲,开工。为了更好的掌握computer future的使用有个基本功,那么也就是说现在大家必须要对函数式编程,包括一些拉表达式、流式计算相当的熟练。那么来看一下我们的大厂面试题的复盘,那么熟悉杨哥的都清楚,我的粉丝、弟子、学生,包括以前公司的同事都分别在一线城市的各大场,那么他们跳槽或者我们日常交流都会来复盘各自的技术难题和反馈他们碰到的面试题。那么大家搂一眼,这是我们百度的一个面试题,大家看一下。
01:07
学生复盘了以后,直接告诉我,其中有一个叫JAVA8的函数式编程,你目前是否使用好,那么对于大乘的要求,我们呢,必须拿下,那么对于函数式编程其中是一部分。其实而言,包括你现在对源码的阅读,那么也需要你对拉姆的表达式能够有所了解,对吧?还有stream流失调用change。链式调用和JAVA8的函数式接口以及对应的接口编程。那么对于拉姆的表达式,我们通过前面所讲的案例大家都清楚好,那么对于我们的流式调用,我们在下面的真实案例会给大家进行编码说明,那么最终stream流式调用和嵌链式调用这个链形成链条锁链的意思,那么这个是什么呢?我们待会马上给大家进行说明。那么下面为了给大家更好的进行编码实战,对函数式接口我们大家做一个简单的复习和串讲,好首先看我们的reable。
02:05
这个接口里面有且仅有一个方法,那么它呢?非常简单,也是大家非常熟悉的,最熟悉的也就是我们学。Java hello word开始的多线程的这一张reable,没有输入参数,也没有返回值,哎,多线程的获得它是实现re接口是其中的一种,那么第二个function功能型函数式接口,那么它呢,有什么特点呢?有一个输入参数,有一个返回参数,Function,好。第三个consumer,消费型函数式接口,那么它呢,特点是有一个输入参数,但是没有返回值,那么对应的这个BI consumer呢,自然而然是不是基于它对应的一个延伸啊,那么这个BI是什么意思呢?我们在哪有没有用到过,见到过呢?来,我们先回到我们的代码上一讲的案例,我们这儿是不是有个when complete,但你完成的时候,大家请看人家这个方法里面传几个参数啊,要传一个,但是这个参数它是一个BI consumer类型的,那么来。
03:06
这个有什么特别之处呢?这个BI和consumer来,BI是英文词根,代表几个两个的意思,换句话说,它是有两个输入参数,但是没有返回值啊,好,那么同学们。搁到这儿了以后回到我们的源代码,我们大家可以看到它呢,就是传一个BI型的。接口,那么它呢,需要传递进去两个参数,回到我们上一讲的案例,When complete,大家请看这个栏姆的表达式,我们传了几个参数,两个,一个按照它的要求就是上一步这个异步任务,这个阶段完成以后,它的反回值就是这个传给这个V,只不过我们日常用V代表的是value值,你这儿可以写任何字母abcd。XYZ都行,那么这个E就是我们的什么?Exception异常,那么这个不是我们要求的,是它大家请看这个就是我们一个T啊,这个是不是able就我们的异常好那么这个呢,就是我们卡,那么最后一个大家最熟悉的supply对吧?供给型函数式接口,那么没有输入参数,但是却有一个返回值啊,那么也就是我们常见的最经典的这一个,OK,没有输入参数,但是有一个返回值啊好,那么对上面的函数式接口给大家做了一个简单的串讲和小复习,那么这张表给大家整理好,请大家务必粘贴进自己的笔记,或者保存好老师后课后发给大家的课件,那么午餐。
04:31
我返回一个参数,有一个返回等等等等,我就不再啰嗦了,好,下面。我们再给大家介绍两个知识点,一个叫嵌链式调用,另外一个join和get方法的对比来,那么同学们,我们由于后面呢要做这个电商网站的比较需求,我们先提前讲好一个类,节约时间啊,那么class在这我们再来看这有个student。我们这呢,新建一个类,这个类呢也很简单,Private ID private这个string。
05:04
Student。Name。OK,那么在这呢,嗯,也随便再写一个吧。嗯,这个叫。Major,那么它呢,代表的是他的所学的专业,好,就这么简单,那么如果你熟悉这个long book的那么同学,那么我这写什么,我就不再。多啰嗦了,OK?那么这呢,就是我们的没有参数的。啊。接下来呢,那么同学们,我们这个。换以前同学们都清楚。我们尿一个student这么一个对象对吧?这个呢,是我们的student,那么对于student我们要对它设置是不是一堆的set set set对吧?那么来假设这是一号学生,一名字是叫张三,他的专业呢是计算机,OK,那么大家请看这种设置的话呢,从上写到下,大家都非常熟悉了,那么这个时候呢,你可能会觉得奇怪,老师,这些我都懂。
06:08
跟我们现在要强调的氢氧链式调用有什么区别来,那么目前是一种新的流行语法。大家请看。我们这儿呢。欠等于处来纠正。现在如果一些新版本的一些底层代码已经产生过这样的写法来set。ID,假设这是12号,换以前我是不是也就这么竖着写,或者你用一些什么并拷贝工具随便你,但是现在我们可以这么干。再继续set student name,这是李四第2SET他的专业假设英语系。OK。那么。它所表示的就是从左到右可以像一条链条一样,一列火车,一条项链。给你搞定,那么一些国外的大神觉得呢,反正如果我看到这个set set从上到下,哎,我都明白你是在做设值,我就不想看了,直接滚到下面,能不能一行搞定呢?所以说把它从上到下,从竖变成一行,哎那么这样的写法你喜不喜欢,你接不接受,那么哎,仁者见仁,智者见智,萝卜白菜各有所爱,但是呢,各位同学你你希希望大家呢,知道这样一种写法啊,后面的话有很多你们去看大数据,包括加了一些底层的源码,一些新的框架,已经慢慢的看,开始采用这样的一种语法,现象好,到时候不懵逼就行,OK,那么这个呢,这给答案呢,先介绍到这。
07:31
好,那么接下来呢,我们来说一下我们第三个知识点,Join和get方法,那么它们两个呢,都可以从comp future里面取得值,那么它们有什么区别呢?你们熟悉computer future的,那么同学们我们都清楚啊,这个呢会有一个返回值。那么这个返回值呢,我们就写个简单的哈,那么1234吧,啊,就得到这么一个字符串,那么这个呢,是我们的。变量。Computer future,那么假设换我们以前同学们都清楚,我们要想获得是不是computer第2GET,来,大家请看这个get方法都清楚可以得到里面的返回值啊,对吧,但是他这儿。
08:12
报红线怎么着,Get的方法必须要抛出异常,你必须要处理异常,OK,那么来同学们,我们呢,运行一下,这个时候大家可以看到我们运行的效果,OK,没问题吧。好,现在我把。他住掉,我把它直接拿掉,和之前一样。Joy。OK,大家请看,它和get不一样,没有下面的红色波浪线,也就是说这个join它在编译期间不会去做检查型异常的处理,你抛不抛异常都OK,运行起来以后咱们该报错咱们再说,所以说这个就引它的作用和get几乎是一样的,其区别就是在编译时是否报出检查性异常,OK,那么大家请看这个是哈1234完全可以获得OK,那么到后面呢,我们可能会用到这个就应,那么希望大家要明白他get是一回事。好,那么这个呢,就是在我们案例实战之前,给大家扫出一些相关的基础知识和一些语法的新写法。
我来说两句