Redis底层详解(八) LRU 算法

一、LRU 算法概述          1、LRU 概述          LRU 是 Least Recently Used 的缩写,即最近最少使用,是内存管理的一种页面置换算法。算法的核心是:如果一个数据在最近一段时间内没有被访问到,那么它在将来被访问的可能性也很小。换言之,当内存达到...

2019-02-11 13:16:39

阅读数 42822

评论数 0

Redis底层详解(七) HyperLogLog 基数估计

  一、HyperLogLog 概述          HyperLogLog 算法一种概率算法,用来实现大数据下的基数估计,即无法精确计算集合的基数,存在一定偏差。具体的算法实现可以参见我写的另一篇文章:夜深人静写算法(十四)- 基数估计 (Cardinality Estimation)...

2019-01-14 19:54:02

阅读数 21511

评论数 0

夜深人静写算法(十四)- 基数估计 (Cardinality Estimation)

目录 一、概述       1、最小值估值法       2、哈希法       3、k-前缀法 二、Linear Counting       1、算法思路       2、算法证明 三、LogLog Counting       1、算法思路       2、算法证明       3、误差消...

2019-01-12 18:56:42

阅读数 67684

评论数 1

Linux 修改系统时间

一. date 查询当前时间 [root@localhost ~]# date -R Sat, 01 Jan 2000 12:02:12 -0400         后面的那个 -0400 表示时区,需要用 tzselect 进行设置。   二. tzselect 设置时区    ...

2019-01-04 12:17:51

阅读数 75659

评论数 0

Leetcode - MYSQL 专题

Leetcode - MYSQL 专题         花了点时间把 Leetcode 上 SQL 部分的 非付费题 做了一下,很多例题还是很经典的~所有复杂逻辑都可以在一条语句里面完成。体会到了 select 语句的博大精深。         主要涉及到的点有:select别名、select多...

2018-12-21 08:01:42

阅读数 95553

评论数 2

Redis底层详解(六) 跳跃表

一、跳跃表概述        跳跃表是有序集合的底层实现之一。        1、跳跃表结点        跳跃表的结点 zskiplistNode 定义在 server.h 中,定义如下: typedef struct zskiplistNode { robj *obj; ...

2018-12-18 23:55:52

阅读数 99136

评论数 0

Redis底层详解(五) 压缩列表

一、压缩列表概述        压缩列表是一种编码过的“链表”旨在实现高效的内存管理。它可以存储整数和字符串,整数以小端序存储,字符串则以字节数组存储。压缩列表的内存存储结构如下图所示:        其中zlbytes、zltail、zllen 是 压缩列表头( ziplist he...

2018-12-12 08:04:04

阅读数 106021

评论数 3

Redis底层详解(四) 整数集合

一、集合概述         对于集合,STL 的 set 相信大家都不陌生,它的底层实现是红黑树。无论插入、删除、查找都是 O(log n) 的时间复杂度。当然,如果用哈希表来实现集合,插入、删除、查找都可以达到 O(1)。那么为什么集合要用红黑树和没有用哈希表呢?我想,最大的可能是基于集...

2018-12-03 07:42:57

阅读数 122266

评论数 0

字节序

字节序         最近在看 redis 的内存编码,里面涉及到字节序相关的内容。这里就当复习一下,做个简单的回顾。         数据存储在内存中,是以字节为单位的,如果是单字节数据(如char、unsigned char、int8)就不会有字节序的问题。但是多字节数据(如 int、f...

2018-11-30 10:03:52

阅读数 105821

评论数 0

Linux 下 Apache 的安装与配置

1、安装APR (Apache Portable Runtime) wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz tar -zxf apr-1.4.5.tar.gz cd apr-1.4.5 ./configure --pr...

2018-11-30 07:42:29

阅读数 105188

评论数 0

Redis底层详解(三) 内存管理

一、内存分配概述         redis 的内存分配,实质上是对 tcmalloc / jemalloc 的封装。内存分配本质就是给定需要分配的大小,以字节为单位,然后返回一个指向一段分配好的连续的内存空间的首指针。         通过这个首指针,我们需要知道它的连续空间的大小,才能进...

2018-11-29 07:45:47

阅读数 104532

评论数 0

Linux 的 mysql 安装

一、mysql 安装        1、下载        版本选择5.6.33,linux环境,centos6.8。 wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.t...

2018-11-19 08:54:30

阅读数 110499

评论数 0

rsync文件同步

目录 一、rsync 简介 二、rsync 下载、安装 三、rsync 服务器端部署 四、rsync 客户端上传文件 五、参考资料   一、rsync 简介        rsync 用于两台主机间的文件同步,需求是内网可以访问外网,但是外网不能直接访问内网。所以需要一个机制将内网的源码(...

2018-11-13 14:26:12

阅读数 107129

评论数 0

Redis底层详解(二) 字符串

一、sds字符串概述         sds 字符串即 Simple Dynamic String(即简单动态字符串),其中动态的含义是内存的分配是动态的,sds的定义如下:        它采用一段连续的内存来存储 sds 结构。和普通字符串 char* 不同,sds 是二进制安全的...

2018-07-23 08:07:47

阅读数 117699

评论数 0

Redis底层详解(一) 哈希表和字典

一、哈希表概述        首先简单介绍几个概念:哈希表(散列表)、映射、冲突、链地址、哈希函数。        哈希表(Hash table)的初衷是为了将数据映射到数组中的某个位置,这样就能够通过数组下标访问该数据,提高数据的查找速度,这样的查找的平均期望时间复杂度是O(1)的。 ...

2018-06-28 17:27:37

阅读数 119914

评论数 3

利用 telnet 调试 skynet

目录  一、安装 telnet二、关闭防火墙      1、三、配置samba      1、四、windows本地映射一、安装 telnet    1、安装必要的软件包yum install -y memcached yum install -y telnet yum install -y te...

2018-06-13 10:58:43

阅读数 110495

评论数 0

svn clean up 失败的解决方案

       开发时可能会遇到一些特殊情况,导致 svn 无法提交/更新(commit/update),并且提示需要 clean up,但是 clean up 又出现图一所示的错误。图一       这种情况下,我们可以下载一个 sqlite3.rar 。解压后,将 exe 文件放在出现问题的 s...

2018-06-06 14:22:48

阅读数 113838

评论数 0

samba本地映射配置

目录  一、安装samba二、关闭防火墙      1、windows防火墙      2、selinux防火墙三、数论基础      1、同余      2、欧几里德算法      3、互素      4、扩展欧几里德算法            a、线性同余            b、逆元   ...

2018-05-18 11:07:30

阅读数 105746

评论数 0

夜深人静写算法(十三)- RSA算法的加密与解密

目录  一、概述      1、加密与解密      2、对称性加密与非对称性加密二、RSA算法流程      1、算法原理      2、公钥和私钥的生成      3、RSA加密      4、RSA解密      5、快速幂取模三、数论基础      1、同余      2、欧几里德算法  ...

2018-04-25 21:39:13

阅读数 111241

评论数 0

夜深人静写算法(十二)- 模拟退火

随机界的星星之火---模拟退火!

2018-04-03 20:27:22

阅读数 115360

评论数 1

提示
确定要删除当前文章?
取消 删除