00:00
那接着我们来回顾一个概念哈,叫做虚拟机,这个概念那所有人应该都不陌生啊,所以我们作为一个回顾,那虚拟机的英文呢,叫呃,Virtual machine,简称呢叫VM,就是一台虚拟的计算机,诶注意呢,这是一款软件的概念啊,不同于这个物理上的硬件的概念,用来执行一系列虚拟计算机的指令,那我们说呢,呃,基于这个硬件啊,上面呢,我们这个搭建的呢,这个操作系统,那操作系统上面的话,我们去可以跑具体的一些应用软件,呃,从软件层面呢,我们可以分成这个叫像这呢,都叫这个应用软件哈,这个呃,听歌的是吧,呃,这个office软件,画画的,画图的这些都属于应用软件,然后呢,操作系统呢,这属于系统软件,这是我们从软件层面来分啊,那虚拟机的话呢,我们就可以理解成是一台虚拟的计算机,但是它还是一个软件层面的概念,概念呃分成叫系统虚拟机和程序虚拟机,那所谓的系统虚拟机,比如说大家在。
01:00
这个像我现在自己的Windows本上,我如果需要装一个Linux操作系统的话呢,我就需要有一台虚拟的一个计算机,那我可以用呢,一个叫vnware啊,一个呢叫诶微box诶都可以,然后装这个Linux,或者呢,大家如果在Windows本上,你想做安卓开发,同时呢,有个安卓的一个模拟器,然后能够运行你的安卓程序,你也需要装相应的这个这个虚拟机是吧,我们说的都是这个层面的概念啊,它完全是对物理计算机的一个仿真啊,是是对物理计算机的一个仿真,提供一个可以运行完整操作系统的一个软件平台,就是可以看作是对我们刚才提到这个硬件的一个模拟啊,还是个软件层面的概念啊,嗯,那么程序虚拟机呢,我们说典型的代表的就是Java虚拟机,可以理解成呢,是在咱们硬件操作系统上面啊,再搭建的话呢,这就是叫程序虚拟机的哈,就叫就跟那个应用软件一样了,哎,它呢,呃是来模拟。
02:00
我们具体的Java程序运行这样的一个环境称为叫Java虚拟机,是为了执行单个计算机程序而设计的啊,那么Java虚拟机里边能够执行的指令呢,就是我们所说的字节码指令,诶是这样的啊,那像这个。很多这个朋友啊,他们呃,在公司开发的话呢,都是习惯上用苹果本,呃,这个当然苹果本的话呢,你装在系统上呢,也当然就是苹果的这个系统啊,其实苹果呃本最好的一个点呢,就是它的这个硬件呢,包括它的操作系统,还有我们常用的一些软件,呃,包括它的硬件当中的一些具体的像CPU等等这些结构的设计啊,架构啊,都是由苹果公司自己来完成的,所以它的耦合度很高,所以它整体性能发挥的其实是非常好的啊,这个在公司里边用苹果本,这个一些大公司其实都都配备啊,免费配备苹果本还是挺好的一件事情,嗯,我自己也买了个苹果本啊,但是上课的时候还不太方便用,因为咱们大部分同学还都是Windows本啊,这个也看到有些同学呢,买Windows本,然后上面装一个,呃,不是Windows本,这个苹果本,然后装一个Windows系统,看着呢就比较诡异一些是吧?嗯,其实在苹果,其实苹果本呢,也不便宜哈,它最主要还是它的软件系统,操作系统做的比较好。
03:16
好,但是你要在苹果本上装一个Windows系统的话呢,那就是纯粹看着是比较装了就是吧,嗯,没有必要了就啊。行,那这是我们提到这个概念,然后无论说系统这个虚拟机,还是说程序虚拟机上面运行的软件呢,都限制在虚拟机提供的这个资源当中啊,这样好,Java虚拟机这个咱们已经不陌生了啊,主要呢,就是用来执行Java的自解码啊,执行Java自解码咱们前面也已经强调过这个事儿,这儿呢是Java虚拟机,我简写成叫GVM啊,然后对于这样的一个机器,你可以理解成咱是呃制作面包的呀,还是这个微波炉啊等等,这就是这样的一个机器,这个机器呢,它需要有原材原材料,那对于GM来讲,它的原材料就是自解码,这个是需要大家不断强化的一个点哈,那只不过以前的话呢,我们做这个磁解码都称为叫Java解码,因为GM嘛,主要用来是解释运行Java程序的,所以我们称为叫Java解码,当然有了我们前面的讲解以后呢,说GM现在已经是叫跨语言的平台,它解释的这个解释运行的这个资金码,不光是Java语言了啊,可以是任何一个。
04:26
啊,只要呢,你遵循GM里边这个,呃,Java虚拟规范中自解码的这个指令的要求,那GM都可以解释运行啊,所以呢,这个字解码我们现在其实就可以称为叫GM自解码了,因为不光是Java语源了,嗯,是这样子的啊,那这个磁解码只要遵循相应的规范呢,就作为原材料呢,让Java虚拟机可以进行这个结时运行,或者我们说这个及时编译啊都可以,呃,下边呢,就出来这个结果了,或者是呢,哎,就展现一定的运行的效果,这就是它的原材料。啊,就这里边我们想强调的就是,呃,这个Java逊机所运行的Java解码,我们还叫Java解码的话啊,它不不仅仅是由Java语言编译而成的,像GR啊,SKY啊都是OK的啊这样。
05:12
这个自解码文件呢,我们说它是一个二进制的,二进制的,所以我们这提到叫二进制的一个字解码,嗯,状载到内部解释运行,那么这个自解码文件的格式是什么样子的,然后这个每一个指令的话呢,该怎么去取这个数据啊,操作数占是什么概念,局无变量表又是什么意思,这个咱们后边在内存当中都会重点讲到,那这儿呢,我们想强调的GM的特点呢,诶这写了三点啊,一次编译到数运行,其实这个主要说的还是资金码文件啊,这个自动的内存管理和自动的垃圾回收,这也是相较于我们以前的像C语言CC加加语言的一个明显的优点啊,自动内存的管理和自动的这个垃圾回收,说白了就不需要开发人员呢,手动参与啊,内存的分配和回收了。
06:01
啊,那好处是什么呢?呃,这个当然省事了,对吧?那从我们代码层面来讲的话呢,就降低了内存泄露和内存溢出的风险啊,那对于程序员来讲,你只需要把重心关注到你自身的业务方面就可以了。啊,那这时候我们可以把这个扎va虚机就看成是一个盒子一样哈,黑盒子一样,大家呢,诶只需要呢,把你这个程序洗完以后,编译成最起码文件,然后扎va虚拟机就帮你解释运行内存呢,它自动的进行一个管理啊感觉非常好,但是呢,我们说任何事物呢,都是有利有弊的,那它的弊端是什么呢?就是他有可能这个一方面呢,降低了程序员的要求哈,那长此以往下去呢,有可能会带来一些灾难性的问题哈,呃,弱化程序员的渣程序员,他在程序处理过程当中,比如说出现内存溢出来啊呃,包括性能一些优化问题啊呃,由于它呢,这个虚拟都帮我们做了一些事情了,然后呢,降低了他的一个能力要求,所以这些功能呢,他就不会做了,呃,反而呢,到容易出现具体一些灾难性问题的时候呢,不知该如何去解决,所以呢,这也就凸显出来,我们对于内存管理,垃圾回收,呃,虚拟机怎么设计,怎么做的,需要有一个更清楚的认识。
07:13
嗯,那举一个其他方面的例子呢,就现在这几年炒人工智能炒的又非常火啊,随着这个阿尔法O的一个崛起,大家都在讨论说这个,呃,人工智能未来到底会不会取代人啊,会不会说这个这个超越人啊,或者说乃至于说领导人,嗯,存在两方不同的意见,嗯,这两方意见呢,其实都有一些国际上的重量的人物呢,去去支持的哈,那从这个深度学习的角度来讲,这呢就是属于数据的一个输入层。典型的一个输入层,然后中间的话呢,它有很多的叫隐藏层,诶很多的隐藏层,然后最后有一个输出层,比如说呢,我们这儿放了一张图片,这张图片呢,其实是一只猫哈,呃,当然呢,计算机它不认识猫,它底层就知道是0001,然后你把这张图片放进来以后,这就作为输入层的数据出现,当这个程序经过训练以后呢,它最终输出结果就是判断为它是一一只猫,因为这只猫可能它耳朵呀,眼眼睛闭着呢,耳朵挡住了尾巴呢在树后边,呃,人当然能分辨出来,但是对于机器来讲的话呢,还是有难度的啊,但是最终他做到了,中间的话呢,它有很多的隐藏层,那现在呢,大家争论的焦点就是计算机这个隐藏层现在越来越多啊,有的达到这个100多层,那这个计算机在计算出来我们想要的数据之外,他还做了哪些事情,我们是有点不确定的。
08:33
那他会不会在得到已有的我们需要的数据之外呢,还计算出来一些数据,然而这些数据呢,由于我们人类不清楚后面会不会造成一些不必要的灾难,这是大家讨论的一个争论点啊,就像我们说的这个虚拟机一样啊,这块呢,都是对你不开放了,不用你管了,那其实有可能也会出现一些灾难性的问题,所以我们现在需要了解这些细节。好,是这样。
我来说两句