00:00
咱们来继续啊,那我们这个包括noe,包括NPM,我们这等于准备工作就算完成了,环境也搭建完了,然后NPM的基本使用也就会了,那接下来我们来正式开始学习我们这个note里边这个内容,我们宣先学习第一个东西叫做一个八份,八份这块其实它和我们一组东西,我们是不是要我们是要一块说的啊,这里边来一个新建一个这个里边文件夹,另外我们叫一什么呢?叫做一个文件系统啊,文件系统我们要说一下这个东西啊,那这一块为了说明这个事儿呢,我先来干嘛呢?哎,我先来这新建一个拍杰森。我就建一个这个简单的了啊简单的,然后这逗号给它给它去了,那这个呢,我们就叫一个这个file file,一个这个SYSTM啊file system啊,File system file system里面会有很多相关的知识,那这块我们主要是先介绍一下,我们叫做一个buffer啊来我先新建一个这个JS文件零一,我们叫做一个BF点一个DS,好,那这块我们来说八份什么东西,八份我们来看他刚才我们那课件里写的叫什么呀,叫缓冲区,缓冲区是个。
01:25
8UFF份,那翻译过来它是一个叫做一个缓冲区动么一个力,那这是干嘛的,那我们说了8UFF分的结构,哎8UFF分的结构和什么呢?哎和我们这个数组很像,哎非常非常像,那基本上它几乎可以说就是一什么呀数组,哎操作的这个什么呢?方法也和什么呢,也和我们这个数组干嘛呀类似,基本上方法都是一致的啊,这种方法也都是一致的,换句话说,其实你就把八本当成一个什么呀,当音数组完全没有问题啊,完全没有问题,那这块其实我们就会有一个疑问,什么疑问呢。
02:05
哎,我们已经有数组了。而且我们的数组功能很强大,为什么强大呀?我们在我们的数组里是不是可以我们数组保存的东西有没有限制,没有限制是不是想存什么就存什么,存个number,存个不值,存个对象,存个字符串,想存什么就能存什么,已经很强大了,我们为什么还要整出一个八分,还要整一个八分?哎,那我们来说一下这个问题,第一个问题,我们GS里的原生的数组,它的性能相对来说比较比较差,这也是我们GS被其他语言所诟问的一个地方,我们GS的数组呢,和其他语言的数组干嘛呀,它不太一样,它不太一样,它的性能相对来说干嘛呢?比较比较差,这是一点啊,这是一点,第二一个。我们想想,数组里可以存字符串,可以存这些number啊,这些值,但是我们想想。
03:07
这个东西在我们网页开发时候就已经够用了,但是我们想在我们的服务器开发里,数组这里边的类型够用不够用,你们想想啊,这是我们的客户端,这是服务器,客户端给服务器发请求,服务器给客户端返回响应啊,返回响应,那么说返回响应,这响应里边可能有什么东西?比如说你你浏览的是一个网页,那毫无疑问这响应你返回的就是一个字符串,字符串数独里能不能存,能存没有问是符我有。有没有可能摆其他东西图片?有没有可能,有没有可能返回的是个MP3音乐文件,对吧,有没有可能返回的视频,有可能吧?哎,就是说我们在互联网这个客户端和服务器通信的时候,它任何数据类型是不是都有可能啊,都有可能,那问题来了,我们传统的数组这个array,它能不能去存储存储个图片啊。
04:15
能不能存储个MP3呀,存不了啊,它是压根存不了,因为我们前端不涉及到这个问题,那问题就来了,那我这图片和MP3它是啥呀,它是啥。哎,统称为我们都叫做二进制文件,包括图片,包括MP3,包括这个视频,包括这些乱七八糟各种各样奇怪的东西,我们都统称为什么呀,二进制文件,所以八份是干嘛的?八份就是为了弥补数组的不足,那我们说了数组中干嘛呢?哎,它不能存储什么呢?存储我们这个二进制的一个文件,诶存储二进制的一个文件,而什么呢?而我们这个八份就是什么呀,就是专门用来存储这些二进制数据啊,二进制,所以注意8UFF份,你简单理解就是一个存储二进制数据的一个数组啊数组,但是它比我们的传统数组性能要要好啊要好,那好,那这块简单介绍了一下它啊八份,我们来看一下这个描述,八份叫什么呢?从结构上看,八份非常像一个数组,它的元素为16进制,两位数,待会咱们来说,为什么就出来一个16进制啊十。
05:30
那样,哎,那么说了一个咱们这样吧,直接来演示一下,不多说了,干嘛呢?我就来写一个字符串,Y一个str等于什么呢?我叫做一个hello at硅谷好,那现在我写了这样一个字符串,假如说这个字符串里的数据我想干嘛呢?把它存到一个八分里,我要怎么存,那我们来说一下我们怎么创建一个八啊来我们将一个这个什么呢?将一个字符串来保存到我们这个八份中,怎么保存大注意了,八份是什么呀?是我们GS里边的一个noe里边的一个核心对象,我们说了使用8UFF份,哎,不需要干嘛呀,不需要引入模块,直接使用即可,它是我们这个GF note里边扩充的一个对象,直接用怎么用,直接看着啊,我这来一个Y,一个buff等于什么呢?等于一个叫做一个buffer,点一个这个from from里边。
06:30
传一什么呢?传一个str,那这一行代码的作用就是什么呢?就是把这个字符串保存到一个buff份里,并且返回这个八份是谁,是不是就是这个变量,哎,这个变量那我们来打印一下看看,直接来一个八份,点一个log,诶那我们太这里边能打印出什么鬼片。直接运行one。这八份是不是这是我们八份啊,哎,我看看啊,这是h EL lo空格at jui GU,诶看出来了吗?啊,你发现这就跟我们这个是一模一样的呀,这样我们来打印一下八份,点一个Les打它的长度,这一保存运行一下是多少13,而我这个str的长度呢,点一个认死一打印走,你是不是也13呀,哎,两都是13,所以很明显他们两个是不是有关系的,有关系的,那这是为什么呀,来一个cancel,我们来一个直接输出八字,那这里边他也看不出来这是哈还的硅谷对吧?哎,那这里边注意。
07:51
在我们这个八份中存储的都是二进制数据,在我们这个八份中,哎,它存储的都是二进制数据,那同学可能就要骂街了,蒙谁呢?
08:09
都出四八了,这还二进制的是吧?哎,还二进制,这是不是二进制啊,这可不是二进制,这是什么呀?16进制,但是注意了,我们计算机里所有的二进制数据,它都会以16进制的形式去显示,为什么呀,二进制太长了,能懂吧?哎,二进制太长了啊八份中存储的数据都是二进制数据,但是什么呢?但是在显示时,哎,显示时都是以这个什么呀?以16进制的,为什么呀,形式显示的啊,以16进制的形式显示的,因为16进制是显示起来。更短啊,哎更短,所以这里边我们来看,其实我这一个两个数是不是就是一个16进制数据啊,哎,每一个数都是代表什么,代表我数组里的一个元素,刚才我们看了是不是一共有13个呀,那其实48代表的是大写的H 65代表的是小写的e 6C代表的是小写的L6F代表就是什么呀?O这20代表的是这个空格,能理解意思吧,所以他其实干嘛了,他做了一件事,把这些玩意儿都转换成了二进制的这个编码,其实这是什么玩意儿。
09:27
哎,这就是他们的这个优扣的。编码啊,就是他们的优女客编码,那这里边儿咱们可以看一眼啊,打开我这有一个这个编码表。电表表呢,我们来看一下,刚才我们看到一个,我看一下啊,哎,刚才我们看H多少48,哎48,你看这是不是48呀,哎,我们来看这67是啥。67 67 67。这是不是D啊,哎,是G啊,所以注意他实际上就做了一件事,干嘛呀,把我们这个东西转换成了二进制来保存,为什么要把转换成二进制。
10:13
为什么转成二进制,诶因为我们这个数据是不是最终要发送给我们的客户端呀,或者说是从客户端接收出来的,我们在数据在传输的时候,注意都是什么二进制传输的,因为我们在传输的时候,其实我们传的是什么呀,电信号,电信号01010101这种电线,所以最终都得转成什么呀,二进制,所以在我们八分债存的时候,他就干嘛了,给你给你转了啊给你转了来,那我们来说一下我们这个八分中的什么呢?八分中的每一个元素,每一个元素诶的大小是什么呢?是从我们这个什么呢?是从我们这个范围吧,的范围是什么呢?是从叫做一个零零到FM什么意思,最小是。
11:03
零零最大是什么呀?FF啊,最小是零零,最大是F,诶,那为什么整这么一个数。那在这边我们看啊,我这直接来一个,那既然和数组类似,我干嘛呢?我直接来一个,咱们先不读它吧,先不读它,那我们说了它的范围是从001直到FF,那为什么是零零到F,为什么呀?哎,那我们想一想,这如果翻译成十进制多少?是不是零到255啊,F255,为什么这255老选这么一个数,我们R级B值是不是也255啊,我们那个颜色是不是也是FM啊,为什么老选这么一个数?有没有想过这个问题,有没有想过这个问题很奇怪是吧?怎么就少于255这数,这数诶离比二百五多了五是吧?多了五,为什么找这个数,那你需要干嘛呀?把它转换成二进制来看,那我们说了,这里边我们来看啊,那FF转换成二进制多少?
12:04
直接输一个16进制,来一个FF,我转换成什么呀,二进制啊,看这一看2468什么玩意儿,八个一八个一,所以说白了,它转换成二进制,就是从123456788个零一直到什么呀,2345678,一直到八个一,所以它实际上范围是八个零到八个一这个范围,诶又有同学说了,那为什么是八个零到八个一呀。哎,为什么是八个零到八个一啊,那注意了,我们的内存,我们计算机里的内存它实际上是分成什么呀?你要把内存想象成是一个一个的这种小格的结构,一个个小格,我的内存里每一个小格里它只能保存两个东西,要么存零,要么存一,能理解吗?要么存零,要么就存一,所以内存里边结构它要不然就是零,要么就是一,只能存这么一个,那这一个格我们叫什么呢?叫一位。
13:08
啊叫一位,所以这里边注意计算机里边有什么呢?呃,计算机中我们叫什么呢?呃一个这个零,呃或什么呢,或这个一个一,我们什么呢?我们称为一位,我们称为叫做一位啊或者叫做一个什么呀。Bit啊bit啊一位,然后呢,我们说了,那我如果是八的零,那八个一呢。就是什么是不是八位啊,哎,八倍啊,八倍,这叫做一个八位,八位等于什么?八位等于一个bit叫什么呀?一个字节啊,一个字节,所以能想明白这为什么要整八个零八个一吗?因为正好是一个字节,而字节,注意字节是我们数据传输的时候最小的单位,我们传输数据的时候最小,最小就告诉你是多少字节了,没有告诉你说传多少位的,能明白吧,最小单位就是什么呀,字节,所以这为什么要设置八个零八个一,那说白了什么呀?我八分钟的一个元素,哎,它干嘛呀,它占用我们这个内存的一个字节,一个元素就占用一个字节,那像我们刚才这个长度是多少?13表示我这个八份在我内存里占有什么呀?13个字节啊,13个字节啊,一定注意。所以一个。
14:36
八一个元素就代表一个字节,那再往下再说一下,那我们说了,那字节往上是谁啊,哎,我们来1024,哎这个but。等于什么呢?等于EKB,千字节啊,千字节,然后呢,1024KB等于什么呀?Emb,我们这个叫兆字节是吧?照字节,然后再往下1024MB等于什么呀?等于EGB,然后1024GB等于什么呀?ETB啊,1TB上面还有PB什么一系列,我就不举例子了啊,所以注意最底层最小单位是什么呀?BA就是一个零,一个一就是一个这个位,一位八位等于一字节,我们一般用的最小单位就是什么呀?字节不会用到位啊,所以这里边注意一个元素就是一个字节,所以刚才我们打印8UFF份的一个长度,我们发现是什么呀?是13 13表什么意思?13表示我们这个hello at硅谷这一行字母在我们的内存里占用什么呀?13个字节啊,13个节,哎,那同学说了,诶老师,那这东西到底你刚才不是说是长度吗。
15:47
不是长度吗?长度是不是也13呀,长度也13,那你这个字节也是13,那这到底是长度还是字节,长度还是字节,注意八份这个这个是获取的是诶占用内存的大小,而我们这个什么呢?而我们这个Les获取的什么呢?获取的是我们这个字符串的长度,那有同学说了,这不一样吗?
16:13
不一样,为什么不一样?因为现在我们恰巧用的是英文,英文正好一个字母就占一个字节,但是如果你换成中文来看,这我换成hello上规是改成中文了,我们来看它长度应该多少长度,这是不是应该是246加三,是不是应该长度是九啊哎,长度是九,所以这块我们先打印长度啊,我先不打印这个大小,直接运行走,你是一个九对吧?好,那我们来看八份,点Les这一保存走,你是多少?15啊15标示什么,这个东西长度是九,但是在我内存里占用了15个字节,为什么?因为一个汉字占用三个字节,三个字节,三个汉字是不是正好九个字节啊,九个字节加上之前那六个是什么呀?哎,15个能懂吧,因为汉字比我们这个英语占的这个内存要大。
17:14
啊,要大,那我们来看看,那这东西找啥模式直接运行,我们来看,诶,那这是啥呀?哎,前面是helo lo,这是空格,大家看这是上。这是归这是古,哎,当然我也看不出来是吧?应该推断出来的是吧?一定注意三个字节,哎,三个字节代表的是一个汉字啊,一个汉字这块看懂了吗?所以注意啊,Buff分点lengths获取的是它占用内存大小,而不是它的什么呀,长度,而string.lengths是什么呀?是长度啊长度好这块区问一下,好,那这一块我们就简单介绍了一下8UFF份,那相信大家应该对八份会有一个初步的了解,其实说白了,8UFF份里就是什么呀?存这种二进制数据的一个B份的大小就是什么呀,就是一个一个元素,就是一个字节,如果我B份长度是十,代表我这个八份占用什么呀?十个字节啊十个字节,好,但是我们刚才看到了我这创建的八份,它是根据这个字符串去创建的,对吧?哎,那我假如说我不想根据字符串创建,我想干嘛呢?我就想创建一个定大小的80,创建一个指定大小的一个80。
18:27
我怎么创建,哎我怎么办?我直接挖一个八分二等于什么呢?等于一个NEW8分干嘛呀,我要调用这个八分的一个构造函数吧,哎谬八分我来什么呢?我来一个诶1024这边什么意思?这表什么意思?哎,创建一个长度为1024的八分吧,那这应该大小多少?哎,一个是一个字节,1024是不是1024字节呀,那说白了是什么呀,1K吧,哎,这是1K的一个buffuff,我们来看看咱们这样吧,我先创建一小的,我创建一个十,这是什么呀?这是十个字节的,哎字节的一个buff来那这块我直接来一个canl.log,一个八份2.1个Li字,这一保存咱们来上边我住了是吧,来预选一下走你长度是不是十啊,这就是一个十个字节的一个buffer,那我们说除了这种方式还有什么方式呢?我们来看一下文档,文档在哪看,打开我们的百度,我这直接搜一下叫做一个no的这个官网。
19:40
直接打吧,我们叫做一个note gs.cn,这是我们note GS中文官网啊,中文官网,那这块我们要看的是什么呀,它的这个文档啊,文档点开文档啊,我们来看它这块给我们列出来一堆对象buff分是不是在最上边呢?哎,直接点开我们这个buff分缓冲器或者叫缓冲区,那我们要创建buffer,在这儿是不是写了一个new buffer啊new buffer,但是你会发现它干嘛?哎,这些方法都给你写了一个叫做废弃的,你看所有构造函数是不是全都废弃了,哎,NEW8法废弃new巴废弃也就是构造函数推不推荐我们使用,哎,不推荐我们使用,所以这块注意我们说了八分的所有构造函数,哎都是不推荐我们这个使用的,或者说这些的话已经什么已经过期了啊,已经过期了,所以这玩意儿最好干嘛呀,最好别用,因为以后可能会出现一些问题,但是现在用的话,实际过程当中。
20:40
用的话也没有出现什么问题,但是尽量避免人家不让他们用干嘛,咱们就最好就别用,那怎么办那怎么办。哎,那我们看到它这还有一个叫什么,叫做一个alo alo什么意思,叫做一个分配啊,叫做分配,那alo这是干嘛的,就是分配一个大小为size字节新建的什么呀?Buffer什么意思,其实跟它的用法一样,看着我直接来一个这儿我来创建一个这个十个字节的一个buff分怎么创建,直接挖一个八分二等于一个这块直接调一个八分,注意这一块调的时候你给写的很明白,用谁调,直接用构造函数对象去调吧,哎,直接用构造函数调对象去调八份点一个a loclock,我来什么呢?我来一个十,这就表示我创建了一个十个字节大小的一个buff分来八分二,点一个log,我在这输出一下,直接运行。
21:47
是不是十个字节呀,哎,一二三四五六七八九十,每一个是不是都是都是零啊,因为什么呀,我这是创建了一个什么呀,空的,我是不还没有去给它。
22:01
赋值,哎赋值,那怎么赋值啊。来我们来通过我们这个索引来为我们这个八份复制来来操作我们这个八份中的元素怎么来看着啊八份二,比如说我想往第一位添加一个八份零,我添加一个什么呢?添加一个88表什么意思,我往元素的这个八分二的第一位添加了一个数字叫做88,我们来看保存啊,走你来运行一下,走有没有有诶同学说变成58了,哎,我这儿写的是十进制的,这是十进制的,填进去以后,它是不是给你转成什么呀,16进制啊,添进转成16进制的,再来一个来一什么呢?来一个八份二,一个这个一等于什么呢?等于一个255。哎,这边会多一什么呀,是不是多1F,哎F啊,所以注意你填进去以后都会转换成16进制的啊16进制的,那你说我能不能直接写16进制的等于什么呀?比如说写16进制,我来一个0X一个AA,这表什么意思?这表示是16进制的AA16进16进制数是以什么呀,也0X开头啊,0X开头在这再运行走,你是不是就A俩,哎这可以也可以添加16进制知道吧,哎,用0X去开头,然后再来看了,那看着啊,那我这我想这样八份二,然后来什么呢?十。
23:38
十十我等于一个16 16其实转换成16,其实就是F对吧?哎应诶不是F是这个十,哎十五十五是F是吧?15是F,那现在我们来看,那我问你这应该什么结果。我先问你,我这速度长度是几十最大,所以是几九,现在我直接来个八分20,我有没有这个没有,那如果是我们以前的数度,我会怎么办?是不是会自动加一个呀?诶,那我们这个数组呢运行。
24:17
有没有变化,没有变化,也没有报错,后边是不是没有多东西啊,哎,没有多东西,那这是为什么?大家说一个问题啊,注意了我们这个八分的大小。八份的大小一旦确定干嘛呢,则不能修改,是十个永远都是十个,是100个永远都是五个,永远都是100个啊,永远都干嘛呀,不能再修改了,为什么?为什么注意八分它际上是什么呢?实际上是对我们这个底层内存的直接操作。底层内存的直接操作什么意思?在这我是不是来了一个buffer,然后叫做一个LO10啊,我们说的lo什么意思呀,叫做分配,叫做分配,看到了吗?分配,那所以这allow表示什么意思呀?就是在我们内存里分配出十个字节的空间来放我这个什么呀,Buffer,所以每一个buffer实际上在底层都对应着我们内存的一块什么呀,一块区域,所以你这来一个LO10什么意思呀,我会在内存里分配出连续的长度为十的这么一个空间,这个空间干嘛呢?专门用来放你这个八分的数据,能懂这意思吗?好,那这个时候注意了,假如说。
25:41
它让你改会出现什么情况,注意啊,我们想想它这是连续的一段空间,那假如让你改,假如我又想加一个元素,那我这空间是不是得得增大呀,但是注意了,那增大我这时候还一不一定能变成连续空间了。因为这一段内存可能被别的程序占用了吧,被别的程序占用了,那这样就导致我这第十个元素可能干嘛呀,得放到一个不连续的空间里,能懂这意思吗?那就会导致一个什么情况出现。
26:13
我同样一个数组里,一个八分,一个缓冲距离元素,可能这一这放一个,那放一个那放一个什么问题啊,不好维护性能会比较差啊,性能比较差,所以注意八份里边的空间都是连续的,它只要来了一个十,一定这十个十个元素一定是干嘛呀在一个连续的内存里的,为了为什么?就是因为这样性能会比较比较好,所以注意八份一旦创建大小干嘛呀都是不能改变的,懂这意思吧,这块一定记住啊,一旦创建大小都是不能改变的,所以你八分时写完干嘛呀。也没用啊,也没用好,那接着我们再来看那这块,我再来一个八分二,那我就来一什么呢?我接着往下添加吧,来一个三三等于什么呢?嗯,我来等于一个。
27:01
256。256,诶,刚才我们说了最大范围是不是255啊,255,我这来个256,他什么结果看第三个啊,第三个所以为三个,诶这是0123,诶没有一样是吧?这还没有啊,我再大一点556,我看看走你诶2C 556怎么有,256怎么没有啊2C。2C是谁呀?来16进制,我来一个2C,然后换成十进制44,诶我556怎么变成44了,这好像没有什么根据是吧?我们来看看怎么回事啊,我们来看看啊,我先来一个十进制的556,十进制556转换成二进制多少是不是这个数,但是注意它最多能保存几位,保存八位,那也就是2468,它要么保存前八位是不是,要么保存后八位啊,诶后八位,那刚才我们这结果是一个什么呀?2C我们来看看啊,我把这数粘过来直接复制。
28:14
我看看2C是多少,来我这清空一下,来我点成这个16进制,来什么呢?2C,然后转换成二进制。复制干嘛了,他是不是把前边的给我这给你对齐一下是吧,发现什么了,他其实前面是还有个还有两个零啊,还有两个零,所以干嘛了,他是不是只取了后八位,前面两个干嘛了,是不是舍了呀,哎,又舍了,所以这个最后结果是不是变成2C呀,所以注意啊,我这里边最大最小的是谁,最小的只能保存什么呀,八个零最大就叫什么了,八个一超过这个范围是不是就舍了,那就舍了,所以注意这一块它是有范围的,那刚才我们说了这256为啥就变成零了,肯定就舍完了,就剩零了,对吧,因为它应该是应该是一后边跟着八个零,正好是把把一舍了呀,就变成零了啊,就变成零了,所以注意它是有这个范围的啊,范围的好,把这改成255,那这块我们有了八个,有了以后,然后我们就需要干嘛了,我们是不是还想这刚。
29:24
找完八分往8UFF分里添加元素,我0123456789,是不是顺序往下添就行了呀,那接下来我们要关注的问题是什么?诶我怎么读这边元素,比如说我想读这个第二个元素,不要这么读。所以没二怎么办,是不是八分二加一个二,哎,我这一保存,然后咱们再看走你诶读出来一个。170,哎170,我这二是不应该是0XAA呀,它怎么读出来一个一百七啊,哎,注意啊,这也是一个问题,注意只要数字在我们这个控制台或什么呢或页面中输出,诶一定是十进制,只要在我们的控制台或镜上输出一定是什么呀,十进制,所以在输出的时候它干嘛了,给你转换成十进制,那它转换完了170肯定就是什么呀,170转成16进制是不是就A呀,艾灸A啊,但是显示的是它给你转换成十进制,能理解这是为什么吗?
30:34
能解这是为什么,诶你说同学你说给我整个A多好,我这看的是不是更清楚一点啊,能理解为什么只要说出一定是十进制,那这个东西好理解,你反着想,如果不这样会怎么样,那如果不这样,也就是说我这个数字输出完了以后,可以是二进制,可以是八进制,也可以是16进制,这样会有什么结果?好,我空开输出一数字,我问你这是谁不知道,因为它有可能是二进制,有可能是十进制,有可能是16进制,我们是不是区分不了啊,所以注意只要打印数字一定是以十进制的形式输出的啊,一定是十进制形式输出的,那好,那我说了,我不想看十进制。
31:24
我就想看16进制结果怎么办?注意只要它是数字,这个事儿永远都做不到,只要数字永远都做不到,但是不是数字,他们可以考虑考虑怎么办,诶,我可以在这调一个to string to字称,干嘛把它转换成字符串,注意这时里边可以传一个参数,哎,传个16,这表示什么意思?把它转换成16进制的字符串,哎,我这再运行走你。看到了吧,哎,Number类型的two顿里边是可以传30的,你传个16就转成16进制,你要传个二呢,就转换成。
32:08
二进制看到了吧,哎,它会自动进行一个转换,所以如果真的需要的话,调个吐组任就完事,一般情况下是不需要的啊好了,那这一块说白了再来说,那我还我是不是应该还可以对它进行一个电力啊哎来一个负循环,Y一个I等于零,I小于八分2.1个这个NS,然后来个I加加在这儿我直接canl.log一个什么呢?Log一个八分二一个这个,哎这块我直接一运行,然后走你,诶这怎么出于中号呢?是我写的吗?是吧,赖不了别人是吧,来行这一保存我们来运行走你哎。是不就变利了呀,哎,但是变历的时候它也是什么呀,以这个十进制的形式输出的啊,十进形式输出的,所以这块注意,所以看到这儿你就会其实就已经知道了,80和数组操作干嘛,基本上是一样的,只不过里边存的是这些二进制啊,存在二进制你就当成数组区用就OK了啊用就OK了,好再往下看,那除了八,刚才我们用的是一个alo,那其实你会刚才会发现什么呢?除了alo啊,下边还有一个叫做alo an seat。
33:24
Alo UN thf哎,UN thf safef什么意思,安全的啊安全的,那alo UN thf呢,哎就是哎UN thf是吧,就是不安全的,那这是干嘛的,Lo UN s它也是,哎创建一个什么呀,哎指定大小的这个八份,但是什么呢?我们这个八份中可能含有敏感。数据敏感数据什么意思看啊,我这先来一个画一个buff分三等于一个这个8UFF分点一个这个lo,我这来什么呢?我来一个这个十,这是不是创建了一个十个字节的八份啊,哎,来我这来运行一下啊,直接运行诶这儿没打印的八份3.1个log,来我这运行一下走。
34:17
哎,是不是全都是000啊好,现在我换成alo an th。哎,我们来看效果啊,在这儿还是一运行走你诶效果是一样的,是不是都创建了一个十个长度的一个数组啊,但是你发现什么什么区别,刚才那个我创建完的是全都是什么,全都是零,全都是零,而这个发现什么特点。是不是有有值啊,有值,那这是什么东西啊,这什么东西?哎,注意什么叫可能含有敏感数据,我们说了buffer是直接对内存进行操作的吧,那注意了,我这内存是不是都是反复去使用的呀,不可能说这内存你用完了别人就不用了,那不可能对吧,一定是反复去用的,所以我这个alo什么意思呀,他创建了一个十个字节的空间,它会同时把这空间里的数据干嘛全都清空。
35:22
也就是说你会发现我用lo的数据是不是全都是000啊,因为他在分配的时候干嘛呀,直接把数据给它,同时也给清了,而une呢。干完了,它分配空间的时候没有清这个数据,也就是说这个里边是之前别人用过的一块内存,而这些数据是不是还在这存着呢,干嘛呀,我这一分配把这些数据一块干嘛呀。给拿过来,所以为什么叫uneief,假如说这块内存保存的正好是一个用户的一个信息,用户名或者密码之类的东西,那这块是不是就这块数,这块信息就被你被你取过来了,是不是就有可能有一些安全隐患呀,还安全隐患啊,所以为什么叫安thief,因为可能涉及到什么呀,有敏感的数据,但是那为什么还要给我们提供这么一个方法,为什么?那你猜猜是这个方法的性能好还是allow的性能好?哎,肯定是这个话性能好,因为这个只分配空间而不修改数据吧,而lo分配空间,同时清空这个数据,所以其实它的性能会。
36:28
好一些,而那个lo性能干嘛呀,要差一些,但是这个就有可能泄露一些什么呀数据,所以这块这两方你都要知道,我们一般还是选择用什么呀,Alo啊alo因为避为了避免这个数据的一个泄露啊避避免数据的泄露,好这里是我们说两个方法,一个叫做alo,还有一个叫做alo啊AF啊NFF,好那这一块我们就说完了,这个buffer的几个方式,我们说的几个创建方式啊,我们回顾一下,一个叫什么呀,Buffer BF啊buff份点样一个这个符里边传的是一个字符串,这是什么呢?将一个字符串哎,转换为我们这个八份对吧?哎,将一个字符串转换为我们这个buffer,还有什么呢?还有一个这个buffer这样一个alo alo里边传的是一个size,这是什么呀?哎,创建一个指定大小的这个8UFF分啊,指大小八份,还有什么呢?一个叫做一个八份,点一个这个,诶点一个lo。
37:28
C哎按C也是传一个这个size,这是什么呢?哎,创建一个,哎指定大小的一个buff分啊真感有八分,但是什么呀?哎可能哎包含这个敏感数据啊,敏感数据,哎敏感数据这是我们说的lo and s啊这几个方法,然后说我们再说一点,这buffer我们就说这么多了,Buffer其实呢,它我们为什么叫缓冲区啊,我们为什么叫缓冲区啊。你们想想我们note GS,我们要作为服务器,作为服务器无非就两件事,一个是接收用户发过来的请求,二一个是不是就给数据返回响应啊,就这两件事儿,那问题来了,用户发的请求,请求是啥呀?
38:15
请求啥呀?请求全都是二进制数据,全都是二进制数据,那这个时候我们在接收用户发的请求的时候,我们就面临一个问题,什么问题,用户发的数据我存哪儿啊。存哪啊,存到8UFF份里,哎,所以叫缓冲区,你说在我读这个数据之前,我拿这个8UFF份,是不是先把这数据给它保存起来啊,保存起来,那同样我要把一些数据发送给用户的时候,我是不是得把数据转换成二二进制数据啊,那问题就来了,我发送之前这数据存哪也是存到哪啊存到八份里,所以它叫什么呀?缓冲去啊缓冲去,那我们这块再补充一个内容,那我们刚才这来一个挖一个来一个八份四,等于一个这个八份点一个from from一个什么呢?呃,From,哎,这我是一段这个数据,那么假设就是一段文本数据啊,一段这个文本数据,那这个数据来了,当然我们这如果直接落个一个这个八份四。
39:15
八分4.1个log,我这一输出,它实际上输出的肯定是这堆16进制,对吧?问题来了,这问题那我怎么给它转换成组成。怎么转哎,直接点一个to string这块一运行什么直接就变成字符串啊,要用八份点死可以把呢,把一个缓冲区里边的数据转换成字符串啊转成字符串。这个是我们叫什么呢?将我们这个缓冲区诶中的这个数据转换为我们这个组串啊转换组串好,那这个就是我们说的这个八份对象,我们简单给它过了一下,那你应该对这个八份有一个了解,你要知道最主要的你就是要知道八份是干嘛的,是用来存储什么呀,二进制数据的就OK了,然后八份里边还有一些具体的方法,我们就不多说了,你可以自己对照着文档去看一下,那首先上边这一堆叫做类方法,你看的很明显都是通过什么呀,通过八份这个构造函数去掉的吧,这些方法其实很明显,很一看名你知道什么意什么意思了,什么alo UN。
40:36
这是什么呀?又慢又不安全的分配空间,能理解吧?哎,Lo,然后这个叫什么呀?八分点bit Les,然后里边传的是一个字符串,这什么意思呀?获取一个字符串占用内存的大小。啊大小compare比较两个八分是否是同一个,哎,同一个哎,然后看开叫什么呀。
41:03
连接两个八分,哎,或者多个八分啊,多个八分,所以这些方法都不难,包括下边这些,你看都写的是八分,这玩意儿都是谁掉的,这都是通过我们的这个八分对象掉的,而不是通过我们这个构造函数掉的啊,两种方式,这些方法我们不全,我们就不说了,因为确实这里边方法用的不是特别多,主要你要理解buff份是干嘛的,Buff份是我们的一个什么呀,缓冲器,缓冲区用我们来对我们数据进行什么呀,传输的,进行保存数据的啊,保存数据的好,这是我们说的一个buff,来听一下。
我来说两句