谷粒商城实战(018 业务-购物车的设计与实现)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强

总时长 104:45:00 共408P

此文章包含第236p-第p247的内容


介绍

在这里插入图片描述

记得整合OpenFeign来进行远程调用或被别人远程调用
在这里插入图片描述
在这里插入图片描述

把static路径下的文件通过nginx映射到/usr/share/nginx/html

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

自己的端口和配置连接的nacos信息
在这里插入图片描述
开启服务的注册发现功能 @EnableDiscoveryClient
在这里插入图片描述
开启服务的远程调用功能@EnableFeignClients

在这里插入图片描述

在网关添加路由规则
根据路径映射到达虚拟机 在通过nginx转发给网关,再由网关找到我们的服务

在这里插入图片描述

业务编写

进入页面
在这里插入图片描述

离线购物车

在这里插入图片描述
在这里插入图片描述

还有一些复杂功能,如展示降价信息,优惠信息等
在这里插入图片描述

因为购物车是属于读写都很多的数据 所以使用文档型数据库好一些,如mongodb(性能不会带来太大的提升) 这里我们使用的是redis
在这里插入图片描述

因为redis默认数据是存在内存中的,所以宕机的时候购物车数据会消失,这里指定redis的持久化策略,来使数据持久化,这样虽然损失了一部分的性能,但是性能还是比mysql要高很多

在这里插入图片描述

临时购物车用localstrage,优点:后台压力小,缺点:无法通过大数据分析出当前用户喜欢的东西,无法定制化推荐
所以临时购物车这里也存到了redis里,但是注意离线存在redis可能会被攻击
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用数组类型进行保存,缺点:修改时无法快速找到,需要遍历循环才能找到对应的商品进行修改
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里我们使用hash类型进行保存 (相当于 java 的 map)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里的总价是通过单价和数量动态计算出来的,所以这里我们自定义一个get方法,防止被覆盖把@Data去掉
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里把set方法全都去掉
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

ThreadLocal用户身份鉴别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ThreadLocal同一个线程可以共享数据
在这里插入图片描述
这个是jsk1.8前是这样的,jdk1.8改成了thredlocal作为key

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
threadlocal好处就是线程结束了就没了,放session里太占空间 threadlocal不需要手动释放

在这里插入图片描述

拦截器不能只放在容器中(@Component注解放在容器中),需要进行配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/** 所有请求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

页面编写

在这里插入图片描述
在这里插入图片描述
ctrl + alt + m 快速抽取方法 也可以使用右键进行抽取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这里的设计有一些漏洞,如果商品的价格发生变化了,redis缓存中的数据会产生数据不一致问题,我设计的话 只在redis里存店铺ID,商品ID,skuID,数量,加入时间,最新修改时间,以及当前价格(方便以后提示是否降价等信息),然后去数据库或es里查询这些商品的最新信息

在这里插入图片描述

这里的错误提示是因为这里可能会修改 所以必须是final类型才可以,否则异步信息会报错
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

防止误刷新页面新添加商品到购物车(解决重复提交),这里做了个重定向
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重定向不可能带model数据,转发才有

转发和重定向的区别
转发:是指服务器接收到一个请求后,将请求转发给另一个资源进行处理,并将该资源的处理结果返回给客户端。在这个过程中,转发后的资源对客户端是不可见的,客户端只知道自己访问了一个资源,而不知道这个资源是被转发到的。

重定向:是指服务器接收到一个请求后,发现该请求需要访问另一个资源才能得到响应,于是告诉客户端重新发送一个请求,访问另一个资源。在这个过程中,客户端会重新发送一个请求,访问另一个资源,因此客户端会知道自己访问了两个资源。

转发对客户端是不可见的,而重定向对客户端是可见的。转发比重定向快。转发只需要发送一次请求,而重定向需要发送两次请求。转发是服务器内部的处理机制,客户端不需要进行任何处理。

转发可以访问相对路径和绝对路径的资源,而重定向只能访问绝对路径的资源。因为转发是在服务器内部进行的,可以访问相对路径和绝对路径的资源。而重定向是在客户端进行的,只能访问绝对路径的资源。

离线和登录进行合并

在这里插入图片描述
在这里插入图片描述

加粗样式
es的优势才是查询 redis的优势是快
在这里插入图片描述
在这里插入图片描述
这里check==1就行了 没必要三元运算
在这里插入图片描述

在这里插入图片描述


  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值