Redis 的 ziplist 和 listpack 有什么区别
pren 发布于 2026-09-22
在 Redis 的底层数据结构中,ziplist(压缩列表)和 listpack(紧凑列表)是两个经常被拿来比较的角色。如果你在准备 Redis 面试,或者阅读 Redis 源码,一定会遇到这两个名字。它们都为了节省内存而生,都用于存储小规模数据,但设计哲学和实现细节有本质区别。...
阅读(15)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Redis 的底层数据结构中,ziplist(压缩列表)和 listpack(紧凑列表)是两个经常被拿来比较的角色。如果你在准备 Redis 面试,或者阅读 Redis 源码,一定会遇到这两个名字。它们都为了节省内存而生,都用于存储小规模数据,但设计哲学和实现细节有本质区别。...
阅读(15)评论(0)赞 (0)
pren 发布于 2026-09-22
一、什么是 Trait 在 PHP 5.4 中,官方引入了一个全新的代码复用机制——Trait。官方手册对它的定义是: Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 m...
阅读(22)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 面试中,IPC(进程间通信)是一个高频考点。管道、消息队列、信号量、套接字、共享内存……这些名词你大概都能说上来,但当面试官追问“为什么共享内存是最快的 IPC”以及“shmget 和 mmap 到底怎么选”时,很多人就开始含糊了。这篇文章就把这两个问题彻底讲清楚...
阅读(18)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Redis 的众多数据结构中,List(列表)是非常常用的一种。早期版本的 Redis 使用 ziplist 和 linkedlist 两种编码方式来实现 List,但在 Redis 3.2 之后,引入了一种新的底层结构——quicklist,它结合了 ziplist 和 l...
阅读(18)评论(0)赞 (0)
pren 发布于 2026-09-22
在 PHP 面试中,arraymap、arraywalk 和 arrayfilter 是三个经常被拿来对比的数组函数。它们都可以对数组中的每个元素执行某种操作,但各自的设计目的、返回值、回调参数和使用场景有显著差异。很多候选人在实际开发中能“用对”,却未必能“说清”。本文将从底层...
阅读(23)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 系统编程的面试中,信号(Signal)、信号量(Semaphore)以及信号处理函数(Signal Handler)是高频考点,也是容易暴露候选人基本功是否扎实的领域。很多候选人对基本概念对答如流,但在追问细节时却频频踩坑。本文梳理了这三类知识点中常见的面试陷阱,...
阅读(19)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Redis 的 Set 类型底层实现中,intset 和 hashtable 是两种最常见的编码方式。理解它们之间的转换条件,不仅是面试中的高频考点,也是掌握 Redis 内存优化思想的关键。本文将从底层结构出发,系统梳理 intset 与 hashtable 的转换触发条件...
阅读(16)评论(0)赞 (0)
pren 发布于 2026-09-22
文件上传是 Web 应用中最常见的功能之一,也是安全漏洞的高发区。在 PHP 面试中,"如何安全处理文件上传"几乎是一道必考题。很多候选人只能答出"检查扩展名"或"用 moveuploadedfile",但真正安全的文件上传处理远不止这些。本文将从攻击面出发,系统梳理 PHP 文...
阅读(20)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 后端开发面试中,I/O 模型几乎是绕不开的考点。很多候选人对这几个概念背得滚瓜烂熟,但一旦面试官追问“select 和 epoll 的本质区别是什么”“异步 I/O 到底异步在哪里”,就容易卡壳。这篇文章从面试实战角度出发,帮你把这四种 I/O 模型讲清楚、讲透彻...
阅读(16)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 作为一款高性能的内存数据库,其内存管理机制一直是面试中的高频考点。很多开发者在使用 Redis 时,只关注它的命令和数据结构,却忽略了底层的内存管理细节。其中,对象共享机制和 refcount 引用计数是理解 Redis 内存优化的关键。本文将从底层实现出发,带你彻底...
阅读(17)评论(0)赞 (0)