宠物管理项目知识点

对于MVVM的理解
MVVM就是将其中的View的状态和行为抽象化,让我们将视图UI和业务逻辑分开,它可以去除Model的数据同时帮忙处理View中由于展示内容而设计的业务逻辑

Vue常用的指令
v-for 循环
v-if 判断
v-bind 为标签绑定值
v-on 注册事件
v-show 根据表达式的真假值,切换元素的display CSS属性
v-else 当v-if表达式不成立的时候,v-else执行,与v-if结合起来用

组件
组件是Vue.js最强大的功能之一,组件时对特定功能代码(html,css,js)的封装,通过组件的名字可以重复利用这个组件的代码,组件分为全局组件和局部组件,全局组件在所有Vue实例中有效,局部组件在自己的Vue有效

Vue生命周期
从开始创建,初始化数据,编译模板,挂载Dom→渲染,更新→渲染,销毁等一系列过程,称之为Vue的声明周期,Vue的生命周期可以分为8个阶段,创建前/后,载入前/后,更新前/后,销毁前/后

路由
路由是负责将进入浏览器请求映射到特定的组件代码中,即决定了由谁去响应客户端请求。简单说路由就是url地址和对应的资源的映射,通过一个路径的url地址,可以唯一找到一个资源,路由不包含在Vue中,是一个插件,需要单独下载

前后端分离
前后端分离不只是一种web应用开发模式,只要在web应用的开发期进行了前后端开发工作的分工就是前后端分离。前后端分离并不是开发模式,而是web应用的一种架构模式,在开发阶段,前后端工程师约定好数据交互接口,实现并行架构,开发和测试,在运行阶段前后端分离模式需要对web应用进行分别部署,前后端使用http或者其他协议进行交互请求
优点:
分工明确,专业的人做专业的事情
专业可以做出炫丽优美的界面
人员培养专业化,精确化
缺点:
成本提高,人员多
项目管理难度提高,前后端都要关,协调他们之间的交流

前端是怎么独立开发
采用的element,element是一套为开发者,设计师和产品经理准备的额基于Vue2.0的桌面端组件库,提供了很多的ui组件,我们可以使用这些组件快速开发前端项目

swagger是什么
swagger是接口规范,接口测试人员和前端开发人员要通过接口描述测试接口,所以需要定义一个接口规范,swagger可以直接罗列所有接口,每个接口都有访问地址,参数及返回值,可以直接通过后端代码产生能够让前台开发火测试人员呢个够看懂的接口文档

交互方式
后端负责按照约定的数据格式想前端提供课调用的API服务即可,前后端店之间通过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,页面跳转,最终返回给浏览器

后端如何进行接口测试
postman工具,postman就是一个Http协议接口测试工具,可以来发送各种http请求,可以用它来测试http协议接口

Redis
为什么会使用Redis
Redis是一个使用C语言开发的以键值对形式的高速缓存nosql数据库(非关系型数据库),他会先将数据存到内存中,然后根据一定的策略持久化到磁盘,即使断电也不会丢失数据,支持较多的数据类型,可以应用很多的场景,比如,贴吧点赞数,缓存近期比较热的帖子,缓存文章的详细信息,记录用户的会话信息

Redis的持久化机制
redis的持久化机制其实就是把数据存到磁盘中,让数据可以一直存在,即使断电也不会造成数据丢失,redis的持久化有两种方式,也可以说是两种策略,RDB 指定的时间间隔对数据进行快照存储,AOF 每一个收到的写命令都通过write函数追加到文件中

Redis迟滞的数据类型
String(字符串),list(列表),hash(字典),set(集合),zset(有序集合)

注册
注册怎么做
注册包括手机注册和邮箱注册,逻辑相同,激活方式不同
1.用户在页面输入手机号或者邮箱账号,点击获取验证码
2.后台生成验证码,将验证码存入redis中,因为redis存储数据时半结构化的,意味着计算机在读入内存中有更少的规则,读入速度更快
3.调用发送短信或者邮件的接口,将验证码发送到手机或者邮箱中
4.用户收到验证码后,输入页面,点击注册,后端接口比较用户输入验证码是否与redis中存储的验证码相同,相同则进行下一步,否则就让用户重新输入,直到验证码正确位置

密码时怎么处理
密码采用md5加密的方式存入数据库,因为md5是不可逆的,更安全

登录
用户和管理员的登录模块是否是分开写的
不是,用户和管理用用同一个接口,通过传过来的类型,判断是用户还是管理员,再跳转到相应 的页面

登陆这块的表设计是怎样的
用户一张表,员工一张表,登录一张表,登陆表里面是所有用户的登录账号和密码,因为管理员也可以登录我们的网站享受服务,所以有可能一个手机或者邮箱不仅用户也是管理员,为了区分这种登录账号到底是要等到后台还是网站,所以我们的登录表里面有一个类型字段,区分这个登录的账号到底是用户还是管理员

怎么判断用户是否登录
登录成功后用uuid生成一个随机数,将随机数作为key,用户信息作为value存入redis中,然后传到前端,前台取名为token会将它放入localStorage里面,并且我们在每次发送请求到后台时,都会在请求头中放入该token,在后台的拦截器中,我们会获取每一个请求的token,如果没有token或者该token在redis中没有获取到对应的用户信息,我们就会认为他没有登录,进行拦截,否则就会放行

前端发起的所有的请求都会被拦截吗
不会,我们会放行登录和注册的请求,还有展示给用户看的首页的请求,以及前端的静态资源,其他的请求我们会拦截

如何让所有的请求都携带token
通过axios前置拦截器,在所有请求发起之前,判断token是否存在,如果存在就在请求的header中加入token

其他业务
寻主
用户因为各种原因造成的无法继续抚养自己的宠物,通过系统的寻主功能发布公告,平台根据用户所在的市区查询相关的合作门店,将寻主信息推送给附近门店
流程:
用户发布寻主信息
平台接收消息
找到最近门店,发送短信消息给门店,并且把这个消息划归这个门店下
收取宠物,如果时要钱的,还要创建订单并且完成支付

怎么找到最近的合作门店的
我们集成了百度地图的接口,因为寻主功能需要推算距离用户最近的线下门店,系统需要将用户的输入的地址解析为经纬度,再通过经纬度计算哪一家点拓扑距离用户地址最近

订单表是怎样设计的
订单包括领养订单,商品订单,服务订单,充值订单,因为业务不同,所以这四种订单时分表保存的,另外还有一个用户地址表,因为用户地址可能不止一个,所以我们有一个专门的地址表存放用户的地址,另外还有一个订单地址表,关联某个订单时哪一个收获地址

支付是怎么做的
我们是对接的支付宝的接口,像大平台一半钱先到平台,用户确认后,平台才划账到店家,如果用户长时间不确认,自动确认,我们小平台钱是直接到店家,我们没有支付牌照

订单超时未支付会取消吗,是怎么做的
我们订单超过半小时未支付就会取消,实现是通过定时器来实现的

docker
什么是docker
docker是一个开源的容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何六星的Linux或Windows机器上,也可以实现虚拟化。容器时可以完全使用沙箱机制的,相互之间不会有任何接口

容器与虚拟机比较
本质上的区别,共享操作系统,不需要安装额外操作系统
使用上的区别,虚拟机已经淘汰了,容器才是使用最广泛的

docker特点
上手快,用户只需要几分钟,就可以把自己的程序docker化
职责的逻辑分类,使用doker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器
快速高效的开发生命周期,docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期、让你的应用程序具备可移植性、易于构建,并易于协作,
鼓励使用面向服务的架构,docker还鼓励面向服务的体系解构和微服务架构。docker推荐单个容器只云运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务器都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变的非常简单,同时也提高了程序的内省性

docker组件
docker客户端和服务器
docker镜像
registry注册中心
docker容器

什么是docker镜像
docker镜像是由文件系统叠加而成的。最低端是一个文件引导系统,bootfs,很想典型的Linux/Unix的引导文件系统

常用的docker命令
systemctl命令是系统服务管理器指令,它是service和chkconfig两个命令组合
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机启动:systemctl enable docker
查看docker概要信息:docker info
查看docker帮助文档:docker --help
列出docker下的所有镜像:docker images
搜索镜像:docker sarch镜像名称
拉取镜像:docker pull centos:7
删除指定镜像:docker rmi $IMAGE_ID
删除所有镜像:docker rmi ‘docker images-q’
查看正在运行的容器 docker ps
查看最后一次运行的容器 docker ps–l
创建容器命令:docker run

什么是dockerfile
dockerfile是一个用来创建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
对于开发人员,可以为开发团队提供一个完全一致的开发环境
对于测试人员,可以直接拿开发时所构建的镜像或者通过dockerfile文件构建一个新的镜像开始工作了
对于运维人员,在部署时可以实现应用的无缝移植

什么是docker-compse
一个一个容器的创建或启动比较麻烦,期望一键操作。这时需要编排工具,而compose是最简单的一个
docker compose 是docker官方编排项目之一,负责快速的部署分布式应用
compose中有两个重要的概念:
服务service:一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
项目project:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义

redis淘汰机制
redis淘汰机制的存在时为了更好的内存,用一定的缓存丢失来换取内存的使用效率

redis的过期策略
redis有两种过期策略,定期删除和惰性删除
定期删除:redis每个100ms随机抽取一些设定了过期时间的key,检查其是否过期,如果过期就删除
惰性删除:在获取某个key 的时候,redis检查一下,如果该key设置了过期时间则判断该过期是否已经过期,如果过期就直接删除,并不返回任何东西

微信登录流程
前台有一个微信登录按钮
点击按钮以后前台给微信发送一个申请请求,微信返回一个二维码,用户扫码后微信询问用户是否要给予授权,用户同意授权以后,微信返回用户的一定数据给前台,前台将授权信息和登录信息返回给后台,后台判断这条信息在数据库中有没有保存过,有保存过的话就证明这个用户是扫过一个码登录的,那样就直接进入首页,如果数据库中没有找到对应的信息,那么就证明,用户是第一次扫码登录,需要进入绑定页面进行绑定,在绑定页面中,输入对应的手机号,点击发送验证码,我们会将验证码发送到对应的手机号上,用户输入手机收到的验证码,点击绑定,前端发送绑定请求进入后台,后台判断验证码和发送的验证码是否相同,如果不相同,返回错误信息,让用户重新输入验证码,如果相同,将信息存储进对应的数据库中,再发挥一个绑定成功的信息给用户查看,最后跳转进官网首页



  1. 手机注册流程 (验证码校验流程)
    答:一.获取验证码
  2. 前台发送请求,将手机号传到后台
  3. 后台service处理业务
    (1)校验
    (2)根据手机号判断当前手机号是否被注册
    (3)未注册,从redis中根据register:phone获取值(值的存贮方式code:时间戳)
    (4)如果有值,根据时间戳判断是否超过一分钟,超过一分钟,使用当前验证码,重新存到redis中,3分钟
    (5)如果没值,生成验证码,保存到redis中(key(register:phone),value(code:时间戳))
    (6)最后将验证码发送到用户手机
    二.注册实现
    1.前台点击注册,将填写的信息传到后台
    2.后台service处理业务
    (1)非空校验
    (2)手机号是否注册
    (3)确认密码校验
    (4)根据手机号从redis中获取验证码,判断是否有
    (5)验证码是否正确
    (6)添加用户表,登录信息表

2.登录流程(包括几个拦截器,作用?用到了哪些知识点?)
答:使用知识点:UUID,redis,Storage存储
1.后台登录接口
(1)非空判断
(2)根据用户名和类型判断用户是否存在
(3)用户名存在,判断密码是否正确
1)获取用户的盐值
2)将用户输入的密码与盐值拼接进行MD5加密
3)密码验证
(4)用户名密码都正确,把用户信息存到redis
1)使用UUID获取token,经用户信息存入redis(token,loginInfo,30,minute)
2)将token和loginInfo返回到前台
2.前台登录实现并且保存loginInfo和token到localStorage,登录成功跳转首页,并展示用户名
3.前台通过axios的前置拦截器将token存到请求头中
4.后台做token的登录拦截器
(1)从请求头中获取token
(2)如果token不为空,根据token获取用户信息
用户信息不为空(已登录),重置redis中的时间30分钟,放行
(3)未登录,权限拦截,返回一个错误{“success”:false,”message”:”nologin”}

5.前台通过axios后置拦截器对后台登录拦截错误进行跳转到登录页面
6.前台也要做拦截-前台拦截器,有些没有发送axios请求的界面也需要登录才能访问

3.redis使用场景?在项目中哪里用到了?淘汰策略?
答:一:使用场景
1.中央缓存 2.计数器应用 3.实时防攻击系统 4.设定有效期的应用 5.自动去重应用 6.队列 7.消息订阅系统 8.排行榜
二:项目中的应用

  1. 存储手机验证码
  2. 存储用户登录信息
    4.fastDfs是啥? 项目中做啥用了?
    答:FastDfs一款开源的分布式文件系统。
    项目中的使用:文件的上传下载

5.说下git常用操作?了解git分支不?
答:常用操作:add,commit,push,pull
git分支:master: 主分支
develop:基于master分支克隆日常开发分支
feature:具体的功能开发分支
release:release 分支可以认为是 master 分支的未测试版
hotfix:线上紧急bug修复分支

6.什么是跨域?怎么解决?
答:跨域是指跨域名的访问,从一个域名的系统去访问另一个域名系统
解决方法:后台编写CORS的跨域过滤器

7.了解restful风格?
答:Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT,PATCH(批量操作))描述操作。

  1. 批量操作怎么写?
    答:前台传ids,后台xml中sql语句使用foreach遍历
  2. spring管理事务?
    答:事务是一组操作,要么都成功,要么都失败
    注解:@Transactional
  3. 权限涉及的表,啥关系?
    答:员工表,员工角色中间表,角色表,角色权限中间表,权限表,菜单表
    11.宠物上下架流程?
    答:1.前台发送上架/下架请求,传宠物ids到后台
    2.service层处理
    Pet根据ids更新state=1/0上下架状态和上下架事件

12.领养?
答:点击领养,将宠物id传到后台
后台实现
(1)下架,根据id获取宠物,设置状态为下架
(2)关联领养的用户,根据登录信息id获取用户信息,将用户信息id存到pet中
(3)更新下架时间
(4)更新pet

  1. 发送邮件?发送短信?
    答:发送邮件:
    1.获取邮箱授权码
    2.发送人的信息配置
    3.发送邮件,设置发送人,邮件主题,邮件内容,收件人
    发送短信:查看运行商API

  2. 领养订单流程?
    答:前台传递数据到后台,后台实现

  3. 获取前台传的参数

  4. 领养流程

  5. 生成订单,获取领养订单表,保存获取地址订单,保存

  6. vue常用指令?
    答:v-model=“表达式” 数据双向绑定
    v-text=“表达式” 设置标签中的文本
    v-html=“表达式” 设置标签中的html
    v-if(else else if)=“表达式” 判断条件
    v-for=“表达式” 循环
    v-on=“表达式” 注册事件
    V-bind=“表达式” 绑定值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值