数据结构数据用什么样的方式组合在一起常见的数据结构栈、队列、数组、链表、树栈是一种先进后出的结构只能从一段操作新增和删除无法从数据中间增删栈结构有两个名词压栈、弹栈。分别为往栈里添加数据和删除数据。栈结构很像弹匣只能从一端新增和删除并且先进后出。队列是一种先进先出的数据结构类似于从队列左边添加数据从右边弹出数据也无法从中间插入和删除。数据会像排队一样先进入队列的先被弹出。数组数组是有序的数据结构每一个元素都有自己的下标所以可以很快通过下标找到指定元素。优点1.查找速度快因为可以通过下标查找。2.可以再数据中间做增删操作。缺点1.增删速度慢因为从数组中间进行增删会导致后面所有数据的下标改变。数组的新增原理1.先创建新数组。2.将新元素放在指定下标处3.将元素其余元素复制到新元素链表是由一个个节点组成的每个节点存自己的值以及下一个节点的地址。优点增删快只需要修改左节点的地址然后记录下一个节点的地址缺点查询慢需要一个个节点的查询ElasticSearch首先什么是ES 为什么用ESES是快速搜索引擎引擎如果用mysql我们需要对商品或者标题做搜索我们会通过模糊搜索来找出对应行数据比如有一条数据是”I like ABC and DEF “ 我们的搜索条件给的”like DEF 而且不一定能搜索到而且效率很慢 如果用ES 就可以很快速的搜索到而且数据量大也没关系这是因为ES会对内容进行倒排索引 比如 ”今天天气很好“”今天很开心“ 对于这两个句子 ES会先进行分词 比如 “今天”对应ID【1、2】 “天气”对应【1】“开心”对应【2】 那么当你搜索”今天”的时候会直接【1、2】上面这些是讲为什么用ES接下来我说一下ES的重要概念1.集群和节点在生产中ES肯定是以集群的方式存在的那么就分为主节点和数据节点主节点负责创建索引数据节点负责读写数据2.索引 类比 数据库中的库在ES中不再区分更细维度的type 都是以【文档】的方式存储3.文档 类比 行每一行文档都会有个对应的唯一ID4.字段 类比 列每个文档中的键值对有两个重要的字段类型text会被分词 比如“今天天气很好”会被分成“今天”“天气”“很好”keyword不被分词 比如手机号等信息5.分片由于ES都是用于大量数据搜索的所以把所有数据放到一台服务器中不现实内存也受不了所以会将数据分成多片放到不同服务器中并且还有主分片和副本分片副本分片就是主分片的拷贝这样就算其中一个服务器宕机也可以有其他服务器使用自己的主分片和副本顶上同时这么干还能提升查询效率 因为他默认多个服务器同时开始检索