9 英雄哪里出来

尚未进行身份认证

技术是第一生产力

等级
TA的排名 1w+

基于自己项目的 lua 代码规范和一些书写的注意事项总结

目录一、逻辑和数据 1、逻辑数据分离 2、逻辑的清晰性 3、逻辑的共性 4、数据的聚合性 5、数据的序列化 和 反序列化二、常量 1、幻数(magic number) 2、枚举 3、增加枚举类型时的可行性三、函数 1、函数命名的规则 2、函数越低层,效率要求越高 3、lo...

2019-04-15 07:38:59

Redis底层详解(八) LRU 算法

一、LRU算法概述     1、LRU概述     LRU是 LeastRecentlyUsed的缩写,即最近最少使用,是内存管理的一种页面置换算法。算法的核心是:如果一个数据在最近一段时间内没有被访问到,那么它在将来被访问的可能性也很小。换言之,当内存达到极限时,应该把内存中最久没有被访问的数据淘汰掉。     那么,如何表示这个最久呢?Redi...

2019-02-11 13:16:39

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

 一、HyperLogLog 概述         HyperLogLog 算法一种概率算法,用来实现大数据下的基数估计,即无法精确计算集合的基数,存在一定偏差。具体的算法实现可以参见我写的另一篇文章:夜深人静写算法(十四)- 基数估计 (Cardinality Estimation)。         Redis 对这个算法进行了一些改进。主要有以下几点:         a) ...

2019-01-14 19:54:02

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

目录一、概述      1、最小值估值法      2、哈希法   3、k-前缀法二、LinearCounting      1、算法思路      2、算法证明三、LogLog Counting      1、算法思路      2、算法证明   3、误差消减四、HyperLogLogCounting      1、算法思路      2、并行化五...

2019-01-12 18:56:42

Linux 修改系统时间

一. date 查询当前时间[root@localhost ~]# date -R Sat, 01 Jan 2000 12:02:12 -0400        后面的那个 -0400 表示时区,需要用 tzselect 进行设置。 二. tzselect 设置时区        输入命令 tzselect 之后,会有 主时区 和 次时区 的选择,选择完毕其实没有设置成功...

2019-01-04 12:17:51

Leetcode - MYSQL 专题

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

2018-12-21 08:01:42

Redis底层详解(六) 跳跃表

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

2018-12-18 23:55:52

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

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

2018-12-12 08:04:04

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

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

2018-12-03 07:42:57

字节序

字节序        最近在看 redis 的内存编码,里面涉及到字节序相关的内容。这里就当复习一下,做个简单的回顾。        数据存储在内存中,是以字节为单位的,如果是单字节数据(如char、unsigned char、int8)就不会有字节序的问题。但是多字节数据(如 int、float、double)就要考虑字节序的问题了。字节序共分为两种:大端序 和 小端序。大端序 ...

2018-11-30 10:03:52

Linux 下 Apache 的安装与配置

1、安装APR (Apache Portable Runtime)wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gztar -zxf apr-1.4.5.tar.gzcd apr-1.4.5 ./configure --prefix=/usr/local/apr make && make install...

2018-11-30 07:42:29

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

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

2018-11-29 07:45:47

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.tar.gz        2、解压tar -zxvf mysql-5.6.33-linux-...

2018-11-19 08:54:30

rsync文件同步

目录一、rsync 简介二、rsync 下载、安装三、rsync 服务器端部署四、rsync 客户端上传文件五、参考资料 一、rsync 简介       rsync 用于两台主机间的文件同步,需求是内网可以访问外网,但是外网不能直接访问内网。所以需要一个机制将内网的源码(或者编译好的库)推送到外网。       这里将文件发起方称为客户端,文件接收方称为服务器端。两端系...

2018-11-13 14:26:12

Redis底层详解(二) 字符串

一、sds字符串概述        sds 字符串即 Simple Dynamic String(即简单动态字符串),其中动态的含义是内存的分配是动态的,sds的定义如下:       它采用一段连续的内存来存储 sds 结构。和普通字符串 char* 不同,sds 是二进制安全的,并不以 '\0' 来标识字符串结尾,于是必须要有一个 len 字段来标记这个字符串的长度。那么,我们...

2018-07-23 08:07:47

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

一、哈希表概述    首先简单介绍几个概念:哈希表(散列表)、映射、冲突、链地址、哈希函数。    哈希表(Hashtable)的初衷是为了将数据映射到数组中的某个位置,这样就能够通过数组下标访问该数据,提高数据的查找速度,这样的查找的平均期望时间复杂度是O(1)的。    例如四个整数6、7、9、12需要映射到数组中,我们可以开一个长度为13(C语言下标从...

2018-06-28 17:27:37

利用 telnet 调试 skynet

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

2018-06-13 10:58:43

svn clean up 失败的解决方案

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

2018-06-06 14:22:48

samba本地映射配置

目录  一、安装samba二、关闭防火墙      1、windows防火墙      2、selinux防火墙三、数论基础      1、同余      2、欧几里德算法      3、互素      4、扩展欧几里德算法            a、线性同余            b、逆元      5、算术基本定理      6、欧拉函数      7、欧拉定理      8、费马小定理四、R...

2018-05-18 11:07:30

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

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

2018-04-25 21:39:13

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。