00:00
我们看这啊讲里边呢啊也有啊,也有我们说的这个内容,咱们呀,就看我们这块啊,看这里边信息啊呃,那么这里边做做这个ER表达式简化版这个内容啊,看我这这四个啊说以说我们说啊这个EL表达式它的这个简化版,那么我们是做商业应用开发呀,那么商业应用开发呢,实际上就是快餐式的,快餐式的开发,也就是说什么意思呢?我们的命令要尽可能变得越来越简单啊,就是你在越往后选,你发现呢,这个命令啊,用起来真的是越来越简单啊,越来越简单,那么但它里边原理呢,就涉及到我们第一期第二期,包括我这个计算图的相关的原理啊,怎么说跟大家打基础的啊挺好的,说怎么意思呢?那么首先先看看其相关的命令格式啊,看简化版的这个命令格式什么样的呢?美元符号啊,大括号,然后写。
01:00
写上什么呢?写上我们的共享数据名称,好,你看这就是一化表达式简化版的这个运令模式,那么这里边一看少点什么,少点什么呢?少的是我们作用域对象的别名,诶,那么可以省略啊,可以省略,那么这就是一二点二式的简化表,那么我们看一下其相关的这个命令作用,它的命令有什么作用呢?那么简单来说呢,在简化板里边说我们的这个ER表达式表达式,那么它呢是允许啊,允许我们的开发人员,那么在开发的时候去省略,省略什么呢?作用与对称的别名,你看在这更简单了,就是为了让你命令到最后尾的目的,封装,封装之后到最后的目的是什么呢?就是为了让你少写代码,这样来迎合什么呢?It行业中老板的要求怎么让我们程序员开发速度变快呢?
02:00
少写代码来啊,少写代码好了,那么咱们去演示一下好了,那么在这儿呢,咱们再建一个小网站出来啊,我们去看看啊,建一个小网站,那么文件new model啊,New model,然后呢,Web education,下一步,然后在这里边呢,写上我们说的零三,然后在这边呢,写上EL表达式它的什么呢?表达式它的这个简化法啊,简化版好了,保存一下啊保存一下,保存完了之后呢,那么在这里边呢,咱们给大家来一个简化版的一个输输出,我们看看啊,那么首先呢,我要建一个来提供什么呀,共享数据啊,然后在这里边建一个写上com.BG power note,点咱们写上controller啊controller好了,起名就叫做one。
03:00
好过来,然后写上这个map,它的这个什么呢?对的别名one好了,然后现在呢,在这个do get的方法里边,咱们呀,就做事情啊做事情说怎么做这个事情呢?首先啊,我们看看,那么在这里边我们向当前这个用户啊,我们写上啊当前用户他的这个session中去添加一个共享数据好了,那么在这里边呢,我们先通过request跟汤朋友说,哎,小涛啊,把当前这的规子给我们好了,HTP,咱们写上session,那他们呢,把这哥们的柜子,那它的柜子行了,然后呢,我们将柜子里边放一个共享数据set,那么共享数据名称,那么咱们写上K,然后这边写上什么呢?哎,比如写上说叫老崔啊,咱们这么写吧,叫飞飞好了。
04:00
叫菲菲,哎,叫菲菲,在32放上一个叫菲菲,然后接下来第二步来,那么第二步呢,我们看看啊,那么请求转发啊,请求转发来申请调用回档,调用我数的这个index1.jp,好,那开始稿request点,然后写上什么呢?写上这个get request,然后在这里边斜线index下方in. Jp.request response行了。写好之后呢,那么我们现在呢,到外部下面去建一下这个可爱的JP,刚才啊,然后写上index1.jp啊,index1.dp保存,保存完了之后把这些不用做输出的抹掉,好我们看看首先呢,我们说标准版啊,标准版EL表达式来输出,输出这个session中的这个K,它的值是多少,好,标准版你要这么写,CI xco点啊K会输出菲菲的,对吧,北菲,好了,那么咱看下一个简化版,简化版的这个EL表达式来输出section中的这个K的值是多少,好,CTRLCCTRLZ,那么这里应该怎么写呢?你可以把science go省略掉,直接来一个K好了,那么写好之后呢,那么我们把这个网站呢,交给我们的toca。
05:34
来做相关的管理啊,Run一下艾figure这里边,呃,这块给网站起个别名就叫做my web好了,保存一下,保存之后呢,在这里边呢,我们做一个同步更新,行嘞,好,启动早起看效果啊,看效果你会发现啊,诶无论是简化版还是标标准版,输出结果都是一样的,都叫做非非啊,都叫非非啊,想入非非啊。
06:04
那行了,那么我们去找弯所啊,我找小弯,我找一号过来给个结果,你看都叫菲菲,那么这是什么呢?这是EL表达式,它的这个什么呀,减化板在写的时候允许你把共享数据的别名省略掉,啊呸,允许你把什么呢?作用于对象的别名省略掉,那只写什么呢?只写我们的共享数据名称就可以了,诶简化版命越来越简单,那么但是呢,我们说呢,在这种简化版里边,它实际上是有点隐患的,有什么隐患呢?不着急,看这回到8CE里边来,那么我们呀,再做一件事情啊,添加一步好了,过来说第二步干嘛呢?我们要向当前的请求作用于比较中啊,当前的这个请求作用于对象中去添加一个共享数据好了,那么在这里边request。
07:05
点set attribute叫什么呢?叫K,然后里边写什么呢?不要写上手梁啊,写推手梁,好了,你看在request里边我们也放了一个叫K的共享数据,它叫做催收量,好了,那么接下来我们再访问一下。看这运行结果会有什么变化呢?走诶你发现不对了,以标准版的方式,标准的一表二式来输出的时候,30多的K的值还是飞C,但是用这个简化板输出的时候呢,30多的K的值是多少呢?它变成了request里边的共享数据,受量凶的啊受量凶的好了,那么这是怎么意思呢?哎,看其工作原理我们看一下啊第三个啊,说在这里边其工作的原理好了,我们看看说怎么怎么回事呢?说呀,在EL表达式简化板,在这个简化板中啊,它由于没有干嘛呢,没有指定,没有指定我们这个作用于对象,没有指动去对象,所以呢,他在执行的时候,那么他采用什么呢?猜的这个算法他采用。
08:25
什么呢?猜这个算法好了,那么有同学可能在大学里边学过计算机啊,也学过计算机主学过编程,那么他可能会问一个问题。怎么会有猜测这种算法呢?各位同学啊,我问问啊,学过计算机专业同学有没有什么呢?有没有学过这个,有没有学过我们说的这个猜的这个算法的,有没有,或者说你在哪里见过这个猜的算法?有没有问问咱们有没有来自于这个大学计算机专业的同学,你在学校里边有没有学过这种算法,或者说你见过这种算法呢?猜的这种算法呢?
09:01
你猜啊问问题说说赵刚同学这个知识点怎么回答,赵刚同学说什么呢?你猜我会不会啊,我跟大家讲讲啊,猜的这个算法呢,实际上呢,它是一个偏硬件的一个算法,就是计算机硬件的算法,那么在大家哪里见过它呢?比如说咱们学多线程啊,我们看啊,多线程里边我们说有三大特征,哎,多线程里边哪三大特征呢?我先问问这个问题吧,各位各位同学都是学过多线程的,多线程里边三大特征指的是哪三大特征?来我看看来各位同学知道了,知道的这个这个请请打字是吧?多线程里边三个线程指的是什么?嗯。多验证哪边三角条形指的是什么,我看一下啊。
10:00
来了团灭啊,团灭啊原子性对不对,然后我们说什么呢?可见性啊,然后呢,我们说顺序性,哎,你看还是有几位同学可以的啊。它有几个同学呢?可以的,这里边哎,我们看一下啊,原子可见有序啊,原子可见,那么这里边有序指的是什么意思,大家知不知道,大家知道有序是是怎么回事说比如说我们说在线程执行过程中,有这么大命令,特A等于十,然后呢英特B,然后呢等于20,然后呢,特特C,它等于A加B在这,那么我们的CPU在执行这段命令的时候,它是不是一定会按照ABC这个步骤执行的,不是的,那么它呢,为了提高效率,它用的就是猜的算法,猜的算法是干嘛呢?这里边有三条道,一条,两条,三条,那么他会先捡一条走,他可能先干嘛呢?他可能先捡的就是第三条,他先执行是这个命令,当他发现这个命令不能走通的时候,再往回找,找这个命令里边缺陷的地方,所以会导致一个什么问题呢?它会导致啊,我们的这个程序在多线程运行过程中的时候。
11:19
单个线程无所谓,多线程的时候,那么就乱了,它就没有顺序了,可能先执行英特B等于20,再执行特C等于A加B,然后再执行的是英特A等于十,它就是乱了,所以在编程过程中呢,因为我们的CPU呢,它在执行命令行的时用是猜测算法,所以在中线程过程中,我们才要尽可能去保证什么呢?保证它的这个有序性,哎,有序性这里边。好了,那么这些东西呢,实际上是我们在学多线程过程中的时候,你必须干嘛的啊,诶我们看看啊。取消啊,结束进程好了啊,所以大家必须要搞清楚,所以在计算机CPU里边本身它用的就是猜测方法,那么其目的是什么呢?其目的就是说看看哪行命令可以不执行啊,看哪行命令不执行来提高我们的执行效率。猜测方法那么在我的压表二式中呢,他一为也是这个猜测算法,那么这个参方法怎么走的呢?哎,我们看一下啊,那么里边首先首先它会到哪里去呢?它会到我们的这个配置context的,就是当前中去定位,定位我们的这个共享数据啊,定位我们的这个共享数据好了,那么如果存在,如果存在那么就直接读取输出B干嘛呢?去结束执行,他用到PP去问问,诶你这里边有个叫K的东西呢,如果平常我这有好拿出来输出结束执行好了,那么往下看就来说呢。
12:53
如果呢,在我们的这个配置contact里边没有什么呢?定位成功没导键怎么办呢?那么这里边它就会到下一个作用对象中去得,那么哪一个作用对象里边来呢?就是到我们的request中,到request中如果赶巧了在request里边请求作用表中有这个数据读取输出并结束执行好了,那么如果在request里边也没有这个东西的,我们看一下啊,如果在我们的这个request里边也没有定位成功的,那么这里边它呢就会到session中去找的,如果在这边有,那么就输出结束执行OK了,那么如果在session里边也没有呢?如果在session里边也没有呢?那么在这里边呢,他会到哪里去找呢?他会到我们的这个全局里边去定位,如果全局里边有,那么就输出,如果没有呢,往下看说,如。
13:53
我在我们的这个application里边也没有定义成功,Air application功也没有定成功,那么这个时候怎么办啊,我们看一下啊,那么这个时候四个CRP里边就这四个作用对象,那么此时它将返回的是什么呢?返回的是一个呢?哎呢,那么这就是我们这个EL简化板表达式,它的一个空原理就是一个猜,那么也就是说有同学说对了,自上而下先到配置康态里面去找,如果里边没有,那么怎么办呢?我到微快里面去找,那么在微块里边如果没有,我们到什么呢?到三中去找,如果session里边没有,那么我们到什么呢?到二面去找,它是这么玩的,大家看到没有,它是这么玩的啊,那里边就猜的一种方式好了,那么正是因为这种方式,所以呢,你看我们request里边有个K3个K,那么在减法版平行过程中,它找到了request,这里边找。
14:53
得到这个K输出这个结果是良凶,然后就不往下执行了,所以最终结果在这里边看到没有,在这儿就输出它了,诶这是其工作原理所导致的问题,所以在这里边大家注意一个问题啊,这个问题我们看一下啊,第四个问题啊,说呢它存在的这个隐患,说这个东西香不香呢,香呢手写命令啊对不对,手写令对传来讲就是香,但它里边是有隐患问题的,说什么问题呢?在这种方式中,第一个它容易干嘛呢?它容易去降低,降低我们的这个什么呀,程序执行的速度啊,程序执行的速度。
15:32
好了,那么我们小时候学过一个成语叫什么呢?它叫做南辕北辙,对吧,南辕北辙,哎,在这里边南辕北辙好了,本来干嘛呢,本来我们说要要应该向南边走,他不,他不要从北边走,钻一个圈回来到这儿,那本来这个数据呢,是在全局作用对象放着的,那么你直接从这里找吧,不,我要从这里边开始早起,有没有有没有,有没有有没有,那么这个时候从四个作用对应里边便利完毕之后,那么时间一定会消耗很长,所以它呢,那么看呢,它容易干嘛呢?它容易去降低程序的执行速度,那么咱们之前在讲接口,在讲接听器时候,我经说过啊,一段程序的执行速度呢,直接决定了这段程序在单位时间里边可以接受的访问量啊,访问注意量,这个问题好了,然后接下来我们再往下去看的问题啊,往下看看问题,那么他还搞什么问题呢?那么这里边它。
16:32
容易干嘛呢去导致我们数据的定位的错误,像刚才这个bug就是这个问题在这里边,你看那我们明明想拿SESSION10的K,但是呢,用到这个简化板之后呢,我们拿到实际上是什么呢?是request的这个K啊,并位属于错误,所以基于其工作原理呢,它在其使用过程中有这么两个问题,那么这么一说我们有点不乐意了,这个简化版早知道有这么问题,作者为什么要提供他呢?诶我们看一下啊,往下看第五个问题在这。
17:07
那我们说说什么呢?说说啊,这个液表达式,说ER表达式里面什么呢?这个简化板,它的应用场景,说作者写这个简化版到底是在哪里用呢?那么应用场景好了,说呢,说他的这个设计的目的啊,他的这个设计的目的就是干嘛呢?就是去简化,简化呢,从我们的这个当前页作用对象中来读取共享数据并输出的这个什么呢?并输出的这个难度的,人家原来作者本来就是从它里边读数据来输出,来降低它难度的,那么大家看看,如果用的是简化版的话,如果是用简化版的话,那么我们从配置康开里面读数据,第一个会不会降低我们程序的执行速度呢?不会的,为什么呢?人首先就到这里边做定位,所以它不会降低我们速度的。第二个会不会出现我们数据定位失误的问题呢?也不会,为什么呢?因为人家首先是到这里边儿来做定位的,所以人家原本是要在这里边用的。
18:16
但是呢?在这里边也能用,在require session合能用,但是有隐患问题好了,那么这个时候有个问题呢,那么我们在实际开发过程中该怎么办呢?好记住第六个问题,我们看一下啊说呢说呢,我们说这个EL表达式啊,ER表达式,它呢尽管它尽管呢,我们说存在了什么呢?很多的这个硬安表达式简化版,那么叫简化版简化板,那么简化它的这个简化版尽管存在了很多的这个隐患,但是在实际开发过程中,那么我们的这个开发人员,他为了节省什么呢?节省时间一般都使用什么呢?一般都使用我们的这个简化板,一般都使用我们说这个简化板,而拒绝干嘛的拒绝使用我们说的这个标准版,诶这是一个非常有趣的现象,那么看到这句话呢,有同。
19:18
他可能会纳闷呢,他纳什么闷呢?难道这帮货他不知道这个简化版里边有这些问题吗?人家都知道都知道,但是你啊,现在还不是程序员,如果有一天你真成为程序员,你就会知道一件事情,什么事情的。对于一个程员来说,当一段命令里边可以少写一到两个字母的时候,这种诱惑是他无法抗拒的,比如说外尔下大雨,然后呢,班车已经到了,班车经到了要拉你走,你现要是不抬腿走,你你今天就在干嘛呢?打车回家了,而且还要被淋雨,对不对?你着急要要趟班车,那怎么办?你正在写最后一行命令,那么最后一行命令是什么呢?就是我们说的一个输出了,那么这时候你还有心情去写上什么呢?Session SCO啊,去他的吧,直接来个K。
20:07
那他不知道这样会降低运行速度吗?他知道,他不知道这样会容易导致定位错误呢,知道,但是还有什么比得上按点坐班车回家是重要的呢?所以我在从2004年入入行开始,我在GP里边我所见到的这个ER220十全是简化版,全是简化版,我当时看完之后啊,我都想哭,为什么呢?这里边儿啊,各种K1K2 K3K4,我都纳闷了,这个数据从从哪里边写进去的呢?啊,检答安性的,所以在实际开发过程中啊,程序员你可以从项目里看,几乎在真实项目里边,当有人用减化版的时候,基本上啊,当有用一二表R时候,全减化板,你到后面第第四阶段,在第四卷当中,在spring框架里边呢,也会涉及到ER表R式的一个使用,你看赫老师用的说上去给你干出减化板出来,所以大家注意啊,所以如果将来你在做实体开发的时候呢,在项目组里,当你在JP里面写写表达式的时候,你先瞅瞅看看这个项目组里边JP文件中的压表达式,有没有人写标准版,如果有的话再用标准版,如果大家都有简化版的时候,那你就上去随打六写简化版就行了,诶就这个内容啊。
我来说两句