00:01
刚才我在给大家演示的时候啊。我这儿是不是这个没写。这个还是杠萨,这个也是杠萨对吧,都是写的杠萨,然后呢。我启动服务器。他是报错了。对不对?为什么他这说了the SOS named?这个some和some。Are both mapped to the URL pattern gun which not。Permitted。Which is not permit,这是不不被允许的是吧?也就是说我的一个ul pattern值对应出来两个solid,那从字面上理解我们很好理解啊,我这提交的杠sum,你说我是执行sum to还是执行some呢,还不知道。
01:12
就我们表面上是这样理解的是吧,好理解,那么。底层的代码到底是如何进行的呢?那么这种映射关系,它到底在底层是怎么样建立起来的呢?诶,我们下边就给大家讲一下,你注意啊,下边我要讲的这个内容是很重要的,是面试经常要问到的。当然,你如果能把它说清楚了。那么也是反映你的实力的时候。在我们的服务器中存在有两个map。
02:03
你注意它存在有两个map。咱们画个图。这两个map。这样吧。我画这样一个图啊。就这有这个意思就行了啊。好。Yep。那么。Map当然是K对吧?就这这是K。
03:04
这是K。Their value。这是我们的第一个卖风。卖我。这第一个map,让这个map里边K是什么。Key放的就是我们的URL pattern。它放的就是URL是什么。So。引用。什么意思啊?这什么意思啊?意思就是说。当我的请求到达时,当然我们服务器首先会将这个请求是不是解析啊解析出来,Uri让哪里uri和这里边的key和map one的key进行逐一的比较。
04:18
看看哪个能匹配上。如果匹配上了,就找到其value。它的value是什么引用嘛,肯定就是S实例呀。然后就可以运行这个的。Service方法吧。就这。很简单。解析服务器解析请求获取到UI,然后和。第一个map里边的key进行对比,找到这个key以后,那么找到其相应的value,就是这个solid引用,然后执行这个service service。
05:04
这也是为什么我们刚才写了一个杠萨。特报错。我们知道map要求什么key。是唯一的,你这儿有个K叫sum,这儿也有个叫杠,Sum肯定不行啊。对不对,这要求是唯一的呀。OK。这是map,还有一个map。那还有一个map,那我们就得再画一个。啊,就这啊。随便画几个就行了。就这了啊。那同样,这是什么?这是K。
06:02
今儿晚了。好,就这。那它的K是什么?仍然是URL pattern。注意,是的。或者我直接这样写吧。So class。什么意思?就我这个或者这样写class,这这是不是看得更清楚了s class。就我们那个。全限定类名啊,这个solid全限定性类名。这是我们的。
07:03
Map to这第二个map。那他又是干嘛用的呢?它是干嘛用的,你注意啊,当我们的请求到达以后。这是请求答案。请求解析出的uri,确切的说,这不是uri啊,是什么?我们回头再说。我们暂且把它当成uri啊,在请求解析出的uri到第一个map里边,到key里边取行便利就找找找找找找。你找到了会执行。万一要找不到呢,他找不到会到第二个map里边去找。
08:03
他会到这儿去找。那就是这个东西会到这儿。会到这儿的再去找。到它里边找,那这次找到了没有,找到了找到以后就找到了这个solid class,它的值也就是这个权限定类名,权限的类名找到了,找到以后会根据反射机制啊。是不是会根据反射机制把这个solid的实例给创建好,创建好以后紧接着呢,把它的值放到这个。Map里边,Map one里边。当。K仍然是12286呢。Y就是你刚刚创建好的那个solid的引用啊,就放到这。然后再运行这个的方法。
09:02
也就是说,我们服务器里边存在的这两个map是非常重要的。你要理解这俩map啊,整个这个过程,首先请求到了,到了以后先到第一个map里边去找相应的key。如果找到了。那么执行这个。Key所对应的value就是这个引用的service方法,如果没找到,没找到会到第二个map里边去找。第二个map肯定能找到,找到以后,然后找到其全心的类名,通过反射class form嘛,是不是通过反射机把这个。这个实力创建好,创建好以后再把这个。Key和value。这个Y6是指的那个引用啊。
10:01
放到第一个map里边,然后执行这个。引用引用的service方法。这是它的执行语言里最重要的东西。这个一定要理解。当然,这也是我这儿给大家提到这两个脉吧。OK,最后再说一句啊,这个somebody for somebody in for这个方法提这么一句。了解就行了。这个方法啊,它不是生命周期的方法,这个方法。里边一般情况下放的什么?放的是一些对当前solid进行说明的一些说明性文字,比如so的版本,当前的版本。
11:03
是吧?比如。当前的作者。比如当前。Serve lead所在的应用等等等等吧,这这些说明性的信息就是成员自己写写进去的啊。啊,这个方法无所谓,这个方法无所谓啊,哎,了解一下就OK了。
我来说两句