- git分支你们是怎么管理的?
- 设立保护分支 通常也就是发布分支(一般是master分支);
- 所有开发者建立自己dev分支进行开发
- 需求开发完成后 首先基于 master 分支进行 rebase 操作
- 然后提交合并请求
- 有权限的人对代码进行review 代码等通过规范后合并到主分支
- 什么是幂等性?接口如何保证幂等性?参考
幂等性概念:对于同一个方法或API接口等,参数不变的时候,调用一次和调用多次对系统的状态产生一样的影响.
- 查询操作 数据库 select 操作天然是幂等性的
- 删除操作,调用一次和多次都是将指定的数据删除(可能返回的数据不一样,删除的数据不存在,返回0,删除的数据多条,返回结果多个)
- 数据库建立唯一索引,例如主键,唯一键,对数据操作的时候使用唯一索引作为条件
- 使用token机制
- 悲观锁(注意建立索引,通过索引字段操作,否则可能会导致全表加锁)
- 乐观锁
- 分布式系统中使用分布式锁对资源加锁,(分布式锁一般使用redis的setnx指令完成,setnx指令存在缺陷,set(key,1,30,NX))
- 对外接口如微信支付等接口通过 prepayid 唯一确定支付订单,防止同一订单多次支付的情况.
- @Transaction 控制事物不生效的场景参考
- 数据库引擎不支持事务,数据库底层不支持事务,则注解无能为力
- 数据源没有配置事务管理器(如:Springboot中没有配置@EnableTransactionManagement)
- 方法不是public
- @Transactional 注解属性 propagation 设置错误(使用了 NOT_SUPPORTED)
- 同一个类中 一个方法调用了加了@Transactional注解的方法,此时事务失效
- 方法中的异常没有抛出来,被try catch吃了
- @Transactional 注解属性 rollbackFor 设置 监视的异常类型匹配不上
网友评论