进程间通信之信号量

一、信号量 信号量有两种,一种的有名信号,一种是无名信号。有名信号一般用于进程间同步,无名信号一般用于于线程间同步。创建或打开一个信号的函数:

name 参数致命信号量的名字,由于信号量内部保存在系统内核中,多个进程间可以直接通过指定信 ... 阅读更多

[leetcode-shell]192-统计词频

来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/word-frequency 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率 ... 阅读更多

[leetcode-shell]195-第十行

来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/tenth-line 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个文本文件 file.txt,请只打印这个文件中的第十行。 示例: 假设 file. ... 阅读更多

MySQL 中的聚簇索引、非聚簇索引、联合索引和唯一索引

一、索引类型

索引根据底层实现可分为 B-Tree 索引和哈希索引,大部分时候我们使用的都是 B-Tree 索引,因为它良好的性能和特性更适合于构建高并发系统。

根据索引的存储方式来划分,索引可以分为聚簇索引非聚簇索引。聚簇索引的特点是叶子节点包含了完整的记录行,而非聚簇索引的叶子节点只有所以字段和主键 ID 。

根据聚簇索引和非聚簇索引还能继续下分还能分为普通索引、覆盖索引、唯一索引以及联合索引等。

阅读更多

redis 中的 AOF 持久化和 RDB 持久化

一、 AOF 持久化 1.1 实现机制 AOF(Append Only File) 是 redis 持久化方式的一种,它通过把所有 redis 执行过的命令都写入到文件来维持持久化。一旦服务崩溃,则可以重放这些命令来恢复服务数据。 例如,在 redis 上执行下面 2 条语句: [crayon-6947ffa8312ab ... 阅读更多

redis 中的键值淘汰策略

当使用的内存到达上限后,redis 提供了 6 种策略来淘汰键值: 策略 描述 volatile-lru 在所有设置了过期时间的键值中根据 LRU 算法淘汰最近最少使用的 allkeys-lru 对数据库中所有元素根据 LRU 算法淘汰最近最少使用的 volatile-random 从设置了过期时间的元素中随机淘 ... 阅读更多

MySQL 中的 B+树索引和哈希索引

一、为什么要使用索引 索引是存储引擎用于快速找到记录的一种数据结构。索引对于数据库良好的性能十分关键,尤其是表中的数据量越来越大时,索引对性能的影响十分明显。 《高性能 MySQL 》中对索引的评价是:索引优化应该是对查询性能优化最有效的手段了,索引能够轻而易举将查询性能提高几个数量级。 以 innodb ... 阅读更多

redis 源码分析:链表实现

一、链表定义 链表在 redis 中的使用十分广泛,例如列表的底层实现之一就是链表,包括发布、订阅等等功能都是有用到链表的。 redis 中链表在 adlist.h 和 adlist.c 中实现,只用了 300+行代码,十分简单。 redis 中的链表是一个双向不循环的链表,两个核心的数据结构是 listNode 和 lis ... 阅读更多