3 放羊的大飞

尚未进行身份认证

暂无相关简介

等级
TA的排名 11w+

ES的查询过程、倒排索引

一、ES的搜索过程: 1、query phase 查询阶段: 1.客户端发送请求,接受到的节点变成coordinate node协调节点; 2.协调节点将搜索请求广播给:该索引中每个节点的副本分片or主分片; 3.每个分片将自己的搜索结果(一些doc id)返回给协调节点,由协调节点做数据的合并、排序、分页等操作,产出最终的查询结果; 2、fetch phase 取回阶段: 4.协调节点根据查询阶段得到的结果集(doc id),向含有...

2020-05-23 00:37:16

ES介绍

一、ES的简介 1、ES是一个开源分布式全文检索引擎,每个字段均可被索引、被搜索。 2、使用Lucene作为核心来实现索引和搜索的功能,通过RESTful API提供简单的操作方式。 3、数据的存储、检索效率高;扩展性强,可以扩展到上百台服务器,处理PB级别的数据。(1PB=1024T=1024*1024G) 4、ES的节点启动后,通过多播(multicast)或者单播寻找集群中的其他节点,并与之建立连接。 5、ES对比关系型数据库: 索引(index):相...

2020-05-22 23:54:32

阻塞队列

Lock实现锁的原理: 通过Node把线程构成队列,搁置除头结点外的其他线程,当头结点释放锁时唤醒下一个节点,同时更新头结点。一、Condition接口 1、Condition接口:条件对象,阻塞和唤醒线程的作用。位于java.util.concurrent.locks包下,其中有await()、signal()、signalAll()等抽象方法,只有AQS和AQLS类中有内部类实现了Condition接口。 2、ReentrantLock接口中,有内部类Sync继承自Abs...

2020-05-14 00:30:13

CAP和BASE理论

1. CAP理论 CAP理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。1.1 一致性(Consistency) 一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后...

2020-05-07 21:14:41

Redis的高可用

Redis实现高可用的方式 主要方式:redis主从复制、哨兵机制、持久化机制、keepalived等一、Redis主从复制 1、主从结构的作用:数据备份;读写分离,提升读性能(耗时读操作由从服务器来做);实现高可用,提高容错。 2、redis只有一个master,有多个slave。主服务器主要进行写操作,从一般设置为只读,并接收主同步过来的数据。 3、可以考...

2020-05-06 01:35:43

Redis和ZK实现分布式锁

一、Redis实现分布式锁 1、使用Redis分布式锁的原因:Redis性能好;命令支持比较好,实现方便。 2、实现方式:直接用int setnx写key,如果成功了,说明获取锁成功,否则拿锁失败。拿锁成功之后对key设置超时时间,操作完成时可通过del key释放锁。二、Zookeeper实现分布式锁 1、通过创建zk的znode节点进行控制。检查zookeepe...

2020-05-05 02:34:44

Redis和memcached的区别

一、Redis介绍 1、强一致性:任何时刻所有用户查询到的都是最新的数据。(关系型数据库的更新操作) 最终一致性:某一时刻不同用户或进程查到的数据可能不同,但是最终更新成功的数据都能查到。(主流NoSQL是这种) NoSQL:基于内存的数据库,提供一定的持久化功能。Redis和MongoDB就是NoSQL。 2、Redis性能优...

2020-05-05 01:59:40

LeetCode_合并两个有序链表_LinkedList_E

21. 合并两个有序链表pre:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public...

2020-05-04 00:20:15

LeetCode_数组的度_Array_E

697. 数组的度class Solution { public int findShortestSubArray(int[] nums) { if (nums == null || nums.length == 0) { return -1; } Map<Integer, Node> map = n...

2020-05-03 23:43:45

Redis的过期策略和内存淘汰机制

一、Redis的过期策略和内存淘汰机制1、内存过期策略 1. 对redis中的key设置了过期时间,执行的过期策略是:定期删除+惰性删除 定期删除:每100ms随机抽取一批数据进行检查,如果符合过期时间则删除key。(如果检查所有key那直接卡死了) 惰性删除:获取key的时候检查key是否过期。 2. 为什么不用定时删除:对每个ke...

2020-04-27 22:44:18

Redis的持久化

一、复制技术 1. 快照snapshot:保存待备份文件某一时刻的状态,出问题可以回滚。便捷,但是实时性不高。 2.写时复制Copy-on-Write:复制一个对象不是开新内存多放一份,而是在新对象的内存映射表中指向原对象的位置;修改时先复制到新位置,修改内存映射,进行写入操作。 优点:复制时节省内存空间,读操作不会复制。 缺:大文件修改时要复制一遍或者比较上个版本,比较费时...

2020-04-27 22:21:46

Redis的数据类型及使用场景

一、Redis的数据结构 存储的时候key和value都是String,value支持String、hash、list、set、zset等数据结构。1.String 结构:key-value 常用方法:set、setex、setnx(setIfNotExist)、get、incr/decr 使用场景:存task、分布式锁、存int值做...

2020-04-23 00:10:47

缓存和缓存淘汰算法

一、内存、缓存、寄存器 1. CPU <===> 寄存器 <===> 缓存 <===> 内存 寄存器:cpu中的一部分,cpu直接拿寄存器中的数据,包含:指令寄存器、程序计数器。寄存器从缓存或者内存中获取数据。 缓存:直接从内存拿数据速度很慢,缓存是数据的一种中转方式。 一级缓存:内置在cpu...

2020-04-17 00:11:14

LRU算法

LRU: Least Recently Used 最近最少使用。缓存算法。 利用链表和hashmap实现: 新增:如果新数据项在链表中存在,则把该节点移到链表头部;如果不存在,则新建一个节点放到链表头部;若缓存满了,则把链表最后一个节点删除。 查找:如果数据项在链表中存在,则把该节点移到链表头部并返回对应节点,...

2020-04-09 23:07:11

LeetCode_旋转矩阵_Array_M

01.07. 旋转矩阵简单粗暴:class Solution { public void rotate(int[][] matrix) { int size = matrix.length; int[][] arr = new int[size][size]; for (int i = 0; i < size; i++) { ...

2020-04-07 22:30:48

LeetCode_最接近的三数之和_Array_M

16. 最接近的三数之和class Solution { public int threeSumClosest(int[] nums, int target) { if (nums.length < 3) { return -1; } Arrays.sort(nums); int res =...

2020-04-05 02:23:16

LeetCode_两数之和_Array_E

1. 两数之和 暴力:class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; if (nums == null || nums.length == 0) { return res; } ...

2020-04-05 01:25:06

LeetCode_ThreeSum_Array_M

15. 三数之和 先排序,然后用双指针即可快速查找。注意数据的去重class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<>(); ...

2020-04-05 00:53:29

LeetCode_除自身以外数组的乘积_Array_M

238. 除自身以外数组的乘积 不能用除法,不能额外空间,所以先用一个数组存第 i 位左边的所有数乘积,再倒过来遍历赋值:res = 左边乘积 * 右边乘积class Solution { public int[] productExceptSelf(int[] nums) { int[] result = new int[nums.length]; ...

2020-04-04 17:39:11

LeetCode_盛最多水的容器_Array_M

11. 盛最多水的容器 暴力...class Solution { public int maxArea(int[] height) { int max = 0; for (int i = 0; i < height.length - 1; i++) { for (int j = i + 1; j < h...

2020-04-04 15:29:45

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。