00:00
各位同学大家好,我是上硅谷加瓦伊学科讲师孟庆祥。接下来呢,我给大家分享一道面试题。面试题的题目是购物车实现过程。那么对于购物车呢,我想大家都不陌生,那么在这里呢,我从两个方面。来展开对购物车的啊解释和分析,第一个是购物车跟用户的关系。而第二个是。跟购物车有关的啊,有关的操作,有关的操作有哪些啊。这两个方面,那么接下来我先回答第一个购物车跟用户是什么关系呢?在这里很直白的告诉大家,一个用户,一个用户一定对应的什么呢?或者是必须对应一个购物车,意思就是说。
01:03
当这一个用户不管买多少商品,买多少商品都会存在。属于。啊,属于自己的购物车中,而并不是说我买了一件东西。张三,张三买一件东西,那张三买这件东西添加购物车的时候,再添加到李四购物车中,那么这种情况是不存在的,也就是说一个用户一定对应的一个购物车,我买的所有东西都保存在我自己的购物车之中,那么这个就是用户与购物车的关系。那么在这大家如果了解互联网联了解电商的同学呢?在这里用户,那么用户和购物车的关系大家应该知道。用户那么。
02:01
用户是从哪来的?用户怎么去保存呢?那么在这里我简单的给大家详细的透露一下,就是那么在电商。开发电商的过程之中啊,过程之中单点登录啊,单点登录一定在开发这个购物车之前,因为我只有用户登录了才能去跟购物车绑定,所以这块呢是一个小的细节,希望大家能够理解,那么在这呢,我不做。多说啊,不做多解释,单点登录,那如果啊,我们同学想要了解单点登录的同学呢,可以去我们硅谷官上硅谷的官网啊去看,那么接下来呢,我们来聊聊第二个问题,跟购物车有关的操作有哪些?那么购物车无非就是什么呢?添加购物车,第二是什么呢?展示购物车,那么添加购物车我们在这里从两个方面来说,一个是用户。
03:06
未登录状态的时候,未登录状态时候的添加,第二个就是用户登录状态时候的添加,OK,那么对于用户未登录状态的时候,我添加购物车的候,那么我将购物车的数据添加到什么地方?添加到什么地方,也就是说我未登录,用户未登录的时候将数据保存到哪里啊未登录。未登录将数据保存到什么地方或者保存到哪里?那么我们大家同学有没有啊自己考过考虑这个问题呢?啊,给大家两秒钟的时间啊,考虑一下,OK,那么在这呢,我给大家提个醒,提个醒,那么未登录状态,未登录状态的情况下,我们可不可以存在ready呢?
04:08
第一个问题啊,第二个问题我能不能存在cookie中啊,我就给大家这两个选项啊,两个选项A。B cook k,那么red呢,它是基于内存的,我们可以称之为让red为缓存,我可以存在缓存里,那么cookie呢,它是属于咱们这个啊,客户端也一样可以存,那么他们两个其实都可以存储啊,都可以存储,那么在这呢。啊,京东。啊,京东商城。啊,京东。京东商城它是将我们的未登录状态的,呃,购物车数据放在哪呢?放在red,而我们就是你如果不想存在red也可以,你可以存在哪,存在cookie里啊,存在cookie里,那么这个啊,我就不举个例子啊,就是比如说你自己开发项目的时候啊,自己开发项目的时候呢,可以存在cookie里,那么在这呢,有的同学可能会考虑到,那么cookie如果浏览器,如果浏览器啊。
05:24
浏览器禁用。啊,信用了,Cookie信用。Cookie,那我存到cookie里我怎么办呢?没关系,老师会告诉你啊,那么如果你用京东的话,那么京东它也是在利用cookie,那么利京东利用cookie做什么呢?做单点登录,如果你将cookie禁用,那么OK,我告诉你,我很负责任的告诉你,京东也是登录不上的,所以说一般的我们的电商项目。都不会禁用cookie,那么假如说你cookie禁用了,你可以存在浏览器的。
06:01
这个local story里边啊,我们用F12给大家打开看一眼,有application下边有个local story,可以存在这个里边啊,可以存在这个里边,这是一个。那么如果存在怎么办呢?存在就是未登录状态情况下,我可以在red记录一个标识,记录什么当前用户未登录状态,给他起了一个UUID可以这样存上,保存用户未登录时候添加的购物车信息,那么第二个,那么用户登录状态的时候怎么办呢?那用户登录状态我可以。如果你采用的是。B也就是说未登录状态放在cookie里边啊,未登录状态放在cookie之中呢,那么你在登录的状态的情况下呢,你可以存在哪呢?存在red啊,存在red是什么呢?缓存啊缓存中。
07:01
缓存中,那么存缓存中,那么它为什么要存在缓存中呢?是为了读写啊,读写速度快,为什么呢?因为我们想一想购物车它的一个特点就是操作最频繁的特点就是什么查询以及会这个。添加删除,那么如果我直接把它存在数据库里,那么这样势必会给我们网站的性能带来负担,所以要存在缓存之中,第二个,第二个那么我们为了保证数据的安全性啊,为了保证数据的安全性。还要将数据存在哪呢?My circle,或者是说存在数据库中,那么数据库呢,你对应的可以使用我们比较流行的Oracle或者是。买circle啊,买circle数据库都可以。那么在这呢,我一定要强调一下,存在Oracle里边和存在my circle里边,其实都是为了保障这个数据的安全性。一旦一旦red。
08:11
集群也好,单机也好,Red宕机了或者崩溃了,那我保证我数据应该查到,所以这块要注重一个数据的安全性,那么在这里与此同时,你第一次添加数据的时候,第一次添加数据的话,要先添加到数据库,然后再添加到缓存啊两份。OK,那接下来呢,给大家聊一聊,那展示购物车,展示购物车呢,在这儿我们同样也要分两种状态,一个是登录状态的展示,另外一个是未登录状态的展示,啊那在这呢,我给大家为了跟上面对齐,第一个呢,我先讲未登录状态,第二个是什么呢?登录状态。那么登录状态的展示啊和未登录状态,未登录状态的展示都怎么展示呢?第一个。
09:07
未登录状态其实很好展示,就是直接从中取得数据啊,取得数据展示即可。啊,展示即可。这是一个,那么第二个你登录状态,登录状态的时候,这个时候大家千万要注意登录状态,用户一旦登录啊,用户一旦啊。一旦登录必须显示什么呢?显示数据库。或者是说我们的谁呢?Ready啊,Ready他们两个以及要加上,加上什么呢,就是。
10:00
Cookie中啊,Cookie中的购物车数据,那么这个啊,Cookie中购物车的数据,这才是我用户登录状态的。显示,假如说cookie中有三条记录,商品记录,那么red中有五条啊。五条记录,那么我在合并之后,我在真正展示的时候,真正真正。展示的时候应该是。八条啊,应该是八条记录,这就是购物车总体实现的一个过程,那么在这里呢,老师再给大家强调一下,强调一下,那么存在购物车之中,那么我red中我怎么存,采用哪种数据,哪种数据类型来存储哈希啊。
11:04
采用哈希这种形式来存储,那么哈希存储的好处是什么呢?我们先要想了解它的好处,必须先了解哈希的一个存储的使用,哈希它的存储使用是怎么,是怎么用的呢?是这样的,Key还有field field field及value。以及外流啊,那么这个K啊,K怎么去定义,K怎么去定义,在这儿我给大家先简单的聊一下啊K,那么在实际生产,在实际生产环境上,K的定义有很多种方式,这个呢是要根据项目经理,我在这呢只做一个我自己认为一种很好的定义方式是。User冒号什么呢?User ID以及card,就是表示的是当前哪个用户的购物车啊,哪个用户的购物车,那我在放的时候呢,放h set我就可以放谁呢,放我的K,然后。
12:14
第二,Field field对应的是我的SKID就是我存储的那一件商品,最后就是我的商品的全部数据,叫什么呢?叫value。OK,这个就是用户在登录状态下。存完数据库之后在red中的存储方式,OK,那么整个这个购物车实现过程,实现过程呢,我就讲解完了,希望能够给我们同学带来帮助,以后在工作中或者生活中有什么问题,大家可以多去我们硅谷官网去看一看,里边有很多好东西值得大家参考,OK,那么这道问题呢,我就讲解完了。
我来说两句