畅购day03
第3章 商品发布学习目标
SPU与SKU概念理解
SPU:某一款商品的公共属性
SKU:某款商品的不同参数对应的商品信息[某个商品]
新增商品、修改商品
增加:增加SPU和SKU
修改:修改SPU和SKU
商品审核、上架、下架
审核:修改审核状态
上架下架:修改上架下架状态
删除商品
逻辑删除:修改了删除状态
物理删除:真实删除了数据
找回商品
找回商品:一定是属于逻辑删除的商品
1 SPU与SKU1.1 SPU与SKU概念SPU = Standard Product Unit (标准产品单位)
概念 : SPU 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
通俗点讲,属性值、特性相同的货品就可以称为一个 SPU
同款商品的公共属性抽取
例如:华为P30 就是一个 SPU
SKU=stock keeping unit( 库存量单位)
SKU 即库存进出计量的单位, 可以是以件、盒、托盘等为单位。
SKU 是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。
在服装、鞋类商品中使用最 ...
畅购day04
第4章 lua、Canal实现广告缓存学习目标
Lua介绍
Lua语法 输出、变量定义、数据类型、流程控制(if..)、循环操作、函数、表(数组)、模块
OpenResty介绍(理解配置)
封装了Nginx,并且提供了Lua扩展,大大提升了Nginx对并发处理的能,10K-1000K
Lua->广告缓存操作
广告缓存载入与读取
Nginx讲解
限流操作:漏斗限流原理
1.控制速率
2.并发量控制
Canal讲解
实现数据同步操作->MySQL
Canal实现首页缓存同步
1 首页分析首页门户系统需要展示各种各样的广告数据。如图,以jd为例:
变更频率低的数据,如何提升访问速度?
1.数据做成静态页[商品详情页]
2.做缓存[Redis]
基本的思路如下:
如上图此种方式 简单,直接通过数据库查询数据展示给用户即可,但是通常情况下,首页(门户系统的流量一般非常的高)不适合直接通过mysql数据库直接访问的方式来获取展示。
如下思路:
1.首先访问nginx ,我们可以采用缓存的方式,先从nginx本地缓存中获取,获取到直接响应
2.如果没有获取到,再次访 ...
畅购day05
第5章 商品搜索学习目标
Elasticsearch安装
docker安装Elasticsearch
系统参数问题
跨域操作
IK分词器配置
Kibana的使用->DSL语句
Kibana->DSL语句操作->Elasticsearch
ES导入商品搜索数据
Sku数据导入到Elasticsearch
Map数据类型->Object
关键词搜索->能够实现搜索流程代码的编写
分类统计搜索
1. Elasticsearch 安装我们之前已经使用过elasticsearch了,这里不再对它进行介绍了,直接下载安装,本章节将采用Docker安装,不过在市面上还有很多采用linxu安装,关于linux安装,已经提供了安装手册,这里就不讲了。
(1)docker镜像下载
docker pull elasticsearch:5.6.8
注意:由于镜像有570MB,所以提供的虚拟机里已经下载好了该镜像,如下图:
(2)安装es容器
docker run -di --name=changgou_elasticsearch -p 9200:9200 -p 9 ...
畅购day02
第2章 分布式文件存储FastDFS学习目标
==理解FastDFS工作流程==
分布式文件管理系统
文件上传
文件下载
文件删除
文件缓存控制
==搭建文件上传微服务==
相册管理(实战)
规格参数管理(实战)
商品分类管理(实战)
1 FastDFS1.1 FastDFS简介1.1.1 FastDFS体系结构FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过Tracker server 调度最终由 Storage server 完成文件上传和下载。
Tr ...
畅购day07
第7章 Thymeleaf、Rabbitmq实现静态页学习目标
Thymeleaf的介绍
Thymeleaf的入门
Thymeleaf的语法及标签
商品详情页静态化工程搭建
==商品详情页静态化功能实现==
1.详情页静态化操作
2.填充基础数据 Spu、List<Sku>
3.规格切换
==搜索页面渲染==
1.数据展示
2.搜索条件展示
3.实现条件搜索控制
用户修改商品信息,同步更新创建商品详情页
1.Thymeleaf介绍 thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创 ...
畅购day06
第6章 商品搜索学习目标
条件筛选
多条件搜索[品牌、规格条件搜索]
规格过滤
价格区间搜索
搜索分页
搜索排序
搜索高亮
1. 品牌统计
用户搜索的时候,除了使用分类搜索外,还有可能使用品牌搜索,所以我们还需要显示品牌数据和规格数据,品牌数据和规格数据的显示比较容易,都可以考虑使用分类统计的方式进行分组实现。
1.1 品牌统计分析看下面的SQL语句,我们在执行搜索的时候,第1条SQL语句是执行搜,第2条语句是根据品牌名字分组查看有多少品牌,大概执行了2个步骤就可以获取数据结果以及品牌统计,我们可以发现他们的搜索条件完全一样。
-- 查询所有
SELECT * FROM tb_sku WHERE name LIKE '%手机%';
-- 根据品牌名字分组查询
SELECT brand_name FROM tb_sku WHERE name LIKE '%手机%' GROUP BY brand_name;
我们每次执行搜索的时候,需要显示商品品牌名称,这里要显示的品牌名称其实就是符合搜素条件的所有商品的品牌集合,我们可以按照上面的实现思路,使用ES根据分组名称做一次分组查询即可实现。 ...
畅购day08
第8章 微服务网关和Jwt令牌学习目标
掌握微服务网关的系统搭建
了解什么是微服务网关以及它的作用
掌握系统中心微服务的搭建
掌握用户密码加密存储bcrypt
了解JWT鉴权的介绍
掌握JWT的鉴权的使用
使用Jwt令牌来存储用户登录信息,在微服务网关中识别登录信息(用户的身份)
掌握网关使用JWT进行校验
掌握网关限流
1 微服务网关1.1 微服务网关的概述不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:
客户端会多次请求不同的微服务,增加了客户端的复杂性
存在跨域请求,在一定场景下处理相对复杂
认证复杂,每个服务都需要独立认证
难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施
某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难
以上这些问题可以借助网关解决。
网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过 网关这一层。 ...
畅购day09
第9章 Spring Security Oauth2 JWT学习目标
用户认证分析
单点登录
第三方登录
oauth2.0协议
oauth2.0认证模式
授权码授权模式
密码授权模式
授权流程
用户认证授权
1 用户认证分析
上面流程图描述了用户要操作的各个微服务,用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色然后授权访问对应的功能。
1.1 认证与授权身份认证
用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。说通俗点,就相当于校验用户账号密码是否正确。
用户授权
用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没有权限的资源将无法访问,这个过程叫用户授权。
1.2 单点登录
用户访问的项目中,至少有3个微服务需要识别用户身份,如果用户访问每个微服务都登录一次就太麻烦了,为了提高用户的体验,我们需要实现让用户在一个系 ...
传智健康day10
第10章 Redis高可用学习目标
了解Redis缓存集群方案
能够使用spring整合Redis集群环境
本章内容我们的主题为Redis,目前Redis在企业中的应用已经非常广泛,同时Redis也是面试中的重点内容。
1. Redis缓存相关问题【目标】1:了解Redis缓存穿透
2:了解Redis缓存雪崩
3:了解Redis缓存击穿
【路径】1:缓存穿透描述,及解决方案
2:缓存雪崩描述,及解决方案
3:缓存击穿描述,及解决方案
【讲解】1.1. 缓存穿透 【面试】缓存穿透 是指查询一个数据库一定不存在的数据。
我们以前正常的使用Redis缓存的流程大致是:
第一次查询 先从jedis.get(setmealDetail{id}) ,如果 不存在 则查询数据库,获取后存入redis(setmealDetail{id})
如果套餐数据不存在,就不需要放入缓存
1、数据查询首先进行缓存查询 id=1setmealDetail_id = null
2、如果数据存在则直接返回缓存数据
3、如果数据不存在,就对数据库进行查询,并把查询到的数据放进缓存 1 null
4、如果数据库 ...
传智健康day02
第2章 预约管理-检查项、检查组管理学习目标:
掌握新增检查项实现过程
掌握检查项分页查询实现过程
掌握删除检查项实现过程
掌握编辑检查项实现过程
掌握新增检查组实现过程
掌握检查组分页查询实现过程
掌握删除检查组实现过程
掌握编辑检查组实现过程
1. 新增检查项 本章节完成的功能开发是预约管理功能,包括检查项管理(身高,体重)、检查组管理(外科)、体检套餐管理(公司健康体检)、预约设置等(参见产品原型)。预约管理属于系统的基础功能,主要就是管理一些体检的基础数据。
【目标】新增检查项
【路径】
checkitem.html, 新建按钮绑定事件,弹出新增窗口,填写内容,点击确定绑定事件 提交(前要校验一下,成功后才能提交(axios)) formData,对返回的结果提示信息,如果成功,则要关闭新增窗口,且刷新列表数据
CheckItemController, 用checkitem来接收formData, 调用服务添加add,返回result给页面
CheckItemService与实现 add 方法, 调用dao
CheckItemDao与映射文件 添加a ...
传智健康day01
第1章 项目概述和环境搭建学习目标:
了解传智健康项目需求
掌握项目环境搭建过程(重点)
掌握PowerDesigner的使用
了解ElementUI常用组件使用(会用(cv大法))
了解预约管理模块需求
1. 项目概述【目标】传智健康的项目总体的业务和技术
【路径】1:项目介绍
2:原型展示
3:技术架构
4:功能架构
5:软件开发流程
【讲解】1.1. 项目介绍(项目背景) 传智健康管理系统是一款应用于健康管理机构(慈铭、爱康国宾)的业务系统,实现健康管理机构工作内容可视化、会员管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与会员间的互动,增强管理者对健康管理机构运营情况的了解。
详见:资料中的《传智健康PRD文档.docx》
1.2. 项目需求分析【目标】
1:传智健康项目的业务需求
2:课程中需完成的业务需求
【路径】
1:传智健康管理系统是一款应用于健康管理机构的业务系统
2:系统分为传智健康后台管理系统和移动端应用两部分
3:后台系统和移动端应用都会通过Dubbo调用服务层发布的服务来完成具体的操作。本 ...
传智健康day05
第5章 移动端开发-套餐列表、套餐详情、页面静态化学习目标:
掌握移动端套餐列表页动态展示实现过程
掌握移动端套餐详情页
掌握Freemarker页面静态化技术
能够使用Freemarker生成html静态页面
1. 移动端需求分析和环境搭建1.1. 需求分析【目标】
能够搭建移动端开发环境
【路径】
开发需求
环境搭建
【讲解】1.1.1 移动端开发需求分析用户在体检之前需要进行预约,可以通过电话方式进行预约,此时会由体检中心客服人员通过后台系统录入预约信息。用户也可以通过手机端自助预约。本章节开发的功能为用户通过手机自助预约。
预约流程如下:
1、访问移动端首页
2、点击体检预约进入体检套餐列表页面
3、在体检套餐列表页面点击具体套餐进入套餐详情页面
4、在套餐详情页面点击立即预约进入预约页面
5、在预约页面录入体检人相关信息点击提交预约
效果如下图:
【小结】体检预约—>套餐列表—>套餐详情—>立即预约(发送手机验证码+Redis)
1.2. 搭建移动端工程(互联用户)【目标】移动端工程搭建
【路径】
创建health_mobil ...