近日, gtk 十九正式发布了,该版本当中呢包含了一个最值得关注的特性,那就是虚拟现成。啥叫虚拟现成呢?很多人可能比较懵啊,但是如果大家对像购物如北派森等语言有一定了解的话呢,就会很快反应过来,这其实就是携程嘛,也就是说到了 gtk 十九之后,咱俩终于支持携程了。 在以前的这节课当中呢,扎瓦的现成模型其实是比较简单的,在大多数的操作系统中呢,实现方式呢,主要是采用基于轻量级进程实现的一对一的现成模型。简单来说呢,就是每一个扎瓦进程都对应一个操作系统当中的轻量级进程。在这种现成模型下呢,现成的创建、西构以及同步等动作呢,都需要进行系统调用, 而系统调用呢,就意味着要从内合态和用户态之间进行来回切换,所以的性能的开销呢是很大的。而新引入的新女县城呢,是 jdk 实现的一种轻量级的现成,他可以呢避免上下文的切换带来的一些额外的损耗。他的实现原理呢,其实就是 gdk 呢,不再给每一 一个县城都一对一的对应一个操作系统的县城了,而是会将多个扎瓦中的虚拟县城映射到少量的操作系统的县城当中,通过有效的调动了来避免那些上下门切换。在 gdp 十九中呢,有很多种方法可以创建这种携程,比如像 siri 的提供了一个 stat 或者说 strid 的方法,还有现成词呢,也提供了一个创建虚拟现成的方法。 我在代码中尝试着对比了一下性能,同样执行一万个任务,普通的平台现成消耗呢大概在一百秒左右,而用虚拟现成的话只需要两百多不到,这种速度的提升可谓是立竿见影的呀。那么问题来了,你的扎瓦巴会为了这个功能而去进行升级吗?
粉丝14.1万获赞169.0万

大家好,哎,今天呢,有一个粉丝给我留言, 他说,呃,在呃 ida 中如何配置多个 gdk 啊?呃,我们知道在这个 gdk 在电脑上的配置中呢,只能配置一个环境变量,系统变量。 那么在 gdk 中呢,我们在打开不同的项目的时候会用到不同的 gdk 版本,所以说今天我们给大家分享一下 gdaid 二中如何调用多版本的 gdk。 首先呢,我们需要把 gdk 各个版本下载到我们电脑上,好,我我们去官方网站啊,过去带大家下载过,下载之后呢,呃,把他们解压到不同的文件夹当中, 已备用啊,自己设置一个清晰的目录,方便自己管理记忆的啊。好,接下来我们来吊,用吊吊用,配置一下不同的 gdk, 首先点击呃 fir 菲尔文件,下边有一个工程的 statsatstract, 好,在这个地方呢,我们就可以。 呃,看到这个地方 sdks 什么意思呢?就是呃, gdk 的复数啊, gdk 的各个版本都在里边, 我们首先下载软件的时候呢,他会自动配了一个最新版本,从网上下载了一个默认的。然后呢,呃,上一节课我们下载和配置调用了一个 一点八来建了一个项目,那么远远不够啊,我们最常用的是,呃, gdk 八呀, gdk 十一啊, gdk 十七这几个版本呢,我们都来下载。呃 呃,都来引引入一下,这有个加号好,点击加号,点击 a 的 gdk 啊,加入 gdk, 这个时候 找到我们对应的 gdk 目录,比如说我们先把 gdk 十一引进来,好, gdk 十一就引进来了,点击一下应用啊,然后我们再把 gdk 找到我们对应的 gdk 存放文件节, gdk 里边的 gdk 安装, 把十七也引进过来。好,十七也进来了,再点击一下应用啊,然后再把这个 gdk 十九再 重新引进一下。为什么呢?那一个系统上自动下载配置,那一个呢?是在系统呃,默认的地址,而我们这里呢,为了方便,我们这个有时候会进行一些管理和调试呢, 我们把他们整齐排列到了我们的电脑版本上。好, gdk 十九我们也引进进来。 好,点击一下应用啊, gdk 一点八呢,是昨天引进好了啊,地址在在这个这个位置我们就不动了啊,好,这样我们又添加了三个 gdk 版本, gdk 八, gdk 十一,十七,十九啊,好,点击, ok, 这个时候呢,再起再进行创建下 项目的时候呢,就可以进行选择不同的 gdp。 好,我们再来看一下啊, 各个版本都在里边,在我们各个工程里边呢,打开不同的工程的时候,比如说有一个工程 d 零一啊,要对定 d 零一调用不同级 adk 版本呢,点击一下这个 下边的小三角,就可以进行 gdk 不同的配置。然后呢,呃, 在这个毛豆毛豆似的地方也有不 gdk 的不同版本,比如说我们打开一个软件呢,现在我们 id 上打开着这个工程呢,我们在这 个 gdks 的地方吊用的版本和 工程和模板,这三个位置呢,我们调用的 gdp 版本一定要相同,不相同的时候有时候会引起,呃,一定的冲突性问题啊,所以说一定要记着这一点啊,不同的项目 在使用的 gdk 版本可以不同,但是同一个项目这三个位置呢? gdk 版本一定要相同。好,谢谢,谢谢大家 哦。我们再说最后一点,建设新项目的时候,这个时候再建新项目的时候就可以选择不同的 gdk 版本了,刚才是只有一个 gdp 八,现在有各个版本都进来了。好,谢谢,谢谢大家,谢谢。

来给大家讲一讲 gdk 包含但不限于一时期的新特性,那大部分开发人员呢,估计都在用 gdk 八,甚至呢还有在用 gdk 六的,对吧?每天上班呢,写了 gdk 五的语法, 但是随着 gdk 他的版本不断的更新迭代,他现在呢,每半年就有一个版本推出,当然也不用每个版本都关注啊,我们最主要呢关注这个 lts 版本,什么是 lts? 就是 long term support, 就是长期支持版本,那现在最新的长期支持版本呢?有一十一和一十七这两个, 那假如说你要从八升级到这两个版本当中的其中一个,你会选择哪一个呢?肯定会选择最新的这一个,对不对?当然并不是说其他的版本就不用关心你,像十二是 三十四,十五,十六这几个版本,他都有新特性推出,也都做了性能相关的优化,所以说在本课程当中呢,呃,从十二到十七相关的更新,徐老师都会讲到,好吧, 所以说随着这么多新特性的推出,他的性能也不断的优化,那 gdk 八呢,肯定将会慢慢的淡出主流的舞台,那么随之而来呢,就是我们的 gdk 一十七将会成为主流。当然你不要觉得太远了,我们可以看一组数据, 在牛瑞 like 二零二三年统计的 draw 生态系统报告当中,我们可以看到 gdk 一十七,他在二零二三年的一年增长达到了百分之四百三,所以说他的增长率可以说是爆炸式的啊。 那么现在主流的 gdk 呢?是 gdk 一十一,他的占有率达到了百分之五十六,那么现在 gdk 八呢,他仅仅是百分之三十三,所以我说我刚刚说了,他现在正在淡,慢慢的淡出主流舞台。那我们的 gdk 一十七,他在二零二二年的时候呢,只有百分之零点三, 二零二三年就涨到了百分之九,对不对?因为他是长期支持版本的。那么另外一个原因呢,也得益于很多的框架,他在最新的版本呢,也是支持的 j d k 一十七。你像我们的 spring from mark 最低 j d k 版本要求的就是 j d k。 一十七, 以及 spring 部的三,最低版本也要求 j d k。 一十七。卡夫卡在三点零的更新报告当中表示将不再支持 j d k。 八。 jackins 在最新的 版本二点三五七表示必须使用 g d k。 一十一。 james gosling, 赵二支付也表示赶紧弃用 g d k。 八,使用性能更好的 g d k。 一十七。 那徐树老师呢,也去问了一下这个叉的 g p t a i。 我说从长期到性能来说, g d k。 你更推荐哪个版本?大家表示,如果你需要更新和最先进的功能,并且对性能和稳定性都要求比较高的话,那么 g d k。 一十七更加的合适。 所以说同学们赶紧学起来。 gtk 一十七包含但不限于他的一些新特性呢,我已经给大家整理好成笔记了,那需要的同学可以在评论区留言来进行获取。

今天学习安装 jdk, 首先,下载 jdk 第一步,启动浏览器第二步,打开 oracle 页面第三步,切换解题中文第四步,点击产品第五步,点击加瓦第六步,点击下载加瓦第七步,点击 八步,点击 windows 第九步,点击链接开始下载。行,太快了,你先告诉我你怎么知道要下载这个?首先,我们看到这里有 二幺和幺七两个数字,这表示 jdk 的版本号,数字越大则说明版本号越高,版本号越高则说明他就越新,所以我们这里选择最新版二幺。 其次,我们看到这里有 jdk 和 gravim for jdk, 后者 gravim for jdk 比 jdk 功能更强大,性能更好,所以我们选择 gravim jdk。 最后,这里是选 要安装在两个操作系统上,这里分别有 linux、 苹果操作系统和 windows, 而我们的电脑是 windows, 所以我们选择了 windows 下的安装包,这就是为什么要停,别墨迹了,继续吧。 ok, 我们现在进行第二部分解压安装。 第一步,选择钢材我们下载好的安装包文件。第二步,单击鼠标右键,选择解压文件。 三步,选择要安装到哪个目录下去就解压到哪个目录下去,我们这里选择解压到底盘 program file 目录下。 第四步,把文件改的名称改一个自己喜欢的名字,当然也可以不用改,此时就解压安装完成,下面执行第三部分配置环境变量,在左侧使电脑图标上右键鼠标选择属性,然后点击高级系统设置,选择高级选项卡, 选择环境变量。在下方系统环境变量区域里找一下有没有变量名称,叫做加哇下滑向 home 的环境变量,如果有的话就选中他点编辑,如果没有就直接点下面的新建按钮。变量名输入大写的加哇下滑向 home 变量值就是接力 k 安装到哪个目录下的,注意这里的目录路径是选择 gdk 里是选择到 gdk 的并目录所在的, 然后点击确定,这样加完 home 环境变量我们就配置好了。然后再在系统环境变量里面选中 pass 变量,点击下面的编辑按钮,再点击新建按钮,输入百分号,加完下滑线 home 百分号斜杠 bin, 然后选中 该直,把它上移到最前面,然后点击确定,点击确定,点击确定我靠什么东西,这样 我们的环境变量就配置完成了。第四部分我们来验证一下我们这个安装是否正确。在桌面空白处点击鼠标右键,在右键菜单中选择在终端中打, 我们打开一个新的命令提示符,然后在命令窗口中输入命令,加瓦空格杠 version 回车,如果能显示出加瓦的版本号,则表示安装成功。此时你已经掌握了在 windows 上安装 gdk 的方法。 恭喜你,已经停。别恭喜了,你这个方式看上去有点 low 啊,有没有那种看上去感觉很厉害的那种安装方式介绍一下。 当然有。演示之前我们先把刚才按的 kdk 卸载掉,卸载的方式非常简单,就是移除环境变量就可以了。其次点击高级系统,设置高级选项卡环境变量,在系统环境变量中选中 pass 变量,点击边键有选中加完后面的字,点击删除,点击确定。选中加完后面的环境变量, 点击删除,点击确定,再次点击确定,再将 jdk 安装目录刚才的解压包删掉,卸载完成。我靠 什么东西?接下来给大家演示一下,用命令行来进行安装,就三步,第一步,解压,第二步,配置环境变量。第三步,验证安装是否正确。在 windows 搜索框中搜索 powerseer, 选择以管理员方式运行, 这里只能是 power 线,不能是 cmd, 必须是以管理员方式运行,否则无法使用 windows 内置的解压命令解压文件,然后执行 extend 命令进行解压,使用 mv 命令进行改名, 然后回到桌面,在设置官方搜索 c m d, 然后选择以管理员身份运行,注意必须是 c m d, 必须以管理员身份运行,否则无法执行设置环境变量的命令,使用 set x 命令设置。加完 home 环境变量,使用 set x 命令设置 pass 环境面料, 安装完成。验证一下,回到桌面,开始运行,输入 cmd, 启动一个新的命令行窗口,然后输入命令 java 空格 version 回车显示出版本号,表示安装完成。安装正确。我靠什么东西? 点赞关注不迷路!

jdk 版本选择与下载安装?打开浏览器来先认识一个玩 ducks 产品,点开往下翻,你会看到有一个夹碗,点他 好点过来之后呢,右边有一个当漏的下载,加我点呗,点过来这说有十八,还有十七,那你可以自己去切换,同学可以看一下啊,这边有一些描述,说这个加我十七呢,是一个 lts 长期支持版,而下面还说呢,说十八这个版本呢,只是一个临时版本,在二零二二年的时候呢,将会被 jdk 十九去取代,所以呢,这一块呢,我们去选择一个长期支持版,加我十七 点过来之后呢,请同学们根据自己正在使用的操作系统选择性下载,然后这里面有三份下载链接,那我们点哪个呢?看后缀,有这种 vip 的就是压缩文件, 那如果我选择了他,将来还得解压麻烦。好的,这个是可执行程序,那我下完之后双击就可以了,所以呢,我点击这个链接进行下载。好的,可以发现下面就已经开始下载了,关注我,下期教你如何安装。

部分同学在咨询过程当中一直使用的是 gdk 八,网上呢,看到的最新版本已经到了 gdk 十九了,其实各位不用太担心 gdk 八是否会过时,因为目前市面上使用最多的依然是 gdk 八,其次是 gdk 十一。 在基础学习阶段,暂时使用 gdk 八是没有太大的问题。之后如果要用到一些新版本特性,就必须要升级 gdk 版本,比如现在的 screenboat 三点零要求的最低版本是 gdk 时期。当然这些呢,都是属于实战教育阶段了,到了这个阶段再升级也没有太大问题。

那我们本节呢就是讲解 gdk, 那本节的目标就是什么是 gdk? gdk 历经哪些版本? gdk 的下载和安装,还有我们验证是否安装成功。 那首先呢,我们要明白什么是 jdk, 那你想啊,如果说我们现在是一个干干净净的一个机器,干干净净的一个环境,那如果我想在这台机器上进行扎瓦开发的话,我是不是必须他要具备这个扎瓦环境? 这个扎瓦环境实际上就是指针对我们扎瓦开发人员的软件开发工具包,这个工具包也就是我们所说的这个 jdk, 它的全称是扎瓦 development kit, 这扎瓦开发工具包对吧?应该是开发包,然后我们当他作为一种工具包来使用。那如果说 你要在你的机器上想要写扎瓦代码的话,这个 gdk 是必须要进行安装的。那在这里也说了,他自从这个扎瓦推出以来,我们这个 gdk 呢已经成为现在最广泛的扎瓦 sdk sdk, 指的就是软件开发包,也就是说他是最广泛的扎瓦软件开发包,所以我们在这里面一定要把 gdk 安装到我们自己的机器上。那现在问题是 那 gdk 呢?他的版本有很多,那我们现在要安装哪个版本呢?我现在放的这个截图呢,是我在网络上截取的, 那他这个没有给的特别全,那在这里面他没有从一点零开始算,后面呢?你像二零二二年三月份的时候已经有 gdk 十八了,所以在这里他又没有写,所以这个啊,虽然不全,但是能大致表示这个意思,就是 说我们现在这个 gdk 历经各个版本来逐渐的在迭代,逐渐的在更新,所以很多人说,那我是不是一定要安装最新的 gdk, 那我在这里呢,建议初学者你不要安装最新的,因为实际上我们在这个安装 gdk 的时候, 企业中用的最多的是什么呢?是这个八,还有十一。那你往后如果你想再安的心一点,你可以安装这个十七,因为目前八十一十七现在是长期支持版本, 像我们现在这个 gdk 更新的速度也比较快,基本上半年更新一次,所以你看二零二二年三月份是 gdk 十八,那九月份的时候就是 gdk 十九,所以你未必一定要追求最新的,你只要追求一个稳定版本就好了,所以八十一十七你自己选取就好。 那我们本套课程呢,安装的是 gdk 十七,那首先呢,我们要对这个 gdk 进行一个下载,并进行一个安装,对吧?那下载呢?我在这里面已经把他的位置给出来了啊,那我们就去这个位置,我把这个路径复制一下啊, 粘贴到燃气里回车。然后你看啊,因为我们说了,现在扎了是属于凹入口的,所以在这里我们是不是一定要要到这个凹入口的官网去找他呀? 你看目前呢,你往下 jdk 十八已经是最新的了,那我们刚才说了,我们安装一个相对较新的长期支持的一个版本,就这十七, 然后你往下拉,这呢有各个版本的,那我当前的机器是这个 windows, 所以我在这选择 windows, 然后你在这里面有个登录的一个地址,那我选择这个六十四位的安装,然后点击, 你看在这面去进行一个下载,稍等一下。好,那在这里面呢已经安装好了,安装好之后在文件夹中显示, 然后在这里面我们安装的话,你看啊,我在这里面呢给你附赠了一个这个附件一,这里面是 gdk 十七的一个安装步骤,我在这个文档里呢都给你 住下来了,那我们在这里呢,我直接带着你去安装就好了,双击这个 ese, 你直接下一步,下一步就可以了,所以你可以跟随我的视频一起来安装双击 来,那在这呢已经开始有向导了啊,然后他说啊,我们现在已经准备要开始安装这个 gdk 十七了,然后下一步在这里呢,让你选择一个安装的一个位置,那是让你点击这, 这个更改的话,我们可以这个选择他不同的这个安装位置。那我呢一般都会把这个阶级可以放到默认的这个路径下。 c 盘 program fields, 然后这个扎拉下面,然后点击下一步,然后你静静等待他安装就可以了。 来,然后在这显示,我们这个时期已经安装成功了,点击关闭就可以,然后接着往下走。 那我们安装好以后呢,我们就要验证一下他是否成功。怎么验证呢?我们可以通过命令台来操作, 那在这里你点击键盘上的 window 加 r 键,在这里呢会弹出我们这个运行的框,在这个框里呢,我们要调出这个控制命令台,那我们在这里面录入 cmd, 那我这已经有 cmd 了,我就直接点确定, 然后在这个黑窗口里,在这个命令台里,我们在这录一个命令,叫做扎瓦杠窝神,也就是说我想看一下我现在机器我们这个 jdk 的版本是什么,所以在这我们来一个叫扎瓦空格杠窝神回车, 然后你看在这里面我们已经显示十七点零点四点一,在我们的机器上已经安装成功,那现在证明我的机器已经具备了这个扎瓦开发的环境,也就是说这个扎瓦工具包已经在我的机器上有了。 所以我们本节课讲解了哪些技能点,我们从头到尾捋一下什么是 gdk, 对吧? gdk 就是我们现在这个开发人员用的这个软件工具包必须安装在你的机器上,然后他现在版本有很多,无论未来有十八啊,十九啊,二十二,十一啊,你 选择一个,呃,比较新的一个长期支持的版本就好,那我们本套课程选的是十七,对吧?本套课程我们还对 gdk 进行了这个下载和安装,你按照我刚才的步骤一步步走就可以了。然后最后我们验证了一下,在我的机器上我的 gdk 已经安装成功了。好了,那我们本节课就到这里。

好,接下来给大家讲解一下 g t k 四七的下载安装和环节变化的配置。那么首先进入 olive 和官网去下载相关的 g t k 四七版本。 好,百度搜索 audicle 关键字,然后进入 audicle 官网即可,那么搜索完之后点击这个链接,进入 audicle 官网。 好,进来之后我们选择产品这个菜单,然后往下找,有一个 java。 好,那么进到这个页面之后,我们到最下面有一个 audical gdk 这段链接,我们点进去, 然后这里会看到 g t k 相关的各种版本,我们就选择 g t k 十七。好,那么 这里面有三个系统相关的 gdk 十七,有 dos 系统,有马克 os, 还有这个 windows 系统,如果是 windows 系统,我就选择 windows 系统的版本。好,点击 windows, 然后我们去双击,然后这个链接,那么即可下载 gdk 十七的版本。 好,那么由于时间原因,我这个 gdk 四机已经下载好了。好,大家看一下,就在这个桌面, 然后它是一个可执行程序,就说我们双击运行,那么即可去安装我们的 gdk 四七。好,那么接下来我们来去双击运行这个可执行文件。 好,那么点击运行。 哦,他说我计算机上已经安装过此软件了,那我就重新安装一下。 好,那么点下一步,如果说你没有安装过的话,那么执行这个程序之后会看到这个界面,我们点下一步。好,那么接下来去选择这个 gdk 所安装的一个文件夹,这里我就安装到地盘, 大家尽量把自己所安装的软件放到 d 盘,因为 c 盘的话是系统盘,那么系统盘你装的东西比较多的话,那么你的系统就比较卡, 我把这地方改成 d 盘,然后把这个也去掉,就说 会安装到我地盘这个 java 目录下,这个 g d k 杠四七目录下,如果说没有的话,他也帮我自动先创建好这些文件夹好,那么点击确定即可。好,点,下一步。好,那么这个过程的话大概需要半分钟, 大家耐心等一下。 ok, 当出现这个界面的时候,我们 gdk 四七就安装好了。好,那么接下来我们去地盘来看一下。 好,那么打开地盘找到我的这个 java 目录好,这个 加陌路已经有了,然后里面有个 g d k 杠十七,然后这个地方就是 g d k 十七那么相关的一些信息。好,这样的话我们这个 g d k 十七就安装好了,那么接下来我们来配置一下环境电量。 好,我以我电脑为例给大家,那么去演示一下,我的电脑是 win 十系统,那么 win 十系统的话,首先就是找到此电脑,那么右键有一个属性。好,那么找到高级系统设置,点击好,选择环境电量 好,那么在系统变量里边,然后去点编辑好,那么去点新建,我们要点新建啊,不是点编辑,点新建好,那么 首先的话为这个变量名起个名字,那么通常情况下都会写加我杠 home, 大家注意啊,最好写这个大写这两个字母直接从这个下划线,那变量值什么呢? 就是我们那个 gdk 十七安装了一个根目录,刚才我们 gdk 十七安装到地盘的 java 目录下来,我们去找一下, 好,找到加号目录,然后是 g d k 杠十七,然后这个就是 g d k 十七它的一个安装的根目录,我们把这个目录复制一下,然后粘贴到这个变量值,那么定到这个框里边即可。 好,那么接下来我们去找这个 pass, 这个电量。好,那么找到之后 我们来编辑一下。好,我先把这个先删掉啊,这是我之前配的,先删掉,就说你如果说以前没有配的话,这里边是没有这个刚才的值啊,我们就新建一下。 好,那么新建里面写什么内容呢?首先写一对百分号,然后里面写加我杠 home, 然后就是刚才我们取代啊,那么环境变的一个名称, 然后摆放到后面,然后是斜杠,然后 b。 好,那么写完之后我们最好把这个环境变量值啊,那么放到最前面,那么防止其他软件插什么?如果说也本身自带 g d k 的话,会什么?会覆盖啊?会覆盖我们 安装好的 gdk。 好,咱们把这个移到最上面即可。好,那么点击上移, ok, 到最上面了,点确定,然后点确定,点确定。 好,那么如何证明我们这个环境变量配置好了呢?那么接下来我们看这个飞镖 r, 打开 cmd 来去测试一下。 好,那么在任意目录下我们都可以输加 w, 那么杠微信,那么看一下有没有显示信息。好,那么如果说出现这个版本号的话, 我们就基本上这个环节变量就配的好了,当然我们还可以再验证一下,输在这个加我看一下有没有这些信息,然后再输下这个加我 c, 看一下有没有这些信息,如果有的话,说明我们这个环境变量就配置好了。好,那么到这里我们这个 gdk 四七下载安装以及环境变量配置 就给大家讲解并演示完了,那么接下来大家自己动手去下载安装和配置一下,好吧?

好,接下来给大家讲一下新版本的 idea 如何去配置 gdk 十七和 tom 开的十,那么首先我们需要下载 tom 开的十和 gdk 十七到我们的本地。好,大家看一下,我这边已经下载并安装好了, 然后这个是我下载的最新版本的 tom 开的十,然后再往下找,在佳旺目录下是我下载并安装的 gdk 十七。好,那么准备好之后,我们打开 id。 好,那么打开之后我们先去配置 g d k 十七,然后再配置 top, 开的时,那么首先点那个 file, 然后选择头,接着刷下去这个选项, 然后去选择 l、 d k、 s 这个地方,我们可以配很多个 g d k 的版本,这是我之前配的 g d k 一点八的版本,那么接下来我们添加一个 g d k 十七的版本,点那个加号,然后选择添加 g d k。 好,这个地方我们就选择我们刚才安装的 gdk 十七的一个目录,主要是在底盘的 java 目录下找一下。 好,那么找到之后,然后选动 g d k 杠十七, 然后点应用点, ok, 就可以了啊,好,那么接下来我们配着 top 开到十,然后选中这个 run, 就最上面这栏开到里面 run, 然后有一个编辑配置这个选项,我们来选中。好,那么到这个电板里边,我们可以点加号,也可以什么点这个 id, new 都可以啊,我们来点一下这个加号,然后去选, 然后他们开到 server, 然后这个选项,这个选项里面有两个,一个是本地的,一个是远程的,我们就选择本地的。 好,那么这个地方这个名字的话,当然你可以改这个是默认的名字,然后这个地方就是配置啊,就配置我们的 top 开的十 好看,这是我之前配置好了,配置好了他这个地方有记忆,如果说你之前没有配置的话, 那么你点那个这个按钮,然后在弹出的这个菜单里边有一个 tom 开的 home, 然后你去选择你的 tom 开的所安装的一个目录即可,那么点确定,然后点 ok, 那当然这个名字你可以改,这个地方就不再改了,就是用这个 tom 开的十点一点一八,然后点应用,点 ok 即可,这个端口号就是 mon 八零八零,如果说被占用的话,这个地方你也可以去更改 好这个 gdk 十七,和常规的十配对好之后,那么接下来我们来创建一个加 web 应用程序,好,那么点击 file 找到新建, 然后项目,然后左边的话就选择这个 jit rot 一,这个地方的话我们来起个名字叫 web demo 零一,然后这个地方就是我们的应用程序所在的一个目录, 然后这个模板的话,我们选那个 web application, 这是 web 应用,然后这个应用服务器,我们选择我们刚才配置的这个 tom 开的十点一点一八, 然后语言加我语言项目管理工具是 men, 下面的话就不用动了, g d k 的话就用这个 g d k 十七,就我们刚才配的 g d k 十七好点,下一步 大家注意啊,这个地方在选这个版本的时候,大家注意要选最后一个,选这个汽车若塔一十, 就如果说你这个不选时的话,会出现一个问题,什么问题呢?就说你这个常开的服务器也能启动,但是呢他最后啊这个 鼠标程序它访问不到,这是一个兼容性的问题,所以我们要选这个,这个接着看它一时好,那么前的话就不需要去选了,然后点创建 好,这样的话我们这个 vivo 应用程序就创建好了,创建好之后它会自动帮我们把这个目录那么构建出来, 然后里边有一个 hello so letter 应用程序, 那么另外的话,在 vivo a p p 目录下把我们的视频呢,有一个首页,并在接着 p 这页面,就当我们这个应用程序启动之后,他会默认访问这个页面,然后会在浏览器中输出一个 hello word, 然后还有个抄链接, 那么点击创业的话,然后会跳转到这个,通过这个路径,然后跳到这个 hello 瘦脸上这个程序里边, 然后进入这个读该的方法里边,然后往这个浏览器那么输出这样一句话,那 cds 嘛,就是往页面里边我们输出一个 hello word, 好,那么接下来我们来启动一下, 好,那么右键启动。好,那么稍等一下,正在启动。 好,那么项目的话正在构建,我们构建完之后就应该把我们启动了。 好,那么项目成功部署, 我这个火狐的话有更新 看一下啊。当这个 ipad 服务器启用成功之后,然后会自动通过火热燃气,那么帮我们打开这个应用的首页面,就是你在这 gdp 页面来看一下, 找到我们的隐带的 gdp 来对照一下。我们首先就是输出一个 hello word 这个地方,然后是一个拖链机, 好,那么点击操练机,然后会通过这个 url 那么跳转到这个 hello 收来的程序里边的这个读该的方法里边,那么读该的方法就是玩浏览器,那么输出这样的一段话,那么浏览器解决完之后,那么实际上就是一个微信一标签的一个 hello word, 我们来点击看一下, 就建了一个 hello word。 好,那么还有个小问题啊,什么问题呢?大家看一下这个项目名非常长,是吧?就说我们防的时候不方便,那么能不能改呢?那肯定是可以改的呀,那么如何去改?我们来看一下, 我们改之前,我们先把这个服务先停掉。好,那么如何改?然后去 这个地方,然后右键有一个编辑配置, 跟进配置,然后这个地方有一个部署,能看到吧?部部署,那么找到部署之后往下拉,你可以把这个项目的跟踪镜给他改一下。项目的跟踪镜一般就是项目的名称。 好,这是我们项目名称,然后点应用,然后点。 ok, 然后这时候你再看一下这地方,你再点那个编辑配置,看一下,这地方已经发生变化了,能看到吧?这个发生变化了, 就说当我们项目启动成功之后,然后这个会自动访问这个 url, 然后进入到我们项目的首页。 好,那么接下来我们再来重启一下右键点那个 run, 好,稍等一下。 好,启动成功,我们来看一下啊,大家看一下这个路径是不是发生变化了,就是我们刚才配的项目的名称。 好,这是这个你在这 gdp 的首页面。好,那么接下来点下这个车链接,看能不能跳转, ok, 没问题, 然后这个项目的跟踪镜也没问题。好,这样的话关于这个 idea, 那么就配的 gdk 十七和他们拍摄时以及如何创建 加 vivo 应用程序,给大家什么就讲解并演示完了,然后接下来大家怎么动手操作一下,好吧?

你发是你发,我用扎瓦巴,很多扎瓦程序员口口声声说要坚守扎瓦巴,但是随着近日的一份二零二三年扎瓦生态系统报告出炉之后,很多人才恍然发现,好像大家嘴上喊着拒绝,但身体却诚实的很呀。 这份报告呢,是采集了上百万份线上的应用程序的数据做的分析,主要呢是统计了使用的 gtk 的版本情况。从报告中来看呢,二零二零年是 gtk 八的巅峰之年,在市面上占了百分之八十四的使用量,可谓是一枝独秀,但是仅仅三年的时间,一路就跌到了仅剩百分之三十二,使用量的下降比腰斩还要多。 而反观另外两个 l t s 版本, g t k 十一和 g t k 十七呢,在这几年增长是很迅猛的, g t k 十一从二零年的百分之十一飙升到了百分之五十六,而 g t k 十七在二二年还不到百分之一的占比,到了二三年已经迅猛地增长到了百分之十,一年时间增幅达到了两千三百多位。伴随着 g t k 十九二十中呢推出了虚拟县城, 我相信下一个 lts 的版本会更加受到开发者的青睐,估计那个时候 gdc 八的使用量会继续下降,降到百分之十以下也不是不可能的。一看不知道,一看吓一跳啊,怎么样,你还准备继续坚守扎尔巴吗?

哈喽,大家好,我是土宁课堂大肚肚周瑜。那今天来给带给大家一个大杀气技术,就是 j d k 十九中间的虚拟现场。 对了,本视频的文档我已经整理好了,并且与往期内容一起汇总成了二零二三年最新加法面试文档,放在了视频的最后面。坚持看完一定对你有帮助。好,那我们继续。那有没有同学知道什么是虚拟现身呢? 哎,那么来看啊,其实虚拟现成就是我们说的携程,所以说在 jdk 十九中间可以说,但是还没有正式啊,但也算是一个预览版,但是我们可以去用代码去去用携程呢。我们大家来看一下。 那么携程的到底解决了什么问题呢?我们不妨直接来看代码来注意看我现在。呃,就有这么一个任务,叫做 mytask。 哎,那里面干嘛呢?哎,就去打印一下当前的现在的 信息,然后去睡眠的疫苗。哎,注意,这是疫苗啊。然后呢,我又去打印了一下当前的执行时间啊,这是一个非常简单的 renable 的一个任务。好,那么现在我在这边去虐了一个现成池。这是一个非常 普通的县城池啊,那么县城池里面有几个县城呢?有一个县城,那么我这一个县城池我来执行啊。多个相当于多个任务。那么大家可以想象一下这个执行的效果应该是什么 来,大家可以思考一下,因为我当前县城市里面其实只有一个县城。对,那么这个县城啊。你一开始呃,比如说你先执行这个任务, 那么你是不是得得等这个任务执行完了之后,你才能执行第二个任务,才能执行第三个任务,才能执行第四个任务。所以由于我现在这个现成池里面只有一个现成,所以说最终你虽然是用了现成池的这个 exq 的方法,但是呢, 这种展现出来的效果其实也是串形的,得先执行它,等一秒再执行它,等一秒再执行它。对于音乐只有一个线程嘛。所以说我们可以来试一下这个效果,看一下。 好。来,你看这是不是我们相当于执行的第一个这个 my task, 打印了一下当前的县城啊,执行的时间啊,然后哎,又相当于等了一秒嘛,我们又哎执行了一次,哎,又打了一下当前的时间。你看我提交了五个任务,他相当于是每秒 执行的一个任务,进来一个串行的一个现象,对不对?好。那么其实大家可以想一下,我们在这个过程中间,我们可不可以去优化,但我们是站在底层的角度去思考这个问题。你想啊, 我这个县城,我现在在执行我们的 my task。 对,那么你执行 my task, 你肯定就会进到我们的乱方法,然后打印它,然后去 sleep。 sleep 呢? 其实你这个线程,你就相当于会相当于主,或者说就睡眠的一秒。那么你这个线程,你在这一秒的过程中间,你这个线程,你可不可以去执行其他的任务 哎,按原理上来说是可以的,但是现在你看我们的这种线程保护这种线程词的实现,他都没有做到这一点, 厉害吗?所以实际上来说应该是可以做到的啊。就是我一个县城,我在执行这个任务的时候,我睡眠了,那么我在这个睡眠的过程中间,我就可以去做其他的事情。比如说我发现你县城池里面你还有其他的任务。对,哎,那么我就可以去执行其他的任务, 明白吗?注意,这就是我们加瓦里面的携程,他所能够达到的效果。比如说我们来试一下,你看啊,我现在同样的,其实你用携程的话,他这个 api 呢?呃,还非常像。比如说你也是去遛一个叫做 携程的现。呃,虚拟现成的现成词。对,每个任务一个虚拟现成的这么一个现成词,类似这个意思。当然你这就不需要去指定啊,他也没有相对应的方法可以让你去指定啊,多少个携程啊什么什么的,没有这种东西。好,所以说你来看。那么现在我们来直接同样的代码,我们刚刚说了, 你如果说用这种线程词,你所看到的效果,他就是串行的。对啊,就是一个一个一个执行的,一秒一秒执行的。对,那么我们现在来看一眼看效果啊。来,你看他是不是相当于一一下子就执行了?对,你看,至少说这个乱方法,他好像一瞬间就执行了。 对。我我还不说睡眠什么的,但是他后没有打印后面的。呃,这个东西,这是为什么呢?这是因为我们这里可能主线针你,可能我们可能睡眠的太少了一点,我再来加长一下时间,然后你看还是 我会发现你看,至少说我现在对于这个乱方法而言,他肯定还是会睡一秒。但是你会发现 我这五个携程。你就要理解啊,我每个任务一个携程嘛,我这五个携程,他其实是在并行工作的。比如说我这五个携程,我同时来执行了我的乱方法,所以说我同时打印出来的这个东西。 对,然后呢,我这五个学生,我的睡眠的一秒,然后我又同时打印了一下当前的时间,你看这个时间非常之接近, 但是我们刚刚的那种是就是这个现成词的普通现成词,它是达不到这个效果的。我们来看哦。再看一眼跟着写成的效果,你看是不是 很明显不一样。那有人说细心的很容易发现。哎,不对啊,你这里打印我们携程的这个呃信息哎,你会发现他确实啊,是叫做虚拟县城,就是携程。那么 a 他里面好 好像用到了我们的 fork join 破对哎,好像这不还是多个现成吗?你看这好像是 fork join 里面的。呃,第二号现成,这是第一号现成,这是第三号现成。那不对啊。那你你这相当于你的底层还是用多个现成在执行我这里提交的任务吗? 哎,看上去是这样子的对不对?但实际上也是这样子的啊。但有同学可能就会想到,那如果说是这样子的话,那你这个效果,那你演示出来,那肯定不准确呀。你本身你的底层,如果说确确实实是有多个县城,那你当然这多个县城,你就会同时的在执行这几个任务。 我们刚刚讲的线程词里面,你只有一个线程,所以说你达到了一个创新的效果。但是你现在这么演示你,你是有多个线程,所以说你看到这个效果也很正常呀。哎,没关系,我们可以改一下啊。首先我们可以发现在我们 jdk 十九里面,他这个虚拟线程,他确实是基于我们的复刻卷印的。好,我们等下可以来分析下他底层的原理,他是基于我们复刻卷印的,那么他这边好像有至少有三个线程,那么我们可以通过一些参数来去进行修改。我们来看, 比如说 a, 他针对我们的虚拟线程,他就提供了。我们看一下是通过杠 d 的方式,他提供了 a 一些参数,可以让我们来 进行修改,比如说就是杠 d, 然后你去指定。因为 focuson 嘛。大家如果说对 foco join 比较熟的话,这个就表示 foc join po 日也是现成值对不对?它的核心现成数有多少个,它的最大现成数有多少个? 好吧,就是他默认情况下面啊,他的呃核心线程数是看你的呃 cpu 的核心数啊,就是他是,这是他的默认值。那么他的最大线程数呢?就是二百五十六。好吧,所以那么我 我们就可以把这两个函数都设置为一,那就表示你现在这个 focule join pro 里面,他其实也只会有一个现成的来。注意,我已经保存了。注意我们再来运行一下。还是用协商。我们到来看一下,如果说你现在这个 focule join pro 里面只有一个现成,你也能不能达到刚刚这个效果呢?来我们来试一下。 哎,照样可以看到没有,这就是一个线针啊。所以大家认真思考一下,这个和我们上面这个代码,他运行的效果就完全不一样, 我们上面这个代码我说了,他就相当于是一秒执行一个,一秒执行一个,一秒执行一个,一秒执行一个,他执行这五个,他要五秒。 对,那么下面我们直接切换成为我们的这种虚拟县城,也就是邪神。我们会发现他相当于就是一秒之内把这五个任务都执行完了,能能明白吗?来 这里能明白的可以打个一什么的啊,好不好。所以这就是虚拟县城,也是携程他强大的地方。有没有发现他仍然只有一个县城,但是就是这一个县城,他可以同时去执行多个任务。 哎,想不想到对不对?好?那么他到底怎么实现的呢?来首先大家要知道他为什么要用啊?我们先解释一个问题,就是为什么他底层要用复合就用破, 哎,你用现成词。当然我们知道我刚才前面也讲了,就是携程,你肯定底层还是要基于现成的, 所以他为什么要用现成值呢?啊?因为 focus prat 本身就是现成值啊。我们先解释这个问题很简单,因为你如果说你所有的学生,比如说我这里去去去,呃,提交了一百个任务,那么相当于你有一百个现成,那你这一百个学生,如果说呃,他底层都使用的是同一个现成,那么最终 你的效率肯定是不会很高的,因为毕竟你是用的同一个县城,对不对啊。所以那么如我如果说我现在能够有多个县城同时来执行啊,你的这些来支撑啊,或者说支撑,或说承载你的这些携程,那效率肯定会更高一点。 说哎,我底层就会用到线层尺,对,你可以去设置你到底要用多少个线层来支持我们的携程 对不对?你现成越多啊,那么相当于你你这种你携程你运行的效率也就会越越高对吧?好。那么为什么不是用我们刚刚说的那种普通的现成词呢?而是用 focujin pro 这种现成词呢?因为很简单, foc join pro 的现成词,它的功能更加强大一点。我们知道实际上 foc join pro 它 呃我能够有一个典型的功能,就是能够去对我们的任务进行拆分。拆分对比如说啊,像我们这里其实有 一个这种呃三 pask 的一个任务,那么我们在这个任务里面,我们就可以去定义一种任务拆分的逻辑。我们可以把一些大任务拆成一些小任务,而我们的普通性能词你是没有这个效果的。 所以说我们这里呢,哎,用 focuson pro 哎,他也能够支持你去提交一些我刚刚说的这种可以去进行拆分的任务,实际上是这个任务这种这种任务啊, 如果说你要呃把大任务拆成小任务的话,你就自己去继承一下这个类啊把,然后把对应的把它提交进去就可以了。所以说这是相当于 focus, 它更加强大一点,就说它底层用的 focus。 当然了,包括 focus 本身的实现,其实也会比普通性能词 他的那个运行的效率要高。因为大家都知道他顶面有一些呃任务窃取的一些机制啊,其实最终会导致他的整体的运行效率会比普通 限制的运行效率要更高一点好不好。所以说底层他用的就是复合,就用炮好。那么还有一个问题就是你看像我当前这个情况,他是怎么做到,说他只有一个线程,但是他可以同时来执行我这五个任务呢? 其实很简单,就是我前面最开始的时候讲的,实际上我最终其实就是这个县城,他会来执行我这里提交的任务。只不过这个县城他可能啊先执行这个任务,哎,正好这里睡眠了, 睡眠了怎么办呢?就是我前面讲的,当前这个县城,他会去执行另外的任务,执行这个任务,哎,他执行这个任务也睡眠了,所以他又会执行另外的任务,另外的任务 就是一个县城,他如果说被阻塞了,被睡眠了,哎,在这个过程中间,他就会去执行另外的任务。这是我们携程啊,他里面他会去帮我们去 做的,明白吗?或者说这个 a p i 里面他会帮我们会做这个 ins k 的方法里面,他会帮我们去做到这件事情的。但具体怎么做到的,这个太深入了,我不知。我我现在肯定是没有时间给大家去讲啊,大家也没有必要说现在要去把这么深入的 去去去,把它搞明白。这里涉及到啊,一些县城,他的一些任务的一些挂载之类的,还比较麻烦,还比较底层,好吧,所以说大家只需要知道一个县城,他在修眠的时候,他会去执行其他的任务,这就是我们携程他最核心的底层的实现。 所以那么我们这里就有一个问题啊,我这里是 sleep 对不对?那么假设我们这里有一个 while two, 大家可以想一下会发生怎样子的事情,然后哎,比如说我们这里可能答案不了了。嗯,这个地方我想一下啊。这里这里 well two 就就这样子吧。好, 我们来看一下啊。就是或者说我把这个外偶数写在前面。我们先先这样子吧。来看啊,我们现在如果说一个县城,你让我刚讲的你一个县城,你先执行这个任务。对啊,你打印他,然后这里直接外偶了。那你这个县城,你在外偶的过程中间,你还能够去执行其他的任务吗?是不是就不行? 对,我们这里也可以从侧面来验证一下我们前面所讲的来,我们来试一下。那么如果说我这里把它改成 well to 哎,你看他照样就执行不了了,你看他后面的任务,他就没有执行啊,他就不像我们刚刚那个并行的效果,对不对啊?这里是因为我主线人退掉了,所以他就退掉了 好不好?所以这里要注意。我们在用携程的时候,那么你如果说你确确实实你执行的这种代码,还有或者说这种 cpu 的相当于计算是非常多的,那么你可能最终你达不到你可能想要达到的携程 的那个效果。所以当然我们大部分开发的时候,我们执行的任务更多的。其实像这种,那么这里的斯利普,你把它换成什么? i o i o 就是你要去发送请求呀,或者说去呃读取数据库呀。 行,在这个时候,这个棍中间线程他也会空闲出来。就是进行 io 的时候,我们的线程其实也会空闲出来,所以说到时候也能够啊去呃,在等待 io 的过程中间去执行些其他的任务,那么也能够达到我们刚刚所看到的这种病情的效果,也就是我们 携程所体现出来的效果,所以这里我不知道能不能懂。好吧,所以这个是呃稍微的给大家讲一下,我们 gdk 九中间的这种大杀器虚拟现成, 他其实还是算非常之强大的,我们至少看到这个效果来说,就已经非常强大了。一个县城他可以同时的执行多个任务, 哎,这是比较厉害的了啊。所以说,呃,当然了,我们现在对于 j d k 十九而言,我说了还没有正式的发布出来啊,我们你要用的话呢,你肯定要去加上一些些参数,包括大家也可以看一下,他其实在运行我这段代码的时候,哎,他是额外的加上这个参数了的。 表示说你要去用一些预览版的功能,你才能够用到这个。携程如果说你没有加这个参数,其实你是用不了这些 a p i 的啊, 能懂吗?他会他会有一些些呃限制的。好,所以说这里等待吧。我们大概可能在 j d k 二十里面看能不能这个功能就正式的可以开放出来啊,发布出来让我们可以直接去使用 啊。那么如果说真的能够用了,那么我觉得对于你们系统的整个运行效率而言,应该会提升的更高。对,因为你一个县城就 可以做更多的事情了。好吧好,那么就讲到这里吧。想问呃,大家想要这个笔记的,包括因为这个笔记里面还有很多其他的内容,希望大家给我一个三连。好吧,谢谢大家。

好,我们来看一下 gdk 一十七对 switch 语句的增强,这是我们以前写一个 switch case 最基本的语法,大家有没有觉得有不好的地方呢?我们来看一下他是怎么增强的。首先我们不需要再为每一个 case 都写上 break 了,大大增强了我们的编写效率。 以及呢,假如说我要为这个变量负值,我不需要每一个里面都写上这个负值的代码了,我直接将这个值呢返回到这个变量当中就行了。大家可以看到 这一大段代码简化成这几句,假如说 case 非常多的情况下,我们的可阅读性就大大的增强了,对吧?但是这其实在 j d k 一十二就已经推出的这个特性,那 j d k 一十七又推出了什么特性呢?我们来看一下,假如说我们 要对这个值进行匹配多个的话,那我们要写多 case 对吧?那现在 jdk 一十七呢,你只需要加一个逗号,然后后面跟上我们要匹配的值就行了。 以及呢,有同学可能会问,如果我这个 case 里面需要书写多行业务逻辑的代码怎么办呢?你之前是直接在后面写一个值就行了,直接将这值返回到变量对吧?那假如说这个 case 里面有多行业务逻辑代码呢? 也支持我们只需要呢写一个大括号,然后在里面写上我们业务逻辑的代码,加上这个业务的关键字,作为这个呃变量的返回值就可以了,这也是 gdk 一十七的特性,也就呢,之前 我们只支持对数值或者资产量的匹配,那现在呢,还支持对这个对象的类型来进行匹配,这就是 switchcase 的增强了, nice。

arc 就像疯了一样,前段时间又刚刚发布了 jdk 时期,但是现在啊,企业主流的版本还是八版本,因为企业切换新版本是格外小心的。 不过新版本也提供了一些非常有意思的新特性。语法堂像这些东西,点开评论区的第一条,我给你准备好了各个版本新特新的详细解读,赶紧动起来吧。

大家好,我是吉海,这期我们来给大家分享一下佳娃十九,他的一个很大的新特性,佳娃虚拟现成。从前几年开始,佳娃整个社区他的迭代速度就逐渐上来了,以前是隔几年出一个正式的版本,现在基本上采取六个月一个迭代, 几个迭代下来再决定哪一个是一个长期知识版本的。所以这几年很多接一批的新特性,我们都没有太在意。为什么虚拟现成这个东西我觉得值得拿出来单独讲一下,因为这个东西不管从面试的角度还是从实战的角度上啊,这个都是挺有价值的。 比如我们经常在面试的时候会问点现成词的一些调优相关的东西,还有我们在实战当中经常会遇到一些哎 io 密集型的一些应用, 那我们的现成词具体怎么去配置,包括 io 模型的一些选择,其实这个都是非常大的一个挑战。众所周知,现在整个计算器系统它的一个瓶颈主要是在 io 这一块,这些年单纯的计算是 pu 这一块的性能提升,他是指数级的,但是对于存储这一块的提升,他基本上是一个线性的,所以说这之间的 gap 越来越大,所以大家会发现云云原生去做了很多虚拟化,包括我之前分享了幺二三零六西门反尔,他也是做了纯算一体,包括这两年比较火的购源, 他对于并发这一块的支持其实也是非常好。它里面一个很重要的特性就是引入了携程这么一个概念,传统的家外先成,他虽然运行在家外虚拟机制上,但是他跟操作系统的内核现成还是一映射的一个关系,系统先成是操作系统能够调度的最小单位, 但是他跟系统的平台有关系,但是他有一个很大的问题,就是他每一个县城都是有自己私有的变量,包括他的内存的占用都是有限的。系统的内核县城他是受本地操作系统包括硬件资源的一些限制的,所以我们会用到这种磁化的技术去解决这种频繁创建成本过高的问题。 虽然用这种磁化的技术能够解决这种频繁创建现成的这种问题,但是对于整个并发量、吞吐量的提升还是非常有限的,因为你整个内核的现成它本身是有限的,所以对于大部分互联网的场景,如果真的要支持所谓的高并发,我们肯定都是用大量的集群去堆机器, 或者说采用包括 nginks 啊这种衣不费主色的一些解决方案,引入第三方的一些框架,这种反应式的变成去提升一定的他的并发度。但是很多时候在家外虚拟机内部,我们需要去创建大量的现成,其实在家外虚拟机的层面,这个限制一直是存在的, 所以为了更好的去解决这个问题, open gdk 社区就孵化了怒目项目虚拟县城,具体怎么去实现,就是在 gdk 层面他去虚拟化出来一个平台县城,这个平台县城跟操作系统的内核县城它是相关的,然后具体的虚拟县城是由这个平台县城去做调度,所以在 gdk 层面其实 也实现了一套自己的调度的逻辑,这个也有点类似于更远的 gmp 模型,这个也是在一定程度上去隔离这个操作系统相关的一些东西。具体的调度过程就是我们创建了一个虚拟现成,我们可以把它挂载或者叫做安装到这个 平台县城上,然后再由这个平台县城绑定了内阁县城去做调度。多个虚拟县城就可以对应同一个平台县城。 那某一个虚拟县城他遇到了一些 io 的事件要去等待,要去主社的时候,他就可以亮出资源,让这个平台县城再去调度其他的虚拟县城。在程序看来,每一个虚拟县城他还是有自己的同步代码块,有自己的对战。这个县城的上下文和他的调度就不是由操作系统直接去接管,而是由 jdk 里面他自己的调度器 去进行调度的。那家外虚拟期怎么去保证每一个虚拟县城他自己的上下文切换和他自己的现场的保护呢?被平台县城接管了之后, 那空闲这个虚拟现成他会把他的占空间移动到堆上面去,然后这个平台现成再去装载其他的虚拟现成,要去恢复其他虚拟现成的一个占空间,只要把它从堆上面再复制回来,大概就是这么一个逻辑,你会发现基本上都是加完虚拟机里面的纯内存操作,所以这个速度是非常快的。但是这里也有一个风险,就是 如果你的调研站非常多,并且你的战争里面存放的数据比较大,那再把站空间复制到堆上面,这个过程可能开销会相对比较大,所以虚拟现成的话就比较适合这种并发量比较高,但是每一个站他的空间又比较小的这种场景。所以关于每一个虚拟现成他自己的站空间的一些优化,包括他复制的这些算法, 其实这也是阶梯跟后面的一个迭代方向。最后我再来总结一下,就是虚拟现成它不是说能够执行更多的指令,也不是说让你的速度变得更快,通过提升整个系统的并发度,去提高 整个系统的一个吞吐量。而且虚拟现成使用起来也是非常简单的,它就是睡的这个类,它的一个子类的实现,所以现有的代码几乎不用做任何改动,甚至你都不用重新去做变液 主要去申请一下 gdk 的版本,再调一些参数,你就可以用上虚拟现成他的一些信特信,这一期就分享 gdk 十九,他提供了虚拟现成这个信特信。 大家对 jdk 其他那些新特性比较感兴趣,也欢迎在留言区留言,如果点赞多的话,我也可以单独做几期给大家做一个分享,没有关注的小伙伴也希望点一下关注按钮,这样就不会错过很多技术的干货了。好,谢谢大家,拜拜。