关注
跳表能否代替 B+ 树?为什么?
答案是不能,原因就是因为跳表的不同层高节点的数量是随机的,也就是说在最坏的情况下一个查询的时间复杂度会退化成O(n),而b+树的查询时间复杂度却是很稳定的O(logmn),同时跳表高度的随机化也会导致在海量数据的情况下磁盘IO的次数要比b+树多。所以应用是磁盘-based 或需要高效范围查询的话,B+ 树更合适。
为什么 Redis 的有序集合不使用 B+ 树,而选择跳表?
主要原因就是因为跳表的实现简单,代码易于理解和维护,没有了b+树随机插入一个节点的时候会出现的页分裂的问题
现有 1000 万条 URL,内存限制为 10 MB,如何对这些 URL 进行排序?
先进性分块,然后对块中url进行排序,最后我们在内存中维护一个最小堆,然后遍历一次所有的分块push所有分块的最小元素,遍历完成后再pop堆顶元素到一个新的磁盘分块中,同时从被弹出URL所在的文件块读取下一条URL,保证堆的大小一直≤分块的数量。
现有 1000 万库存,要求设计一个支持 20 万 QPS 的秒杀系统,仅考虑减库存环节,如何实现?
首先就是我们可以明确的知道数据库是支持不了这么高的QPS的,所以我们可以引入消息队列起到一个削峰的作用。同时还需要考虑消费函数的幂等性处理,我们可以给每一个商品的库存绑定一个当前版本号,然后生产者在生产扣减库存的操作的时候添加一个递增的操作版本号,这样我们在执行消费函数的时候需要比较当前版本号是不是大于数据库中的版本号,如果大于才执行扣减库存的操作。
当然还可以使用redis做一个预扣减库存的操作,库存预扣减成功后,并不会同步操作数据库生成订单。而是立即返回用户“抢购中”状态,同时将订单信息发送到消息队列
查看原帖
1 3
相关推荐

点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
- 1... JVM调优1.3W
- 2... 前端面试,八股怎么准备?(附速通版)6471
- 3... #校招笔试##恒生电子#数据库没学过,第二道A出来了,第三道没A出来,后面有思路但是已经懒得写了5429
- 4... 如何委婉地拒绝offer4130
- 5... 双非秋招记录(下)3405
- 6... 国庆有感 测开劝退3201
- 7... 就这样上班一年了,选对公司跟选对人是一样的。。3156
- 8... #校招笔试##中国电信#还是有点难度的,专业知识考的很广,行测题做了好久(比代码都久),代码题倒是不难,最后一题要点技巧,其他都是签到送分3078
- 9... 分享一个很友好的公司2773
- 10... 【彻底战败】秋招11次一面挂2525
正在热议
更多
# 国庆后,我的返工状态 #
12276次浏览 63人参与
# 校招求职有谈薪空间吗 #
170834次浏览 2156人参与
# 爱玛科技集团求职进展汇总 #
13736次浏览 136人参与
# 一觉醒来,穿越回国庆前 #
21703次浏览 87人参与
# 找工作前vs找工作后的心路变化 #
23012次浏览 185人参与
# 职场中你干过哪些“蠢”事 #
121141次浏览 684人参与
# 深信服秋招来了 #
277101次浏览 2910人参与
# 租房前辈的忠告 #
254177次浏览 7088人参与
# 26届秋招投递记录 #
41057次浏览 475人参与
# 电信求职进展汇总 #
17077次浏览 112人参与
# 非技术岗是怎么找实习的 #
253948次浏览 2519人参与
# 央国企投递记录 #
118443次浏览 1505人参与
# 产品人专业大盘点 #
57312次浏览 300人参与
# 实习生应该准时下班吗 #
286845次浏览 1574人参与
# 腾讯音乐求职进展汇总 #
129956次浏览 984人参与
# 找工作有哪些冷知识 #
156228次浏览 2437人参与
# 教师节,你送祝福了吗 #
7347次浏览 55人参与
# 薪资爆料 #
165624次浏览 1379人参与
# 面试被问“你的缺点是什么?”怎么答 #
147872次浏览 1783人参与
# 蚂蚁求职进展汇总 #
122021次浏览 1153人参与
# 大厂面试初体验 #
63927次浏览 309人参与
# 求职你最看重什么? #
102782次浏览 601人参与