00:00
各位同学大家好,接下来为大家讲解第十章RA的十大数据类型,那这一章就是我们对RA操作所需要知道的命令。以及它相应的数据类型能够支撑我们做哪些功能的应用场景,实战案例的讲解非常的重要。上面我们讲的理论入门,这个讲了redx的安装配置,好比这个就装完了我们的Linux系统,那假设我们要操作Linux,是不是要学习一些基本的常用操作和命令啊?所以这一章是我们后面干活所需要的基本功,请同学们务必重视。一句话,我现在在这一章所敲过的命令,要求各位同学,你们班从头到尾也跟着我敲一遍,只允许敲的比我多,不允许敲的比我少,请大家第二次强调,务必重视,谢谢,上面完成了理论,下面完成了安装这一章干活,那么弟兄们。所谓数据类型是什么?十大数据类型是哪十类的命令呢?来,同学们我们看一眼。
01:06
第一个,官网说话,看看这十大类型分别是什么?我们在官网主页上这段话已经看过很多遍了,那么杨哥你说十个就是十个,有没有理论依据和出处,你讲的权威吗?那么大家大家都清楚,Ready官网打开文档。Document手册,大家请看这是不是有个数据类型啊,来。看一下,不废话,我们先确定数量,一二三四五六七八九十十一十二,哎,不对啊,杨哥打脸了,这不是12个吗?你说的是十个,那么请看好这个tutorial和这个干嘛带着这个单词呢?它并不是某一个具体的数据类型。知道这个单词的意思,都代表辅导。引导一个训练手册的意思对吧,它不是一个具体的类型,只是个比如说像这个是一个流式类型,它告诉你这个类型该怎么用,它是一个入门指导手册,所以回到这儿,同学们请看。
02:07
一二三四五六七八九十秒懂好。那么接下来所谓的。十大数字类型,那是哪十个我们刚才确认的数量,那么意图说话,大家请看,分别是string bit map bitfield har西、list set sorted set,也叫z set啊,X y z z set。Go hyper log log和STEM,好的,那么同学们,那这十个数据类型我们前面已经说过了,来杀个回马枪,前面这些理论你千万不要觉得杨哥说废话,下面这个问题就是我们在这儿已经和大家说过了,它是一些TV建制队,你看数据结构的存储对吧?在内存里面的,那么我们要深刻理解这张图,各位小白入门的时候慢一点,基础打扎实,打牢了,那么KV对于我们这个KV就是这十个,那在我们的red的整体功能概述里面来,这个就是red的地图全开,那么这个就是red能干的。
03:14
内容能支持的功能,下面一块一块的敲右下角TV建筑队先给大家介绍十大类型,OK,走起。那么下面。我们提前声明啊,我们之前呢,是不是一个set k1helloard,那么get k1啊,那么现在,那么各位同学我啊我已经把它删掉了啊,那么假设啊在开一哈。OK get,开一这个答案没有任任何问题吧?Value一般我们说这个类型,这有一句话听好,我们这里所说的数据类型主要是指谁?Value,这个key一般都是字符串,就跟哈希map一样,这个key一般你都是用string对吧?这个value可能是个结算串,可能是个对象,可能是个list,可能是个哈希map,无所谓,重要的是这个key好,那么这十个我们呢,挨个挨个的给大家呢进行一下初步的讲解,那么换句话说,我们学习方法的套路是不是就是走知道了这十个分,那么这十个分别需要哪些常用操作的命令,最后再走,所以说杨刚三板斧理论实操小总结,总分总来总体我们明白了十兄弟,那么挨个挨个过,第一个最经典最常用,最主流的是不是我们的菌类型啊,那么。
04:36
只要任何一门语言都明白字符串,那么它是个什么东东呢?来,现在我们在这挑的其实就是一个最经典最常用的字符串类型啊,那么来同学们,首先一个key对应着几个,一个value,当然这个key你随便命名,这个value可能是个串,可能是个对象,可能是个具体的值。首先它是什么?二进制安全的,那么什么叫二进制安全呢?就是它支持序列化。
05:02
相当于说这个string可以包含什么任何数据,那么大家只要有稍微有点Java开发基础,都晓得这个string是不是这个布尔型、数字型以及我们的时间串都可以来表达呀,哎,包括图片,所以呢,它是最重要最基本的一个类型,也是我们本次讲解的重点。可以这么讲,后续你干活60%的操作都跟它有关,只是一些极其特殊的案例和场景需要用其他数据类型来辅助。那么下面一个当中,Value这个值最多是多少?512兆,好,那么这个是字符串类型第二个list。请各位同学类比啊,假设一说list list,你能先想到Java里面的是什么?思考一下,那么最经典的是不是我们的耳list,或者是link list,对吧?那么说列表一般就主要就是指数组列表这些东道,那么来这个list请大家看,它是一个简单的字符串列表,那么按照超作顺序可以添加元素到什么头部或者是尾部,也就是从左或者从右,哎,也就是它火车车厢拉铁皮拉车厢可以从左边进,也可以从右边进,可以从前,可以从后,说明它的底层是个什么双端链表,那么它最多可以是二的32方,二的32次方,然后这么多个元素,你就记着list最多多少个,40几个元素,OK,当然了。
06:26
屏幕前的你也应该明白,你应该不会这么吃愣的在内存里面保存这么多,人家支持这么多,但是你不能存这么多,对吧?因为后面在高级部分我们会介绍一个非常非常重要的知识点,也是现在工作中常考必考的,什么b key,大key,热key的排除和检索,以及故障的处理。好这是我们的第二种数据类型列表第三个哈希。兄弟们想想,对标着我们Java是谁,那都清楚100%是不是TV建支队对吧,那么所以说呢,它呢,这个时候就是一个F的一个value,这么说能跟上,那么相当于就是我们做。
07:06
映射对象啊,以前我们是KVOK,那么现在变成K,它就变成一个什么,这个V又变成了一个。Field。VOK,相当来说,以前string类型它的值就一个,现在这个值也还是一个,只不过这个值是个什么TV见值对OK好,那么这个呢,顺便呢给大家呢提一下,后续我们会挨个挨个细细的讲解,那么下面sat特一样想到什么?是不是哈西S那么来同学们请看sat是什么类型的是吗?无序集合,那么一说sat是散裂,散裂要有通通有有序有重复。Set散列无序,要无通通无无序无重复,OK,那么所以说集合中是什么唯一的不能什么不能出现重复的数据,要无通通无无序无重复,OK,所以说集合对象编码可以是in sent或是哈table,这个是什么?我们在高阶篇后面会对这些数据类型的底层源码进行分析,那么你表面上用的是个set,其实底层而言用的是这些动作,我们在后面讲高阶篇底层源码分析的时候再跟同学们细说,那么现在你就记着sat无序无重复,底层通过哈希来实现时间复杂度OE。
08:29
数据也是这么多,好,They set,那么同学们想一下,诶诶等等啊,各位小白注意。我们这是叫什么?Sortty的set,听好,可排序的哈希简称z set sortty的set和z set是ER re1re1的事,它们两个都是同一个。好,那么下面可以看得出,我们这要明白the set和set一样也是什么四中类型,也就是说这是其实哈这十大数据类型细分是十大,但是往根子上找好几个数据类型其实也是跟string有关系,只不过我们讲课为了这个学术范啊,严谨一点,因为官网上有几个我就要讲几个,对吧?官网是最权威的,那么red data type摆在这儿了,所以说呢,为了给同学们讲的更细一点,就分成了十个,其实有些往上回溯也是跟死就有关系。好,那么this set的意思是什么?也不允许重复,它干的活是在每一个有序有序,怎么set本身就是无序,那么他为了保证不重复,又想排序怎么办?那么就在每一个值的前面。
09:38
会关联一个double类型的什么分数,所以Z赛的成员为一,但是分数却可以重复,那最经典的啊,假设这是K1,这是V1,大家没有任何问题对吧?那z set的意思是K1,这有个school v明白吗?就是每个值前面它都带着一个分数,那么它存在S里面,这个你就把它当做一个整体,那么第二个。
10:05
分数就是V2对吧,那么我每存进去一个,我就按照前面这个分数123456,或者是什么学生的这个考试分数小数点后面一位啊来进行这么一个对比,所以它底子也是哈希可以通过前面带的这个分数为集合中的成员进行从小到大或者从大到小,从大到小的排序,那么复间复杂度或者集合保存都给咱学们记录在这,那么前五个可能是同学们熟悉的,但是现在啊,到2023年了,Reality的使用。我们前面已经说过,已经诞生13多年,14年了,接近那么。用法呢,越来越深入。互联网的各个程序,那么后面这五个是目前互联网主流的,可以这么讲啊,各位同学大家都清楚,现在呢,稍微卷一点点对吧。你要说一些面试官不知道的东西,那么假如说你在工作当中能说说这六到十后面这五个,那么相对而言你的知识体系的完善度是超过前者,来下面red地理空间,Geo啥意思啊?就是经纬度,比如说你现在打开滴滴打车,高德打车,你站在这儿叫你方圆一公里以内或者是三公里以内的离你最近的顺风车、出租车怎么叫的呀?这个地理位置,这个经纬度怎么算的呀?就可以用red的这种实时数据分析geo地图类型,那么它主要用于存储地理位置信息,并对存储的信息可以进行操作,那么包括地理位置坐标,两个位置之间的距离等等等等。那么这个到后面我们会给大家做一个实战案例,到高阶篇用ready go来看一下,比如说高德地图附近的核酸检查点,比如说美团APP附近的酒店。
11:56
来。第七种数据类型,基数统计,Hyper log log,那么首先什么统计到好说什么叫激素,哎,这有个概念,那么来hiper log log,这是什么概念呢?
12:09
下面它来看一眼,这用来做什么激素统计的,它的优点的是在输入元素数量或者体积非常大的时候,计算激素所需要的空间总是固定且很小。那么这个东东读完这个你可能同学有点懵逼,我们就说个案例,大家都反问过淘宝、京东,还有我们的天猫这样的。互联网网站他每天的首页访问量是很大的,那下面假设如果人家让你统计今天天猫首页的访问量,你准备记录下这些IP也好,或者是统计量也好,你们觉得这个数据庞不庞大,每天的记录像天猫淘宝上亿,那么这个时候就需要有一种什么。所谓的基数就是不重复的IP,不重复的数字就叫基数,那么这个时候我要记录一下今天有多少人访问了天猫的首页,那么这样的话。
13:05
数据量很大,我们能不能。节约内存的前提下,还能统计的尽量精确呢,那么所以说hyper log log就会支持元素按照。重复以后的基数统计来进行我们的保存,那么到后面我们讲解hyper log log的时候,请同学们务必听一下案例,比如说一级的天猫首页这样统计点击率,分析该怎么做?来下面bit map位图,那么最经典干嘛呢?所谓的位图就是大家都清楚一个字节等于八位,它存储的是什么?0101 0101,那么由零一状态表现的二进制的比特数组,那杨哥这个有什么用?拿来干嘛呢?同学们,你们现在登录各大APP是不是有一种功能叫每日签到,如果你今天来了,比如钉钉打卡,你今天来了打个击。今天没来打个零,那么如果我这个数组或者某种数据结构只能保存零一零一来决定你是否上线,是否打卡,是否点过这个,那么我不用记录很多很多复杂的功能,我只需要记录010101这样的一种数据结构是不是可以完成每日签到、钉钉打卡、点击率分析,是否有相同的爱好,是否点过赞等等。
14:21
这样就是我们的bit map所能够实现的神仙功能。OK,好,那么下面。我们来看bit map。第八招。介绍完毕,那么他的兄弟叫谓喻be field,那么这个呢就更狠,那么他干嘛呢?他可以一次性的操作比特的什么?谓喻指的是连续多个比特位啊,那么这样先过一遍,我们这儿可能同学们呢,暂时没有听懂,没关系啊,后面我们会学命令的时候再来,咱们先总分总啊总的,先告诉你这十个大致是个啥,后面挨个挨个敲跟着来。那么它的比特field是对比特位置进行一些值的替换和修改,可以这么讲,说人话。
15:03
你修改Java的源代码。没什么了不起的,你现在开始可以更深入的去操作底层的什么类似于Java的字节码。你把它的位浴。给修改,重新实现实时数据的替换和查找,好后续我们再展开,那么第十种的数据类型,Register STEM流,他拿来干什么的呢?弟兄们,这个呢,类似于我们red版本的MQ消息中间键,因为现在比较绝,各大中间键也比较绝,那么red为了不被替换掉,总想把自己的手伸到别人的地盘,比如说red啊,他自己做这个K建制队已经很厉害了,但是呢,他觉得呢,我呢?讲功能更强大,扩张我的版图对吧?那么在这儿同学们我们已经说过了,Red能做是不是越来越多,那所以说他的意思是,哎,琢磨琢磨,如果我出一种数据类型,能够什么把MQ给替换了,有没有种可能,所以说呢,这个流是什么?5.0以后就新增的,主要是用于消息队列,就是red版的消息中间键啊,那么red本身呢,它有一个popup发布订阅功能,我们后面会聊。
16:19
OK,发布订阅,但是呢,Red呢比较强大,自己比较给力,觉得自己这个功能想更进一步的升级,且还想去抢MQ的饭碗,所以呢,他就新在5.0以后新整了一个数据类型叫red stream流逝消息流这样的一种数据类型,所以想干掉。Rabbit MQ卡夫卡,但是呢,目前哈大家都清楚他已经提供这个功能,在实际使用上大家还是专业的事交给专业的小区中间建,OK,好的,那么感谢各位同学的聆听,我们的第一讲十大数据类型的入门介绍和总体概述就给大家介绍到这儿,接下来实操跟着我一个一个的学。
我来说两句