分类描述:吾日三省吾身

如何设计一个接口?

1、接口单一性职责2、接口幂等性(高可靠)3、接口入参规范4、接口命名规范5、接口出参规范6、接口可扩展性(开闭原则)7、接口封装特性8、高可用
2021年05月07日 13次浏览

一致性HASH算法一览

一、HASH算法 散列表又叫哈希表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。1、散列函数 散列表是以key-value形式存储的数据结构,它通过关键码值(key)来映射到表中的一个位置
algorithm 2020年10月30日 90次浏览

Java OOM是什么?

一、OOM是什么?堆对象在无法给对象分配内存空间的时候会触发一次Full GC回收垃圾对象,如果在回收了之后还没有足够的空间给新对象,那么就会抛出OOM的异常。java.lang.OutOfMemoryErrorJava堆溢出。1、java.lang.OutOfMemoryError: Java h
java 2020年10月27日 157次浏览

ES分布式集群架构如何实现?

Elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。
elasticsearch 2020年10月24日 101次浏览

Java逃逸分析是什么?

前一节中我们知道本地方法栈、程序计数器和栈区是线程内私有“财产“,外部无法共用,而堆区和方法区是线程公用“财产”,每个线程都有一份,以前我们通常认知对象和数据基本上内存基本上都分配在堆区,使用结束需要JVM老大哥进行回收,但是为啥不是所有的对象和数组都分配在堆区呢?因为有以下```逃逸分析```会影响其内存分配的位置:
java 2020年10月22日 157次浏览

JVM垃圾回收器啥工作?

一、垃圾回收器集锦 上回说到运行时数据区堆空间分为老年代和年轻代。刚创建的对象存放在年轻代,而老年代中存放生命周期长久的实例对象。年轻代中又被分为Eden区和两个Survivor区(From Space和To Space)。新的对象分配是首先放在Eden区,Survivor区作为Eden区和Old区
java 2020年10月22日 70次浏览

ES如何实现文章发布的准实时检索?

一、ES写入原理首先先看一张ES写入的流程处理图:本图来源于:点击1、document写入缓存将数据写入内存缓存(In-memorybuffer),并添加事务日志(translog),ES每5秒调用fsync将刷入磁盘。2、每一秒钟将In-memorybuffer的操作刷新到Linux Cahce,
elasticsearch 2020年10月20日 137次浏览

分词器(Tokenizer)原理

一、分词器是什么? 分词器是利用词库将输入的短语或词句分成一堆词集合的工具,常在搜索引擎和自然语言处理中使用到,本人就在ES搜索引擎中用到过自己定制化的IK分词器以及在文本指定类型短语关键词提取(BI-LSTM + CRF++)中用到过jieba分词器(中文分词器)和IK分词器(英文分词器)进行文章
elasticsearch 2020年10月19日 75次浏览

Apache Lucene啥返回搜索结果的呢?

 按照正常逻辑来说,你输入搜索词,搜索引擎应该返回你最想要的搜索结果,从表象看来搜索引擎只是输入结果,然后返回搜索结果,但是,你不知道搜索引擎背后做了多少事情:1、首先,搜索引擎会根据你的搜索词对你的搜索行为进行意图识别,调用定制的搜索逻辑为你查找结果,甚至为了让你的得到你想要的最好结果,它会使用不
elasticsearch 2020年10月17日 89次浏览

Apache Lucene是ES的“地基”?

 上回说到为什么ES能够很好的做全文检索,而MySQL等普通关系型数据库不行,请注意是不行而不是不能,那我们来说说普通关系型数据库为什么不行,普通关系型数据库的索引时B+数据,尤其擅长精确匹配的快速查找,而对于大篇幅的全文智能做模糊检索,模糊检索时必须做全表扫描,除此之外最恐怖的还是对单个长字段的左
elasticsearch 2020年10月16日 144次浏览