当周杰伦把QQ音乐干翻的时候,作为程序猿我看到了什么?
点击蓝字关注我吧
1
别人都会唱了,而我还没付钱!
1
知识结构的差别
导致我们看的角度不同
主角迈克进入监狱救他哥哥,他走进了监狱,看到了那所监狱。
那一瞬间,我才发现迈克是个建筑学家。
他看到的监狱和我看到的监狱根本不是同一个监狱,。
我看到的是囚牢、操场、移动的犯人和狱卒。
而迈克一走进去,他看到的是通风管道、下水管道、紧急通道,他看到了墙后面所有的东西。
我这时意识到了一点,建筑学家跟我们因为知识背景和知识框架的不同,我们看到的是两个不一样的世界。
这是知识结构的差别带来的我们眼睛看到的世界的截然不同。
中间的架构图是我随便找的,和QQ音乐无关
1
正文开始
1
缓存击穿
缓存击穿的概念
缓存击穿
缓存击穿的解决方案
String get(String jay) {String music = redis.get(jay);if (music == null) {//nx的方式设置一个key=jay_lock,//value=aiwobieku_lock的数据,60秒后过期if (redis.set("jay_lock", "aiwobieku_lock","nx",60)) {//从数据库里获取数据music = db.query(jay);//构建数据,24*60*60s后过期redis.set(jay, music,24*60*60);//构建成功,可以删除互斥锁redis.delete("jay_lock");} else {//其他线程休息100ms后重试Thread.sleep(100);//再次获取数据,如果前面在100ms内设置成功,则有数据music = redis.get(jay);}}
}
后台续命的另一种展示
永不过期
周董发新歌,鹿晗爱晓彤,唱跳rap和篮球的流量。
这个需求特别急,最好明天就上线。上线流量马上来,你的系统要抗住。
熬夜加班通宵干,终于爆肝弄上线。结果上线没动静,他说商户不接了。
1
缓存穿透
缓存穿透
比如明明是周杰伦的演唱会,你冲过保安大哥,上台对周董说:"给我来个林俊杰的签名"。
最可恶的是你也知道,周杰伦那里没有林俊杰的签名。
恶意请求,占用资源。当有成千上万这样的恶意请求的时候,你不做处理,就会给周杰伦,哦不,数据库带来压力。
缓存穿透的解决方案
缓存空对象
第一个问题:如果在某个时间,缓存为空的记录,在数据库里面有值了,你怎么办?
解决方法一:设置缓存的时候,同时设置一个过期时间,这样过期之后,就会重新去数据库查询最新的数据并缓存起来。解决方法二:如果对实时性要求非常高的话,那就写数据库的时候,同时写缓存。这样可以保障实时性。解决方法三:如果对实时性要求不是那么高,那就写数据库的时候给消息队列发一条数据,让消息队列再通知处理缓存的逻辑去数据库取出最新的数据。
第二个问题:对于恶意攻击,请求的时候key往往各不相同,且只请求一次,那你要把这些key都缓存起来的话,因为每个key都只请求一次,那还是每次都会请求数据库,没有保护到数据库呀?
本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。
相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。
看到了吗,redis不仅仅是拿来做缓存的。这就是一个知识点呀。
1
缓存雪崩
缓存雪崩的解决方案
redis.set(key,value,10*60+RandomUtils.nextInt(0, 60),TimeUnit.SECONDS)
鲁棒性(robustness)就是系统的健壮性。它是指一个程序中对可能导致程序崩溃的各种情况都充分考虑到,并且作相应的处理,在程序遇到异常情况时还能正常工作,而不至于死机。
1
缓存之外
2000000/30/60=1111
1
总结
知识结构的差别,带来的我们眼睛看到的世界的截然不同。
1
表白这个男人
往期精彩回顾
图:why技术
文:why技术
排版:why技术
扫码查看更多内容
当周杰伦把QQ音乐干翻的时候,作为程序猿我看到了什么?相关推荐
- 音乐翻唱软件测试初学者,音乐APP听歌识曲大评测,QQ音乐独家“翻唱识别”领跑...
原标题:音乐APP听歌识曲大评测,QQ音乐独家"翻唱识别"领跑 不知道大家有没有遇到这样一种情况,看综艺时,突然听到一首很好听的歌曲,但是就是不知道歌名,在心里急得呀. 每每遇到这 ...
- 程序猿转行,干了2个月销售,经验总结分享
干了10年的程序猿,没啥经验可分享,干了2个月类似销售的工作(因为实际没卖东西,所以只能说是类似),有不少经验想分享. 以下信息根据这2个月经验,主观上分析总结得出,纯属娱乐,请勿对于入座,切记切记! ...
- python爬取qq音乐周杰伦_Python爬取20万条评论,告诉你周杰伦为啥弄崩QQ音乐?
作者 | 哈哈浩 责编 | 伍杏玲 9 月 16 日晚间,周董在朋友圈发布了最新单曲<说好不哭>. 发布后,真的让一波人哭了,一群想抢鲜听的小伙伴直接泪奔. 因为 QQ 音乐直接被搞崩了! ...
- Python 爬取 20 万条评论,告诉你周杰伦新歌为啥弄崩 QQ 音乐?
作者 | 哈哈浩 责编 | 伍杏玲 9 月 16 日晚间,周董在朋友圈发布了最新单曲<说好不哭>. 发布后,真的让一波人哭了,一群想抢鲜听的小伙伴直接泪奔. 因为 QQ 音乐直接被搞崩了! ...
- 不愧是击溃服务器的男人!周杰伦《说好不哭》刷新QQ音乐单曲纪录
9月16日晚11点,周杰伦2019新单曲<说好不哭>首播,歌曲一经推出,瞬间刷屏朋友圈,甚至将QQ音乐平台一度搞崩溃. 9月17日午间,QQ音乐官方微博称,周杰伦全新数字单曲<说好不 ...
- 击溃音乐服务器第一人!周杰伦新歌首发,QQ音乐服务器一度崩溃
一直以来,在大家眼里,只有微博服务器是"不堪一击"的,明星结个婚,宣布个恋情,微博都会崩.但昨天晚上,击溃音乐平台服务器的男人出现了. 预热多天后,周杰伦的新歌<说好不哭&g ...
- python爬取qq音乐周杰伦首页歌词
#爬取qq音乐周杰伦首页歌词 #未名编程 import requests from bs4 import BeautifulSoup import json import reURL = 'https ...
- 怎么在网易云或者QQ音乐上上传自己翻唱的歌
假期无聊,在全民K歌上唱了几首歌,有朋友想下载来听,我就找了一下怎么将翻唱的歌曲上传到网易云或者QQ音乐.就弄了一下,发现目前只能做到自己听,其他人搜索不到(可以直接把音频发给其他人下载保存)看看以后 ...
- 爬取QQ音乐(周杰伦)
首先呢,我们打开QQ音乐搜索周杰伦 https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq. ...
最新文章
- 博客重构 / Blog Refactoring
- redis 基础操作学习
- python函数和方法概念_第48p,什么是函数?,Python中函数的定义
- 【干货】吴甘沙:你是数据,我即生意
- @SpringBootApplication揭秘
- FreeEIM 在盛大的开幕仪式结束之后
- 彻底搞清 Flink 中的 Window 机制
- Day6 数据清洗(2)
- android 支付宝 地图,利用百度地图实现支付宝“到位”功能(地图模式)
- Asp 解析 XML并分页显示
- 在 js 中应用 订阅发布模式(subscrib/public)
- Java程序员转行可以做什么?程序员
- 企微开发SDK下载地址
- Android 按钮点击设置静音
- 专访中国数据科技集团CEO林道进:把无序变有序 让数据更有价
- 【转载】KAB春纳 | 一同乘风破浪吧
- 小程序上传头像图片裁剪
- 아프리카 BJ 박현서,
- MBR膜生物反应器,生物反应器原理-世来福
- 使用PostgreSQL以正确的顺序获取名称
热门文章
- PDPS软件:机器人仿真动画视频输出功能介绍与使用方法
- Match Points CodeForces 1156C 二分答案
- java中文分词的简单实现
- qt 获取当前程序运行路径_Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法...
- 矩阵的对数运算公式_2021高考总复习数学对数与对数函数
- 《Windows驱动开发技术详解》学习笔记
- python 多态app_多态简介 | Python从入门到精通:高阶篇之三十三-阿里云开发者社区...
- Android多点触控揭秘
- ROCKCHIP PWM模块开发指南
- 实操石英钟改5V充电器供电