索引

Java最新突击面试笔记总结—ElasticSearch面试内容

大城市里の小女人 提交于 2020-03-01 15:07:09
搜索引擎面试题 题目和解答来自于中华石杉和自己整理总结而得,希望能够有所帮助。 搜索引擎主要考察ElasticSearch 以及对应底层的Lucene技术。 主要面试题集中于: es分布式架构原理 es的插入与查询 es在数据量很大的情况下如何提高性能 es在生产集群的部署架构是什么,每个索引有多大的数据量,每个索引有多少分片 1. es分布式架构原理 首先需要明白es是如何存储数据的,es把对应的数据转换为index。基于倒排索引的方式,每个index上存储了多个type类型,每个type对应一个document。而一个index会被分成多个shard(默认是5个)。 在分布式部署时,每个shard会被复制,即一个shard有primary和replica 每个es进程存储的是不同shard的primary和replica。es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管理的工作的,比如维护索引元数据拉,负责切换primary shard和replica shard身份拉,之类的。 2. es的数据写入与读取 2.1 es数据的写入 2.1.1 es数据的写入过程 注意,客户端是可以在任意节点进行写入数据的,与Kakfa不同。 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点) 2

ElasticSearch基础api的使用

独自空忆成欢 提交于 2020-03-01 14:19:26
1.首先创建 RestHighLevelClient 对象 因为后面的操作都需要这个 @Configuration @ConfigurationProperties(prefix = "elasticsearch") public class SpringConfig { @Value("${elasticsearch.host}") private String host; @Value("${elasticsearch.port}") private Integer port; @Bean public RestHighLevelClient restHighLevelClient() throws Exception { return new RestHighLevelClient(RestClient.builder(new HttpHost(host,port))); } } 在application里配置 elasticsearch: host: 192.168.149.135 port: 9200 2.常用api的使用 在对索引进行操作的时候 需要创建IndicesClient indicesClient = client.indices(); 对文档则直接使用client 即可 @SpringBootTest class

python全栈开发学习模块一(笔记4)

非 Y 不嫁゛ 提交于 2020-03-01 08:39:43
基本数据类型-列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序 3.可修改指定索引位置对应的值,可变 列表的创建 list_test=[‘张三‘,‘李四’,'alex'] #或 list_test=list('alex') #或 list_test=list([‘张三‘,‘李四’,'alex']) 列表常用操作 ●索引 ●切片 ●append ●remove ●pop ●len() ●for ... in ... BIF-range() range(start, stop[, step]) -> range object 利用BIF中的range(),可以创建一个包含1-100数字的列表 >>> range(1,100) #[1,100)包括1不包括100 range(1, 100) >>> list(range(1,100)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45

菜鸟Sql Server优化学习笔记(1) -读SQL Server2008查询性能优化

北战南征 提交于 2020-03-01 07:41:13
SQL Server2008查询性能优化笔记 第一章就说到了Sql Server性能杀手,其中第一条是低质量的索引。 他的前提是在硬件和操作系统都已经优化的情况下,我的服务器内存有12G,但是sql server才用到1G,先边看书边配置了。 低质量的索引这一点我感同身受,当时任务比较紧急,没有来得及记录数据。 总之,原来数据库根本没有索引,基本上服务器处于崩溃状态,Sql server CPU占用率100%。 由于很久没搞数据库,学校学习的那点东西都忘光了,重新回来,第一个找到了sql server查询分析器这个东东,把一些表加了索引,一下服务器就正常了,汗(我开始一直因为是程序insert太多的问题,正在写一个memcached的版本来替换,不过后续还是要做的)。 书是图书馆的,以后还了就找不到了,就到博客上做些记录吧。 性能杀手 1. 低质量的索引 2. 不精确的统计 3. 过多的阻塞和死锁 4.不基于数据集操作,通常是T-Sql游标 5.低质量的查询设计 6.低质量的数据库设计 7.过多的碎片 8.不可重用的执行计划 9. 低质量的执行计划,通常是因为参数嗅探所导致的 10.执行计划频繁重编译 11. 游标的错误使用 12. 数据库日志的错误配置 13. 过多使用或者错误配置tempdb 我已经在我的表上建立了索引,速度已经大大加快了,从CPU 占用99%,

python基础二

天大地大妈咪最大 提交于 2020-03-01 07:20:11
一、数据类型   数字、字符串、列表、元组、字典、集合 二、基础数据类型   2.1数字int    数字主要事用于计算用的,使用方法并不是很多,就记住一种就可以。   2.2布尔值bool   布尔值就两种:True,Fals.就是反应条件的正确与否。   真  1   True   假  0  False   2.3字符串str   2.3.1、字符串的索引与切片   索引即下标,就是字符串组成的元素从第一个开始,初始索引0以此类推。       切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是骨头不顾尾)   2.3.2字符串的常用方法   2.4元祖tupe   元祖被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元祖。   例:(1,2,3)(“a”,“b”,“c”)   2.5列表list   列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔 开,而且他里面可以存放各种数据类型比如:   li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]   列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是

sqlserver中聚集索引和非聚集索引

送分小仙女□ 提交于 2020-03-01 04:13:58
微软官网上的解释: 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。 表或视图可以包含以下类型的索引: 聚集 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。 索引定义中包含聚集索引列。 每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。 如果表具有聚集索引,则该表称为聚集表。 如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。 非聚集 非聚集索引具有独立于数据行的结构。 非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。 从非聚集索引中的索引行指向数据行的指针称为行定位器。 行定位器的结构取决于数据页是存储在堆中还是聚集表中。 对于堆,行定位器是指向行的指针。 对于聚集表,行定位器是聚集索引键。 可以向非聚集索引的叶级添加非键列以跳过现有的索引键限制,并执行完整范围内的索引查询。 聚集索引和非聚集索引都可以是唯一的。 这意味着任何两行都不能有相同的索引键值。 另外,索引也可以不是唯一的,即多行可以共享同一键值。 实际上,可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引

Mysql之索引分享

烈酒焚心 提交于 2020-03-01 04:02:48
索引介绍 索引的种类 B-Tree 索引 最常见的索引类型,大部分引擎都支持B树索引。 HASH 索引 只有Memory引擎支持,使用场景简单。 R-Tree 索引(空间索引) 空间索引是MyISAM的一种特殊索引类型,主要用于地理空间数据类型。 Full-text (全文索引) 全文索引也是MyISAM的一种特殊索引类型,主要用于全文索引,InnoDB从MYSQL5.6版本提供对 高性能索引策略 覆盖索引 联合索引 索引下推 来源: CSDN 作者: Benett-Chen 链接: https://blog.csdn.net/sky_100/article/details/104578135

MySQL中InnoDB锁的介绍及用途

巧了我就是萌 提交于 2020-03-01 03:45:53
前言 读这篇文章之前可以先了解一下 MySQL中InnoDB数据结构 一、InnoDB引擎对隔离级别的支持 事务隔离级别 脏读 不可重复读 幻读 读未提交(read-uncommitted) 可能 可能 可能 不可重复读(read-committed) 不可能 可能 可能 可重复读(repeatable-read) 不可能 不可能 InnoDB不可能 串行化(serializable) 不可能 不可能 不可能 隔离级别到底如何实现? 二、锁的介绍 1、表锁、行锁 通过锁来管理不同事务对共享资源的并发访问 表锁与行锁的区别: 锁定粒度:表锁 > 行锁 加锁效率:表锁 > 行锁 冲突概率:表锁 > 行锁 并发性能:表锁 < 行锁 InnoDB存储引擎只支持行锁,表锁是通过锁住所有行实现 2、InnoDB锁类型 共享锁(行锁,又称S锁):Shared Locks 又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁, 都能访问到数据,但是只能读不能修改。 select * from teachers WHERE id = 1 LOCK IN SHARE MODE ; commit / rollback 排它锁(行锁,又称X锁):Exclusive Locks 又称为写锁,简称X锁,排他锁不能与其他锁并存,如一个事务获取了一个数据行的排他 锁

Lucene的索引文件格式(1)

醉酒当歌 提交于 2020-03-01 03:38:39
Lucene学习总结之三:Lucene的索引文件格式(1) Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙。 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。 Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。 一、基本概念 下图就是Lucene生成的索引的一个实例: Lucene的索引结构是有层次结构的,主要分以下几个层次: 索引(Index): 在Lucene中一个索引是放在一个文件夹中的。 如上图,同一文件夹中的所有的文件构成一个Lucene索引。 段(Segment): 一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。 如上图,具有相同前缀文件的属同一个段,图中共两个段 "_0" 和 "_1"。 segments.gen和segments_5是段的元数据文件,也即它们保存了段的属性信息。 文档(Document): 文档是我们建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。 新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并到同一个段中。 域(Field):

python学习笔记第二十二天--------NumPy(二)

泄露秘密 提交于 2020-03-01 03:31:46
文章目录 ndarray的矩阵运算 ndarray 的切片、索引操作 ndarray 的条件索引 ndarray的维数转换 transpose() ndarray的矩阵运算 import numpy as np arr = np . arange ( 10 ) print ( arr ) [0 1 2 3 4 5 6 7 8 9] # 矩阵之间的运算,是按矩阵级的运算,每一个元素和对应索引的运算进行运算 print ( arr * arr ) print ( arr + arr ) [ 0 1 4 9 16 25 36 49 64 81] [ 0 2 4 6 8 10 12 14 16 18] # 广播运算,将标量广播到数组的各个元素上 print ( 1 . + arr ) print ( 2 * arr ) [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] [ 0 2 4 6 8 10 12 14 16 18] ndarray 的切片、索引操作 #1. 一维数组的索引和切片操作 arr1 = np . arange ( 10 ) print ( arr1 ) print ( arr1 [ 5 : 9 ] ) [0 1 2 3 4 5 6 7 8 9] [5 6 7 8] # 2. 多维数组的索引和切片操作 #lis = range(10) #arr3 = np