00:00
各位同学大家好,接下来我们为大家介绍高阶篇的第11章,Red经典的五大类型的源码及底层实现,也即我们传统的五大经典数据类型的。底层C语言的red源码分析好,那么在开始本章之前,可能需要有一些聊在前面,说在前面的一些交代的话,第一个看到这张的同学,或多或少希望你懂1.c语言,至少明白什么是函数指针,什么是指针函数,哎,然后呢,看C语言的话,至少能够看得懂啊,不要求你写啊,没关系,因为red底层呢是C语言编写的,待会我们讲源码分析的时候,100%。逃不开,避不过,你要去面对,所以呢,跟着杨哥走下来,那么第二个大家都清楚啊,杨哥的每一章。大纲的设计均来自于骨粉同学以及我跳槽的老学员他们最近去面试以后给我们的反馈,那杨哥,我们不是学了十大数据类型的吗?你怎么只讲五个那么一。
01:12
我不是为了讲而讲,我当然可以给你讲十大数据类型的源码分析,但有个前提,外面要考,对吧?比如说现在外面考的多的是string list、哈希、set z set,面试官也就了解这五大数据类型,他们的题库也就这五个,咱们就先解决这五个,那至于我们的string hyper log log go等等,有兴趣的同学你可以自行研究,外面不考我就不讲,外面常考我就多讲,所以就跟高考围绕着面试题来进行指挥棒的调整,所以呢,外面考什么我们就讲什么,这和大家说一下,我不能为了讲而讲,对吧?看了讲的很多弟兄们呢,也不想看我白录视频,你呢,也觉得呢,学习上没有积极性和成就感。OK,好,把这两个说清楚以后弟兄们开工来。
02:06
老规矩,大长篇,高阶边,每一节都先说粉丝反馈的题目,那么杨哥这个RA源码分析我们主要考些什么,看些什么呢?这个源码分析有哪一些意义呢?来,先看题目,待会我们说可以这么讲。这一章我也是带着。无奈,哎,来吧,首先red跳跃列表了,不了解这个数据结构有什么特点,简称跳表。什么雪崩击穿,不多废话,前面都讲过了,第二个某大场面试题,Red项目里面你怎么用的red的数据结构都了解哪一些?哎,就问你的数据结构,哎,你也大家都清楚啊,JAVA8股文肯定有种说说哈斯map啊瑞list的底层是些啥呀,内容很无聊的题目啊,对吧?感觉好像你背会了你就是人才,不会的话就傻叉,这个呢,没办法啊,现在呢,已经卷到什么呢?从考Java考到red了,来red的多路IO复用,如何理解为什么单线程还可以抗这么高的QPS的?哎,杨哥,这个不是底层数据结构啊,有点关系,因为我们下一章就会深度解析这个。
03:17
多罗夫,哎,第一章不是讲过了吗?那只是什么?做个基础引流,最终落地到这,好,这个我们下一章再说,继续register this set,底层实现是个啥?请说一下压缩列表和跳表,问这样的设计的优缺点,那么我跳槽大臣去阿里面试的这位老弟子,他只说了优点缺点,没说出来,那所以说外面考什么,我们讲什么?来red斯跳表,你说一下解决过哪些问题,时间复杂度和空间复杂度如何?那么什么是跳表?为什么有这种数据结构,它干嘛的?再来register this set用的什么样的数学结构等等等等,所以说首先兄弟们ready,必考必问必学,OK,绝对面试重灾区。那么接下来我们就要唠唠了,我们杨哥,那么red的数据类型的底层数据结构是些什么呢?紫萱list,哈希,Set this set好,新的那五个我们我们先不聊传统的这五个,是不是就跟人家讲什么结构啊,十寸类型,什么结构啊,是哈希类型,不是这样的,我们大家呢,都清楚。
04:28
比如说啊,弟兄们,我们都写过一个东西,叫你瑞list,那假设啊,你在这个Java代码层面用这么一个东东,人家面试官会问你,当你在idea里面写了个new list,其实而言底层new了个什么,他底层new的是不是object类型的一个初始值为十的一个数组啊,这个大家没问题吧,基本功中的基本功啊,一句话,我们API程序代码层面用的是list,其底子而言用的是个object类型的数组,好,所以说人家问的是这个底层,那么一样啊,现在它的意思就是说你用的是string,哈希list this set set,那么一样,请问一下你的red底层你用了哪些数据结构?
05:22
分别对应着什么?首先,会不会是一种数据类型对应着一种底层数据结构?这是第一个问题。第二个问题,有没有可能是为了极佳的高性能,它是某一个数据类型对应着多种数据结构混合片?OK,所以在这弟兄们跟着杨哥来看了外面考的题目,一句话,Red的主要的数据类型有这八个,分别是SDS,动态字符串,双向列表,压缩列表z please,那么这种题呢,是经常常考的,他会问你,你知道列表哎,大家都清楚是吧?
06:09
Java类里面的link list,那么请问里面有一个东西叫压缩列表zip list。万分之一压缩,那肯定是变得更小嘛,那么请问你对这个数据结构了解吗?为什么会出现这个?它有哪些优点?它有哪些缺点?阿里巴巴原体。所以说各位亲,你千万不要觉得说我会用,如果你对现在2023年的了解就赛K你,真的你不可能进大厂的,你不可能拿到年薪三三四十万,你不用跟我讲什么啊,现在什么这个疫情,经济还没恢复,大厂都裁员了,你先进去,被裁的那些人的前提是人家优秀,人家能够凭运气凭实力先进去,你别废话,有本事你先进去。哎,咱们再说后面的,即便人家被财也是N加二对吧?拿个十几万的赔偿,先休息一两个月,他不香吗?所以呢,咱们不废话,工资低的先把薪水调高,中产背景的往大厂打,咱们永远是人往高处走,水往低处流。接下来兄弟们哈希表这个呢,应该不陌生,对吧?我们Java里面的哈希表哈,Table哈,Map类似的都说过,关键它考的是后面这些跳表,SK list,整数集合inter set,快速列表quick list,紧凑列表list pack,哎,这个就是他常考常问的。
07:36
Red涉及底层相关的数据结构,那么下面随便拿出一种,总共有八种啊来问问你,比如说它呢,底层呢是由C语言实现的,C语言里面也可以用恰数组模拟出字符串,那为什么red要重新开发出一个自己新的字符串,动态字符串呢?你了解过吗?
08:00
SK1V1DESIGN,就是SDS动态字符串,你剖析过吗?所以说现在呢,考的非常难,哎,这章呢,可以这么讲,完全是为了面试。好你们接下来啊,我们来说一下这章的意义,我相信屏幕前的你听我说完这些以后说我靠,杨哥,我就想学个write,会这么一个set k为一混口饭吃,怎么搞这么难呢?对不起,不是我要把它调难,是外面考什么,我们讲什么,那么这一章我们阅读源码的意义是什么呢?来吧,这也是仅代表我个人观点啊,和同学们唠唠两句。第一个90%的同学学完这章以后没有太大的意义,完全是为了面试啊,因为实际工作中我不相信你天天是抱着red,你在大厂里面做中间件,就是说跟业务无关,我就做内部的工具,供整个集团公司用的。我要是成为一种。KV键值存储的技术专家,那么我当然需要深刻的理解red底层是什么东东,借鉴他的思想开发我们公司自己内部的。那么对于这样的话而言,比如说用着用着链表怎么会出一个压缩链表,那么压缩链表不好了以后怎么会出一个quick list quick list完了以后怎么又出现一个list pack,这种东东没有个几年的在一线业务的沉淀思考。
09:20
压测PK跟产品经理的是不可能出来,不可能平白无故的就说,哦,杨哥,我熟知底层源码,我自己做了一个MY做梦。OK,醒醒醒醒,六号窗的加大电流该他妈吃药了,那么你这张几乎就是为了面试,但是不排除部分猛男,也许屏幕前的你就是大厂的某个高级开发工程师啊,可能在做这个K建筑队的存储优化,做专门的课题,那么对于这10%的同学,他可能是大厂自己内部的中间件,比如贵公司啊,自己内部的red需要重构啊,我们red IO官网上下的red不足,你要你觉得不好,针对我们公司的一些特殊业务,我要去。
10:02
底层代码的编写参考re,源码,那么读这一章就相当有意义,所以量体裁衣,先问自己,你是这90%为了面试的,那么你背背八股文就行了,如果你是这10%的,强烈建议你跟着杨哥认认真真的钻下去,做难事必有所得,那么接下来。你在阿里云里面做阿里云register,你在美团要优化T,你在滴滴用KD等等,那么如果是这样的,这10%的同学,那么呢,我建议大家呢,认认真真的跟着我把这个源码啃下来,OK,好,那么同学们,这个就是我们本章的一些面试题的介绍和前置条件的要求。
我来说两句