00:00
好,看一下咱们今天呢这五道问题,嗯,第一道问题,呃,我们呢,昨天呢讲的两块内容啊,第一块呢是I物流,我们把后续的这个内容呢就讲完了,诶接着的话呢,我们讲的下一章叫做网络编程,网络编程呢,其实就相当于网络层面的一个数据传输啊,就这个意思,后边呢,咱们讲Java web的话呢,其实主体也都是这个这个web嘛,是吧,网络这个层面的啊,通过我们这个浏览器,咱们主体讲的都是这个浏览器了啊浏览器呢,我们涉及到前端的一些相关技术,我们呢去跟后台进行交互,那当然这个后台交互的话呢,数据我们还要持久化到数据库当中,就这样的三个层面,这样数据的一些传输和交互啊,这呢都是基于这个网络编程,数据传输的,呃,这个呢是咱们后边Java web的一个中心,当然呢,Java的话呢,我们讲框架,呃主体呢定位呢,就是大家呢做Java呢,就是定位到这个后台这块了,就啊行,那我们看一下在Java基础阶段呢,我们对于网络大家需要掌握的几个点啊这里边呢出了几个问题。
01:00
说第一个呢,呃,一个IP对应着呢,哪个类的对象啊,这个应该都会吧。嗯,An address啊,这个类的对象,那下一个呢,说实例化这个类的两种方式是什么?这个能new吗?不能拗啊,这个咱们这个类的话呢,我们看API了,它没有给我们对外暴露这个公共的这个构造器,对咱们呢,只能是调用它的这个方法了,Address点叫get by name,对,这里边呢,我们填一个string形的叫host啊,那这host呢,你可以填什么类型,呃,什么具体的一些数据啊,对,你可以填具体的一个IP地址。啊,还可以填,诶对应的这个域名也可以啊,就是域名呢,跟我们这个IP呢,让它有个对应关系,诶这样的好,这呢,我们是获取指定某一个IP的一个I net address类的对象,还可以呢,调用address点诶叫get local host哎这个方法这呢我们获取的是不是获取我们本地这个IP对应的一个,呃,这个ant address类对象是吧,获取本地啊这个IP啊,对应的这个按t address类的对象行,就这样啊,然后再接着呢,两个长的方法。
02:21
这个其实也比较简单了,对,就是像咱这要要这块呢,你写的是一个域名的话呢,它的需要先到DNS上呢,DNS服务器上呢,进行一个域名解析,诶解析对应出来这个IP是多少,所以呢,解析完以后我们呢,如果要get host name,诶得到的就是我们这个域名了,哎,然后另外一个呢,诶get host诶address诶就你看一下具体这个地址啊,IP地址啊,幺九二点,比如幺六八点这几几几是吧,是多少,只要host address啊成就这个,嗯,这是比较基本的这样一个操作了,然后接下来呢,我们这个进行网络通信的第二个要素就是满足相关的协议啊,通过这个协议呢,我们实现网络的一个传输啊,这规定相关的一些规则,这就是提到叫协议了,那协议的话呢,我们这里提到将网络呢,分成了好几层,这里边儿又提到一个比较理想的,还有一个呢,真正务实的实施起来的这样的一个网络分层的协议啊,主要呢,咱们现。
03:22
现在实施的呢,叫TC pip的一个网络协议,这样是吧,哎,这块我们在网络当中。哎,说的呢,哎,就是这个事儿实际呢,实施的叫TC pip的一个参考模型,将网络呢分成了四层,那这个呢,大家也得清楚啊,分成这四层当然就没有必要考了,你知道网络这实际实施呢,我们分成了四层,那这四层当中,在传输这一层当中,我们涉及到TCP和udp了啊,那我们关注一下说这两个协议到底有什么区别呢。他俩呢,其实基本上是有这种互补关系的啊,就是你好我就不好啊,我好的这方面呢,你就不好,基本上是这种情况啊,那首先呢,我们说这个ttp。
04:04
怎么着,对我们,嗯安全其实主要就是说一可靠性啊,它是一个可靠的这个数据传输,那怎么叫可靠啊,对上来呢,是不是就三次握手,哎先来确定一下你的这个客户端和服务器端大家都得在啊,都在以后我们接下来进行数据的传输,所以它是一个可靠的数据传输,而我们这个udp呢,对它对应的它就不可靠了,它就是对于发送端来讲,他就只管发,至于说呢,这个接入端在不在,这个他不关心,他就发完就完事了,哎就成这种了啊,哎就像咱们说这个打电话,打电话呢,你对方如果要是没有接通,那就相当于没接是吧?啊没有接的话呢,那你进而你也不可能跟他去说话,这个数据呢,也不会去给他传,那我们这个发短信就不一样了,短信呢,就是尤其像垃圾短信发出去以后,你这个手机关机了,或者手机停机了呀,信息就到不了了,到不了他不管他那块呢,就光管发是吧,诶他是不。
05:05
可靠的啊,但是这这是这一方面,那么接下来接下来的话呢,它是一个可靠的连接了,一旦建立连接以后,我们TCP呢,可以进行大数据量的一个传输。嗯,大数据量的一个传输,嗯,而我们这个udp的话,呃U呃udp哈UCP了,这个udp的话呢,它呢,是不是每次都是以这个数据包或者叫数据包的这个方式来进行传输啊,诶对对以啊叫数据包,数据包都行啊,就是咱们说那个packet那这个形式发送啊,那么数据包限定为对限定为啊。这个64KB,哎,这样的这个大小,当然了,你可以发送很多的这个数据包啊,诶这是可以的,行,这是我们说这叫udp啊,它的这样个特点,然后再接着提到一个效率问题是吧,哎,这个呢,我们说叫效率低啊,它呢就是效率高一些,那有这样的一个完全对应关系啊,就这块这样的那个就是正好是对应的另外一种情况啊,行,这个呢,大家也清楚,也这个事儿啊好,嗯,再接下来提到一个URL编程啊,UR编程的话呢,我们这个主体呢,到后边讲web阶段的时候呢,通过这个浏览器,我们写一个具体的地址,就一个UR了,我们来访问服务器的指定位置上的一个资源。
06:40
啊,或者指定的某一个这个这个组件啊,都是可以的啊,那这呢就提到一个URL,那首先说URL什么是UR,对,你就记住叫统一资源定位符,那这个词呢,你得记住它啊叫统一资源定位符,说你能写一个URL吗?嗯,其实理解为就是造个对象,你不能说能吗?啊,不能,假如这道题20分,说这是十分啊后能吗?不能啊,也十分,这不对,不行啊,哎,能啊,得能写啊,那URLL得你一个UR,关键呢,就是看我们这个参数了啊,怎么写HTTP冒号双斜线这个固定写法,接下来是IP地址吧,啊,比如我这写个幺九二点,幺六八点啊,比如幺四点啊100,那IP地址后边呢,又有个冒号。
07:40
对应着一个端口号对吧,比如说我们现在访问的是他们看的服务器啊,他们看到的是8080端口号,好,再接下来这个服务器端的话呢,有很多的资源,看你想访问的是具体哪个资源了,哎,咱们昨天呢,访问的是这样一个文件目录啊,叫examples下的具体某一个,比如叫hello.at文件,哎,就是这样子的啊,行,这呢就是对应的一个资源了啊那很多时候呢,我们会看到这也有一个问号啊,这个问号后边呢,还有一些参数列表,比如涉及到这个用户名啊是吧,叫username,哎,等于比如叫Tom哎这样的形式啊,就这样啊,行,我把这个new呢就换上好这样。
08:22
诶沉不下了,这样一下好,那主要呢,就是大家呢,诶你关注一下这个写法啊,这呢,咱们在整个这个Java web阶段的话呢,还会去说啊,包括这个HTTP呢,我们属于这个叫应用层的一个协议了,这个应用层的协议呢,咱们目前在基础阶段呢,也不会展开的给大家去讲啊,到外部阶段的时候呢,专门还要说一说这个HTTP属于这个应用层,那在传输这个数据的时候啊,这块呢,相当于我们在浏览器端呢,你可以发送一个请求给我们的服务器,服务器的话呢,诶也可以响应数据给我们这个客户端,或者是浏览器中间呢,我们都需要遵循这个叫HTP协议了,那这里边儿涉及到请求和响应的一些规则,在我们HTP这个协议当中啊,就规定的很清楚,比如说呢,像这个响应。
09:11
响应过来的时候呢,会涉及到一个叫响应码,大家呢,是不是都见过这个404啊,哎,应该很多都见过了啊,说保存了一个种子,就是我们说的一个URL,结果呢,去下载的时候呢,E服务器返回一个404,这个404呢,其实就是一个响应码,这个响应码呢,具体这个数是多少,在我们HTP这个协议当中啊,做了很好的规范啊,或者叫规定啊,那像404呢,叫资源找不到的一个异常。啊,资源找不到一场,那除了它之外呢,还有其他的一些码,诶我们就在这儿呢,暂时呢先不去说了啊,到后边我们再讲那下边一个问题,说谈谈你对序列化机制的理解,这个话呢,是咱们讲对象流的时候说的,也是比较重要的啊,大家呢,需要能够自己把它表述出来,哎,我找个同学来说一说。
10:06
那个哎,戴子阳你说说吧。的话是恩,当那个对象存在。嗯,将一个对象呢通保存在文件,或者是通过网络呢发送出去,嗯,还有吗。嗯,还有吗?没了这呢,其实你只说对了一一半是吧,诶这个你刚才说的这个过程呢,是序列化机制里边的序列化过程,还有对应的一个叫反序列化的过程,怎么说呀。外地的城是?
11:02
嗯,大点声音怎么着?像那个文件中的军校或者。嗯,将文件当中的这个数据是吧?哎,别说就对象了啊,文件里边呢,我们就不谈是一个对象了,将文件里边这个数据实有化层面的,哎,或者呢,是我们通过网络传输过来的这个数据在还原为内存层面的一个对象,诶这是这样个过程,这个呢就叫做反序列化,诶这个对象的序列化机制里边,大家去答的时候呢,首先呢,别死记硬背啊,对项死记硬背的话呢,这个回头就忘了,哎另外呢,描述的时候呢,把这两个过程呢都说清楚啊,一个呢叫做呃对象的一个序列化过程啊,这是一个它的过程,哎,那定应另外一个呢,叫反序列化的过程。哎,反序列化的一个过程,就这两个的话呢,诶都需要呢,去提一下,那你其实你想想,就像我们说这个,呃,一个容器一样,比如说我们是一个集合了啊,集合也好,数组也好,这个容器的话呢,咱们能够往里边放东西,你光放不行,是不是还得能取啊,那你如果这个容器呢,光能往里放不能取,那你说你要它干什么呀。
12:20
你想是吧,我们集合里边只能往里放,你放完目的呢,不就是给它这个按照一定的规则,这个有序的给它存放一下,比如说诶,然后回头呢,你再取的时候呢,我要能够从哪里边拿出来,广州往里放,不能往外取,那就相当于是你挣钱以后一样啊,广州往里边放钱是吧,拿不出来钱,那只能是这个你媳妇才能这样是吧,别人不行啊,啊,那这里边也是一样,你这个对象的话呢,我能够把它序列化,给它持久化到我们这个文件里了,你持有化的目的呢,是为了保存,或者说你通过网络呢去传输出去,目的呢是对方呢还要接收啊,所以说呢,你一定也会有反序列化的过程,如果网有序列化过程,没有反序列化过程,那也没啥意义了,就那它一定是有两个过程的啊行,那下一个说对象呢,要想实现序列化需要满足几个条件。
13:11
啊,这呢,我们不是说所有的对象上来想去的话,直接就可以完成的,需要满足的条件,这个咱们一块说一下吧,比如第一个什么呀,实验一个接口是吧?这个接口呢,咱们通常呢用叫s laa对吧,写的the lizable对吧?啊这个大家写的时候呢,你发音要准一点,这个写的话你通常就不会写错了,然后第二个的话呢,实践接口恰好呢,它还没有这种抽象方法是吧?诶我们把这种接口呢叫做标识接口了,嗯,然后接下来需要干什么呢?对,需要我们这个,呃,对象就是你序列化的这个对象所在的类啊,要提供一个常量,诶同学们这个常量卡这了,这个常量呢,不知道叫啥是吧,或者这个比较难写,嗯,Zero version u ID,这个其实不要求大家你非得能够写下来啊,就是开发当中你要是忘了,忘了时候呢,一方面包括我写的时候,我也不是说这个现写的啊,这个没有必要大家非得去记了,就是你直接找我们这个sirable。
14:22
那你找他,然后呢,你看它里边在那个注释里边不是写了吗?嗯。啊,比如说sre啊,The ball是吧,这个哎,我们上边这块呢,是不是有here we are。在这呢啊哎,你把它呢粘过来就可以了,或者的话呢,你你随便找哈,像那个找string string呢,本身也实现序列化了,String里边也会有这样一个值嘛,或者呢,咱们当时讲这个异常异常exception。哎,这个,然后打开我们这个exception,这不也有吗?包括呢,我们说的这个像包装类,哎包装类也实现sir啊这个这个sir laible了,你去包装类里边找这个呢,凡是这个好好多呢,只要实现这个,呃,这个sial laible的叫序列化的啊,它都都会有这样一个常量啊,所以呢,直接去那里边找就可以了啊,那大家的话呢,不需要刻意的去记住这个常量的这个名了,但是这个中文名呢,你得说出来啊,你不能这个面试的时候问到说,呃,对象要想实现化序列化需要满足条件,你说需要提供一个常量,没了常量叫什么也不知道,英文也不知道是吧,好歹你这个中文得能说出来啊,叫序列,哎,版本号你说个中文也可以啊,这个大家都知道是吧,写的时候呢,都不会去现写的啊,直接呢就是粘下来就行,呃,这是第二点上第三个点。
15:50
还有一个什么呀,嗯,还不是说死TE那个事了,这还没完呢,死在这个之前,咱们不是还说这个对说这个结构就是属性嘛,哎,就是我们当前这个对象,你要想序列化,哎,要求我们这个类的话呢,有这两个点,同时对象呢,会有一些属性,咱们要求啊,相当于我们这个对象的属性啊,也必须是可序列化的。
16:20
哎,可序列化的这里边呢,我们就提到一个点啊,像说这个基本数据类型,哎,它这个天然呢,就是可序列化的啊,那基本数类型和string咱用的比较多,String呢,我们也看到源码呢,它也确实实现了C,所以他们这两个呢都啊天然。哎,或者要本身,哎哟,这符号调不出来了。嗯,本身啊就已经啊,是可序列化的。所以呢,我们主要关注的是什么呢?除了这个基本书类型和死string之外,如果呢,你要定义过像这个person里边定一个这个count账户啊,或者其他的一些自定义类啊,这个时候你要小心了,这个类也必须呢,按照我们的要求啊,有这一点,有这一点,如果你自定的这个属性,比如我count账户,账户里边呢,又有一个特别的啊自定义的类还得再去序列化,哎,所以说这几个点这是必须的,后边呢,咱们提到说不能够去这个这个序列化,像static呀,Transccent呀,诶这样的这个属性,诶这个呢,你知道这个事儿就行啊,主要呢,我们提到的要想序列化这三点是一定要满足的,好这呢就是我们讲的这个前一天呢,算是这个重点的一些内容啊,好,这呢就过了。
我来说两句