索引

Java面试题集锦

依然范特西╮ 提交于 2020-04-03 05:27:09
1. String、StringBuffer和StringBuilder的区别。 (1) String:存储数值不可改变的字符串 (2) StringBuffer:可变字符序列、线程安全、效率低 (3) StringBuilder:可变字符序列、线程不安全、效率高 2. final, finally, finalize的区别。 (1) final修饰的类不能被继承,修饰的方法不能被子类重写,修饰的属性为常量。一旦初始化后,不可再被赋值。习惯上,常量 用大写字符表示。 (2) finally是异常处理语句结构的一部分,表示总是执行。 (3) finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其 他资源回收,例如关闭文件等。 3. HashMap和Hashtable的区别。(都完成了Map接口) (1) HashMap是Hashtable的轻量级实现(非线程安全的实现),效率较高,而Hashtable是线程安全的,效率较低。 (2) Hashtable不允许使用 null 作为 key 和 value,而HashMap 可以。 (3) Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。

mysql高性能索引

﹥>﹥吖頭↗ 提交于 2020-04-03 01:59:17
独立索引:   独立索引是指索引列不能是表达式的一部分,也不能是函数的参数    例1: SELECT actor_id FROM actor WHERE actor_id+1=5 --这种写法,就算在actor_id上建立了索引,也不起效    例2: SELECT .... WHERE TO_DAYS(CURRENT_DATE) - TO_DAYS(date_col) <= 10 --这也是一种错误的写法 多列索引(联合索引)&选择合适的索引列顺序:   多列索引(Multiple-Column Indexes)也称为复合索引(composite index),也即同时对多个列建立索引。   什么时候用多列索引? 当出现服务器对多个索引做相交操作时(通常有多个AND条件),通常意味着需要一个包含所有相关列的多列索引,而不是多个独立的单列索引。 当服务器需要对多个索引做联合操作时(通常有多个OR条件),通常需要耗费大量CPU和内存资源在算法的缓存、排序和合并操作上。特别是当其中有些索引的选择性不高,需要合并扫描返回大量数据的时候。   多列索引的生效规则:   比如(a,b,c),abc都是拍好序的,在任意一段a的下面b都是排好序的,任何一段b下面c都是拍好序的。多列索引的生效原则是从前往后依次使用生效,如果中间某个索引没有使用,那么断点前面的索引部分起作用

Elasticsearch的Refresh与Flush操作

只谈情不闲聊 提交于 2020-04-02 14:21:53
初次接触到这两个概念,估计都会觉得他们没什么差别,都是为了在操作索引之后让索引可以被实时性的搜索,不过它们还是有点不同的。 Elasticsearch底层依赖Lucene,这里我们介绍下Lucene的segment, Reopen,commit。 Segment 在ES中,基本的存储单元是shard(分片),但是在更底层的Lucene上稍微有点不同,ES的每一个shard是Lucene的一个index(索引),Lucene的索引由多个segment组成,每个segment就是ES文档的倒序索引,里面包含了一些term(词)的mapping(映射)。 当每个ES的文档创建的时候,都会写入一个新的segment中,因此每次写入的都是新的segment,所以不需要修改之前的segment。在删除文档的时候,只是在它属于的segment哪里标记为已删除就可,没有真正的从磁盘中抹除。更新也是同样的,只是在对应之前segment哪里标记为逻辑删除,然后新建一个新的segment。 Lucene Reopen Reopen是为了让数据可以可以被搜索到,尽管这个时候数据可以被搜索到,但是不一定保证数据已经被持久化到磁盘中。 Lucene Commit Commit就是为了让数据持久化,每一次的Commit,不同segment的数据都会被持久化到磁盘中,虽然这样可以让数据更安全

SQL Server 性能调优

依然范特西╮ 提交于 2020-04-02 07:36:52
1、 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1;在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的数据的。不要在应用中使用数据库游标,游标是非常有用的工具,但比使用常规的、面向集的SQL语句需要更大的开销;按照特定顺序提取数据的查找。 2、 避免使用不兼容的数据类型。例如float和int、char和varchar、binary和varbinary是不兼容的。数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。例如: SELECT name FROM employee WHERE salary > 60000 在这条语句中,如salary字段是money型的,则优化器很难对其进行优化,因为60000是个整型数。我们应当在编程时将整型转化成为钱币型,而不要等到运行时转化。 3、

Lucene配置步骤详解

白昼怎懂夜的黑 提交于 2020-04-02 06:26:20
Lucene配置步骤说明:   1.搭建环境;   2.创建索引库;   3搜索索引库。 Lucene配置步骤:    第一部分:搭建环境(创建环境导入jar包)     前提:已经创建好了数据库(直接导入book.sql文件)       第一步:下载Lucene:         Lucene是全文检索功能的工具包,使用时从官方网站下载,并解压         下载版本:4.10.3(要求:jdk1.7以上)       第二步:创建项目导入包,项目结构如下:       第二部分:创建索引         步骤说明:           1.采集数据           2.将数据转换成Lucene文档           3.将文档写入索引库,创建索引        第一步:采集数据           Lucene全文检索不是直接查询数据库,所以需要先将数据采集出来           1.创建Book类         2.创建一个BookDao类         3.创建一个测试类BookDaoTest         4.测试结果,采集数据成功     第二步:将数据转换成Lecene文档         Lucene是使用文档类型来封装数据的,所以需要先将采集的数据转换成文档类型。其格式为:       修改book类,新增一个方法转换数据         第三步

01.JS基本语法-数据类型和变量

老子叫甜甜 提交于 2020-04-01 04:58:59
:JavaScript代码可以直接嵌在网页的任何地方,但一般写在之间,必须要有自己的闭标签 JS的基本结构 <script type="text/javascript"> <!-- JavaScript 语句; --> </script > JS只能在客户端执行,并且不能操作服务器端 引入这个文件 ②JavaScript严格区分大小写 <html> <head> <script src="/static/js/abc.js"></script> </head> <body> ... </body> </html> 变量 变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,声明变量赋值时指明数据类型: var width=5; var a; // 申明了变量a,此时a的值为undefined var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1 var s_007 = '007'; // s_007是一个字符串 var Answer = true; // Answer是一个布尔值true var t = null; // t的值是null var:提前声明 可以不声明之间赋值【不推荐】 注意 : JavaScript严格区分大小写 js是一门动态语言 strict模式

Mariadb基本操作

瘦欲@ 提交于 2020-04-01 02:19:48
1、 导入hellodb.sql生成数据库 (1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄 [root@centos7 ~]# mysql -p -S /mysql/3307/socket/mysql.sock Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 10.2.25-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> source hellodb_innodb.sql (2) 以ClassID为分组依据,显示每组的平均年龄 (3) 显示第2题中平均年龄大于30的分组及平均年龄 (4) 显示以L开头的名字的同学的信息 2、数据库授权magedu用户,允许192.168.1.0/24网段可以连接mysql 3

T-SQL查询进阶--深入浅出视图

喜你入骨 提交于 2020-04-01 02:10:05
简介 视图可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata. 视图简单的理解如下: 通过视图,客户端不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。 为什么要使用视图(View) 从而我们不难发现,使用视图将会得到如下好处: 视图隐藏了底层的表结构,简化了数据访问操作 因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据 使用视图,方便了权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性 视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,使已经建立在这个视图上客户端程序不受影响 视图(View)的分类 视图在SQL中可以分为三类 普通视图(Regular View) 索引视图(Indexed View) 分割视图(Partitioned View) 下面从这几种视图类型来谈视图 普通视图(Rugular View) 普通视图由一个Select语句所定义,视图仅仅包含其定义和被引用表的metadata.并不实际存储数据。MSDN中创建视图的模版如下: CREATE VIEW [ schema_name . ] view_name [ (column [ ,

python之列表

ぃ、小莉子 提交于 2020-04-01 00:45:36
1. 什么是列表   定义: 能装对象的对象   在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求   列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操作(重点)   添加:   1. append() 追加   2. insert(位置, 元素) 插入指定元素到指定位置    lst = ["凡人修仙传", "诛仙", "神墓"] # 添加 append() 追加. 在后面添加 lst.append("看见") lst.append("追风筝的人") # # 插入 insert(位置, 元素), 效率相对比较低 lst.insert(1, "琴帝") 删除:   1. pop(index) 根据索引删除   2. remove(元素) 根据元素删除 # 删除 lst = ["斗破苍求", "手机", "爵迹", "满城尽带黄金甲", "三生三世十里桃花"] # # pop() 默认从后往前删 lst.pop() # pop(索引) 按照索引位置删除 lst.pop(1) # # remove(元素) 移除 lst.remove("满城尽带黄金甲") # 当元素不存在的时候会报错 # del lst[::2] # 用切片或者索引删除 不常用 lst.clear() # 清空. 修改:   索引修改   lst[索引] = 元素 # 修改

MySQL表介绍

假装没事ソ 提交于 2020-03-31 17:37:01
MySQL InnoDB表介绍 一、索引组织表 在InnoDB引擎中,表都是根据主键顺序存放的。这种存储方式称为索引组织表,在InnoDB引擎中,每张表都有逐渐。如果没有显示定义主键,则引擎会按照以下方式选择或创建主键。 (1)、判断表是否有非空唯一索引,如果有,则该字段为主键。如果有多个非空唯一索引,则选择第一个定义的非空索引字段作为主键(定义索引的顺序,不是定义字段的顺序) (2)、如果不符合上述条件,InnoDB自动创建一个6字节大小的指针。 二、InnoDB逻辑存储结构 从InnoDB得逻辑存储结构看,索引数据放在一个空间中,称作表空间。表空间又由段(segment),区(extend),页(page)组成。InooDB的逻辑存储结构大致如下图所示: 1、表空间 表空间可以看作InnoDB存储引擎逻辑存储结构的最高层,所有数据都放在表空间中。5.7默认启用参数innodb_file_per_table。每张表数据放在一个单独的表空间里边,如果关闭该参数,所有数据放在一个表空间ibdata1内。 如果启用innodb_file_per_table该参数,每张表的表空间存放的是数据,索引,插入缓冲Bitmap页。其他类的数据,如回滚(undo)信息,插入缓冲索引页,系统事务信息,二次写缓冲等还是放在原来的共享表空间内。 2、段 表空间是由各个段组成的,常见有数据段、索引段