基础知识扫盲总结202005

建立索引的原则:

 

1.建立索引的列的重复度不能太高

2.条件列不能参与计算

3.不能使用函数

4.条件中不能使用范围

5.不要使用like '%c'

6.条件中用or

    a=0 or b=1 or c=2 or d=4 只要其中一列没有索引就无法命中

7.最左前缀(a,b,c,d) 只适用于and条件的列,如果出现范围,从出现范围的字段开始就失效,必须带着最左侧的列

    只要不带a就无法命中索引

    a = 1 or b = 2   无法命中索引

    a = 1 and b>100 a可以命中索引 b,c,d无法命中

    a>200 无法命中索引  因为联合索引一旦使用范围,从使用范围开始之后的索引都不生效   

 

 

跨域问题:

 

https://blog.csdn.net/yup1212/article/details/87633272

协议+域名+端口 唯一去掉一个域

跨域的安全问题:通过拿到正常cookie,伪装请求(csrf token)

解决跨域:

1:jsop:本质上是 前后端约定一个函数规范,前端传入callback函数名,后端输出的数据,是包装在这个函数名里面。(特数据的数据结构),限制:get请求

2:后端返回头,加入允许跨域的标识。

 

3:前端服务器转发,

 

数据库事务隔离级别

读未提交

读已提交

不可重复度读

欢读

 

 

Spring 事务传播

7个传播级别:

常见的的:

requered,如果有事务,则加入,如果没事务,则创建

Support:是否使用当前事务,如果没有事务,则按非事务执行

Mandatory:则抛错

Requeired_new:新建事务,如果当前存在当前事务,则挂起

Not_support:以非事务的形式执行操作,1:存在当前事务,则挂起,Never:2:如果存在当前事务,则抛出异常

 

总结:是否有事务?是否使用当前事务?新建事务?非事务执行?

 

 

订单-买家-卖家 分表规则设计

要求:允许 卖家、买家单独查看订单。

难点:如果以订单+买家+卖家组合为分表建,  卖家、买家 都无法单独查询

 

思路:冗余数据,买家+订单、卖家+订单,订单+卖家+买家。。。

 

分布式锁

锁超时策略:redession:watch dog

可重入:key设计

可靠性:互斥、死锁(过期)、容错、自旋重试(+超时)。

 

 

 

幂等建设计

要求:如何区分出 是重试还是2次提交?

题目:

如果一个用户分两次下单,购买的商品都是一样的。

第一次请求:user1:购买一个商品product1; 

第二次请求:user1:还是购买一个商品product1;

 

思路:

1:全局唯一键,在创建订单前生成,并通过DB的唯一性约束做幂等

2:根据全局唯一建,读取流水表+订单,如果有,则幂等返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值