跳至主要內容
Redis为什么用跳表实现有序集合

前言

近几年针对 Redis 面试时会涉及常见数据结构的底层设计,其中就有这么一道比较有意思的面试题:“Redis 的有序集合底层为什么要用跳表,而不用平衡树、红黑树或者 B+树?”。

本文就以这道大厂常问的面试题为切入点,带大家详细了解一下跳表这个数据结构。

本文整体脉络如下图所示,笔者会从有序集合的基本使用到跳表的源码分析和实现,让你会对 Redis 的有序集合底层实现的跳表有着更深刻的理解和掌握。


Guide大约 24 分钟数据库Redis
访问网页的全过程(知识串联)

开发岗中总是会考很多计算机网络的知识点,但如果让面试官只靠一道题,便涵盖最多的计网知识点,那可能就是 网页浏览的全过程 了。本篇文章将带大家从头到尾过一遍这道被考烂的面试题,必会!!!

总的来说,网络通信模型可以用下图来表示,也就是大家只要熟记网络结构五层模型,按照这个体系,很多知识点都能顺出来了。访问网页的过程也是如此。


Guide大约 5 分钟计算机基础计算机网络
数据冷热分离详解

什么是数据冷热分离?

数据冷热分离是指根据数据的访问频率和业务重要性,将数据分为冷数据和热数据,冷数据一般存储在存储在低成本、低性能的介质中,热数据高性能存储介质中。

冷数据和热数据

热数据是指经常被访问和修改且需要快速访问的数据,冷数据是指不经常访问,对当前项目价值较低,但需要长期保存的数据。

冷热数据到底如何区分呢?有两个常见的区分方法:

  1. 时间维度区分:按照数据的创建时间、更新时间、过期时间等,将一定时间段内的数据视为热数据,超过该时间段的数据视为冷数据。例如,订单系统可以将 1 年后的订单数据作为冷数据,1 年内的订单数据作为热数据。这种方法适用于数据的访问频率和时间有较强的相关性的场景。
  2. 访问评率区分:将高频访问的数据视为热数据,低频访问的数据视为冷数据。例如,内容系统可以将浏览量非常低的文章作为冷数据,浏览量较高的文章作为热数据。这种方法需要记录数据的访问频率,成本较高,适合访问频率和数据本身有较强的相关性的场景。

Guide大约 5 分钟高性能
深度分页介绍及优化建议

深度分页介绍

查询偏移量过大的场景我们称为深度分页,这会导致查询性能较低,例如:

# MySQL 在无法利用索引的情况下跳过1000000条记录后,再获取10条记录
SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10

Guide大约 4 分钟高性能
美团三年,总结的10条血泪教训

推荐语:作者用了很多生动的例子和故事展示了自己在美团的成长和感悟,看了之后受益颇多!

内容概览

本文的作者提出了以下十条建议,希望能对其他职场人有所启发和帮助:

  1. 结构化思考与表达,提高个人影响力
  2. 忘掉职级,该怼就怼,推动事情往前走
  3. 用好平台资源,结识优秀的人,学习通识课
  4. 一切都是争取来的,不要等待机会,要主动寻求
  5. 关注商业,升维到老板思维,看清趋势,及时止损
  6. 培养数据思维,利用数据了解世界,指导决策
  7. 做一个好"销售",无论是自己还是产品,都要学会展示和说服
  8. 少加班多运动,保持身心健康,提高工作效率
  9. 有随时可以离开的底气,不要被职场所困,借假修真,提升自己
  10. 只是一份工作,不要过分纠结,相信自己,走出去看看

原文地址https://mp.weixin.qq.com/s/XidSVIwd4oKkDKEICaY1mQ


CityDreamer部落大约 13 分钟技术文章精选集练级攻略
虚拟线程极简入门

本文部分内容来自 LorinPR

虚拟线程在 Java 21 正式发布,这是一项重量级的更新。

什么是虚拟线程?


Guide大约 5 分钟JavaJava并发
Java 21 新特性概览(重要)

JDK 21 于 2023 年 9 月 19 日 发布,这是一个非常重要的版本,里程碑式。

JDK21 是 LTS(长期支持版),至此为止,目前有 JDK8、JDK11、JDK17 和 JDK21 这四个长期支持版了。

JDK 21 共有 15 个新特性,这篇文章会挑选其中较为重要的一些新特性进行详细介绍:


Guide大约 9 分钟JavaJava新特性