0%

前言

Redis中,整数集合是集合键的底层之一。

当一个集合只包含整数元素,且这个集合中元素个数不多的情况下,Redis就会使用整数集合作为集合键的底层实现。

1. 整数集合的实现

阅读全文 »

跳跃表简介

跳跃表是一种以O(log N)期望时间支持查找、插入、删除操作的、有序的数据结构。其性能和红黑树相当,且跳跃表实现更为简单。

如何理解”跳跃“二字

阅读全文 »

问题描述

root进程调sem_open(XXX, O_CREAT, 0666, 1)创建信号量后,非root进程使用sem_open打开同一个信号量失败,报Permission Denied

原因分析

非root进程调用sem_open, 以O_CREAT方式打开信号量,需要同时有对该信号量文件的读权限 + 写权限。

ll /dev/shm/sem.semname 查看信号量文件权限,发现权限为0644,缺少其他用户写权限。这个权限与sem_open中指定的权限值0666不一致。

阅读全文 »

实验简介

实现自己的动态内存分配器(mallocfreerealloc)。

预备知识

  • 阅读《CSAPP原书第3版》 9.9小节 —— 动态内存分配。
  • 阅读writeup的全部内容。
阅读全文 »

ctrl + c

中断键,给前台进程组中所有进程发送SIGINT信号,并终止进程。

ctrl + z

挂起键,给前台进程组中所有进程发送SIGTSTP信号, 并挂起进程。被挂起的进程并没有真正结束,可以使用fgbg命令恢复被挂起的进程。

阅读全文 »

实验简介

编写一个通用高速缓存模拟器,并优化小型矩阵转置核心函数,以最小化对模拟高速缓存的不命中次数。

预备知识

1. 局部性原理

局部性通常有两种形式:

  • 时间局部性:被引用过一次的内存位置很可能在不远的将来被多次引用。
  • 空间局部性:如一个内存位置被引用,其附近的内存位置很可能在不远的将来被引用。
阅读全文 »