结尾有总结: 第一部分:分布式事务的需求来源 传统本地事务的ACID原则 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency)事务前后数据的完整性必须保持一致。比如A有500B有500,A转账给B 500 最终两人金额总和依然为1000才对 隔离性(Isolation)事务的隔离性是多个用户并发访问数 More
完美测试地址 https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 插入四种情况。默认新插入都是红色 1.Z是根节点 Z变色为黑色 2.Z的叔叔是红色 Z的父亲,祖父,叔叔 变色, 完美测试5,3,7,6 3.Z的叔叔是黑色,并局部呈现直线 3.1 旋转祖父,直线向右,向左旋,反过来向右 3.2 Z原来的父亲和祖父 More
1.索引的本质是什么 2.MYSQL为何多数用B+Tree,而不是其他 3. BTree的特点 4. B+Tree的特点 4.1 为何B+Tree叶子节点多了一个指针 4.2 为什么B+Tree上层节点不存储数据 5. 两种不同的索引分别存储文件什么样 6. Innodb索引实现原理 6.1 为什么innodb表必须有主键,并推荐【整型自增】 6.2 为什么非主键索引结构叶子节点存储的是主键 More
MQ消息队列三个典型的应用场景 异步处理 使用前:注册--->发邮件--->发短信 如果连续处理,每个动作为50ms,那么一共花费150ms 使用后:注册--->MQ队列 MQ队列-->发邮件 (异步) MQ队列--->发短信 (异步) 用MQ队列服务缩短为55ms,注册50ms,写入MQ 5ms 应用解耦 使用前:订单系统--->库存系统 下单后减去库存,订单系统会依赖库存系统稳定性 使 More
1. 详情页的需求 1.多模板 2.商品详情页 a1.时效性低的数据 标题,图片,属性,商品介绍,规格参数 a2.时效性高的数据 价格,促销,库存,广告词 2. 访问特点 1.离散访问,热点数据少 2.活动时期流量暴增 商品设计思路图 触发路径 商品管理员修改一个商品的详情 商品服务把这个信息发送给MQ队列 监听MQ队列的数据缓存服务,更新这个商品的详情缓 More
整理完毕的笔记,收获很大 视频 https://www.bilibili.com/video/av667586995/ 提交订单 1. Redis里查库存-库存充足-扣减成功-更新库存 并发测试三单,从50变成49(其实为47),库存会超卖 2. synchroinzed(productID) 上锁 单机可以,多机器就拉倒了 synchroinzed JVM级别的锁 3. 分布式锁 锁标记productID,多方机器共享锁标记 More
章节1:Java中wait方法和sleep的不同之处 区别1: a.wait来自Object方法 b.sleep来自Thread方法 区别2: a.sleep 让当前方法休眠1000毫秒,休眠后自动醒来,不一定要是锁对象 b.wait 传入毫秒参数,效果和sleep方法相似,但是比较麻烦,wait方法必须由锁对象调用 锁对象必须存放在同步当中 (不建议wait(1000) )建议wait() More
秒杀活动对稀缺或者特价的商品进行定时定量售卖,吸引成大量的消费者进行抢购,但又只有少部分消费者可以下单成功。因此,秒杀活动将在较短时间内产生比平时大数十倍,上百倍的页面访问流量和下单请求流量。 秒杀活动可以分为3个阶段: 秒杀前:用户不断刷新商品详情页,页面请求达到瞬时峰值。 秒杀开始:用户点击秒杀按钮,下单请求达到瞬时峰值。 秒 More
苹果系统有一个GateKeeper保护机制(自 OSX 10.5 加入)。从互联网上下载来的文件,会被自动打上com.apple.quarantine标志,翻译过来就是免疫隔离,系统根据这个附加属性对这个文件作出限制。 在安装软件的时候需要移除quarantine属性,步骤如下: 1、开启任何来源代码 打开终端,输入sudo spctl --master-disable然后回车,输入电脑密码后回 More
总结: 单机互斥锁 1. SET KEY Value PX milliseconds NX SET 商品ID 线程ID PX 30000 NX 1.PX 防止锁过期,NX互斥 2.线程ID 记录下来,作为唯一值 3.释放锁验证value,不能让别人的线程,解了别人的锁。 2. 集群锁 RedLock 假设集群5个节点 P1.获取当前Unix时间,毫秒为单位 P2.依次从5台机器,相同的KEY 和 唯一性的Value请求锁,为每 More