索引

R学习 第六篇:列表

我是研究僧i 提交于 2020-03-27 06:01:11
列表(List)是R中最复杂的数据类型,一般来说,列表是数据对象的有序集合,但是,列表的各个元素(item)的数据类型可以不同,每个元素的长度可以不同,是R中最灵活的数据类型。列表项可以是列表类型,因此,列表被认为是递归变量,与之相对,向量,数组,矩阵,数据框被认为是原子变量。 一,创建列表 列表由list()函数创建,每个参数使用逗号分割,用于指定列表项的内容,列表中的元素数量不限,类型不限。列表项的名称是可选的,可以创建无名的列表项;列表的每一个item,都可以显示命名,例如,name1=item1, name2=item2。 list([name1=]item1,[name2=]item2,...) 1,创建的无名的列表项 例如,下面的脚本创建一个列表,该列表共有三个item,第一个item是整数向量,第二个item是字符向量,第三个item是矩阵,列表的每一个item都没有名称;对于无名的列表项,只能通过嵌套的中括号[[n]]来索引列表项的元素: > a_list <- list( + c(1:3), + month.abb, + matrix(c(-1,-2,-3,-4),nrow=2) + ) 打印列表,列表的第一个item,使用两个嵌套的中括号[[1]]表示,这是索引列表的一种方式: > a_list [[1]] [1] 1 2 3 [[2]] [1] "Jan"

Elasticsearch系列---初识Elasticsearch

牧云@^-^@ 提交于 2020-03-27 00:41:13
Elasticsearch是什么? Elasticsearch简称ES,是一个基于Lucene构建的开源、分布式、Restful接口的全文搜索引擎,还是一个分布式文档数据库。天生就是分布式、高可用、可扩展的,可以在很短的时间内存储、搜索和分析大量的数据。 什么是全文搜索? 全文搜索也叫全文检索,是指扫描文章中的每一个词,对每一个词进建立一个索引,指明该词在文章中出现的次数和位置,当前端用户输入的关键词发起查询请求后,搜索引擎就会根据事先建立的索引进行查找,并将查询的结果响应给用户。 这里有两个关键字:分词和索引,Elasticsearch内部会完成这两件事情,对保存的文本内容按规则进行分词,并对这些分词后的词条建立索引,供用户查询。 什么是倒排索引? 全文搜索过程根据关键词创建的索引叫倒排索引,顾名思义,建立正向关系“文本内容-关键词”叫正排索引,后续会介绍,倒排索引就是把原有关系倒过来,建立成“关键词-文本内容”的关系,这样的关系非常利于搜索。 举个例子: 文本1:I have a friend who loves smile 文本2:I have a dream today 先进行英文分词,再建立倒排索引,得到一份简易的“关键词-文本”的映射关系如下: 关键词 文本编号 I 1,2 have 1,2 a 1,2 friend 1 who 1 loves 1 smile 1

透过现象看本质——聊一聊ELK

萝らか妹 提交于 2020-03-26 22:52:59
透过现象看本质——聊一聊ELK 前言 ​ 本文将从日志分析引入ELK,带着疑问了解、熟知、实践、领会ELK的原理与魅力。 引入 ​ 想必做过专业运维的工程师都明白也非常清楚日志分析的重要性——发现问题的所在,解决问题的根源与基础。 ​ 一般来说,日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。通过分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施避免发生意外状况。 ​ 通常情况下,日志被分散的储存在不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志,即繁琐又效率低下。为此,我们可以使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。 ​ 然而,集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于更高要求的查询、排序和统计等,再加上庞大的机器数量,使用这样的方法依然难免有点力不从心。 ​ 因此,开源实时的日志分析ELK平台应运而生了。 什么是ELK? ​ 笔者也不知道是为什么,一些朋友看到陌生的英文单词,尤其是缩写,就感觉这个玩意儿非常高bigger,甚至会不敢与接触它。其实这样的认识并不正确。就好比ELK,熟悉的人就不说了

python:入门到实践书籍学习(二)

巧了我就是萌 提交于 2020-03-26 18:56:07
第3、4章 列表   在 Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。对于其中的元素类型并不做限制。    列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉 Python 即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。下标以0开始。    要访问列表的任何元素,都可将其位置减 1 ,并将结果作为索引。例如,要访问第四个列表元素,可使用索引 3 。若时索引值为负则倒序获取, 通过将索引指定为 -1 ,可让 Python 返回最后 一个列表元素。 test_list = [1,2,3,4,5,6] # 获取下标为0的列表元素 print(test_list[0]) # 获取下标为2的列表元素 print(test_list[2]) # 获取下标为4的列表元素 print(test_list[4]) ''' 输出结果 1 3 5 ''' 列表访问   可以像使用变量一样使用列表的值 bicycles = ['trek', 'cannondale', 'redline', 'specialized'] message = "My first bicycle was a " + bicycles[0].title() + "." print(message)   列表的添加删除与修改:      要修改列表元素

九、索引(需大量数据进行实践练习)

≯℡__Kan透↙ 提交于 2020-03-26 14:34:49
聚集索引:数据行的物理地址顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有 一个聚集索引 。 非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。(非聚集索引就像新华字典的 偏旁字典 ,他结构顺序与实际存放顺序不一定一致) 索引在MySQL中也叫做“键”或者"key"(primary key,unique key,还有一个index key),是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要,减少io次数,加速查询。(其中primary key和unique key,除了有加速查询的效果之外,还有约束的效果, primary key 不为空且唯一,unique key 唯一,而index key只有加速查询的效果,没有约束效果 ) ​ 索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 ​ 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。 ​ 强调:一旦为表创建了索引,以后的查询最好先查索引,再根据索引定位的结果去找数据 通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引.

关于唯一索引和普通索引的抉择

爷,独闯天下 提交于 2020-03-26 11:16:10
想象这样一个场景,在设计一张用户表时,每人的身份证号是唯一的,需要搜索。但由于身份证号字段较大,不好将其作为主键。在业务代码已经保证插入身份证唯一的情况下,可以选择建立唯一索引和普通普通索引,这时该如何选择呢?接下来,将从查询和更新的执行过程进行分析。 查询过程 假设 k 是表 t 上的索引,在搜索 select id from t where k=5 时,会先从 k 这棵 B+ 的树根开始,按层搜索叶子节点,找到 k=5 的数据页,然后在数据页内容进行二分法定位。 对于普通索引,找到 k=5 的记录后,会继续向下查找一个,直到碰到第一个不是 5 的记录结束。 对于唯一索引,由于取值唯一,找到后直接停止。 由于 InnoDB 是按照数据页为单位(数据页默认 16 KB)进行读写的,在读取一条数据时, 会将整个数据页整体读到内存。 在读入内存的数据页中,如果包含 k=5 的记录,在查询的情况下,唯一索引比普通索引多了一次查找和判断的过程,可以忽略。 如果 k=5 是当前数据页的最后一条,就需要在读取下一个数据页。但这发生的概率较低,也可以忽略。 所以总得来说,普通索引和唯一索引在查询的过程中差异不大。 change buffer 在分析唯一索引和普通索引的影响前,先来认识一下 change buffer 这个结构。 什么是 change buffer ? 在执行更新操作时

我也简单谈下《Web应用的缓存设计模式》

吃可爱长大的小学妹 提交于 2020-03-26 10:52:15
拜读了Robbin的文章《Web应用的缓存设计模式》http://robbinfan.com/blog/38/orm-cache-sumup ,我觉得大体思想还是值得学习和借鉴的,借这机会顺便简单谈谈我一般的做法,基于它文章Blog的例子和场景。 以读取博客文章列表和文章为例 一、数据库设计 首先,从数据库设计上,我赞同Contents拆分出去,在显示列表时,是没必要读取完整内容的。但如果缓存应用得当,这个可以属于可选项,并非必须。按照我的习惯,表设计会如下: Blogs表,用以存储博客内容 BlogId int 用以存储博客内容,表主键,聚集索引 Title nvarchar(256) 博客标题 Content nvarchar(MAX) 博客内容 FormattedContent nvarchar(MAX) 格式化后博客内容,空间换时间,没必要消耗CPU去格式化markdown。可选项,也可以运算后放缓存 AuthorId   int 和Accounts表关联 Author nvarchar(256) 作者,冗余字段,可以不必查询Accounts表 BlogDate datetime 博客发布时间 补充说明: 1. 适当冗余,例如FormattedContent和Author字段,减少跨表查询或CPU运算 2.

MySQL-快速入门(7)索引

天涯浪子 提交于 2020-03-26 09:23:50
1、什么是索引 索引是对数据库表中一列或者多列的值进行排序的一种结构。索引是在存储引擎中实现的,每种存储引擎中的索引不一定完全相同。 MySQL中索引的存储类型有两种:btree和hash。MyISAM和InnoDB存储引擎只支持btree索引;MEMORY / HEAP存储引擎可以支持hash和btree索引。 2、索引的分类 1》普通索引和唯一索引: 2》单列索引和组合索引: 3》全文索引:fulltext,可以在char、varchar、text类型的列上创建全文索引。MySQL只有MyISAM存储引擎支持全文索引。 4》空间索引:spatial,MySQL中的空间数据类型有4种,分别是geometry、point、linesstring、polygon。创建空间索引的列必须将其声明为not null。并且只有MyISAM存储引擎支持这种索引的创建。 3、索引的设计原则 1》索引并非越多越好,动态索引维护需要花销 2》避免对经常更新的表建立过多的索引 3》数据量小的表最好不要建立索引 4》在不同值较多的字段上建索引 5》对唯一性字段建索引 6》在频繁进行排序或分组的列上建立索引 4、MySQL建立索引 查询数据库所有的索引: 查看某一表的索引: show index from tb_name \G; 1》在创建表的时候创建索引 primary key、foreign key

day03 【List、Set、数据结构、Collections】

。_饼干妹妹 提交于 2020-03-26 01:56:35
day03 【List、Set、数据结构、Collections】 主要内容 数据结构 List集合 Set集合 Collections 教学目标 [ ] 能够说出List集合特点 [ ] 能够说出常见的数据结构 [ ] 能够说出数组结构特点 [ ] 能够说出栈结构特点 [ ] 能够说出队列结构特点 [ ] 能够说出单向链表结构特点 [ ] 能够说出Set集合的特点 [ ] 能够说出哈希表的特点 [ ] 使用HashSet集合存储自定义元素 [ ] 能够说出可变参数的格式 [ ] 能够使用集合工具类 [ ] 能够使用Comparator比较器进行排序 第一章 数据结构 2.1 数据结构有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。 现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数组的存储,我们还能方便地查询到所需要的数据吗?而算法,在这么多的数据中如何做到最快的插入,查找,删除,也是在追求更快。 我们java是面向对象的语言,就好似自动档轿车,C语言好似手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A点 开到 B点

How to deal with massive data in SQL Server

為{幸葍}努か 提交于 2020-03-26 01:39:13
How to process hundreds of millions of data in SQL Server ? 如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下六方面进行: 一. 用SqlBulkCopy进行插入 二.减少每个表的数据总量,避免大表操作,所有的操作均可以按省或者时间分开,这样无论从时间或者地域维度,基本上可以将大表拆成30张以上的小表操作,甚至更多。然后再对结果进行合并,应该可以避免上述问题。 三.正确使用索引: (1) 索引之后,按索引字段重复最少的来排序,会达到最优的效果。 (2) 把非索引列的结果列放在包含列中。 (3) 查询的时候只返回所需的字段 四.读写分离: 可以尝试读写分离,写两个库,一个是实时库,一个是只读库。一个小时内的数据查询实时库,一个小时之前的数据查询只读库;只读库定时存储,然后建立索引;超过一个星期的数据,进行分析处理再存储。这样,无论查询什么时间段的数据,都能够正确处理了——一个小时之内的查询实时库,一个小时到一个星期内的查询只读库,一个星期之前的查询报表库。在只读库中,定时重建索引即可。 五.存储优化 (1) 建议将我们的数据库也单独分到一组磁盘上去,不要跟系统竞争。 (2) 使用SSD,强烈建议 六、使用最新的SQL Server版本,64位系统 以上建议思路,可以用作面试。 来源: 51CTO 作者: