设计模式和技术场景(面试篇)

单例模式

确保一个类只有一个实例,并提供一个全局访问点,日志记录器、配置管理器等。

工厂方法模式

实现解耦
在这里插入图片描述
在这里插入图片描述

抽象工厂模式

在这里插入图片描述

在这里插入图片描述

策略模式

在这里插入图片描述

策略+工厂

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

责任链模式

拦截器、过滤器
在这里插入图片描述

单点登录

在这里插入图片描述

Cookie,Session,Jwt,token

cookie

客户端向服务器发起请求,在服务器通过账号密码验证之后,将username 返回存储到浏览器的cookie 中,每次请求携带这个cookie
问题:cookie 是依赖于客户端浏览器的,又被篡改的风险;cookie 大小只有4kb ;用户可能会禁用cookie

session

客户端向服务器发起一个登录情书,服务器验证账号密码通过后,在服务器session 中保存用户名,然后在相应中添加一个setcookie 存储session id 客户端自动保存到session中,每次请求携带这个cookie 到服务器中验证
问题:session 仍然依赖于浏览器的cookie 的;
session保存在服务器端,会占用服务器的空间;在集群分布中存在一些问题,比如,我们再登录时候访问服务器1,里面保存了我们的session 信息,但是我们下一次请求可能请求的是服务器2,但是服务器2中没有我们的session 信息,它就认为我们没有登录。

jwt

客户端向服务器发起一个登录情书,服务器验证通过后,生成一个token ,返回给前段,eoken包含三个部分
header 存放算法和jwt类型,
payload 存放数据,不能存放私密数据,因为他是没有加密的,
signature 保存前将部分经过base 64编码得到数据相加再加上私钥,经过header中算法加密得到的,保证jwt 安全性
后面每次请求在请求头中携带这个token,后端验证后signature,放行。

权限

在这里插入图片描述

棘手问题

在这里插入图片描述

SQL优化
在项目完成的初期,项目的性能还是可以的,但是当数据积累到一定量的时候,数据库的查询速度变慢,我们分析发现时SQL性能存在问题,我们对所有的SQL进行和检查和优化,使用explain来查询SQL的执行计划,查看索引命中情况,找出潜在的性能瓶颈并进行相应的调整。主要是做了一下的优化:
1、选择合理的字段类型,char固定长度字符串,varchar可变长度字符串
2、尽量避免使用select来查询数据,使用select查询不能走覆盖索引,会产生回表。
3、用户表和订单表(订单表>用户表)小标驱动大表(in用于左边大表右边小标表,exists适用于左边小表,右边大表)
4、连接查询(join)来代替子查询
5、不使用!= 操作符,使用in代替
6、避免使用%开头的模糊查询

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值