project-gulimall
文章平均质量分 80
尚硅谷谷粒商城项目
兴趣使然的CV工程师
摆烂高手
展开
-
33.项目总结-功能部分
三级分类目标:查出所有的三级分类,并且要组装成父子结构表的结构如下,其中parent_id表示父分类的id,如果此值为0,意思是当前行是最大的分类(也就是1级分类);同样也可通过cat_level来查找,此值表示当前分类的等级具体实现方法如下:对于方法listWithTree:baseMapper对象就是当前ServiceImpl的Service接口selectList的时候传入null值就是查询所有的值stream流式编码的过程如下:对于方法findChildr..原创 2021-11-24 22:43:50 · 941 阅读 · 0 评论 -
32.项目总结--技术点部分
项目整体架构Docker虚拟化容器计数,Docker基于镜像,可以秒级启动各种容器,每一种容器都是一个完整的运行环境,容器之间相互隔离;SpringCloud Alibaba导入的依赖管理: <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud&l.原创 2021-11-24 20:53:10 · 3782 阅读 · 0 评论 -
31.Sentinel
概念回顾熔断:A服务调用B服务的某个功能,由于网络不稳定等原因,或者B服务器卡顿,导致功能时间超长,如果如此反复的次数太多,我们就可以将B断路,凡是调用B的直接返回降级数据,不必等待B的超长执行,这样B故障的问题就不会级联影响到A降级:整个网站处于流量高峰期,服务器压力剧增,根据当前业务情况以及流量,对一些服务和页面进行有策略的降级【停止服务直接返回降级数据】。以此来缓解服务器资源的压力,来保证核心业务的正常运行,同时也保持了客户 和大部分用户得到正确的响应相同点:为了保证集群大部分服务的可原创 2021-09-04 11:33:07 · 237 阅读 · 0 评论 -
30.秒杀
流程后台添加秒杀商品秒杀的商品应该独立部署放在一个独立的模块里在网关里配置优惠系统的断言信息 这里给出完整的网关配置spring: cloud: gateway: routes: #商品的路由 #localhost:88/api/product/category/list/tree--->localhost:10000/product.... #优先级比下面的哪个路由要高所以要放在上面,不然会被截断 .原创 2021-08-31 21:37:06 · 246 阅读 · 0 评论 -
29.支付
支付宝沙箱环境支付宝加密采用RSA非对称加密,分别在商户端和支付宝端有两对公钥和私钥 在发送订单数据时,直接使用明文,但会使用商户私钥加一个对应的签名,支付宝端会使用商户公钥对签名进行验签,只有数据明文和签名对应的时候才能说明传输正确 支付成功后,支付宝发送支付成功数据之外,还会使用支付宝私钥加一个对应的签名,商户端收到支付成功数据之后也会使用支付宝公钥延签,成功后才能确 我们要配置一个支付宝公钥和商户的私钥配置内网穿透,沙箱环境等支付工具类(私钥和公钥,appid换成自己的).原创 2021-08-30 18:32:05 · 463 阅读 · 0 评论 -
28.订单服务-RabbitMQ
RabbitMQ延时队列--实现定时任务消息的TTL:消息的存活时间RabbitMQ可以分别对队列和消息设置TTL:对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做设置,超过了这个时间,我们就认为消息死了,称之为死信 如果队列设置了,消息也设置了,会取小的时间,所以一个消息如果被路由到不同的队列中,这个消息的死亡时间有可能不一样(因为队列的TTL不一致)。这里单讲单个消息的TTL,因为它才是实现延迟任务的关键,可以通过设置消息的expiration字段或者x-messag原创 2021-08-29 16:51:39 · 2486 阅读 · 0 评论 -
27.分布式事务
上一章的订单方法使用的本地事务的问题:1. 库存服务锁定成功了,但是网络原因返回数据途中有问题怎么办---》远程服务假失败:远程服务其实成功了,由于网络故障等没有返回导致订单回滚但是库存却扣减了2.库存服务锁定成功了,库存服务下面的逻辑发生故障,然后订单回滚了,库存是远程调用无法回滚,怎么处理--》远程服务执行完成,下面的其他方法抛出异常导致订单回滚但是库存却扣减了本地事务:分布式系统,只能控制住自己的回滚,控制不了其他服务的回滚分布式事务:最大原因:网络问题+分布式机器本地事务回顾..原创 2021-08-28 21:13:41 · 247 阅读 · 0 评论 -
26.订单模块
环境搭建1.整理前端页面以及静态资源环境2.配置域名3.nginx配置 静态资源去 /usr/share/nginx/html里找,动态资源去gulimall,并且由于nginx会丢失host配置Host[root@wuyimin conf.d]# cat gulimall.conf server { listen 80; server_name gulimall.com *.gulimall.com; location /static {.原创 2021-08-26 15:52:51 · 908 阅读 · 1 评论 -
25.RabiitMQ
原文链接原创 2021-08-25 14:00:24 · 157 阅读 · 0 评论 -
24.购物车
环境搭建整理静态资源排除数据库导入common模块依赖 <dependency> <groupId>com.wuyimin.gulimall</groupId> <artifactId>gulimall-common</artifactId> &...原创 2021-08-23 21:08:00 · 393 阅读 · 0 评论 -
23.认证服务-登录功能
普通登录Member和auth服务里各放一份vo@Datapublic class UserLoginVo { private String loginacct; private String password;} @Override public MemberEntity login(MemberLoginVo memberLoginVo) {...原创 2021-08-21 20:14:00 · 171 阅读 · 0 评论 -
22.认证服务-auth-server-注册功能
环境搭建选择模块thymeleaf,web,openFeign,lombok,spring-boot-devTools加入common模块(有注册中心之类的很多依赖)排除jdbc依赖 <dependency> <groupId>com.wuyimin.gulimall</groupId> <art...原创 2021-08-21 10:14:00 · 1397 阅读 · 0 评论 -
21.商品详情
环境搭建修改域名修改网关让item也能跳到商品服务前端内容放入nginx模型抽取product模块里封装Vo,由于下面两个属性需要在mapper里映射结果集使用,所以不能写成静态内部类@Datapublic class SkuItemVo { private SkuInfoEntity info; //1.查询当前sku的基本信息 sku_info表 p...原创 2021-08-20 12:03:00 · 477 阅读 · 0 评论 -
20.异步
异步部分线程池关于通配符上下边界的问题线程池流程:核心线程--》阻塞队列--》最大线程数--》拒绝策略(默认的是把任务丢掉,并且抛出异常)一个线程池核心是7,最大是20,队列是50,100并发进来怎么执行?首先是7个并发占用核心线程池立即执行,50个进入队列,再开13个线程开始执行,剩下的30个会使用拒绝策略,如果不想抛弃可以使用CallerRunsPolicy策略异步执行常用的几...原创 2021-08-20 09:02:00 · 118 阅读 · 0 评论 -
19.检索服务
Search模块1.整理前端内容导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> ...原创 2021-08-17 18:54:00 · 96 阅读 · 0 评论 -
18.缓存
1.哪些数据适合放入缓存即时性,数据一致性要求不高的访问量大且更新频率不高的数据(读多,写少)距离:物流信息,并不是每走一米就要更新一次2.本地缓存的问题Map<> catche=new Map<>();对于分布式系统,第一次数据进入第一个微服务,缓存进去第二次想拿数据的时候负载均衡到了第二个微服务,这样就拿不到缓存了而且如果修改了数据,会产生数据一致性的...原创 2021-08-16 17:55:00 · 95 阅读 · 0 评论 -
17.压力测试
JMeter压力测试工具安装官网200个线程,在一秒钟之内全部启动完,循环100次测试我们自己的网站有一个提高的方法是可以增加模块的占用内存属性Address Already in use错误测试的时候会占用端口打开注册表,修改windows配置文件新建这两个dword值,表示预留端口65534个,每隔30秒回收一个端口配置完以后重启计算机JVM内...原创 2021-08-16 10:38:00 · 112 阅读 · 0 评论 -
16.商城业务-首页+nginx配置
1.整合thymeleaf在product项目中导入依赖<!-- 热部署依赖,使页面实时生效--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-de...原创 2021-08-15 17:33:00 · 192 阅读 · 0 评论 -
15.商品上架
只有上架的商品才可以进行检索 @PostMapping("/{spuId}/up") public R spuUp(@PathVariable("spuId") Long spuId){ spuInfoService.up(spuId); return R.ok(); }创建一个to对象,与我们之前配置的索引相匹配@Data...原创 2021-08-14 09:58:00 · 246 阅读 · 0 评论 -
14.ES整合项目
1.创建新模块只选web不选SpringData的es导入依赖<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> &l...原创 2021-08-13 11:44:00 · 125 阅读 · 0 评论 -
13.全文检索-ElasticSearch前置内容
传送门1.Docker安装ES并且安装可视化界面kibanadocker pull elasticsearch:7.4.2docker pull kibana:7.4.2# 将docker里的目录挂载到linux的/mydata目录中# 修改/mydata就可以改掉docker里的mkdir -p /mydata/elasticsearch/configmkdir -p /m...原创 2021-08-12 11:36:00 · 122 阅读 · 0 评论 -
12.仓储服务-仓库管理
1.给我们的ware服务开启功能2.路由网关配置3.给我们的仓库维护带上模糊查询条件@RequestMapping("/list") //@RequiresPermissions("ware:wareinfo:list") public R list(@RequestParam Map<String, Object> params){ ...原创 2021-08-11 16:39:00 · 297 阅读 · 0 评论 -
11.商品服务-spu管理和商品管理
@RequestMapping("/list") //@RequiresPermissions("product:spuinfo:list") public R list(@RequestParam Map<String, Object> params){ PageUtils page = spuInfoService.queryPage...原创 2021-08-11 15:41:00 · 322 阅读 · 0 评论 -
10.商品服务-新增商品
1.配置会员模块网关信息网关配置spring: cloud: gateway: routes: #商品的路由 #localhost:88/api/product/category/list/tree--->localhost:10000/product.... #优先级比下面的哪个路由要高所以要放在上面,不然...原创 2021-08-10 15:18:00 · 265 阅读 · 0 评论 -
9.商品服务-平台属性
介绍:规格参数即:基本属性--有关联关系,需要属性分组销售属性:销售属性-没有关联关系,不需要属性分组1.规格参数新增与vo在查询全部的时候如果带了key值,我们也应该把key带上模糊查询修改queryPage方法//分页查询,需要匹配key的模糊查询 @Override public PageUtils queryPage(Map<String, O...原创 2021-08-08 11:16:00 · 471 阅读 · 0 评论 -
8.商品服务-属性分组+品牌管理
1.SPU和SKUSPU:是商品信息聚合的最小单位,是一组可复用,易检索的标准化信息集合,该集合描述了一个产品的特性--相对于sku是类的概念--基本属性SKU:顾客真正买的spu,比如华为的mate40蓝色 256G内存的手机--相对于spu是对象的概念---销售属性执行admin.sql的sys_menu表获取到菜单信息2.从这里开始前端的代码就不讲了--以后都是对...原创 2021-08-07 09:15:00 · 354 阅读 · 0 评论 -
7.商品服务-品牌管理
1.新增品牌管理菜单-上级菜单选择商品管理2.拿到代码生成器生成的两个文件放到如下位置npm run dev运行起来进入品牌系统发现已经有基本的页面了解决控制台报错问题更改权限,让新增和删除按钮一直显示给出前端brand.vue的代码<template> <div class="mod-config"> <el-for...原创 2021-08-06 11:20:00 · 270 阅读 · 0 评论 -
6.商品服务-API三级分类-分类维护
0.对应的数据库表pms_category--Product模块--CategoryXXXX1.查询功能--查出所有分类以及子分类,以树形结构组装起来使用到的字段说明:@TableId:对应数据库表的实体类中的主键属性/** * 分类id */ @TableId private Long catId; * 父分类id */ ...原创 2021-08-04 17:03:00 · 412 阅读 · 0 评论 -
5.前端内容
传送门全局安装脚手架和webpack以后的vue脚手架都通过vue init webpack 项目名这个命令来初始化安装的时候除了路由都选no安装element ui# 直接npm安装,在项目中执行 npm i element-ui -S # 或者引入样式自定义代码片段{ "Print to console": { "prefix":...原创 2021-08-04 09:09:00 · 52 阅读 · 0 评论 -
4.分布式系统
1.三个组件springcloud提供的三个组件注册中心:Eureka--》已经停止维护了配置中心:SpringCloudConfig网关:Zuul对于本项目使用的是springcloud Alibaba,使用简单而且学习曲线低Nacos:注册中心和配置中心Sentinel:服务容错(限流,熔断,降级)Seata(原Fescar):分布式解决方案以下式springclo...原创 2021-08-03 15:12:00 · 90 阅读 · 0 评论 -
3.项目的快速搭建
1.使用码云上人人开源的脚手架传送门使用renren-fast和renren-fast-vue删除git文件夹后导入后端模块2.搭建好renrenfast的基本运行环境创建数据库,建立表修改数据库相关内容就可以启动测试了前端部分先下载相应的nodejs(这玩意有版本对应问题),下好之后设置淘宝镜像前端项目的启动:先npm install(有时候会报非管理员的错误,以管理...原创 2021-08-02 22:12:00 · 146 阅读 · 0 评论 -
2.环境搭建
1.先保证虚拟机和windows相互之间能ping通2.虚拟机安装dockerdocker是一个虚拟化容器的技术,docker是基于镜像,可以秒级启动各种容器,每一种容器都是一个完整的运行环境,容器之间互相隔离安装测试完毕设置开机自启动使用阿里云镜像加速功能mkdir -p /etc/dockertee /etc/docker/daemon.json <<...原创 2021-08-02 13:27:00 · 78 阅读 · 0 评论 -
1.概述+资料
csdn传送门文档地址接口地址微服务拒绝大型单体项目,基于业务边界进行服务威化拆分,各个服务器独立部署运行微服务的架构风格就像是把一个单独的应用开发为一套小服务,每个小服务运行在自己的进程当中,并且使用HTTP API的轻量级机制进行通信集群,分布式,节点集群是个物理形态,分布式是个工作方式分布式是指将不同的业务分布在不同的地方集群指的是将几台服务器集中子一起,实现同一业务远...原创 2021-08-02 11:35:00 · 82 阅读 · 0 评论