Laiaike's Blog

L的非常階段

双写一致性

双写一致性集中式缓存的三种缓存读写策略 Cache Aside Read/Write Through Write Back 数据库和缓存的一致性双写一致性:写db和写redis的一致性,主要是确保更新数据库后,删除缓存这个操作能够正常执行。(可能有另一线程同时读数据,把脏数据读入缓存;也可能是一些网络故障之类的原因,导致删除缓存的操作失败) 延时双删 先删除缓存 更新数据库 休眠......

接口幂等性

接口幂等性以支付业务为例,如何保证业务幂等性。 并发破坏幂等性,破坏了幂等性,所以要做的是:将查询和更改状态操作加锁,将并行操作更改为串行操作 乐观锁:通过版本号version进行判断 防重表:使用订单号 orderNo 做为去重表的唯一索引 分布式锁:setnx token机制:这种方式分成两个阶段:申请 Token 阶段和支付阶段。 第一阶段,在进入到提交订单页面之前,需要订单系统根据......

分布式锁

分布式锁主动轮询型Redis:SETNX(非阻塞,成功失败都直接返回)解锁操作:1. 检查value 2. 删除记录 要使这个过程原子化,不可拆分,可以使用lua脚本自定义组装同一个redis节点下的多笔操作形成一个具备原子性的事务。 MySQL 建立一张表存储分布式锁记录 基于唯一键的特性 可以新增一个字段标识使用方身份(先检查释放锁动作执行者的身份,身份合法时才进行解锁) 主动轮询型存......

分布式唯一id

分布式唯一id1. UUID32个16进制数,128位,8-4-4-4-12 优点: 性能高,本地生成,无网络消耗 缺点: 不宜存储:太冗长 基于MAC地址生成,可能造成MAC地址泄露 无序,不适合当主键,影响性能 2. snowflake1(sign标识位)- 41(时间戳)- 10(workerId,数据中心+工作机器)- 12位自增序列 缺点: 生成id可能重复,原因可能为: ......

Golang测试

Golang测试testing 为 Go 语言 package 提供自动化测试的支持。通过 go test 命令,能够自动执行如下形式的任何函数: 1func TestXxx(t *testing.T) 测试文件名以_test结尾。 测试类型12345TestXxxx(t *testing.T) // 基本测试BenchmarkXxxx(b *testing.B) // 压力测试,N......

Docker Tutorial for Beginners

Docker Tutorial for BeginnersCourse: Docker Tutorial for Beginners 容器的优点 容器与虚拟机区别 Docker image更小 更快运行 运行的层面不同 基本操作Container is a running environment for image. 12345678910111213141516docker stop ......

Linux备忘

Linux备忘指令下载文件wget:网络下载一个文件并保存在当前目录 压缩解压tar czf xxx.tar.gz:打包压缩 tar xzf xxx.tar.gz:预览 tar tzf xxx.tar.gz:解压解包 .tar是打包后缀.gz是压缩后缀 -c:(create)建立打包文件 -t :查看打包文件的内容含有哪些文件 -x:解打包或解压缩的功能,可以搭配-C(大写)在特定目录解开......

SQL书写建议

SQL书写建议索引失效1. 避免在where子句中使用or连接条件 可能造成索引失效,导致全表扫描。 123456-- 反例select * from user where user_id = 1 and age = 18;-- 正例select * from user where user_id = 1 union allselect * from user where age = 18......

随便记点

随便记点Java特性做备忘。 Java 8 Stream 在树形,分级目录的时候经常看到。 12345678910111213141516171819202122232425262728public class Stream { public static void main(String[] args) { // 1. map L......

责任链模式

责任链模式责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链,通常每个接收者都包含对另一个接收者的引用,请求沿着这条链进行处理。 应用实例:jsp servlet 的 Filter,JAVA WEB 中 Apache Tomcat 对 Encoding 的处理,JS 中的事件冒泡。 实现 创建抽象类AbstractLogger。 ......