摘要:
前言: 在分布式系统下,服务之间相互调用,必然会存在调用失败并且进行重试的情况,在某些情况下就需要做好防重幂等。 防重和幂等是什么? 防重:避免产生重复数据 幂等:除了避免产生重复数据之外,还要求每次请求都返回一样的结果 什么情况会导致重复? 发送方发送相同的请求到服务端。 前端多次发送相同的请求到 阅读全文
摘要:
分布式事务概念 在微服务架构下,一个大的操作往往由不同的小操作组成,并且这些小操作分布在不同的服务器上,对应不同的数据库,分布式事务需要保证这些小操作要么全部成功要么全部失败,即保证数据一致性。 例如一个支付业务: 在某些业务场景下,用户发起支付申请,只要申请成功,就可以做其他事情。 正常流程: 系 阅读全文
摘要:
在开发中,遇到了多次需要删除重复数据并且根据条件保留一条的情况,因此就做个总结。 以此表为例: -- 用户表 create table t_user ( id bigint auto_increment primary key, name varchar(20) not null, password 阅读全文
摘要:
分布式锁的特点 互斥性 锁超时 可重入性 支持阻塞和非阻塞 性能好 Redisson实现分布式锁示例 public class DistributedLockerImpl { private RedissonClient redissonClient; //加锁 public boolean try 阅读全文
摘要:
静态代理 代理类自己编写,在编译器已经确认了代理类。 实现步骤 1.定义接口及其实现类 public interface SayHelloService { void say(); } public class SayHelloServiceImpl implements SayHelloServi 阅读全文
摘要:
1.全局锁 对整个数据库实例进行加锁 全局读锁: Flush tables with read lock 加锁之后,其他线程的增删改、ddl等语句将被阻塞 使用场景:全局逻辑备份 2.表级锁 表锁 lock tables … read/write 在某个线程A中执行 lock tables t1 r 阅读全文
摘要:
通常情况下,业务层抛出一些业务异常,controller层不能直接将异常堆栈信息返回给页面,而是将异常信息封装起来,将有用的信息提示出来,全局异常处理器就可以做这件事情。 @RestControllerAdvice:@ControllerAdvice和@ResponseBody的组合,捕捉 @Con 阅读全文
摘要:
Cron表达式 定义 计划任务,是任务在约定的时间执行已经计划好的工作。 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。 Cron的两种语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Year 阅读全文
摘要:
MySQL慢查询定义 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”,也包括了INSERT、DELETE、UPDATE、CALL等DML操作。 MySQL慢查询的体现 慢查询主要 阅读全文
摘要:
在实操之中,对于join、left join、right join通常情况下也是仅仅用到了left join,对于其他几种,心存疑惑,因此对几种join查询、以及原理做个记录。 1.left、right、inner join 的区别 创建表t1、t2 CREATE TABLE `t2` ( `id` 阅读全文