00:00
下一个缓冲瘤缓冲流首先涉及到的类几个啊,哎,四个,对,这有四个啊。这四个对buffer的就是加个buffer的就行,后边呢,就是还是我们这四个抽象机类,诶,那么缓冲流的作用呢,就是提高我们的读写速度。缓冲,缓冲就是提供一个缓冲区啊,提高这个读写速度的,这个缓冲区的话呢,咱们这个其实也看源码了,我在这个PPT里边也给大家备了这样的一个图啊,这个截图啊。这呢,我们就是底层的源码,哎,我们会看到呢,底层呢,给我们提供了一个缓冲区,这个默认,哎默认情况下呢,是是不是8192相当于是1024的八倍,其实就相当于8KB吧,对吧?嗯,8KB啊哎1024呢,咱们这个有的时候经常呢,你写一个呃基本的一个差型数组或者BA数组复制啊,到时候你可以就用这个1024啊,那这个呢,我们就相当于是以千为单位了,只不过千呢不是完全的那个以千整了,咱们就用二的这个十次幂来表示的,那正好呢,你就相当于是十个这样,哎就看成是一个KB,哎这样算是一个进制单位啊啊进制一个单位了,嗯,这个呢,这不是咱们以前也提过啊,就是1024正好呢,呃,10月24号,哎,这就是程序员节对吧,哎,就是这样的去命名的啊,正好有这一天啊,就10月24号这一天。
01:39
这呢,你看我在这里边还放了一个成员节,这个有好多网上的一些图片是吧?啊然后成序日就成员节哎当天呢即加班是吧,啊啊这个啊1024不加班啊,这个呢,已经也形成一种趋势了啊就1024这一天呢,就是大家呢,基本上就正正好六点多他就走了,就没加班啊加班的话呢,就是再加上个六是吧,嗯哎,然后呢这呢是原来那个,呃,对也也是咱们的原来一个兼职老师啊发的发了几本书,呃,发了个这个发这是什么旁边啊啊然后一个这个转体,主要呢就是发了一个他是吧,还比较有钱的哈,这不在这写的。
02:30
哎,公司发的麦C本是吧?嗯,行这个啊这这是就是当成员还是挺累的啊,以后呢,大家得准备好买书吧啊这些都是书哈,搬家呢就费劲了啊行这个有的公司呢,这个成员结的话呢,哎,发一些特殊的安全用品是吧?啊你有需求的啊,还有一些呢,嗯,还有一些呢,就是搞一些宣传的,有这种叫程序员鼓励师,听过吗?啊听说过,网上应该有过相关的一些图片,你也能搜着哈,就是那些妹子穿的就特别的,就当然长得也比较漂亮哈,穿的呢也比较性感一些,然后在后边给你捏背是吧?嗯,他以为这样呢,我们就能够提高编译代码的速度哈,就太高估我们了是吧,而且呢,他以为捏一会我们就可以整天整天的速度那么快,也不可能是吧?有本事呢,让我们带回去是吧?行啊,其实都是一些形式上的啊。
03:31
好,这个回过来,包括呢,大家这个也有同学问啊,说这个老师我这个编码这个速度有点慢,他说我有多慢,其实也能够自己写了啊,说你要你要上,我像我上课呢,就写代码,这个速度呢,其实真正开发中一般不会是这样子的啊,你像你工作当中你的重心呢,也不是像大家你看电影里边那样啊,你看到一个这个黑客或者一个战马高手,这个就剩两分钟地球要炸了是吧?嗯,然后在这咔咔咔一顿写,然后就写完了啊就流浪地球那种是吧?啊很多场景都是这样子的,真实当中哪是这种情况呀?啊你的大部分的这个精力其实都在想是吧,先我们怎么去设计啊,怎么去这个实现这个算法,想会花一些时间,想完以后呢啊接着去写啊,一边写一边想一边调,应该是这样的过程,你不是说呢,拿这个就跟电影里边哒哒哒哒哒哒就开始写,那纯粹是写abcd呢,是吧?啊,你只有那样练指法你才会那么快,平时呢,写代码咋会那么快呢?因为你里边会有逻辑,你就看这个作家写作也是一样,他先想。
04:31
这个情景是什么样的,他想清楚以后啊,开始写,写的也不是那种飞快的写啊,他也得先来写,写得想想是吧,啊,这要注意啊,没有那么快啊,嗯,那么再接下来呢,我们提到了说典型的代码,哎,使用buffer input stream buffer的auto stream,对,主要呢,就用它俩呢,我们提到叫处理非文本文件,诶,这要注意啊,那么buffer input streamam output streamam这块呢,咱们写了一个代码。
05:02
哎,其实呢,给大家放在一个方法里了,还啊哎这呢,我们是写了一个它啊这样啊CTRLC1下行,那把这个呢,我们就可以当做一个比较标准的一个代码哈,涉及到1234步,还是呢这四步,那么这个方法写完以后呢,我们下边呢,做了一个测试,就是来复制我们这样的一个视频文件,通过这个复制的话呢,我们对比了一下,之前呢,使用咱们的file input或者output stream做的时候呢,发现速度呢确实有提升啊,这呢就是我们缓冲流的一个作用,好就结束了啊哎,主要呢,就体会一下我们它这样的一个作用啊,确实呢提高的一个读写速度了,这是这个事儿,然后在下边呢,使用buffer的reader和writer,对,主要呢,我们体会他们来处理,哎文本文件啊,哎处理文本文件,那这块呢,主要呢,大家关注一个事儿,就是多了一个方法。对,Read line的一个方法,那我们呢,可以不去用一个查询数组,而是用一个词论啊代表的,所以呢叫read line,哎,就是它了啊行,那read line呢,你要小心点,就是它里边呢,你写出去的时候,我们看源码也看到了,说不包含换行符,所以你自己呢去加一个换行啊,你这样写也行,这样写也可以,那这是这个问题啊行,那么再说一个事儿呢,就是关于我们这些处理流啊,从这个缓冲流开始往后这都算这个这处理流的这个范畴了啊,这个处理流的时候呢,我们在因为它作用在已有的已有的这个流的基础之上了,所以我们在输出的时候呢,通常会考虑一个叫flash刷新,哎,就是呢,你可能在内存当中,它有一些缓存的数据,这个flash的这个作用,你知道一下,就是一旦我们显示的去调用flash,哎,它就会把这个内存中的数据呢,帮我们写出去,哎,这就是要一个呃,刷新缓存区的这样的一个作用啊,那其实呢,像我们的这些write方法,它里边呢都有。
06:56
组相应的这个flash了,除非呢,你自己呢,就是呃想显示在那执行,否则的话呢,其实我们可以不用写啊,它直接呢就做一个flash啊OK,这呢是我们说的这个叫缓冲流的一个使用啊,结束了接着转换流啊,转化流,这也是咱们的一个重点,其实啊,首先转换流涉及到这个类。
07:18
俩九是吧,哎就这样两个,哎,CTRLC一下,哎首先呢,你注意一下啊,我这边写写了就是这里边这两类啊,它都还算是叫字符流啊,哎都属于这个字符流,你看我们一开始这个图转换流这两。哎,都在这儿呢啊哎属于字符六,哎为啥呢?呃,或者说说这个有什么意义呢?就是我们在操作的时候呢,你会看到咱们写的这个代码里边,咱们造的呢,都是差型数组啊,你写出去的时候啊,写出去的时候呢,这个对应它这块,嗯,咱们往外写,你看这块呢,操作的也是差型数组,操作都是差询数组啊,就是因为它是一个字符流啊行,这是我们是说的它的一个,呃对应的两个流,那作用作用呢,应该很清楚,就是提供字节流和字符流之间的一个转换。
08:13
哎,这样的哈,那么具体来讲转换呢,涉及到一个叫编码,一个呢叫解码,诶CTRLC这呢叫解码,解码我是放到他这儿还是放到下边这个解码上边呗,对,他是负责这个解码的。哎,下边这个编码啊,CTRLC,诶是我们这个它叫编码啊,这里边呢,算是谁决定谁呢?嗯,猛了,就是先先编码是吧,后解码,所以解码这块你得看当初的编码啊,那应该算是它决定它,那你就说决定于它。这就有点绕是吧,就是你得看看人家说白了就哈,哎,然后呢,你这个解码呢,到底用哪种编码集,或者叫字符集去解,你得看当初编码的时候用的是什么啊,相当于这个编码决定了这个解码的方式啊,在这写一下啊,说明编码决定了。
09:18
哎,这个解码的这个方式啊,OK啊这呢,我们说的这个事儿,然后下边这个图示,图示呢,大家脑子里边关于这个转换流,哎,你就记住这样一个图。哎,这样就OK了。行,然后下边呢,典型的一个实现,典型实现呢,我们就提到了两个过程啊,首先呢,咱们做了一个啊,当然这块呢没有先去编了,咱们就直接呢来进行了一个读啊读的话呢,因为当初编这个咱们这个文件呢,都放到这儿了啊,当初呢就是用的这个UTF杠八的,所以我们这块呢,诶你编的时候呢,用UTF杠八,然后读的时候呢,就用也用utl杠八,哎主要呢就是提的这个事儿,把它呢当成一个基本的啊CTRLC诶这个我们是一个典型实现啊,这呢是相当于是一个这个读啊,是一个解码的过程,然后呢,我们综合呢使用了一下它俩。
10:08
哎,这块写了一个哎转换啊,然后对应的这个下边这个代码,这个TEST2呢,就相当于是呈现的是我们这个同事的一个哎情况啊,把这个呢,相当于我们用代码呢去描述了一下行,这里边呢,主要大家要关注的就是这个问题啊,诶CTRLC一下吧,诶我们把大家写到这儿,哎或者我们这个重新呢去描述一下啊,就是文件编码的这个方式,呃,决定了这个解析时。啊,解析时啊,使用的这个叫呃字符集。啊啊,就是这个呢,大家去理解啊,如果我们当初编码的时候呢,用的UTF杠八啊,比如在这写啊,文件编码的方式,比如是用的哎,我换一个吧,JBK吧,哎,文件编码的方式,比如说呢,你用的是JBK,那这个决定了。
11:05
啊,解析时使用的这个字符集,这呢,我们说也只能是哎这个JBK。哎,这个都是咱们说的这个例子啊,哎,这个JBK呢,对应的是它,嗯,是这样啊行,那这呢是我们说的这样一个说明,然后接下来啊,这呢,我们就稍微的细致一点,给大家把这个涉及到的一些叫编码表啊,或者叫这个字符集,诶给大家说了一下啊,哎,大家呢,这块作为一个了解内容就可以了,首先涉及到我们提到的这几种啊,叫编码表CTRLC。哎,这样几个啊,那应该呢不是特别陌生了,那对于我们来讲的话呢,大家主要呢,就是知道以后就用它就完了啊,就是从前往后都用它。啊,从前往后呢,这个或者叫从今往后啊,从今往后是大家以后写代码,从前往后呢,想说的呢,是我们这个对于一个程序来讲,咱们从前往后呢,涉及到客户端,哎,或者呢,这个叫做浏览器端,浏览器呢其实也可以看成是一个特殊的客户端啊,啊从这然后呢,我们接着呢要访问的是我们的后台,这个后台的话呢,也不一定非得是账号程序了,其他的语言呢,也需要考虑啊,那顺便说一下,像这个后台呢,都有哪些语言可以写后台这样可以是吧?哎,Go现在可以,哎,Python可以,对啊,Note GS可以。
12:36
哎,就是主流的啊,就现在我们用的稍微比较多的渣呢,肯定是排第一位的是吧?哎,大家呢,既然还忽略了世界上最美的语言了,KP呢是吧?啊哎,PP现在确实差点意思了是吧?嗯,就是这个Java啊,这在咱们这个呃,国内也好,呃,这个用的应该是比较多的啊呃,然后呢,这个PP原来呢,中小的多,中小这个企业的这个后台都用PP来写了,比较快嘛,还是但现在的话呢,用这个Python替换的比较多啊,Python呢就替换这个PP啊,相对多一些,那么这个note GS呢,其实在美国用的比较多一些啊啊,因为呢,我们前台是GS,后台是也是GS前后就融合在一起了啊,这个美国这块用的呃挺多的哈,呃,好多呢,这个公司的后台以前用PP啊写的,后来都换成联动GS了,咱们国内呢,弄GS确实嗯不太多啊不多啊,那么这个go的话呢,现在也是后起的,嗯,像这个头条后台呢,原来用Python写的,现在。
13:36
现在头条是全部导向购,嗯,其实主要呢,这个哪种语言呢受欢迎,大家还是得看什么呀,你得看这些大厂支持啊,美国的话呢,你就看谷歌呀,Facebook呀,微软呀,这些大厂看支持谁,他支持谁大家就去用谁,是吧,中国的话呢,你就看BAT就完了啊为什么Java在国内现在还这么火呢?主要是因为BT是一个大厂,他们在用,他们在用的话呢,他就需要很多的人,或者他们认为这整个这个生态的话呢,还是OK的,需要哪些一些技一些框架,技术没有的他们也可以自己呢再去写这些框架啊,所以呢,整个让这个技术呢,相对体系是比较完善的啊,那么整个这些大厂呢,需要的这个人员比较多,所以呢,会有很多人呢,都去这里边做开发,那其他一些小公司呢,当这些人出来的时候呢,他们也可以接着用这些人,那就可以用Java了啊,所以说呢,我们,呃,有的时候你决定说一个公司要创业了,说我们后台呢,到底用什么写,你得看看现有的都有什么人啊,你想用Python,看没有人,那你想用Python也不行是吧?哎,看都有哪些人,就是相当于这个社区呢,到底活跃。
14:36
不活运啊,对,或者呢,对于大家来讲的话呢,说哪个语言到底能不能火,你就看这个大厂支持谁,那大家就去学谁就行啊,他们就是一个风向标啊,那么这个后台呢,再往后呢,就涉到这个数据库了啊,这呢就是我们从前往后呢,涉及到这样的几个端啊,那么这里边呢,我们这个数据从浏览器客户端会流向我们的后台,后台呢,我们需要把数据呢写入到数据库,那么接着呢也会回来数据库中的数据呢,我们使用Java,后台呢,读到这个后台当中,然后呢,把这个数据呢又呈现到我们的用户的客户端当中,整个呢,这里边儿涉及到了相互的一个交互啊,就是从这边到这边这个都是会存在的,那么在这个交互过程当中,大家就需要关注的就是数据到底应该用什么样的这个编码集啊,那为了保证我这儿呢,浏览器显示一个数据不会出现乱码啊,我们需要保证呢,就是他们这三端使用的这个,呃,编码表或者叫磁幅集必须呢完全一致啊,要求前前后后。
15:36
哎,使用的这个哎字符集啊,都要统一啊,统一的大家就都使用utf杠八就可以了,这就都不会出问题,那如果说大家比如我们在这个客户端或者浏览器这块啊,诶我们呢,就比如有一个超链接等等,我们把这个链接一点,哎这块要呈现一个数据了,这些数据的话呢,你发现都是乱码,那显然不对了啊,那时候你就得想我们请求的话呢,访问的后台,后台这块又访问数据库,数据库的话呢,又回来,整个经过后台又回来了,那么这块出现乱码了,其实呢,是在这里边的每个环节是不是都有可能出现啊,你可能发送这个请求到后台,后台呢去数据库请求的时候呢,数据库读过来的时候,它里边存的这个数据的这个用的编码机,跟你这块呢,Java后台这个不一样了,诶这块呢就会出现乱码,然后呢,Java后台假设这块没有乱码了,他往这块写的时候,我传输出来的时候用的UTL杠八,你浏览器呢,用的JBK去解析,那照样也会乱码。
16:35
所以出现乱码的时候呢,你就得看哎,应该是在哪个环节呢,出问题了,肯定呢,是由于你这个相应的这个不统一了,哎导致的啊,就这就对我们后边的一个启示,这也是大家后续在学习web学习框架的时候呢,需要关注的一个点啊,就不要出现乱码。
我来说两句