00:00
好的,那咱们继续继续呢,就要点到我们的这个wrong方法里边看我们的执行内容了,因为这一行代码告诉我们,它可以获得叫response code返回值的code,这个大家一定要注意这个参数,这个内容对吧,这个属性,这属性呢是最后system.exist也就进到慢方法最早的那个呢,一直往外传的,因为它现在呢,我们都是通过方法点进来的,对不对?好,那我们进到这个wrong方法当中来看一下,哎,很不巧它是一个。接口里边的抽象方法,那我们CTRLCTRLC,诶这个里边呢,就有一个drive啊,就有一个了,那我们进到drive当中搜我们的这个wrong方法。诶,直接找到我们wrong方法在这个位置对吧?它里边呢,来看一下在这个地方,它里面是不是传一个command啊,一个string类型的command啊,就是命令,这个呢是我们的开课语句,一定要注意啊,那在driver当中呢,刚好它是不是有这个方法,呃,它里面呢,就有一个wrong command的一个方法啊,那当然了,后面还有一些参数啊,那我们可以找到这个,呃,只有一个参数的让command的一个方法,就是它其实它真正调用的它,但是在这个基础上呢,注意呃,它继续调用重载的方法,我们主要关心一下第二个参数,我们记一下第二个参数呢,默认值为false,叫already compel,是否已经编译完成false没有问题,因为我们是刚把hike运行进来,对吧,并没有进行一个编译啊,因为如果你传的是true的话,它将不会进行变译,直接提交我们的任务了。如果是false,那么将会。
01:41
编译好,那我们继续点进去它重载的方法啊,重载方法呃,如果默认的它调用的是,那那我们不用关心对不对,那我肯定有值啊,所以直接调用我们的这个方法进到这块来啊,进到这个方法当中真正运行啊,那在这个方法当中呢,我们将会看到,注意在这边第一个叫run。
02:04
好,这个值大家还记得是不是force从上面传下来的,这个呢,是我们执行的hi语句,Select心,Select count心等等这一系列的语句,好那么在这个当中呢,就要去执行我们等个的一个编译啊等等这些流程了,好,那我们点到这个方法里边,点到这个方法里边以后呢,首先在这边它定义了很多属性,这属性呢,有error message,假如说出错了,它需要给它赋值做一个返回,对吧?那还有circle stage运行状态,这个不是我们当前看源码当中所需要关心的,那我们要关心什么东西呢?来看这。这个值大家应该还有印象,我一直给大家说的,它默认呢传的是一个false,所以呢,这个地方先暂时不用进去,我们先要干什么事,因为这个为true的话就进来,进来之后呢,就要去启动了,对吧,叫driver state,叫exuting,直接去启动,然后呢,它这个状态是compeld啊,加ED的comp的啊,也就编译过的,那我们肯定不走这个,然后呢走else else呢,它会打印一些内容,打印内容,但这个我们不用关心,他也没有说输出对吧,那只是告诉我们呢,现在要重新去编译,预编译查询啊,将会被关闭,那这个不用关心啊,它封装一些它的语句,所以这个呢,还没有到编译,那我们继续往下游走,哪块才会真正的编译我们的程序呢?来,往下,往下,在这块这行的。
03:37
那么刚才这个东西呢,为false那加一个感叹号,它是不是就是处了,也就是说这里面是我们要走的,来看到这个代码叫compile interval,叫。编译了,哎,这个呢,才是我们真正的一个编译的程序,在这个里边,好,那那这块呢是编译啊,编译呢,慢慢的得到我们的一个内容,对吧,那我们继续向下游走一走啊,因为这个过程当中呢,比较复杂啊,比较复杂对吧,如果没有编译还要进行编译,那再次校验嘛,相当于呃,那最后注意这边有一个。
04:14
好,大家应该我们再来回顾一下我们刚才的PPT啊,为什么这个程序我不去着急去看编译呢?因为刚才在这个程序当中,它整个过程啊是这样子的,一二两步。一二两步放在一起的,对吧,这个是client driver当中所做的事情,而这个呢,都是driver做的事情,呃,那第三个方法它呢是最后我们看到execute,它都在同一个方法当中,但是呢,这两步又封装在同一个方法里边啊,所以大家一定要去注意一下,注意一下什么内容呢?诶在这个execute最后我们等会会点到这块,我们打断点呢,叫comp interval这个方法里边,去看它详细的解析流程,在这个看完之后呢,我们要去看到EXQ到这块才真正执行这个编译跟执行它俩是平级的方法,都在我们drive这个类里边,叫run interval这个方法里边,这个一定要去注意一下。
05:16
啊,因为我们不是一条线往下走,说这边编译好了,是不是在后面直接调行调用X的,注意大家大家注意啊,并不是的,它俩平级的啊,它俩平级的这个一定要注意一下,诶终于进到我们专业方法里边了,那我们继续来看在compile in double当中,它所做的一个事情啊,他所做的事情好,那我们继续往后走啊,在这个过程当中,这块我们不用关心,来看这看这块,这个才是真正编译的,因为这个方法呢,只是叫一个comp interval对吧?嗯,那人证编译呢,还要依赖于这个方法,那我们继续往下游走,Compel这个方法,那在这个方法当中呢,我们需要去关心哪些事呢?OK,在这个方法里边呢,我们要做的事情就非常多了,来,首先我们看一下这个方法啊,嗯,我把这个。
06:03
光标放在这儿,然后我们看一下这个方法的一个结束。好找到我们鼠标光标的位置。在这个位置,好在那我们收缩一下啊,呃,那也就是说接下来我们要看哪一个方法将会从五百零五行到七百八十五行,所以我们之前提到的,在这个过程当中,它的一个流程非常复杂,对吧,将heck客翻译成token,将token呢转化为ast,以及as转化为block block继续转化为opator,再进行优化,生成我们的task,最后进行物理优化,那这两件大事都是在我们刚才所看到drive那个run interval那个方法里边去实现的。对吧,非常复杂,所以呢,他整个写了200多行,当然呢,他还会调用其他的内容啊,调用其他的内容,对吧?啊,所以呢,这个方法是目前为止我们要关心的,也就是说最最复杂的一个方法了啊,最最复杂的一个方法了,因为这个解析。
07:09
解析器,编译器,优化器都在这个里边啊,那最后一个执行器呢,在外面跟他平级的一个方法里边,刚才我们看到的对不对?好,那这个呢,我们一定要注意一下,呃,那在这个过程当中呢,最后呢,这里边,当然后面最后都是一些呃,抛这个异常啊等等的这些信息,对吧?那这个其实我们倒不需要关心,看上去200多行,呃,挺吓人的样子对吧?但是其实整体来说呢,我们所关心的东西还好啊,还好OK,那我们就从上面往下面给大家摘取一些比较重要的内容来看一看啊,那在这个前面呢,我把这个先截一下。
我来说两句