Redis数据结构概览
Redis支持的主要有5种数据类型,string, list, set, zset , hash,但是对于每种数据类型,Redis都不是简单的使用一种数据结构来实现,而是根据数据量等因素使用多种数据结构(SDS、双向链表、hashtable等),来达到提高效率、节省空间的目的,可以使用object encoding <key> 来查看数据的内部结构 (注:对于Redis的早期版本,list 结构内部是使用双向链表实现的)
Maven聚合与继承
maven聚合 聚合的目的是为了快速构建项目,当我们有几个maven模块,想要一次性构建,而不是到每个模块下面去执行maven命令,这时候就需要使用maven聚合(或者称为多模块)。 使用聚合的时候,我们需要新建一个maven项目,由它来控制构建其他的项目,其pom.xml配置与其他普通maven项目的区别主要在以下两个地方: 打包类型(packaging)必须为pom 需要在其中添加modules标签,在其中使用module标签包括需要同时构建的maven模块的名称路径,路径为相对于此pom.xml文件的路径(如果与pom.xml文件同级则直接写项目名,如果在上一级则写…/项目名)。 这样当我们在此项目下执行构建的时候,就会同时构建其中配置的项目。 下面举一个配置文件的例子: 12345678910<project ......> <groupId>XXX.XXX</groupId> <artifactId>XXX</artifactId> <version>1.0</version>...
JavaScript数组常用方法
push 方法 将元素添加到数组尾部 12var values = [1,2,3,4,5]values.push(6,7) // values = [1,2,3,4,5,6,7] pop 方法 将数组尾部元素弹出 12var values = [1,2,3,4,5]values.pop() // values = [1,2,3,4] shift 方法 弹出数组头元素 12var values = [1,2,3]values.shift() // values = [2,3] unshift 方法 将元素添加到数组头部 12var values = [1,2,3]values.unshift(-1, -2) // values = [-1, -2, 1, 2, 3] reverse 方法 反转数组 12var values = [1, 4, 5, 2]values.reverse() // values = [2, 5, 4, 1] sort 方法 对数组进行排序 12345var values = [1, 4, 5, 2]values.sort() //...
JavaScript类型转换
ECMAScript中有五种基本数据类型:Undefined, Null, Boolean, Number, String,一种复杂数据类型:Object 数据类型检测方法 typeof 函数,例: 12var s = xx;var res = typeof(s); 返回结果=typeof(res) 意义 typeof(res) === “undefined” 值未定义 typeof(res) === “boolean” 值为布尔类型 typeof(res) === “string” 值是字符串 typeof(res) === “number” 值为数值 typeof(res) === “object” 值是对象或null typeof(res) === “function” 值是函数 Boolean类型转换 12345678910111213141516171819# BooleanBoolean(true) == trueBoolean(false) == false# StringBoolean("") == ...
Redis数据结构-SDS
基本结构 Redis中没有使用C语言原生的字符串,而是在其基础上包装了一个新的数据结构-SDS,其结构如下 1234567891011// 指向下面结构中的buf指针typedef char *sds;struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; // 使用到的空间 uint8_t alloc; // 分配的C语言字符串空间,不包括头部和C字符串的中止符号null unsigned char flags; // 使用后三位表示是sdshdr8/sdshdr16的类型 char buf[]; // 实际字符数组的空间}// 类似的还有 sdshdr16, sdshdr32等,用于节省空间// 其中的所有方法都在此结构基础上实现 主要方法及实现 sdslen(sds s) - 获取sds中已经使用的数组空间大小 根据flags判断类型,将指向buf的指针前移到结构开始,转换为结构类型,获取len属性返回 源码如下 123456789101112131415161718...
Python参数使用总结
Python 中参数的传递非常灵活,不太容易记住理解,特整理如下备忘。 位置参数(普通参数) 即按照函数所需的参数,按位置传递对应的值。这是最基础的参数形式——函数有固定数量的必需输入,调用时按定义顺序一一对应。 1234567def find_max(a, b): if a > b: return a else: return bfind_max(5, 13) # 输出: 13 默认参数 某个参数在大多数调用中都取同一个值,每次都传一遍很啰嗦。给它一个默认值,调用时可以省略。 此时需要注意,默认参数只能在必选参数后面。 123456789def find_max(a, b=0): if a > b: return a else: return bfind_max(5, 13) # 输出: 13find_max(5) # 输出: 5find_max(-6) # 输出: 0 当有多个默认参数时,调用时未指定参数名的值按位置顺序赋值,也可以通过 参数名=值 为特定参数赋...
