Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)

我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示。 Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的...

2018-06-30 17:37:23

阅读数:55

评论数:0

Lucene 4.X 倒排索引原理与实现: (2) 倒排表的格式设计

1. 定长编码最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示。 这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位。和词典的格式设计中顺序...

2018-06-30 17:36:23

阅读数:27

评论数:0

Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

词典的格式设计词典中所保存的信息主要是三部分:Term字符串Term的统计信息,比如文档频率(Document Frequency)倒排表的位置信息其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Te...

2018-06-30 17:35:09

阅读数:33

评论数:0

垃圾收集器的种类及原理

1、Serial收集器:古老的单线程收集器,作用于新生代。单线程的意义并非仅仅是只使用一条线程进行垃圾回收,更重要的是,在进行垃圾回收的时候,必须暂停其他所有的工作线程,因此,用户体验很不好。单实际上,Serial并不是一个一无是处的垃圾收集器,当虚拟机运行在Client模式下,Serial仍然是...

2018-06-30 16:43:21

阅读数:25

评论数:0

为什么redis 是单线程的?

以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了,这样可能理解得更深刻一点,不了解的朋友点:CPU到底比内存跟硬盘快多少redis 核心就是 如...

2018-06-30 16:25:20

阅读数:42

评论数:0

应对缓存击穿的解决方法

一.什么样的数据适合缓存?分析一个数据是否适合缓存,我们要从访问频率、读写比例、数据一致性等要求去分析. 二.什么是缓存击穿在高并发下,多线程同时查询同一个资源,如果缓存中没有这个资源,那么这些线程都会去数据库查找,对数据库造成极大压力,缓存失去存在的意义.打个比方,数据库是人,缓存是防弹衣,子弹...

2018-06-30 16:21:26

阅读数:39

评论数:0

ConcurrentHashMap详解以及get方法保持同步的解释

ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,C...

2018-06-30 15:39:47

阅读数:222

评论数:0

zookeeper选举机制

    FastLeaderElection算法通过异步的通信方式来收集其它节点的选票,同时在分析选票时又根据投票者的当前状态来作不同的处理,以加快Leader的选举进程。        每个在zookeeper服务器启动先读取当前保存在磁盘的数据,zookeeper中的每份数据都有一个对应的id...

2018-06-30 14:49:07

阅读数:36

评论数:0

Java并发——Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级

一、Synchronized实现原理1、Synchronized锁的3中形式:Synchronized修饰普通同步方法:锁对象当前实例对象;Synchronized修饰静态同步方法:锁对象是当前的类Class对象;Synchronized修饰同步代码块:锁对象是Synchronized后面括号里配...

2018-06-30 14:39:51

阅读数:71

评论数:0

JAVA和C# 3DES加密解密

最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,...

2018-06-30 14:14:32

阅读数:20

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭