乐器之家项目总结

1.项目名称

乐器之家

2.项目概述

随着社会的发展,人们对生活的档次和精神的追求不断提高,越来越多的人们开始学习乐器,丰富业余生活。乐器之家是一款为消费用户和商家提供o2o服务的系统。可以让乐器商家入驻,展示乐器产品(钢琴,吉他,尤克里里……),消费用户根据自身需求可以购买,申请调率,保养,维修,寻主服务,可以线上发布需求,由系统选择合适的商家进行业务对接,结合线下有商家工作人员根据线上指示提供上门服务;也可以根据线上陈列的商店信息去到店请求业务;还提供了乐器的专业知识板块(基础乐理,进阶技术等)可供消费用户选择购买学习。它是一个综合性的平台,有组织机构,用户,服务,乐器,订单,支付等模块;开发时采用前后端分离技术,前端用的是vue+elementui;后端用的是springboot,mybatis框架技术,部署用docker

3.项目人员组成

项目经理1,架构师1,UI设计2,前端2,后端3,测试1,运维1

4.项目现状

并发量2000,即将上线

5.负责模块

5-1:组织机构管理(注册,登录)

5-2:用户管理(注册,登录,微信登录)

5-3:乐器管理(寻主,购买,调率,保养,维修)

6.所用技术

Springboot&mybatis框架,FastDFS保存文件,mysql存储数据,Redis存储登录信息,自动发短信和邮箱技术,百度地图技术,微信三方登录,md5,Vue技术栈: nodejs npm vue-cli elmentui

7.模块小结

7-1:组织机构管理(入驻,登录)

提供一个跳转页面让商家填写必要的信息,包括纯文字如名称,邮箱,密码;也包括文件,需要用fastdfs技术上传至分布式文件系统,提交成功即入驻成功,可以登录进入管理系统,登录用到redis暂存token技术,登录成功后可进入店铺展示产品,查看订单,以及寻主请求

7-2:用户管理(注册,登录,微信登录)

消费用户的注册分为手机注册或者邮箱注册,不同点在于一个是用手机验证码确定手机号为本人,一个是用邮箱发送来确定真实性。验证码身份通过则可以进行下一步至注册成功;登录又分为账号登录或者微信三方登录,账号登录只需要验证账号和密码正确,即可获取token和user进行用户的各种功能如寻主,维护,购买,调率等;微信三方登录需要先确定曾经是否有绑定,是否需要先绑定账号,绑定成功说明之前有过绑定,即一次绑定下次直接通过微信可以登录;其中用到了地址解析工具,负责将参数发给第三方获取access_token和openid,用作令牌和查微信绑定的依据

7-3:乐器管理(寻主,购买,调率,保养,维修)

(1)消费用户可以将所拥有的完好乐器通过寻主请求给商铺,填地址时用到了百度地图技术,可以利用工具计算商铺和用户之间(2)的距离取得最优值;用户也可以购买,调率,保养,维修,通过填写业务单会自动分配商铺进行接应

8.面试题

8-1:跨域以及解决

(1)跨域:是指端口或者域名不同(一级,二级都算)的两个系统不能直接发送请求获取响应,域名相同但请求路径不同不算

(2)解决:前端通过config设置api访问,后端通过过滤器GlobalCorsConfig设置允许访问的域,部署通过nginx设置反向代理发送

8-2:fastdfs是什么,为什么用,哪儿用,怎样用,应注意什么

(1)是什么:fastdfs是由c语言开发的开源分布式文件系统,下分为client,tracker,storage;client为用户端,tracker为管理端,负责调度,将请求的文件存放到哪个storage由它定,storage为存储端,负责存储上传的文件并提供下载;

(2)为什么用:因为上传下载需要空间载体来进行存储,直接存数据库导致负载过大,fastdfs正是有了集群的功效得以解决,由它负责存储,并返回一个文件索引信息(组名+虚拟磁盘路径+数据两级目录+文件名)作为找到对应文件的依据;

(3)哪儿用:需要做上传下载文件例如图片,音频视频的时候会用到fastdfs;

(4)怎样用:用时需要使用封装的工具fastdfsUtil,输入文件名和后缀上传,输入组名+文件名下载

(5)应注意什么:fastDFS上传,下载,删除的返回值分别是String[],byte[],int;String[]返回的是上传文件的组名和文件名,byte[]返回的是下载的文件,int返回的是删除是否成功的标记,0表示成功

8-3:简述redis,队列,存储原理,淘汰策略

(1)redis:是由c语言开发的开源的非关系型数据库nosql中的一种

(2)队列:类似双向电梯先进先出,后进后出,通过list的Ipush,rpush,lpop,rpop实现

(3)存储原理:存储的形式是key-value,支持String字符串,list列表hash字典,set无序集合,zset有序集合;存储位置既可以是内存也可以做持久化于硬盘,支持集群,可设置数据过期时效,读写性能高

(4)淘汰策略:为了保障redis数据都是有效的,会清除掉即将过期的和没怎么使用的数据

8-4:简述邮箱/短信通知流程

(1)邮箱通知:先获取邮箱的授权码,再引入jar,添加配置文件,封装工具类利用javaMailSender代理对象进行发送

(2)短信通知:先在网建短信通获取秘钥许可,再导入jar,封装工具类利用HttpClient代理对象executedMethods发送

8-5:简述百度地图技术

百度地图是百度提供的地图工具,用来计算最短距离,给系统分配店铺处理用户请求的重要依据

8-6:简述微信三方登录流程

(1)用户点击三方登录弹出扫码框,此时拿到url,解析出code,并设置绑定跳转页面的binderURL,将常量中的appid和secret结合code通过HttpClient.executeMethod一起发给微信官方得到令牌access_token和openid

(2)openid是核查用户是否曾经有过绑定的标识,通过它查询微信用户表可以知道,如果能查出对应上就说明登录成功,否则根据binderURL的设置跳转到绑定页面

(3)绑定的信息输入账号密码正确说明用户注册过,登录成功,重新把微信用户信息和账号信息进行关联补充;账号对了密码错了说明用户密码丢失,登录不成功,重新绑定;账号和密码都错了则表示用户从来没有注册过,重新注册,并且将微信用户信息和账号信息同样做补充

8-7:简述支付宝支付流程

(1)准备支付环境,根据支付宝账号获取参数,有AppId,网关地址,秘钥设置,这里需要使用开发助手生成秘钥,将私钥和支付宝公钥放入数据库

(2)用户点击确认提交订单后,会将填写信息连同订单一起生成支付单,支付单和店铺的支付宝信息可以得到跳转地址跳转至支付页面,用户操作完毕提交给支付宝获取回调

(3)结合之前配置的回调接口,判断支付宝返回的信息中对于是否已支付成功的信号,支付成功则修改支付单、订单、订单详情的状态为已支付

8-8:简述加密技术

加密技术分为不可逆加密(MD5)和可逆加密,可逆加密又分为对称可逆加密和不对成可逆加密;对称的可逆加密有且只有一个秘钥k,明码经过k得到暗码,暗码可以通过k反解出明码;不对成的可逆加密有一对秘钥,分为公钥k1,私钥k2,公钥加密则必须用私钥解密,反过来也是

8-9:简述定时器Quartz技术

由Java开发的定时器工具,类似java.util.Timer,但功能上更强大,保持调度定时状态,管理作业更方便;其核心在于scheduler调度容器,里面可以装很多个JobDetail事件和Trigger设定运行时间;Trigger又分为SimpleTrigger特定间隔触发和CronTrigger按日程触发

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值