本文对Redis服务器的数据库实现进行说明,包括服务器保存数据库的方法,数据库保存键值对的方法,以及针对数据库的添加、删除、查看等操作的实现方法,最后,会对服务器保存键的过期时间的方法和服务器自动删除过期键的方法进行分析。
Redis之发布与订阅
本文分析下Redis的发布与订阅功能,该功能有点类似网络中的多播或者广播的感觉,即当一个客户端向某个频道发布消息时,频道的所有订阅者和与这个频道相匹配的模式的订阅者都会收到该消息。
Redis的发布与订阅功能分为频道的订阅和模式的订阅。
Redis之启动过程分析
Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令,而服务器接收并处理客户端发送的命令请求,并向客户端返回命令回复。通过使用I/O多路复用技术实现的文件事件处理器,Redis服务器使用单进程单线程的方式来处理命令请求。
本文对Redis服务器的启动过程做简单分析。
Redis之事件驱动
事件处理是Redis的核心机制之一,通过在文件、网络和时间等类型的事件上进行多路复用,为Redis的高性能提供保证。事件驱动在Redis源码中主要涉及ae.h/ae.c,Ae_evport/epoll/kqueue/select.c等文件。
C++ STL之deque
C++标准模板库序列式容器中,使用最少的估计就是deque了。但是,了解下deque这种双向开口的连续线性空间容器的底层设计与实现仍是很有帮助的。此外,stack和queue这两种适配器容器(容器底层是调用其他容器)底层实现默认就是使用deque。
C++ STL之list
上一篇文章总结了vector的结构和实现原理,今天来看看STL中另一个重要的容器:list。
C++ STL之vector
“用C++开发,尽量用容器类+迭代器来代替数组+指针,因为数组+指针容易越界,或者内存泄露,而容器+迭代器已将底层封装好,使用安全简单”。
字符串的排列与组合
很久没有深入研究数据结构和算法了…
这次换个套路,先不说那些干瘪瘪的理论,首先来看一道编程题。