redis大key,这里指的是大的集合数据类型,如(set/hash/list/sorted set),一个key包含很多元素。由于redis是单线程,在删除大key(千万级别的set集合)的时候,或者清理过期大key数据时,主线程忙于删除这个大key,会导致redis阻塞、崩溃,应用程序异常的情况。 一个例子 线上redis作为实时去重的一个工具,里面有6千万的用户guid,这么一个set集合,如果直接使用del删除,会导致redis严重阻塞。 10.1.254.18:6380> info memory #…

2019年4月3日 0条评论 8674点热度 0人点赞 ikeguang 阅读全文

R语言读写最灵活的文件——txt文件 R语言可以读取很多文件,其中以txt文本文件最为灵活,为什么呢,txt文件可以以任意符号作为分隔符,比如“,”,“\t”,空格,甚至“……&¥¥%¥”等任意自定义的分隔符号。 读取文件 这里先把工作空间切换到D盘下面,默认的一般是C盘的文档,我们要有分层管理文件的概念,否则我们还是一个合格的程序员吗? setwd('D:\\') 读取文本文件主要用read.table(filePath,header = ,sep=) filePath就是文件路径,header表示文件是…

2019年4月3日 0条评论 9373点热度 0人点赞 ikeguang 阅读全文

作为一门高级的数据分析语言,R语言不仅具有其它高级语言的自带大量内嵌函数的方便特性,而且它的一些函数更侧重于数据统计分析,成为越来越多的数据分析人员首选语言。下面就来列一下R中的一些常用函数。与matlab一样,作为第二个以向量式运算作为主要运算方式的编程语言,R的一些函数主要是针对向量的。 作用于向量 >x <- 1:10 >sum(x) #对x中的元素求和 [1] 55 >length(x) #返回x的长度 [1] 10 >prod(x) #求x中所有元素的连乘积 [1] 3628…

2019年4月3日 0条评论 8874点热度 0人点赞 ikeguang 阅读全文

R语言某种程度来说本身就是一个函数库,因为它有大量的函数可供调用,加上函数式编程,使得R语言的功能很强大。但是,有时候,根据实际需要,我们还是需要自己动手编写函数,从而减少代码的缀余与工作量。 与其它语言一样,函数的组成莫过于关键字function、形参、是否返回值。函数的具体用法这里用几个例子说明 调用函数 这里写一个打印函数演示简单的参数传递功能: > a a('hello world!') [1] "hello world!" 写一个函数实现矩阵的乘法: rm(list = ls()) a

2019年4月3日 0条评论 9009点热度 0人点赞 ikeguang 阅读全文

都知道R语言是向量式编程,可是有时候确实需要用到循环语句,这里就介绍R语言里面的主要循环——for循环。 与其它语言的for循环一样,R的for循环可以嵌套for循环或者其它循环。 单循环 > a for(i in 1:length(a)){s print(s) [1] 5150 写一个循环嵌套 s

2019年4月3日 0条评论 8371点热度 0人点赞 ikeguang 阅读全文

R语言中的因子确实不好理解,很多人都这么觉得。在R语言中,因子(factor)表示的是一个符号、一个编号或者一个等级,即,一个点。例如,人的个数可以是1,2,3,4......那么因子就包括,1,2,3,4.....还有统计量的水平的时候用到的高、中、低,也是因子,因为他是一个点。与之区别的向量,是一个连续性的值,例如,数值中有1,1.1,1.2......可以作为数值来计算,而因子则不可以。如果用我自己的理解,简单通俗来讲:因子是一个点,向量是一个有方向的范围。在R中,如果把数字作为因子,那么在导入数据之后,需要…

2019年4月3日 0条评论 8484点热度 0人点赞 ikeguang 阅读全文

Data Frame一般被译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。Data Frame每一列有列名,每一行也可以指定行名。如果不指定行名,那么就是从1开始自增的Sequence来标识每一行。所以说数据框在R语言中可是个好东西,R中它是用的非常频繁也是非常有用的数据集合。 创建数据集 > a1 <- c(1:3) > a2 <- c('a','b','v') > dat <- data.frame…

2019年4月3日 0条评论 8360点热度 0人点赞 ikeguang 阅读全文

R语言中的数组与其它语言数组类似,它是一种高维的数据结构。维数过高运算会很不方便,所以用的很少,这里介绍是本着不落下任何知识点的目的。万一以后遇到了,虽然不方便,还是可以进行运算的。当然了,矩阵是二维数组,是数组的一种特殊形式。R中的列表是一种特殊的数组,每个元素又可以是一个列表可以含有多个元素,里面可以包含各种数据类型,故功能非常强大。 数组 数组有一个维数向量,可以定义数组的维数,通过array()进行创建数组如下: > arr dim(arr) [1] 2 3 4 > arr , , 1 [,1] [,2] …

2019年4月3日 0条评论 8618点热度 0人点赞 ikeguang 阅读全文

很多人是在线性代数课学的矩阵,当时什么问题都没有,除了一个问题:学习矩阵到底有什么用呢?矩阵是一个集合,它里面可以存放很多对象,比如一个行就是一个对象(或者说记录),每一个对象又有很多(属性)列。如果把一组对象~属性表示成矩阵,我们就能很容易取出每个对象对应的某个属性了,并且根据线性代数方法考察两个对象之间的联系(相似性)。矩阵的行列数我们一般称作维数。 对于矩阵而言,我们当然想实现以下操作与功能: 矩阵的加减、乘除运算 矩阵的行列切片 最值的快速获取 线性代数运算 好在R语言中的矩阵可以很轻易帮我们实现这些功能,…

2019年4月2日 0条评论 8395点热度 0人点赞 ikeguang 阅读全文

通过前面几篇,相信就算是新手也对R语言的历史,R运行环境有了大概的了解。下面就R语言特殊的赋值符号与基本数据元素——向量做简要概述。 1、赋值符号 相信大家学过的编程语言中,赋值符号都是“ = ”。当然了,在R语言中用“ = ”是可以的,但却被视为一种不好的编程习惯,大家都知道,一个好的编程习惯是一个写代码的人基本编程素养的体现。在R语言中提倡用神奇的赋值符号“ <- ”。 这里给变量a,b分别赋值5,2 > a <- 5 > b <- 2 > a[1] 5 > b[1] …

2019年4月2日 0条评论 8090点热度 0人点赞 ikeguang 阅读全文