粉丝166获赞1748

首先呢,我们还是先看第一讲叫 gdk 十五的眼睛历史,好, ok, 第一个呢,我们先来看一下加完这个现状, 好,那么首先我们来这插入一张图,这个图呢,大家可以看到是加吧,这个二十五年了,那我们看几个数据啊, 首先是二十五,二十五周岁,对吧?那么奥瑞克公司呢,表示 java 仍然是最流行的 编程语言,广泛应用在企业开发当中,那么世界上呢,有超过百分之七十的这个人呢,在使用 java, 全世界呢,有五百一是一台机器,它活动在这个 gvm 上,那么应用场景 主要哪些呢?主要用于这个数据分析,互联网大数据, 移动开发工具等等啊啊, 机器人啊,这个 ai 等,所以说呢,这个 java 啊,还是非常火的好。第二点就是历史版本啊,它的主要新特性,我们再来复习一下, 主要有哪一些呢?好,老师呢,在这个地方之前我们讲过的啊,从加把五到十四这些呢,我们再来说一下, 好,那么在这个里面我主要想说哪个呢?就是 g d k 五,我们可以看到这里面啊,它多了哪些呢?范型啊,枚举,自动装箱和拆箱啊,可变参数啊,符合一切。 好,那么在六的时候呢,是 g d v c 四啊, api 好 到八啊,重点呢,我这个地方给你们加出到八的时候呢,我们增加了 number 表达四啊, stream api, 以及新的这个日期的 api 啊,方法引用, 构造引用等等。那么九呢,是模块化系统,接受十局部变量的这个类型推断啊,当然呢,老师在这个地方就不再一个一个念了。好,那么十一的时候呢,是 z g c 这个引入啊,以及这个 啊, eplay 这个 g c 好, 后面的话就十二十三十四啊,有人说,老师你为啥在这个地方写这个呢?因为五八十一啊,它都是这个什么呢?都是 lts 版的啊,有人说,什么是 lts 呢?我再给你们普一下,所谓 lts 呢,就是 long term support 啊, 好,这个主要是,主要是什么?对这个开发开源软件啊,它非常有用,那么是什么呢?我给大家写一下啊,它是一种软件的产品周期政策好吧,特别 啊,是开源软件啊,这地方说的比较多,那么它增强了什么呢?它增加了软件开发过程基期基 软件版本周期的可能性啊,只要开发者看到啊,这是个 lts 版的哦,怎么样,心里面是怎么样?有底了呀,对不对? 好,那么第三个啊,我们来看一下,叫做近期版本啊,及维护时间。 ok, 那 么近期版本呢,我们在这主要说两个啊,那一个呢,就是 open gdk 啊, open gdk 这个路线图,那么还有一个呢,就是 oracle gdk 它的这个路线图。 那如果说啊,你到这你还不知道什么是 open gdk, 什么是这个 oracle gdk, 那 你就学 java 也是白学了对不对?这是个开源的啊,这是这个官方的好吧, 好,更多的知识点呢,可以去再查一下啊,或者看一下老师之前的这个课程。好, ok, 老师在这呢,把这两个图还是先 拿过来好,这是 open gdk, 然后呢?下面啊,我在这呢,也把后面的一个啊,然后 gdk 这个图拿过来,那么拿到这个地方我们来做一下比较好吧, 那么我们看啊,这个 java 八, java 八是什么时候出来的呢?好, java 八是二零一四年三月份是吧?啊,好, 那么我们可以看到 java 八这地方是标黄的,是吧? lts, 那 么证明它是一个长期啊,支持版本。那 java 九的时候,我们看啊, java 七到这个 java 八,哎, 是二零一一年到二零一四年,怎么样啊?一下子等了这个三年呢,哈,等的是望穿秋水,哈,好,大家看啊,到这个九的时候,二零一七年又等了个三年多哈,又等了三年多,但是抬头看,那个 从九到十的时候,二零一七到二零一八,那么从二十到十一的时候呢,又是一个二零一八九月到二零一九三月份的,这啥意思?这么快呀?好,这个呢,就是需要老师给你们说的啊, 就是,那么 oracle 公司呢?好,它,从这个啊,它,它,它从这个 gdk 九开始就怎么样啊?从传统的以特性 驱动的发布周期,它改变了啊,转变成,那么以什么呢?以时间驱动,时间驱动发布模式,什么时间驱动呢?以每六个月, 每六个月啊为周期,它就发布一次。 好吧,大家可以看到,除了这个 g d k 啊九之后啊,我们这叫加 y s e, 九之后看到没有,是吧?六个月啊,六个月,六个月啊,六个月。 ok, 大家看,下面这老师已经标注出来了啊,这是未来版本,这是当前版本哈,嗯,好,那么 oracle g d k 呢?我们可以看到它的这个维护更新啊,这地方有这个维护更新,那么维护更新的话, 十一版啊,大家看到没有?他支持到二零二六年九月,然后呢,我们看一下啊,那么 open gdk 呢?他到这个二零一八年三月份啊,停止更新,他支持的时间呢,更短啊,看,没有最后延迟支持时间啊,但是这个 八,我们看啊,八,这个支持呢,它更长啊,二零三零年十月十二月份,为啥呢?嗯,有人说是比较诡异啊,我感觉主要是 java 啊,这个八它的怎么样 啊,它是是什么呀?是企业开发的主流啊,主流 比较重要,好吧, lts 版,所以说呢,大家现在呢对这个 java 要非常的重视啊,好了,那么第四个啊,我们来看一下这里面有些名词,我们要介绍一下。 好,哪些名词呢?我在这就是关于这个版本发布啊,我已经给大家标注到这个地方了,那么一个呢,叫做 infocore 啊,就是孵化器啊,模块,第二个呢叫做预览模块。好,好, 那么什么是孵化器呢?孵化器,那所谓孵化器呢?它实际上啊,它就是一个实验版啊, 好,怎么样呢?它主要啊,从 java 社区啊,来收集意见啊,收集这个意见啊,反馈怎么样?它的这个稳定性差, 后期可能有比较大的变动啊,这个变动呢,可能是移除啊,我们也称为是称之为啊,我们可以称之为尚未定稿的这个 api 啊,或者是工具。好,还有一个呢,叫做预览特性。那么什么是预览特性呢?就是规格啊,已经成型 实现啊,基本确定,但是呢,最终未定稿,那么啊,这些特性呢?还可能啊, 被移除哎,但是呢,这个怎么样?可能性就比较小了啊, 可能性比较小好吧,一般啊,都会固定下来啊,都会确定,都会定下来, 那要不然呢,它叫做这个预览版。好,那我们这次课呢,给大家说了一下关于 gdk 事物的眼界。

好高准好高准,好高准。买对买对买对买 对。 so that one must call the bellah, so me, mayna yeah me and gina actually me and java are just like i'll really talk about if like if we wish we have one mascot what we what will we gonna be guys um me and java already like have one one animal that our one our mascot to be for me for me i think i like that so i'm gonna go home name, my god name me not。 多的米,你们这边啥培养的呢?

不好意思,我这边暂停一下啊,我这边给你提供一个场景啊。嗯, ok, 你 来帮帮你,打开一下摄像头,让我们的视频一下。哎,好嘞,好好, 那个你先花几分钟的时间先简单自我介绍一下。你好,本科是计算机,也统招,本科主要的技术站就是后端招啊,之前是在这个在这边做后端开发啊,也兼职这个组长,像微服务呀,包括像一些数据库什么之类的 都比较常用,大概是这样一个基本情况。好, ok, 然后你现在是,你现在是在职还是离职状态啊?离职了,离职了。 ok, 简单介绍你那个在他的这个项目吧,我主要是一个 imac 智能管理中心,微服务接入架构,服务治理体系。数据库主要用的是 mac 口, 配合一些中间件,比如说像 rabbit, mq 呀, radis, cata 这种主要的一个业务点就是起初我们在做这个员工培训,包括我们企 企业的客户到公司参加培训过程当中会产生大量的会议记录的这种内容嘛,因为我们涉及到一些三,您应该知道就是跟工业相关的一些东西,没有办法去使用三方的一些这种保存的平台,所以我们自己研发了这样一套企业客户培训的一些资料,保 存在我们自己的这个服务器上,有的客户如果需要的话,我们也会派出这种工作小组开发,小组开发从技术选型上包括一些业务上 处理和设计的相对比较前卫一点,因为是内部用嘛,所以没有公网进行这种开放。后台的一些功能就是承接了之前若一他所包含的一些权限呀, 包括有的客户他需要有这种 c 端的一些业务,比如说像用户下订单,包括支付的一些业务,我在里面主要做的工作呢?从零到一这样参与做的包括这种概要设计,包括一些文档设计,包括需求分析、讨论,以及再到后面的产品落地、部署、上线,整个全流程都是深度参与的,大概是这些内容。 ok, 我看你在有一点写的是会处理客户在使用过程中遇到的网络问题,然后遇到哪些网络问题, 比如说像 http 升级成这种, https 会去帮助用户购买协议证书,然后给他在 ngx 里面去配合,这是一个。还有一个的话就是对于网络这块一些不稳定的因素吧,实际上就是对应到项目里面的一些高可用嘛, 就是像一些服务治理相关的一些熔断、降级、限流这种措施去做一些设置。还有的话就是像防一些什么叉 s s 这种,还有就是 c s r f 这种跨战请求伪造 talkin 的 这种,我们对 talkin 也做了非常严格的这种前后台的一个校验,对,大概是这些。 然后你们系统上线之后那个 qps 大 概是多少?我们自己内部在用的话,其实 qps 峰值的话能达到一百左右,平常的话可能也就几十。但像有的客户他有时候会出这种 c 段的业务吗?我要是在这种活动比较集中的时候的话,两百甚至更高,就这种,有没有在 那个工作中遇到过一些大流量的一些请求啊?偶尔会有,比如说像一些客户那边,他搞这种促销的话,短时间去面对这种大流量,他不像秒杀那种,他是这种短时间内这种持续的这种大流量就是用限流基于令牌桶算法的这种限流器, 因为令牌桶它本身就可以处理一种瞬时的大流量吗?实际上就控制好这个令牌的数量就好了。嗯, ok。 那 如果说是你们用了这种令牌桶 这种限流措施来保证流量的稳定的情况下,那你们是如何保证在多现建成并发的场景下数据的一致性问题的? 多现成并发这个就会涉及到一些锁或者是事务相关的问题,如果是业务当中的话,可能会涉及到一些分布式锁呀。然后对于数据库的这种数据一致性问题的话,那就得用一些分布式事务相关的一些解决方案, 比如说想要根据场景来去看吧,就是如果,那不好意思,我这边暂停一下啊,我这边给你提供一个场景啊,嗯, 就比如说你现在要做一个类似于计数器这样一个这样一个需求,嗯,然后呢?需要安全的现场安全的一个递增。如果是你来设计,你会怎样进行设计?简单说一下你的思路, 物流条加原子类就是物流条,它可以保证发病时候的一个有序跟可见, 然后原子类的话可以保证它的原子性,本身它也是一种基于这种乐观所实现的,所以它既能保证数据一致,也能保证执行效率。可能还会用到这种多线城在发病的时候这种数据传递吗?因为像子父县城这种数据传递的话,需要借助于这种 呃串四 a 口 thread local 这种呃线程,局部变量里边做一个值的一个递增的一个线程安全。还有的话就是比较偏重一点的这种像直接加这种 single nine 的 锁或者是 呃 log 锁,其实我觉得最好的一种方式就是我说的第一种方式加这种轻量级的这种涡流条跟 cs。 我 也看过很多这种底层原码的这种眼镜过程,比如说像那种 copy and write 容器,它前期都是瑞眼追 log, 然后后面都会换成这种 cs sigma 的, 参考他们的这种做法的话,这种效率应该是挺高的。 ok, 那 如果说你用了 c s, 那 你怎样去避免这种 a b a 的 问题啊? g o c 下,它本身就提供了这种解决 a b a 问题的原子引用类吧,比如说 automec stamp reference 这种,它是通过这种版本号 对比版本号这种方式来保证的。还有一个标记吧,还有一个就是什么 automaker mark, 什么 reference, 就 它一共是提供了两个,但是常用的是这种版本号。嗯, ok, 好, 嗯,我们来聊聊技术了解技术问题啊。嗯, 我有一个类类里面有个方法, a 方法 a 里面有一行代码 object, 写到 o 等于 you 一个 object, 这个小 o 对 象在尿出来之后,这个对象组成是用哪几部分组成的? 等一下,有点快,拿个笔我简单记一下。嗯,它如果没有任何这种实力数据的话,就是像一些对象头呀,实力数据啊,对齐填充,这个是都有的,它默认开启这种指数压缩的话,它还会占十二个 kb 的 一个内存大小, 刚才你说是多少个 kb 的 大奖?十二 kb。 所以 说小欧对象大概有哪几部分组成的?对象头实力数据对齐填充啊? 对象头里面的话就有这种锁的一些标记了。哈西扣的值了。还有那个年龄吗?就是那个分代年龄,还有那个是否偏向这种,然后还有个对齐填充的话,就是保证这个 对象所占大小为把自己的整数倍吗?那它其中有一个叫 class pointer, 这块是干什么用的哦?嗯, class pointer 它是跟那个反射有关吧?它会指向方法区里面它那个类源信息, 一般我们类源信息翻译。呃,不对,它应该就是那个。呃, java 文件编辑成那个小 class 文件,通过类加载器加载到我们的方法区里边的一个大 class 信息。类源信息嘛? 对,利源信息他本身实际上是一个。我记得好像不是加娃对象吧?是一个什么? c 还是 c 加对象来着? ok?

哎,兄弟们面试完电话了。嗯你好,请问是那个赵红军吗?哎是的是的 啊,这样的,就是咱们这边约了一个嘉尔的面试啊,就是你这边现在方便吗?方便方便,你方便的话啊,那咱们现在开始啊。嗯,我这边让你简单上写的是一个应用的是大专学历吧?对啊,之前是薪资是十二 k, 现在你的希望薪资是二十 k, 是说你能告诉我就是你凭什么感觉你值二十 k 啊?行,卖什么是这样的啊?就是我觉得说不是说我值二十 k, 而是说我之前的努力值二十 k, 我虽然只有一年的工作经验,但是我大三的时候就已经把加挖知识体积构建完成了,加上实习现在差不多已经有两年的一个工作经验了。 然后呢就说我在工作中有处理过高冰花的。呃,我也有项目优化经验,然后排查过生产的 om 故障,然后对基本 m maxifer release 底层也都有自己的一个理解,而且呢就是我自己有幸做过项目负责人对项目的开发流程也是非常熟悉的,我觉得 比如说我是指二十 k 的。嗯嗯,那行,那我来看一下你的一个实力啊,近况好提到说你有。 对是是,你能告诉我什么是并发并发问题吗?啊行,就说是这样。面试官我先说一下就是一个什么是并发问题的一个雏形,就是说比如现在有多个县城,然后同时操作一个公务变量,这个公务变量的话可以是我们加入的一个局部变量,然后也有可能是我们卖售后里面的一个呃,一条数据吧, 就是说这个时候就是我以 a b 线上来举例, a b 线上他同时将这个数据然后加达到自己的工作内存中,然后的话就是 a 线上,然后对这个啊,对自己工作内容的数据进行了一次修改,然后他把这个数据更新到换当中,然后 b 线上他此时他是不知道被更新过了, 它也在原来的纸上面做了一次修复,它也更新回去,这样的话它就会把 a 的纸给覆盖掉啊,这就是一个并发问题,就是我认为哈,这就是一个并发问题的一个基本模型嘛。嗯,那你这边刚才提到了一个 myselco, 这边给我说一下 myself 的 us。 嗯,行社会的优化流程,其实我觉得应该是这样的,就是第一步的情况下,我们首先一定是要建立一个合适的锁引啊,就比如说多个字段联合查询,这个时候我们可以建立一个复合锁引啊,而且就说这个时候会有什么。就我举个例子,比如我们以优德内蒙和 password, 一般就是我们登录的时候一般都是会去联合查这两个字段 啊,但是的同时话,比如要要连查一些 a 姐啊,什么其他的年龄,就我们可以把这个 a 姐,然后也也放在这个联合缩影中,就是这样的情况下,我们 select a 姐这个字段的时候,就是说他可以直接在这个缩影值中就可以查到,可以减少回表的次数 啊,变相的提高我们的产业效率。嗯啊,这是第一个优化,然后我再说第二个优化啊,第二个优化的话,其实代码层面的一个优化,比如说在货运环内部插入数据库 啊,优化为就是麦色和批量插入数据啊。以隐色的为例,就是我当时有测试,我说就说我在复兴网里面,复兴网五百四,然后插入五百条数据,跟我用佛一起标签,然后一次性插入五百条数据,其实他们这个啊效率大致在百倍以上啊,这是第二个。然后到第三种优化是什么的?我们可以增加缓存,在我们命中缓, 什么时候我们就可以减少对麦色户的一个访问,这样我们也可以减少对数据库的一个访问压力啊,这是第三步。然后第四步的话就是我们可以去定期的去整理一下空间碎片,刚开始的时候,我们存储数据的时候的话,测版中是顺序存放的啊,当我们对数据库频繁进行增商改之后呢, 这个时候会产生自满碎片,麦瑟付的数据查询效率自然也会降低了,因为他的数据就是已经是乱序了啊,所以我们可以定期的去啊整理一下空间碎片,这是第四步。然后我们再说第五个优化方案是什么啊?就是当我们麦瑟付的查询啊,查询压力特别大的时候, 嗯,这个时候呢,就是我们可以考虑组成复制了,减少对 mac 后的一个读取的一个压力啊。倒立第六步的话就是要采用分股分表了,这个是什么场景呢?就当我们数据量上千万之后,然后上面的优化基本就不够用了, 此时的话我们就应该进行分布分表减少,就是说单表数据过大的一个问题啊,我觉得这是一个 myself 的一个呃,优化方案流程。嗯嗯嗯,行。那这边再说一下那个 ready 啊,实现那个分布式锁啊? redis 如何实现分布式锁,对吧?念什么是这样?就说我们可以先考虑一下为什么可以用 redis 做分布式锁啊?就说因为 redis 处理啊,操作指定题的时候呢,它是单线上处理的啊,天然是没有并发问题的。所以的话就是我们刚开始我们可以使用 size 指标来做分布式锁, 但是这个有一个缺服务,当我们加完锁之后,然后服务档机了,那这个时候的话就是锁就永远不会释放了啊。此时的话我们可以给锁加一个过期时间,然后就是说当我们服务档机之后,他过一段时间他自己会把这个锁给释放掉,那这样的话就会又会有引入一个新的问题。哎,比如说现在就说我们这个业务时间处理就是比较长啊, 将我们业务没有处理完的话,就是说现在这个锁已经过期了,那这个时候就也会存在并发问题,对吧?下一步就是我们就要引入 reds 了啊,就是 reds 里面它有一个看门口的机制,他会自动帮你轮巡去查看,就说你的业务有没有处理完,他会帮你把锁的时间给你做一个续签啊。我认为这是 reds 实现分布式锁的一个演化过程,我觉得这个会比单纯去讲如何实现一个分布式锁 我更有意义。嗯嗯,好,我看到你简简历上面有写过,是是一个项目要做个项目负责人,就是你谈一下一个正规的一个项目,一个开发流程是什么样的啊?行,是这样的话,就是就是面上,就是在我当时做一个项目负责人的时候的话,我我们当时的一个开发流程是什么样的?就说在项目刚开始阶段的话,就是,哎,产品经理他会先对业务进行梳理 啊,他梳理完之后他会自己出原型,然后他然后呢我们会进行原型评审,就是如果说原型评审通过后,各个部门开始开发设计,对吧?然后这个时候的话,我们作为候纳人员的话,我们首先会先进行一个技术选型,对,当我们把技术选型落地之后,然后的话我们会先进行数据库设计, 数据库设计完成之后,基本上我们的一些啊业务资料定义已经完成了,这个时候的话我们一定要第一步一定要先去做一些接口定义,然后把接口定义给到前端啊,这是我们最开始要做的事。然后在我们开发过程中的话,可能陆陆续续的话会有啊 uip 两个词用力评审掺杂进来啊。当我们开发完 完成之后,我们要把我们的单码布置到开发环境啊,然后我们和前端进行一次连调,如果说我们现在和前端连调完了,我们也自测没问题了,这个时候我们要把我们的单码布置到测试环境,哎,测试人员他根据测试用力,然后去做具体的一个业务场景测试,哎,他这边也测试正向流程一样,流程都走完了也觉得没问题了,这个时候我们可以把我们的单码再发布到啊与发布环境, 也就是我们的一个内测环境,哎,就这个时候呢,就说产品和 ui 也会进进行了测试,他们会对他们的业务需求做一个相应的一个验收。嗯,就是当这些流程都走完了之后,我们就可以把单码进行封榜,然后的话发送一个申请上线的一个邮件。在我们 cto 他同意申请上线之后,这个时候我们就可以挑一个良辰吉日,然后我们再选一个月黑风高的夜晚,然后进行上线就可以了 啊。当我们上线完成之后,其实后续的话其实我们还可以增加有就是我们可以对这次上线,然后进一次复盘,嗯,就说,呃,我觉得复盘这个动作是非常重要的,就这这在这个过程中,大家都可以在这个下 项目中得到自己相应的一个提升。嗯,我的这个问题回答完毕了。面试官,啊,嗯,很好啊,其实就是你的一个定的那个工作,这个是其实也是非常不错的啊,我这边是没有什么想要问的, 等你后续来到我之后,希望就是身边的小伙伴进行进行一个多交流,好吧。嗯,好啊,感谢面试方给我这次面试机会,其实我觉得就是说我是一个很喜欢分享的一个人,就是说能和大家一一起进步,我觉得也是一件非常开心的一件事情 啊。那我最后再问你个问题啊,就是如果说这边给到你二十,我给到你二十 k, 就是你这边可以确定来我们公司入职吗?嗯,是这样,没什么,就是我手上也有几个就是啊 offer, 然后就是我想综合考虑一下。面试官,嗯,但是我感觉我大概都会选择我们这家公司的。嗯嗯,好好好,那行,那咱们就先到这,好吧?好的好的好的,感谢面试官,再见。好。

然后我们刚才一开始是聊到了把锁,对吧?哎,对,嗯,然后呢,比如说我们再回归到这个小 o 对 象,嗯,这个小 o 对 象呢在某一个类里面被被用到了,然后呢用的时候呢,给他加了一个 c n r 的 锁,嗯, 加完锁之后,那么这个小 o 对 象我们知道锁是有升级的过程的,对,是的,是怎样进行升级演变的? 简单说一说就可以了。对,升级演变的话,首先这个每一个他那个八个 word 里面,他是六十四位虚拟机情况下,他应该是倒数第二位跟倒数第三位来表示他是否偏向的这样一个标记,其实他默认加了这个 c g n 的, 他是一个偏向所, 那所谓偏向所,就是在程序执行过程当中偏向于或者偏心于某一个线程序,这样可以避免线程频繁切换,导致 cpu 的 这个 啊,就是影响 cpu 的 这个执行效率,那是这样一个考虑,所以它是偏向锁。就是,还有,嗯,那么偏向锁它会升级成这种,呃,就是,呃轻量级锁吧?就是轻量级锁,就是可能在这个执行过程当中,它可能会有这种现成这种切换 啊,但不是频繁的那种切换,呃,它就会升级成轻量级锁。然后最后还有一种情况的话,就是它频繁切换就是一把重锁这升级的过程,因为升级过程会涉及到这种 对象标记里面的这些标记信息,就是我们经常做的这种 id 的 这种,呃是否偏向的这种 id 的 这种值值的一些变化。所以一般从效率上来考虑的话,一般升级完之后的这个锁,它不会降级,它不可逆。嗯, 还记得那个马过的那个偏向所的那个位是几位吗?偏向所位。偏向所位。两位啊两位啊。零一零零一零一一。 呃。偏向所就一位就一位。我 记得这个这个忘我中间中间的那些我大概记得什么? 呃分代年龄啊那种的,然后有的比如说你没上锁的话前面几位是没有用的。嗯,我记得好像是最后一位。这个这个我记不清了。这个我之前看过那张图。 ok? 没关系啊。嗯,一同一样。我们刚才聊到了锁,对吧?啊?对,嗯,呃, 就是我们知道有,我们刚才也提到了自选锁,然后还有那个重量级锁,对吧?那么有了自选锁了为什么还需要重量级锁呀? 自选锁和重量级锁我觉得应该这样去理解吧。那所谓自选他更加考虑的是一个执行效率吧?而种锁的话更加得是从这种绝对安全层面去考虑。就是比如说像自选, 嗯,像,像乐观锁,他本身也是自选锁吗?他他的一个执行。嗯逻辑就是先执行后判断吗? 那如果要是执行不成功,他会一直自选直到后面的判断条件成立吗?就是直到后面的锁释放吗?但是如果在理想状态下就是他的吞吐量是会很高的,所以自选他是保证吞吐量的,然后像那个 呃就是种锁的话,他实际上就是,呃,就是就是。应该是先判断后执行,他是绝对保证这种安全的吗?他他一定是判断在前,然后执行在后。 你平时在开发中会用到各种各样的数据结构,对吧?然后是类似的呀,麦克呀,各种各样的结构。嗯,我们就聊聊这个常见的发新 bug 吧。 嗯,他现在我们知道他底层有一个术语结构是叫红灰素,对吧?嗯嗯。那他为什么他现在我用的是红灰素而用而不用二叉树呢? 首先这个二叉树跟红黑树他有一个我觉得一个比较大的一个区别,是什么呢?就是红黑树可以通过这种变色, 然后左旋右旋方式来去维持整个数结构的一个左右平衡,来去确保他有一个稳定的一个结构和时间复杂度。就是数据在进行增删时候的一个时间复杂度。但是二叉数在一些极端情况下他会成为一个单列表,呃,所以他的结构本身不稳定。 呃。还有一个的话,就是既然通过这种变色这种方式吗?那么他可能在执行操作的时候会更加效率,会更快一些。 对,他本身时间复杂度就是 ologn 吗?嗯嗯,对。嗯。但是他跟那个 a v l 翠他高度差本身会有一个两倍的一个差异吗?就是 a v l 翠实际上是一个升级版的这个 b 加翠。嗯, 它它如果要是跟这个红黑数比起来的话,就是一个有一个相对高度差的一个问题,但是 a v l tree 的 性能会更差,就是因为它会频繁的计算这个相对高度,它不超过一嘛。呃,它会频繁的进行这种旋转来保持平衡。红黑数不需要红黑数是两倍的,这个, 呃是 avr 吹的这个两倍高度差,所以它不需要那么频繁的去进行这种呃旋转来保持维持自身的一个竖的一个相对平衡。嗯嗯。 平时数据库用的哪些?常用的是?嗯就是关系型数据库,主要是买搜口吧。嗯像一些国产数据化就是后面我们也接触嘛,因为我们这个是偏工业的,而且这种 呃算是这种信创方面的这种国产化信创改造吧也会做一些。对,嗯马克斯库知道马克斯库里面如果说使用不当的话会经常出现一些手表呀这种情况对吧?嗯对。嗯。让马克斯库的锁分为了哪哪些锁? 嗯从力度上划分的话就是一些什么表索了,业索、行索、间隙索,然后在这个表索跟行索之间还会有一个 意向索吧,但是意向索往往会结合这个就是读写吧,像读读的时候的话就是意向共享,写的话是意向排他。嗯 那马斯克的表索和航索都是属于悲观索还是乐百索?悲观索。悲观索 ok。 嗯。然后那个能再简单介绍介绍航索和表索吗? 嗯航索的话顾名思义就是在操作的时候锁定其中的某一行它的力度会更小一点嘛,支持的并发症肯定会更高。 嗯表锁的话就是锁定一整张表它的力度是最大的。然后啊对,但是表锁绝对安全吧。啊其实这个怎么说呢?基于表锁跟行锁之前。所以会有这种意向锁吗?就是上行锁的时候就会相当于就是我。 呃就他类似的意思,就是说想要上一把这种意向,呃。就是意向的这种。呃。意向锁嘛他其实是一个表级锁。嗯。 mister morning 是 哪一个锁啊?行锁他有个主键嘛。行行锁行锁。嗯。行锁又分为哪些锁? 这个这个是不是跟那个锁影有关啊?就是有这种唯一主键的这种行锁,还有就是非非主键这种行锁。嗯,是有关系。嗯。哎,这个我这个我没啥印象。 行锁行锁马赛克前默认是那个临界锁。嗯,我知道临界锁,临界锁是属于行锁的一种啊。嗯嗯,对。临界锁跟间隙锁嘛,是用来控制那个幻毒的, ok, ok。 嗯。

释迦外篇全篇看下来就一个字,蒙当开篇舒佛这边带的是小鹿的时候就知道这个帮派他赢不了,就那么蒙,你让他怎么打架?然后果不其然输了之后呢?哎,但是不得不夸一下啊,泰国现在这个打戏 有所渐长,进展的很明显,以前就是全都没打到脸的人先飞了,现在至少打着脸了,然后等到扎娃一出场,那个潮的裤子,我的天,我都感觉东北这边我这个房间都在局部降雨,就那么潮,潮完之后就赶紧跳舞,哎,更潮了,简直就在我脑袋上降雨, 跳完舞之后,哎,咣咣就来秀那两个小花拳,秀腿来两拳,那简直就跟那个小猫玩,就是抓那个球是一样的, 放狠话也是冷脸萌。然后还有就是泰国那个音响师是不都去进修了,一秀出一个中指的时候就嘣加一枪,那给我笑,连来三枪给我笑的 不成行,他们吃饭没有现金,然后加完就去取钱,当时我合计是他不是要投单吧,哎,他没投单,他把人工作树上钱拿了,我当时我想我是把他想好了还是想坏了,我都不知道。