gdk 八升级到 gdk 二十一会面临哪些问题?今天我就刷到了这么一篇文章,是京东云写的,然后里面就写了 gdk 八升级到 gdk 二十一的问题集。然后主要就是包括一些一些被移除的 a p i, 然后比如我们的贝斯六是硬扣的,低扣的,然后这个类是被移除了,我们需要使用新的一些 a p i, 然后就是一个模块化带来的一个限制,比如说某些包下面的 a p i 我 们不能够访问了,直接访问它会包错,我们需要添加额外的一些配置, 然后把这些权限放开。然后第二个就是比如说我们是 springboard 的 项目的话,那么我们整个大版本以及相关的一些中间件的版本可也要同步的去升级。然后比如我们的还有我们的一些 lowblock 啊这些版本,以及我们的 mevin, mevin 的 一些版本,以及我们编辑插件的一些版本,我们都需要进行一个升级,然后感兴趣的可以去看一下这篇文章。
粉丝3602获赞3.0万



哈喽,大家好,我是惜缘,今天和大家分享一下 java 安装教程。以 gk 八和 gdk 二十一为例子,我们先来看这几个问题。第一个是 gdk 和 gr 一 什么区别? g d k, 它是 java 开发工具包,它包含 g r e、 翻译器、调试器和开发工具,它是用主要是用来编辑和翻译 java 程序的。 g r e 是 java 运行时环境的简称,它包含 java 虚拟机和核心内库,只是能作为 java 运行的时候的一个工具。 第二个就是我们为什么选选择 gdk 八和 gdk 二十一,不选择 gdk 二十五,因为现在市场上用的最多的还是 gdk 八,如果选择新的这八版本做项目的话,一般会选择加二十一。 至于 g d k 二十五,它是在二零二五年九月刚发布的,现在设备还不这太好,如果想用的话,等到二六年九月份再用会比较合适。第三个就是说 open g d k 是 什么?它和 overclock g k 什么区别? open g d k, 它是一套开源代码,各家厂商都 可以基于 open gdk 制作自家的开源代码,制作自家的奔驰 k 发行版本。 open gk 是 有不同的厂家,是有很多个发行版本,比如说微软的、 亚马逊的,甚至腾讯的和阿里巴巴的都有自己的欧美 k 发行版本。 orco gdk 是 orco 公司,就甲骨文公司是基于 open gdk 来构建的,它们 open gdk、 orco gdk 基本是一模一样的。它俩其实最关键的区别就在于许可证, 如果是免费使用的话,那就是用 open gdk。 open gdk 是 开源和免费的,它是可以商用的,但 orco gdk 商用你是要付钱的, 这个就是 openkey or 口基给。第四个就是 java 的 lts 版本和短期版本。 lts 版本是长期支持版的一个简称,它是每两到三年就会发布一次,比如现在 java 八、 java 十一、十七、二十一、二十五都是长期支持版, 它的安全和性能的补丁的支持周期是一般是八年,是加二八,它是二零四年,发布期间就有十年了,支持周期就到二零三二年。发布加二八是因为它用的是最广泛的一个版本,它支持周期解释到现在已经有十一年了。像非 rts 版本,那就是短期版和特性版, 这个版本它是每半年每半年发布一次,比如说加法二十三,加法二十四,它的支生命周期就是它支持周期也只有半年。这个是加法团队的一个试验田, 主要是用来测试 java 的 新特性。我们要下载的话就选择 lts 版本,比如说 java 八十一、十七、二十一、二十五这些就是考虑这版本。好,我们搞明白上面的这些概念和问题,下面再来看怎么下载和安装。我这里选的是 opgdk 的, 贝尔索夫的, 他家的 label gk 选的这个发行版本些发行版本也是我一直在用的,是比较稳定的。我们首先打开他的官网,稍后这个网址,还有这个文档里面的内容我会给他放在评论区,大家关注一下评论区,这个是他的官网下载的页面, 这里面已经显显示了下载 librivox gdk 这里,它它这里面提供的都是一些长期支持版本。我们先来看一下这个 j 八长期制版,我们往下滑, 这里提供了很多个版本,像那个 linux, 这个是 airplay 那 种版本发行的 linux, 这个是 mac, 这个是另外一套系统,我们这里找到 windows 叉八六,这是 windows x 八六价位的,这里默认的标准版,这里的 它提供作标准版,这个标准版其实就包含完整的 g、 d、 k, 我 们平时开发和生和生产环境选择标准版就行。 f 呢? f g、 d、 k 就是 完整版,这里就是标准版。在标准版的基础上加上一个 java 的 桌面,或者叫图形化开发,它的一个组建。 light 呢是轻量版,它只包含一个 运行式环腻哦,它这里还提供了一个 gr 一 哦,这个发行版本还单独的提供了单独提供了 java 的 gr 一 运行环境, 我们选标准版,在右侧,这里他选的,我们要看到找的确定是 x 八六,这个是六十四位架构的系统,六十四位架构的,这个是 windows, 它这里面提供的 msi, 这个是安安装包,这个安装程序,这个是最普的话,就是压缩包,它就免安装的这个锁匙扣就原代码, 一般下载这个安装包就行。啊,这里已经下载了,我们看下载了那个 jk 八的话,我们再来看一下这个二十一, 它就这些下载的信页面,它是跟 jk 八是一样的,我们也找到 windows x 八六,这里选择 standard 的 jk, 就 标准版, 这里右侧,我们也下载 msi, 等它下载完成。这两个就是我们现在要安装的那点,打开打开安装,它默认会安装到 c 盘,这个是 c 盘吗?因为 c 盘,这是我们的系统盘,如果这些什么软件都装 c 盘的话,那 c 盘占用的空间会越来越大,系统会越来越卡,所以我们就不装 c 盘, 给它装到 d 盘,先在我这里直接打开了,这是 d 盘嘛?我的电脑上 d 盘,我们在 d 盘上写, 先新建一个文件夹,验一个 gdk 八作为 gdk 的 安装目录,再新建一个 gdk 二十一,做 gdk 二十一的安装目录。好,我们再回到下载目录,我们先来安装这个 gdk 八,这个是 gdk 八,那个版本是四七二,然后点 next 这里的安装目录,就选择我们刚新建的目录,找到地盘,找到这个文件夹,选择 j k 八,好,点击 ok, 然后一路下一步就可以了。安装完成, 我们再来装一下 jdk 二十一,点击下一步,这里那个文件安装位置也要改一下,选择这个 jdk 二十一点, ok, 再点下一步安装,让这里点结束,然后安装完了,我们再来看一下它的环境变量。怎么配置 环境变量,我们对找到此电脑右键属性,在这里找到右侧,找到高级系统设置,然后点击这个环境变量, 我们可以看到它已经有已有 java 后幕了,因为类尔软件的这个 libre 可 gdk 安装完之后,它是自动给你配置好系统变量的。我们再来看看这个 pad 里面, 这里面也是给你配置了,已经配置好了这个二十一和这一把马克,就是我们刚两个安装目录, 你可以自己手动改,你改的话注意下这个 java, 改一下这个 java home, 改下这个 java home, 要要保证这个 java home, 要把 home 和这个 pad 里面的 这个里面路径是一致的,就是派死路径里面,这个后面是它的文件曾经一直到是到 b 目录下,外面呢,它是只到我们刚新建的那个 java 安装目录,这里可以安装目录。 潘金变亮啊,配配好了,我们再来看一下是不是安装成功了。在这里打开 cmd 命令窗口,然后我们在这里输一个 切换输入法,就是这里要输入英文 java, 当我们输入在这个窗口里面输入 java 杠 v me 时, 它输出完 java 版本的之后,那就表示我们的 java 是 安装成功的,这里它输入的是二十一,表示我们默认的 java 版本是二十一, 这是因为我们是先装的 java 八,后安装的二十一,你最后安装哪个版本?就就贝尔软件它 librec 这里 k, 你 最后安装哪个版本,这里系统默认的就是哪个版本,其实也就是我们环境变量里面配置的那个版本。好了,今天的视频教我安装教程就到这里,感谢大家收看。

java 二十一的发布,带来了 java 历史上最重磅的特性之一,虚拟现成。如果还在为高病发下的现成池调油、头秃或者被异步回调代码折磨,那么今天这期视频就是为你准备的,我们将一起揭开 jdk 二十一虚拟现成的神秘面纱。 在 jdk 八时代,我们处理外部请求最常用的模式就是一个请求对应一个现成,这在请求量少的时候没问题,但问题是操作系统层面的现成太贵了, 创建一个县城要消耗大约一兆字节的内存,而且县城之间的切换非常消耗 cpu。 这就好比我们开了一家餐厅,每来一个客人都必须专门雇一个服务员,全程一对一服务,客人看菜单、发呆时,服务员也得干等着。 这导致我们的病发能力不仅受限于 cpu, 更受限于内存和操作系统资源。为了理解虚拟县城,我们先得知道以前的县城长什么样。 在 jdk 二十一之前, java 的 县城其实就是平台县城。什么意思呢?就是 java 代码里你有一个 thread, jvm 就 会在操作系统底层真的申请一个 os 县城。这是一种一比一的映射关系, 操作系统管不过来那么多县城,所以我们不仅创建慢,上限也低,一台普通服务器能撑起几千个县城就已经很吃力了。 更糟糕的是,现代应用大多是 i o 密集型的,比如查数据库、调第三方接口。当县城在等待数据库返回数据时,他其实什么都没干,处于 block 的 状态。 但在一比一模型下,这个什么都没干的县城依然霸占着操作系统资源,这就好比那个一对一服务的服务员,在客人思考吃什么的时候,他只能傻站着,不能去服务别的桌,这就是资源的极大浪费。 为了解决这个问题, gdk 二十一引入了虚拟县城。它是一种用户模式的县城,完全由 jvm 自己管理,不再是一对一绑定操作系统的县城了, 它非常清亮。创建一个虚拟县城的开销几乎可以忽略不计,就像创建一个普通的 java 程序对象一样简单。以前我们几千个县城就得小心翼翼,现在可以轻松创建几十万甚至上百万个虚拟县城。 让我们看一张架构对比图,左边是老模式一对一死板且昂贵,右边是虚拟县城的 m n 模式。 jvm 会维护一个巨大的虚拟县城池,然后通过调度器把这些虚拟县城挂载到少量的在体县城上执行。 如果一个虚拟县城在等待 i o, 比如查库, jvm 会瞬间把它卸载下来,换另一个需要 cpu 的 虚拟县城上去跑底层的 os 县城、载体县城一直处于满负荷工作状态,不再摸鱼。 以前我们创建一个县城需要拗一个 thread, 现在我们只需要调用 thread start 部署 thread 的 方法,或者使用新的 thread of 部署 api。 最重要的是,虚拟现成依然是 java 软 seed 的 实力,这意味着以前学的所有 seed 类的方法几乎都能直接用,没有新的复杂概念,只有性能的提升。 在 jdk 八时代,我们把现成池当宝贝,因为现成太贵了,必须附用。但在虚拟现成时代,这个观念必须颠覆,因为虚拟现成太廉价了,创建它的成本比重置一个县城池里的县城还要低。 所以不要池化虚拟县城。我们不再需要配置复杂的 core size 或队列。使用 exquisitor's new virtual thread per task exquisitor, 来一个任务就开一个新县城,任务结束县城就销毁,简单粗暴,但极度高效。 我知道大家日常开发主要用 spring boot, 好 消息是从 spring boot 三二开始完美支持虚拟县城, 只需要升级到 jdk 二十一,然后在配置文件里加这一行代码, spring threads virtual enabled 等于 true, spring boot 就 会自动把 tomcat 和 task sector 切换成虚拟现成模式。现在的业务代码 controller service 一 行都不用改, 并发处理能力就能直接上一个台阶。虚拟县城虽然好,但不是没有坑,最大的坑叫 pinning 盯住。还记得我们说虚拟县城遇到 i o 会自动让出 cpu 吗? 但是如果在 synchronized 关键字包裹的代码块里做 i o 操作, jvm 就 没法把虚拟县城从载体县城上卸载下来,这会导致底层的 os 县城被堵死。 所以在虚拟县城代码中,尽量把 synchronized 换成 rethtlog, 或者确保 synchronized 快 里只做纯内存运算,不做 i o。 第二个坑是 threadlocal。 以前我们喜欢把用户上下文塞进 threadlocal, 因为县城池只有几百个县城,内存占用可控。但现在如果开了一百万个虚拟县城,每个县城都在 threadlocal 里存个大对象,对内存瞬间就会爆炸。 所以使用虚拟县城时,要审视 threadlocal 的 使用,尽量存小对象,或者关注一下 jdk 的 新特性 sculpt values, 这里要纠正一个误区,虚拟县城并不会让代码跑得更快。如果任务是计算圆周率, cpu 密集型虚拟县城甚至可能比普通县城慢一点点。 它的核心优势在于 i o 密集型场景下的吞吐量,它解决的是由于等待 i o 导致 cpu 闲置的问题, 所以它非常适合 web 服务、网关、微服务调用等场景,但不适合图像处理或复杂的数学计算。 好了,让我们总结一下 jdk 二十一的虚拟现成,通过 m n 的 调度模型把现成变得像对象一样廉价。 它不需要复杂的现成池,配置依然兼容老代码,是高并发 i o 场景的神器,但要注意它不是银弹,要避开 cpu 密集型任务,并小心 synchronized 带来的批评问题。这里是云南学马教育,我们下期再见。

好,我们来看这道题啊。嗯这道题的内容就更多了,他说这一个的新,这一个一点八的新特性有哪些?这题呢主要是问你看看对你,对于你来说,你在平时 这个枯燥的写程序的过程之中有没有对于新技术啊,新的手段呃产生关注是吧?嗯 呃,同样的啊,这个题的内容由于非常的多,我帮大家整理的东西呢也比较多。呃,很大很长很长一篇,所以呢需要资料的小伙伴啊,依然是扫描。呃,右上角找我的小助手去要。 那么大家听我说。呃,在这呢,我定他难度指数是四颗星,主要是因为呢他签的内容比较多,薪水指数呢,我给他定为三颗星差不多两呃,两万到三万之间啊,能到三万左右啊。那么大家听我说 说。呃,这个一点八的新特性啊,有同学可能就会说,老师现在都这个可以十五了。嗯,你还跟我聊一点八呢。对,没错,即便现在是用的是就是新出的这个就是十五,但是很多人可能连一点八的新特性还都不是特别了解,并且呢也很少进行应用。 呃,我给大家总结了一下。嗯,你呢给大家过一遍。第一个呢叫接口的默认方法,就是接口里面,咱们原来讲一个接口里面的方法是不需不允许有实现的。 好,这个一点八由于要兼容拉姆的表达式,所以在接口里面实现了默认方法,就是他默认里边可以带实线,知道吧。呃,那个,嗯,感兴趣的你可以拿下 m 代码做个实验。好吧。第二个呢就是著名的拉姆的表达式啊,就面向函数式编成的拉姆的表 答式简化了编程,这里呢呢,一言难尽。呃,在韩书式编函数式的接口里面呢,有各种各样的出现了各种各样的简化编程的方式啊,比方说可爱神的 sort 里边呢,哎,可以用一个方法来确定到底谁大谁小,直接传方法进去就可以了, 这就叫函数式的接口。嗯,当然这里面的细节非常的多,我在这里也列的比较详细,大家呢,如果愿意,你就可以挨着盘的做个实验,你就了解了。 呃,浪费表达是在我们整个的课程体系里头,是一个专门的小课,这小课呢,我记得应该是四个多小时才能讲完,所以我在这呢就先简单给大家过一遍,你要了解啊,这个一点八里面最新的最重要的他的一个更新其实就是浪费表达室, 好在扔的表达是诞生了之后,在一点八的里面,尤其是集合类里面,产生了很多新的各种各样的新的借口啊, predicate, function, supplier, consumer, comparator, optional, stream, 尤其是 stream api 的编程。 这在集合类里面呢,完全的模拟了类似于像斯加勒语言,类似于像拍森语言他们所提供的比较方便的这样的编程方式啊, filter, sort, map, match, count, reduce, 并行的 stream 等等等等啊,好了, 嗯,当然还有在这个一点八里面呢,还有一些新的类的诞生啊,比方是 clock 时钟, times, zones, lock time, local time, 还有呢, local date 这些啊,这些个都不是很重要,我列在 这里,你知道就行了。呃,另外呢,嗯, jdk 呢,支持了一点八呢,支持了多重注解啊,这里面呢,我也举了例子,大家去读这个小例子。 ok, 把这资料呢拿到手里,这张呢?这个虽然这一个小问题,但他内容非常的多。呃,想透彻了解你不花个几个小时恐怕是不行的。把资料拿到手里去,然后查漏补缺。


这个视频继续给大家来分享 g t k 二十一的新特性是 gobble value。 那么在上个视频我们讲到了 three 的 local, 那么 three 的 logo 它其实呢至少有两个缺点,第一个缺点就是权限不好控制,比如说在面方法里面我们去设置了值,但是呢,在 a 方法以及 a 方法所调用的 b 方法里面,我们当然可以去获取值,但是呢,我们其实也可以在这里去任意的修改它的值, 像这种情况可能有的时候是不太满足我们需求的,也许我们只希望在 name 方法里面去给 name 去设置一次值,而在 a 方法和 b e 方法里面不允许去修改值 serial local 它是不太好做到的。另外一个缺点就是,其实在我们用完 serial local 之后,我们应该要手 主动的去调用一下它的呃 remove 方法,不然的话很有可能就会造成内存的浪费,特别是在使用现成池的时候,所以呢,我们有的时候经常会忘记去调用它的呃 remove 方法,从而造成 呃内存的浪费,所以这是它的第二个缺点。那么对于这两个缺点,我们的 scope the value 它能不能很好地解决呢?啊,其实是可以的,比如说我们来 呃简单地写一个 demo 啊,我们用 scope 的 value 呢,其实跟用 three local 有一点点类似,生成一个 scope 的 value 对象,然后呃,我们该怎么去给这个对象去绑定一个值呢?就像这样子,那么其实就是利用他的另外一个 a p i 叫做呃 runware 啊, runware 呢,第一个就是你要指定的 scope value 对象。第二个值啊,就是我 我们要绑定的时均,因为我们这里指定的是时均嘛,这里指定一个大嘟嘟,但是还有第三个参数,第三个参数就很重要了,比如说我们这边呢,就可以直接的去指定一个 a 方法,那么这是什么意思呢? 好,注意看这款代码其实就表示我现在给 name 去绑定的一个字符串,但是呢,这个绑定关系他只在 a 方法执行的时候是有用的 啊,比如说我在 a 方法里面,我可以去调用它的 get 方法,我可以去拿到这个大嘟嘟的值,但是如果说我一旦呃超出了你这个作用率,就是我只有说在执行这个 runwire 方法的时候 啊,我 name 的值它才等于大度度。而一旦这个 run where 方法执行完了,假设我在这个里去拿 name 的值,其实是拿不到的 啊,我只有说在执行 runwill 的时候,在执行这个 a 方法的时候,我去拿内蒙的值,我才能拿得到。好,比如说我们现在呃运行一下代码,大家看一下效果,那注意这里呢,我们比如在这里去打印一个 a, 大家看一下效果,好,我们再来运行一下。 好,当然在执行这个 runwill 的时候,它其实内部它会去执行 a 方法,所以本质上呢,还是先执行 a 方法啊,先去拿到了内蒙的值,等于大度读,那么回头你再来执行这一行代码的时候,它其实直接就报了一个错,我们可以看一下它报错的代码就是第十五行嘛, 这里对不对?所以它报了一个拿不到值的错。好,所以这就是我们这个 skip 的外扭,它最核心的地方吧,就是我们可以给它去绑定一个值,但是呢,这个值它的作用欲 由我们来指定,就是 a 方法。当然这个 a 方法假设你在内部你去调了 b 方法,那么 b 方法里面它也是能够拿到呃 name 的整,就相当于说我们这里指定的 a 方法,它其实表示的是一次 呃,调用链啊,就是你 a 方法你调的其他方法,其他方法里面你去拿 name 的值,其实也是能够拿得到的,那就是整个一次调用站里面都是可以能拿到十个不得外流你所绑定的这个值的值的啊,但是一旦超出之后,你就拿不到值了 啊,就是它特殊的地方啊,它不像我们的 server local, 你只要说是同一个县城,你其实在任何地方你都可以从当前的县城里面去拿到前面所设置的值嘛。啊,所以这里其实就就就就可以呃进行一些些细微的控制。那么呃,当,那么当我们在 a 方法执行的时候,它能不能去修改这个 name 的值呢?啊?比如说假设我在 a 方法里面,我又去调用了一下 runwire 方法,我又想重新给 name 去绑定另外一个制服厂。 什么?其实是大家看都会看这个大吗?你应该能想到就是这个小嘟嘟,他所给这个 name, 他所把那个音色关系,他的作用欲呢,也仅限于掉这一次变方法 的时候会生效。比如说我这里调了两次兵方法,那么你执行这个代码的时候,你会去调用兵方法,而兵方法里面会去拿那么的值,他拿到是多少呢?是小度度。 而你执行完之后,你再执行这里的 b 方法,呃,在他也会去拿 name 的值,那么他会拿到多少呢?我现在能够猜到就是大度度,因为你 b 方法你当前所属于的作用欲,其实是看这个 a 方法它属于哪里,而 a 方法是 属于这个大嘟嘟的作用欲的,而这里的 b 方法它是属于小嘟嘟的这个作用欲的,所以这里其实你最终拿到的是大嘟嘟,比如说我们再来运行一下, 你看 a, 他肯定是拿到了大肚肚嘛。那么两次 b, 这是第一次调用 b 方法,这是第二次调用 b 方法,他拿到的值其实是不一样的啊,所以这个你就要注意啊,他并不能 一旦你某个作用欲的值已经设置好了之后,就当前这一次调用念录里面的值其实是不能去修改的,你再去运行 runware, 其实就相当于另开了一个新的作用欲 啊,所以就是这样子好。当然了,我们通过它,我们可以发现,确确实实它比我们 service logo 呢,会更强大一点,对吧?那么它底层到底是怎么实现的呢?啊?我这边也可以来给大家 简单的分享一下吧。首先,嗯,在 g t g 二十一里面呢,这个 sweet 对象它新增了一个属性,就跟 s skop 的 value 有关系 啊。然后这个属性它有什么作用呢?我们来讲啊,比如说,呃,在我们 runware 方法里面,它其实每一次都会去 new 一个 sniper show 的对象, sniper show 的对象首先会把你绑定的值记录下来,就是内蒙的值是多少是把它记录下来。另外一个,它有一个 p r e v 属性, 那么就相当于 p r e 密码,很明显应该就是一个列表,那么这个列表长什么样子呢?我来跟大家分析。比如说你在第一次执行 runwill 的时候,它会生成一个 snapshot, 对象一,我们来叫做对象一,那么它的 p, r、 e, v 呢?它是等于空的啊,然后呢,同时它会像我们刚刚说的,它会把 当前生成的 step show 的对象复制给我们当前县城的这个属性啊,斑点是这个属性,然后紧接着就去执行它的 a 方法, a 方法你首先会去 get, 而 get 呢,就是从当前县城里面取出这个属性所对应的 step show 的一 的这个对象,然后呢,从它里面去拿出 name 的值,所以就拿到的就是大嘟嘟嘛,因为你你在生成这个对象的时候,你所绑定的值就是大嘟嘟,对不对?那么紧接着他来执行我们的 runware 方法, runware 方法呢,他又会去生成一个 selective 的对象 啊,啊,这个对象它的 p, r, e, v 等于多少呢?等于你的当前线程,你所这个属性,你所对应的对线就是 snap 就的一啊,复制完之后,就会把当前线程的这个属性 性的只给改了,改成我们 sleep show 的二就是刚刚新生成的这个对象,然后继续执行他的 b 方法,所以在执行 b 方法的时候呢,也是这样的,他也会从当前县城里面去取出。 呃,这个斑点是属性所对应的对象,那么就是取出的十来不锈的二,总而去取出,那么的值等于多少呢?就等于小肚肚嘛,等于,因为你十来不锈的二,你在身上的时候,你所绑定的对象就是小肚肚, 所以说 b 方法就这样子呢,就能够执行完,执行完之后注意在我们呃让这个让方里面他这里有一个翻动力,翻动力里面就相当于说当你的 b 方法执行完,你就会来执行这个翻动力,翻动力里面他会把你的 p、 r、 e、 v 来注意看代码, 相当于说他执行完 b 方法之后,他会继续的把你刚刚这个属性的值取出 出来,取,呃,就取出来,然后继续取你的 p r e, v 属性的这个值,就取到 snap 秀的一对象,干嘛呢?会把这个一对象复制给我们这个属性来,注意,这是当 b 方法执行完了之后,他会有这么一个呃恢复的动作, 相当于对我们前面可能叫做挂起,这里应该就叫做恢复了,所以恢复出来,恢复出来之后继续执行 b 方法,这个时候执行 b 方也上的,他也会从当前限制里面去拿这个属性所对应的对象,就拿到的 step shot 一嘛啊,拿到一,从而就拿到了你 step 秀的一里面你所绑定的值大度度,从而这里打印出来的就是大度度,所以说就是这么一个呃流程。所以核心呢,其实就会像刚刚说的,每一次调用我们 runware 方法,他都会去生成一 一个 slab show 的对象啊,然后呢?呃,逐渐的,如果说你调用次数,整个这个县城里面,你调了很多次 runway 方法,它就会生成一个 slab show 的对象的列表, 而每次执行完 runware 方法之后,它就会恢复,就恢复成前一个 snap 修的对象,把它存到我们县城的这个属性上面。而我们的 get 方法,它其实就比较简单,它就是从县城里面 啊拿出这个属性所对应的对象,从而拿出这个对象里面你 name 属性你所绑定的值啊,这样子,就是这么呃,类似于像卖社会里面的 m v c c 就是版本念, 所以说呃就就就呃稍微的给大家讲一下吧,所以大家如果感兴趣有更详细的教程,可以关注一下我的个人的呃公众号,当然我下个视频呢,会继续 给大家分享 gdk 二十一的行动性,那么会分享什么呢啊,也许也让大家期待一下,那么讲到这里呢,也希望能得到大家的一键三连啊,谢谢大家,我是大肚肚肉鱼,谢谢。

你觉得有几个吧?我觉得一个的话呢,就是客服可能确实在身体和精力上耗费其实还是蛮高的。比如我们很多的客服群体都是七成二十四小时工作的,那这样就面临着你可能既要上早班,也要上晚班,那你的精力可能是一部分, 那这个时候有了家庭之后,可能会跟你的工作上有一定的这个冲突,那可能很多人就会觉得那客服在整个经历上就是一个年轻范。第二个考虑到年轻范的这个原因是什么,很多人会觉得,那这个作为客服吗?对吧?你只要说好听话,嗓音比较甜美就可以了 啊。所以这是一个年轻范的原因。但是我可以给你举一些非常实际的例子,在我们公司里面真正做最好的客服,那就是我们部门全都是做这种这个高阶的一些客户服务的,我们三十岁以上的人去动, 比如说我而已,我一开始在处理这个客户问题的时候,我可能会比较急躁,我没有非常多的生活经验,我不想去忍受这个客户的这个抱怨,我不想让自己受委屈。但是实际上我现在到了三十岁这个年龄,我再来看这个客户服务,我会觉得 我是很理性的,理性中又带着我从情感上非常能够理解客户有这样的一些诉求,有这样客户的一些抱怨,那从我这个生活经历上我也能够很好的这种储备下去。第一我有七八年的这个客户经验,那这样的话,我不管是服务这个 婴幼儿,还是服务一些老年人,是服务一些这个母婴品类,还是服务一些这个医药用品或者汽车等等,那不管我从知识储备上,还是我的生活阅历上,我可能跟他们聊下来,会这个更加能够达成贡品吗?