获得徽章 1
#青训营笔记创作活动#
2月22日 打卡day29
缓存与数据库的数据一致性问题
先更新缓存,在更新数据库
先更新数据库在更新缓存
先删除缓存再更新数据库
先更新数据库再删除缓存
无论选择哪种方式操作,在高并发的环境下都可能导致数据库与缓存的数据不一致,采用重试策略、消息队列异步构建缓存、订阅日志策略、延时双删策略可能有效的减少数据不一致的问题产生。
展开
评论
#青训营笔记创作活动#
2月18日 打卡day28
今天学习redis的zset实现

跳表是可以实现二分查找的有序链表
每个元素插入时随机生成它的 level
最底层包含所有的元素
如果一个元素出现在 level(x),那么它肯定出现在 x 以下的 level 中
每个索引节点包含两个指针,一个向下,一个向右
跳表查询、插入、删除的时间复杂度为 O(log n),与平衡二叉树接近
展开
评论
#青训营笔记创作活动#
2月15日 打卡27日

大数取模运算是不可逆的,因此他人无法暴力解密。但是结合欧拉定理,我们可以选取出合适的p(公钥), q(私钥), N(用于取模的大数),让原本不可逆的运算在特定情况下,变得有那么点“可逆”的味道。数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密。
HTTPS相当于HTTP+TLS,目前主流的是TLS1.2,基于TCP三次握手之后,再来TLS四次握手。
TLS四次握手的过程中涉及到两对私钥和公钥。分别是服务器本身的私钥和公钥,以及CA的私钥和公钥。
展开
评论
#青训营笔记创作活动#
2月14日 打卡26日
限流方式
计数器:
优点:固定时间段计数,实现简单,适用不太精准的场景;
缺点:对边界没有很好处理,导致限流不能精准控制。
滑动窗口:
优点:将固定时间段分块,时间比“计数器”复杂,适用于稍微精准的场景;
缺点:实现稍微复杂,还是不能彻底解决“计数器”存在的边界问题。
漏桶:
优点:可以很好的控制消费频率;
缺点:实现稍微复杂,单位时间内,不能多消费,感觉不太灵活。
令牌桶:
优点:可以解决“漏桶”不能灵活消费的问题,又能避免过渡消费,强烈推荐;
缺点:实现稍微复杂,其它缺点没有想到。
Redis + Lua 分布式限流:
优点:支持分布式限流,有效保护下游依赖的服务资源;
缺点:依赖 Redis,对边界没有很好处理,导致限流不能精准控制。
展开
评论
#青训营笔记创作活动#
2月13日 打卡day25
在我们使用idea日常开发中,有许多的插件帮助我们开发,如Key Promoter X可以帮助我们快速学习idea的快捷将提高开发效率;RestfulFastRequest可以快速测试接口;GsonFormatPlus根据json生成实体类且支持lombok插件
展开
评论
下一页
个人成就
文章被点赞 10
文章被阅读 1,435
掘力值 187
收藏集
4
关注标签
29
加入于