00:00
好,那咱们去看看啊,D13个知识点,13关于我们说的这个SV啊,叫做contexttest这个接口,这是一个什么东西呢?好,那么首先咱们呀,来一个相关的这个介绍,什么玩意是好了,第一句话这是一个接口,谁家的接口呢?那我们看一下它呢,是来自于serve light这个规范中的一个接口。啊,这个接口好了,那么在我们tomcat中,在tomcat中它存在于什么呢?存在于service这个API,这个价格中,咱们做的规范呢,把这接口写好了,把这接口呢交给了tomca,他为了把这接口呢,就存在这里边,它就相当于我们说的发动机接口,而汤相当于什么呢?发动机研发商,咱们是不是得把这个接口放到这个汤CAD这里边来好了,然后呢往下看,那么我们说在我们的这个poca中,他负责提供什么呢?提供这个接口,这个接口他的相关的时间力,至于说这个接口的时间力叫张三还是王五,我们并不需要关注啊,并不需要关注。
01:23
好了,就这一个接口,那么这个接口在什么情况下能帮助两个threat来实现数据共享的,好了我们看啊第二个,第二个在这。创大,如果啊,如果我们说两个serve life,他们来自于什么呢?来自于同一个网站。这前提条件啊,这两个threat来自于同一个网站,那么他们彼此之间就可以通过什么呢?通过网站中的这个serve context实例对象,通过这个实例对象来实现我们的数据对象,也就是说,只要这两个sort在同一个网站中,他们就可以借助于serve light contact对象来实现他们的数据共享。
02:18
好了,那么再往下看,这个对象的名字好长啊,Serve的对象。那么英文不好怎么办?中国程序员英语都不好,那么一般习惯起笔名,我们的这个开发人员,我们习惯于习惯于将life这个对象,把它称为什么呢?把它称为叫做全局作用与对象。以后再说呀,全局作用于对象指的就是这个接口所修饰对象,我们说请求对象是谁呀?Hb request接口修饰对象,我们说想要对象是谁呢?HP response接口所修饰对象都是别名,因为咱们中国程序员你看光被编程知识点就够多了,还有多少人有精力去学英文呢?所以大家都给他起江湖的,江湖的什么绰号,哎,江湖绰号行了,那么在这里边往下看第二个,那这玩意怎么帮助两个S来实现我们的这个数据共享呢?涉及相关的工作原理,工作原理来画流程图,我们看一下啊。
03:35
那么大家请看啊,在这里边这是什么呢?这就是咱们的一个网站,哎,这是咱们的一个网站,好了,咱们写上啊,这是我们当前的这个网站,好,当前的网站,那在这里边呢,比如说就咱们用的这什么MY,那么现在在这个网站里边呢,诶有两个。
04:00
一个是one,另外一个呢是to threat,好,我们看一下啊,这是one threat,然后在这边呢,我们看一下,在这里边这个呢,就是我们说的这个to threat好了。行了,那么现在弯sort在运行完毕之后啊,诶,它里边有一个数据,咱们想date,比如说什么呢?比如说鸡腿啊,鸡腿它运行完毕之后生成数据叫做鸡腿,现在呢,弯所想把这个鸡腿啊给凸出使用,那么怎么办呢?我们看一下此时在我们的这个网站里边呢,它呀会生成什么呢?生成一个对象,诶在这生成一个对象,那么这个对象是谁呢?我们看看这个对象,它就是我们说的什么呀,全局作用对象,咱们写上compest它的这个实例对象,也就是江湖人称全局作用的对象啊,全局作用对象,至于他怎么来的,等下说一说啊,那么现在呢,我们看看我们的one。
05:19
要想把数据交给toor怎么办呢?他要借助于这个全局中对象作为中间人,作为中间人那么完干嘛呢?他要把这个数据放到这个选举作用对象中。啊,我们看一下啊,说在这将将我们的这个数据去添加,添加到全局作用域这个对象中,好在这将我们的数据呢,添加到我们的这个全局作用对象中。好了,那么数据往里放,放进去是什么东西呢?放进去是什么样子呢?在这儿大家请看啊,那么我们的这个全局作用域对象。
06:04
它实际上什么呢?它呀,就相当于它相当于单位。它相当于什么呢?就是一个map,它就是一个map好了,那么因此当我们y sort把我们的数据往里放的时候呢,它实际上是一个以介值对的方式来存储的。这边是K,这边是value value,那么这个K呢,由什么呢?由Y来设置,比如说我们K叫什么呢?叫做K1,然后这个值呢,哎,就是击腿,这个值就是我们说什么击腿好了,那么此时放到全局作用与对象中的这组数据,我们又怎么称呼它呢?那么这组数据我们把它叫做共享数据,共享数据。好了放进去,那么twoor他要想从全局作用对里边拿到这个数据干嘛呢?我们看一下这里边他只需要做一个读取,那么它怎么去做这个读取呢?
07:11
各位从map里边取数据怎么取啊?是不是只要给出这个K,只要你给出这个K就能拿到什么呢?对应的VALUE6,那么此时在我们的to算里边它就得到了,得到了什么呢?这个y serve LA所提供的这个共享数据在这我们看一下在这,那么这个就是全局作用对象它的方案,它实际上就是个map,万sir把数据放到map里边来toor根据K从map里边拿到这个数据,拿到这个数据哎,在这里边实现数据共享,那么把这个图存一下,另存为PNG,好,那里边呢,咱们写上这是我们说的什么呢?这个全局作用于对象它的这个什么么?它的流程图好保存,那么在这呢,咱们也拿这个文字写写啊写写这里半好了,咱们。
08:12
看看啊,我来说在这里边,我们说每一个网站,每一个网站里边呢,每个网站里边它呀,都存在一个全局作用与对象,那么这个全局作用域对象,这个全局作用对象,那么在这里边它相当于啊不是就是相当于,相当于什么呢?一个脉,它相当于一个。好了,那么我们看一下啊说呢,在啊在这个网站中,在这个网站中我们说的one serve,那么它呢,可以将什么呢?将我们说的一个数据来存入,存入到这个全局作用于对象中啊,全局作用力就象中,那么我们说当前网站,当前网站中,那么其他的这个S,那么此时都可以干嘛呢?从全局作用于对象中啊来得到这个数据,得到这个数据来进行相关的使用。
09:26
诶,这就是提工作言里,它相当于一个什么呢?它呀,相当于一个公共的留言板,相当于一个公共的留言板。那么我呢,把数据在上写上,那么在我们当前的这个网站中,其他的做one two three four,诶,就可以从里面把数据拿出来供自己使用,从而实现了数据的共享。好了,那么这时候有一个问题了。网站里边的这个全局综对象,它是怎么来的呢?哎,这里边就涉及到了全局综对象他的这个生命周期问题,好了,我们去看一下第三个,第三个说说啊,关于我们说的这个叫做全局作用于对象他的生命周期,我们说过啊,在我们以后的开发过程中,我们会遇到好多对象,这些对象我们都是可以直接拿来使用的,但是它却不是我们创建的,所以我们在后面过程中,某一个对象它的生命周期这个问题就是一个相对重要的知识点,那我们去看看啊,怎么来的,首先谁创建的,在什么时候创建的,那么能创建多少个,能活多久,这就是生命周期一个大体的结构。好了,咱们看看啊,首先第一句话啊,说呢,在我们的这个HTP这个服务器,那么在HTP这个服务器在。
10:52
在启动的过程中,它会自动的为当前的这个网站在内存中去创建啊,去创建,创建什么呢?一个全局作用于对象啊,创建全局纵象,好也就这玩意儿啊,是咱们comcat来建的,那么它呢,在启动的时候,大家看这。
11:20
我们当前的这个tomcad,它是不是管理的是第11个网站呀,诶,那么等到我们说的这个tomcad啊,在这等到我们告诉他,诶你启动吧,它在启动过程中,就在内存中为当前这个网站建了一个全球镜像,也就是一个max,也是ma好了,那么接下来再往下看,往下看啊。第二个,那么我们看看啊,往下看,这是第二个说呢,在这个HTP这个服务器在它运行期间的时候,那么一个网站里边呢,它呢只有一个全局作迷对象,一个网站里边就一个独子啊独子好了,为什么就一个呢?其实啊为了好早你想啊说这个网站里边啊,现在有什么呢?有300个全局总体下当班把数据放到其中的一个全局总体象之后,想想toor这个心情。
12:27
得多难过,这是在寻宝呀,对不对,这是在寻宝不好找,所以一个网站里边就一个全新动家,我就把这个数据放这儿了,你就到这儿取就得了,好了,那么再往下看哦,一个网站就一个,那么这个对象能活多久呢?这个对象能活多久呢?哎,我们看一下啊,第三个说呢,在这个HTP这个服务器在它运行期间的时候,运行期间的时候,那么我们的这个全局作用力对象,它一直干嘛呢?处于什么呢?存活的状态,它一直活着,说咱们服务器启动了,从先在启动干嘛呢?跑了100年,那么我们第11个网站中的这个全局综力奖,他过多少年呢?100年100年,哎,好了,它是一直都活着的,好了,那么什么时候会嗝屁掉呢?我们看第四个说呢,在我们的这个A。
13:28
HTP服务器准备关闭的时候,在这说我要把服务器关了,我下达一个命令啊,下达个命,什么命令下个到啊,关在点它的时候,那么这个时候呢,HP服务器它会负责将当前网站中的全局中对象来进行销毁啊,我们看一下啊,在AP服务器准备关闭的时候,那么他会负责将我们当前网站中的全局作用与对象来干嘛呢?来进行销毁处理好了,那么这个呢,就构成了全局作用对象他是怎么来的?哎,那么有多少个,能活多久,在什么时候被谁干掉这个问题。
14:16
那么当年我的老师在给我讲全局中对象时候,他就说了一句话,他让我们备注说什么呢?说全局中对象生命周期是什么呢?我们看看啊,说全局作用与对象它的这个生命周期贯穿贯穿什么呢?我们当前的这个什么呢?我们当前的这个网站,当前网站它的什么呢?整个运行期间,运行期间当年我老师讲的事就这么一句话,这个网站被被to特管理了多久,十年,网站里边的全球像就活十年,哎,在这儿这是全局就下他的生命周期。
15:00
要备注要备注啊好了,不背到时候后面知识点你就听不懂了啊,我们看一下啊行了,那么全局作用对象是怎么来的啊,什么时候来的,有多少个葡萄酒,这事搞定这那么接下来是什么呢?得做一些落地的东西,得做一些落地的东西啊这里边好了。这个跟客户端共享数据一毛钱关系没有,赵高尚这一块呢,这一块你就理解错了,它与客户端不同,客户端来共享这个数据没有一毛钱关系啊好了,那么叫大家做点落地的东西,什么落地呢?诶我做了里边怎么把数据放进去,这个做的又怎么拿出来的呢?好,我们看看啊,那么接下来写上其相关的这个命令啊,相关命令好第四个关于我们说什么呢?它的这个命令的实现,那么怎么实现呢?比如说前提啊,同一个网站中啊,同一个网站中,在同一个网站里边,那么我们说的这个one threat,它要将数据去共享给谁啊,共享给我们说的two th怎么做呢?好看一下啊,首先呢,在这里边是咱们说的这个one threat,那么在one里边呢?
16:25
啊,诶,比如说它调的是谁呢?调的是我们说的do get方法,那么在do get方法里边有什么呢?比如我们说的请求对象request rt啊,T,然后还有谁呢?我们的选对象response,啊,Re response啊,X pass,行了,咱们看看啊,那么在这里边呢,我们说one sort,它要把数据交给two,第一步是什么呢?One sort得把这个数据放到全集中量中,那怎么放呢?我们看啊,首先第一步。
17:04
在这里边我们要通过请求对象,哎,通过请求对象,那么向我们的这个contactca去索要,索要当前网站,当前网站中的全局质问对象啊,全局质问对象说执行有要吗?是的,在我们的这个tomcad启动的时候,它早就在内存中给这个网站生成了全局对象,那么等到serve light被调用的时候呢,那自然就直接要了,那通过随样呢request,那么在request里边有个方法叫什么呢?叫做get serve lightest这个方法,这个方法专门用来向to取,叫哥呀,你把当前网站的这个全局纵成项给我。那么此时我们。com就把全局中心的引用地址返回了,那在里边我们用这个接口就要康泰来修饰它好了,那么这个对象名怎么写呢?
18:05
理论上来讲,爱写谁写谁。但是我们中国程序员有一个习惯,他们把什么呢,把全局中对应的名字统一叫什么呢?叫做application,这是习惯,从我在念书的时候呢,就是这么叫的,哎,工作中大家在用到全动享的时候,都一水的application,都这么叫他好了过来。那么全局装电到手之后干嘛呢?那么做第二步,那第二步在这里边我们看看啊,在这儿第二步干嘛呢?将将咱们的数据去添加,添加到全局作用于对象中来,作为啥呢?作为共享数据啊,说兄弟就有瓶酒搁这放着的,那么弟兄们想来喝随便拿好我们看一下,那怎么放的,我们说啊,这个全局动对象它就相当于一个map,诶咱们想想你在map里边怎么放数据啊,map.put方法对不对?在put方法里边写上一个K,写上一个数据,那么我们在向全局中心放数据的时候,就跟像map是一样的,那么只不过在这里边我们要调一个方法,它叫做set attribu的方法,那么这个attribu的实际上是什么?是全局作用对象中的一个属性,这就是一个set方法。
19:30
在的方法啊,那么这是全局作用对象中的一个属性,那么这个属性其类型就是一个慢,其类型就是一个慢,然后在这里边呢,你要放上一个K,放上一个K,那么比如说我给这个K起名叫做K1,然后在这里边呢,将我们的这个数据放上去,这个数据可以是任意类型的,为什么呢?脉不通的value,脉不通的value本来就可以是任意类型数据啊,任意好了,往里一放,那么这里边完成的是什么呢?把数据放到全局总题项的这个环节行了,那么接下来等到调用,等到去调用to出的时候,我们看它要拿出去说在这里边写上啊,这是我们说的to,在to出里边,诶,比如说它现在呢,开始被调用public or写上do get这个方法好了,然后呢,在这里边复制一下CTRCCT。
20:30
不对,他要去拿这个数据,那么怎么拿呢?首先第一步依然是什么呢?依然是通过请求对象来向他索要网站中的全球动对象好了,还是主要命令CTRLCCTRLV好了,拿到了这个全局中电之后,怎么从这掏数据呢?你从map里边怎么掏数据呢?map.get的方法对吧?map.get方法你把这个K写进去就拿到这个数据了。那么接下来咱们写上第二句话说呢?呃,从全局作用域对象中去得到。
21:12
得到什么呢?得到我们说的这个什么呀,得到指定指定关键字啊,指定关键字所对应的数据好了,那么此时写成一个方法A什么呢?Get a tri这个方法,然后你把什么呢?你把这个K1放进去,你把K1放进去好了。然后这个时候诶,你就能得到什么呢?得到这个具体的数据,那么这个数据取出来之后是什么类型呢?你从map里边,各位你从map里边取出的数据是什么类型。各位,我们从map里边拿出数据是什么类型?Object object对吧,那这里边object,然后你后面使用过程中,你可以根据实际需要做类型强转啊类型强短,那么就是两个命令。
22:03
我们看看啊,塞进去拿出来,塞进去拿出来好了,那么接下来我们就通过具体的代码来实现一下,这在这里边呢,我们去新建一个网站出来model好了,然后这里边呢,Web application,下一步那么我们写上十二十二好,我们看看关于我们说的s contact它的这个使用介绍,保存,保存完了之后呢,在这个网站下面我们来套两个出来好了,现在报名c.BG power note,点咱们control,这是一号,它将提供这个共享数据好保存。那么在这里边呢,向它对外的这个请求地址s match one斜线来好了,然后在这在其督干的方法里边,我们看看啊,首先第一件事情说啊,通过请求对象向我们的com。
23:03
转去索要,索要当前网站,当前我们说这个网站中的这个什么呢?这个全局作用力对象,那么在这里边写上request点。点get,然后写成什么呢?我们的好了,然后在这里边呢,咱们再来application左右下,然后第二个我来第二个在这,那么在这里边呢,将这个数据添加到全局这个作用域对象中来,来作为什么呢?作为我们说的共享数据,共享数据,然后里边写上application,点然后写上S,比如说写个k ke1,然后这边呢放100,这是one,那么接下来呢,我们再去干嘛呢?去创建我们说的two,右键U,然后在这里边呢,建一个老二啊,读出来它是要拿数据的好保存,那在这边他们写上S。
24:18
Two,斜线to,然后在two这里边呢,我们去看看啊,那么第一步还是向什么呢?还是像我们的这个tomcad去索要当前网站中的全局作用与对象,诶,我们看跑哪去了,在这进来拉进去之后,那么我们看第二个从全局作用与对象中去得到指定指定关键字,指定关键字里边所对应的值,那么application.get attribute,咱们写什么写成一。好了,那么他拿出来是什么呢?看这你从map里边取得数据都是up类型,都是up类型,那么我觉得这个数据得是一个数字,所以我要写成什么,写上inte inte,然后比如写上什么money,这边强讲好了,那么我为什么要转成影TE呢?各位我们刚才讲过,我们各位同学来来来来来来来来,告诉我,我这边为什么要写成影皮,而不写成硬撑呢?来,我们去看看啊,过来啊在这,呃,先看这个问题。
25:34
我为什么要写成永T,我为什么不写上int,我为什么不写in特,谁能告诉我,对可以可以可以可以可以可以可以可以OK,非常感谢,非常感谢各位,对非常感谢啊啊OK,就这样的,你看咱在学程序过程中呀,我们说呀,这个这个C语言的这个作者在有一次被采访的时候啊,真事咱不瞎说啊,他问有记者就问啊,说这个什么是一个成熟的程序啊,就记者就问啊,我你们软件这些行业啊,有初级工程师,有高级工程师,那么什么是一个高级工程师呢?C作者是怎么说的?
26:14
高级工程师他就是一个伤痕累累的工程师,那记者就懵了,说怎么回事呢?那么C多长时间了,编程过程中我们知识点的学习啊,是一个一个坑,那当然他英语原意不程中大体判成出来一个坑,换一个知识点,说这个支识点我我我看书听老师讲完之后啊,他不会产生一个什么呢深刻印象,但是当你被这个支识点坑过的时候,诶你就知道疼了,你对知识点就变得很清晰了,所以高级程序员都是伤痕累累的程序员。在这儿啊,大家为什么能不能出来呢?简单呀,你被我坑过呀,你被不是被我坑过,你是被这个支识点坑过呀,啊,你觉得老师让你疼了,他让你疼了,瞬间清晰了,所以成员的学习过程中啊。
27:07
每一个支识点他拿下实际上后面都是一个坑啊,都是一个坑,各位在在那边伤痕累累,哎,在这行了,你看这小问题答的啊,哎呀我老爽了,那么文子啊,文子也可以通过这次获得全局作对象吧,对,实际上呢,要获得全局作对象啊,有多种方式,但是呢,我们在刚入门的时候呢,就拿一个通过这一个来看看他怎么继续使用,至于说他有多少种方式可以获得权益作用对象多了去了,多了去了。都可以啊,有多种方式,那么刚开始讲的时候没必要那样讲啊,属于什么呢?属于背字典啊说呃,拿到这批酱有第一个命令可以怎么答,第二个去罚,第三个命令罚,没必要,没必要。我们就拿先拿一种方式,等到后面在其他场景里边发现诶有一个新对象,诶这个对象也能拿到全球中学的时候,我们再去介绍放到一个场景里边来,要不然就是等于在背书一样,背字典啊背字典没意思啊,没意思,好了啊,那么文子朋友们先看这行了,那么在这里边全局中对象。
28:19
大体上差不多了,我老师当年跟我怎么讲呢,说这玩意儿同学们怎么理解呢,他就相当于一个什么呢,垃圾箱哦,垃圾箱怎么理解呢?我呀,把我的内裤放到垃圾箱里边来了,这时候有一哥们过来拿,我能拦他吗?那那哥们儿不乐意了,你不要呢,你把东西放垃圾箱里边,说你不要了,我才来拿的呀,对不对,所以他就像那个垃圾箱一样,但凡往里扔的东西,别人都能拿出来用,这么的东西啊在这儿行了,那么关于全局作对象这样就说完了,那么大家也要注意一个问题,这是什么问题呢?诶我们看一下全局作用对象呢,它呢占用的是服务端计算机的一块内存。
29:07
其本身啊,是一个map,那么咱们知道map里边可以放什么呢?任意的数据,任意个数数据,任意个数数据就随便往里放。那么这时候就有了问题了,什么问题,如果在使用过程中,你不加节制的,像这个map里边不断的塞塞塞塞数据,导致什么呢?会导致我们当前的这块内存,它会不断的扩张,扩张扩张扩张扩张扩张,最后会把什么呢?会把我们服务端计算机内存,内存条对吧,挤满了,消耗殆尽,那么这时候会出现一个什么问题呢?死机的问题,内存满了,死机了,在这儿,所以最后一句话,什么呢?在。真实填加过程中,只有高级程序员他们有资格将关键数据放到全局中、量中,而我们的普通工程师呢,他们只有资格从里边拿出去,而没有资格往里边写出去。换句话说,这个API讲的都多了,我们刚毕业试出去,程序员一直知道我怎么从这边拿出去的时候就可以了,你都没有资格写这个赛,那么等到三年五年之后,当你成为高级工程师的时候,你才知道哪些数据是我们所谓的真正的关键数据,那么你才有字格往里塞,也就是说当有些发现诶,你能向这里边写数据的时候,你要么是哥,你要么是解,在没有这天到来之前,你呀,就别往里放了,为什么呢?人说了你也配你一个初级工程师,你也配往理解他们,哎,所以你看。
30:55
很多的命令是学,在实际过程中你有没有资格用它,还要看你的身份,别小瞧这个赛,关键就是这个数据,什么样的数据是关键数据,你不作为这个项目的高级同时,哪次不知道的你是不知道的,所以你啊,就记住这个吧,Get吧啊就get啊,前三年你就能是盖的明白了行下。
我来说两句