加载中
谈谈lucene的DocValues特性之SortedDocValuesField

lucene的DocValues不同于document文档级别的存储,它是一个面向列的存储结构,提供从文档编号到值的映射功能。根据不同的数据类型和应用场景支持多个DocValuesField类型,SortedDocValuesFi...

昨天 16:10
4
谈谈CAS的ABA问题

先看示例,如下: 给定栈: top->node_A->node_B,线程1准备弹出node_A然后将top指向node_B,线程2将node_A和node_B都弹出后再将node_A入栈,那么线程1仍然会将top指向node_B,此时栈正确的情...

CAS
01/13 16:25
17
谈谈CAS的常规用法

CAS的核心操作是比较并交换,具体是假设当前内存位置V的值为A,如果给定的值确实为A那么将新值B设置到内存位置V上,最后总是返回内存位置原有的值。 这是一个典型的读-改-写的操作,并且是原...

CAS
01/11 20:26
11
谈谈原子变量与锁的性能比较

正常情况下基于原子变量实现的效率会比基于锁的效率高效,因为基于锁的时候会发生线程间的上下文切换,而原子变量不会。用程序实际测试了一下也确实如此,结论是原子变量的平均效率是锁效率的...

01/10 20:39
11
谈谈求解最大公约数的欧几里得算法

问题:给定两个整数a和b,求解他们的最大公约数。 求解方法网上已经有很多资料,这里只是谈谈求解方法的证明: a可以写成a=kb+r(0<=r<b),这里设最大公约数永为正数,因此不管a、b的正负性,...

01/03 19:46
4
谈谈lucene的词向量存储结构

lucene的词向量即TermVectors记录的是每篇文档每个字段每个词的词频、位置、字符偏移量、payload信息,与数据域的存储有着相似的实现思路同样由两个文件组成,一个是数据文件采用分片压缩存储...

2018/12/30 20:16
9
谈谈KMP算法

KMP算法的资料网上已经一大把了,主要用来解决某个文本片段是否包含另一个子串问题。这里假设文本片段的长度n大于子串长度m,如: 文本串为ABCDABGHIJK 子串为 ABCDABE 在传统的暴力解法中当...

2018/12/17 19:11
15
排序--二分插入排序

二分插入排序是对直接插入排序的一个优化,在排序--直接插入排序中已经分析过直接插入排序的最坏时间复杂度是平方级别的,二分插入排序则是通过二分查找对寻找插入位置进行了优化,在找到插入...

2018/12/16 16:40
13
谈谈lucene的数据域存储

lucene的数据域也就是存储document文档的区域,只能通过ID号来定位文档,定位后可根据指定的字段获取所需数据。粗略的说fdt文件存储数据,fdx文件用于通过ID号来定位文档。(注:以下列出的内...

2018/12/08 15:42
12
谈谈lucene中的BytesRefHash

lucene中很多的数据结构都采用了个性化的实现,而且没有利用一些通用的开源的其它框架,主要的目的还是为了灵活可控、保证高效率、节约内存,BytesRefHash就是其中一个基本的、重要的、核心的...

2018/12/03 20:08
7
排序--直接插入排序

按元素由小到大排列,直接插入排序主要过程如下:选取一个元素,从已经有序的序列的最后一个元素开始由后向前查找插入的位置,如果该元素<前面的元素则交换位置,直到该元素>=前面的元素。如...

2018/11/28 19:37
6
排序---选择排序

按照由小到大的顺序排列,选择排序基本步骤: 1、从已有的元素中选择一个最小的元素与第一个元素交换; 2、对剩下的n-1个数值重复1的步骤,直到剩下的数值个数为1。 令minIdx为最小元素下标,...

2018/11/26 19:33
7
LZ4压缩算法分析

LZ4压缩算法是LZ算法系列中的一种,而且网上也号称是目前最快的压缩算法之一,现没时间亲测也不对LZ系列算法展开讨论只分析LZ4。LZ4算法有两种压缩方法,一种侧重于压缩速度,另一种侧重于压...

LZ4
2018/11/23 19:49
19
结合lucene谈谈日期的压缩问题

说起日期值的压缩,一般容易想到的办法是将日期转化成long类型,然后再通过变长整形进行压缩,我算了一下按照毫秒来算最多占用5个字节(可以通过“谈谈变长整型”中的表查看),确实节省了部...

2018/11/15 20:07
1
结合lucene谈谈浮点数的压缩问题

先说说单精度float类型的压缩方法,lucene里面是将-1.0~125.0之间浮点数并且小数点部分为0的值使用1个字节压缩,当然必须排除-0.0f,其余的正数使用4个字节存储,负数使用5个字节存储(第一个...

2018/11/12 19:30
17
检测synchronized与ReentrantLock性能差异

在java并发编程实战中说synchronized与ReentrantLock性能从java1.6以后基本持平,并且网上也有人这样说,然后我就用程序测试一下,测试环境jdk1.8 ,cpu i5-4210H,代码如下: public class...

2018/11/08 18:49
10
谈谈变长整型

变长整型采用1个标志位和7个数据位的方式来对一个正整型数值进行压缩,标志位的作用是表明除7位数据位外余下数据位的值是否为零,具体计算方式为:将数值与~0x7f进行与运算,如果数值为0表明...

2018/11/04 16:04
0
数据空间局部性带来的效率差异测试

通过二维数组的访问方式来测试数据的空间局部性带来的效率差异性,代码如下: static void test1(){ int[][] data = new int[10000][10000]; int temp=1; long start = System.currentTimeMi...

2018/11/01 18:59
5
java变量读写效率测试

主要测试全局变量、局部变量、volatile变量、原子变量的读写效率,源码如下: public class GloableVarientTest { private long temp = 0; public void test() { long loop = Integer.MAX_VA...

2018/10/30 11:49
0
排序--冒泡排序

按照由小到大的顺序排列,冒泡排序基本步骤: 1、比较相邻两个数值的大小,将数值大的交换到数值小的后面,数据交换的时候需要1个临时变量空间; 2、对剩下的n-1个数值重复1的步骤,直到剩下...

2018/10/26 19:42
11

没有更多内容

加载失败,请刷新页面

返回顶部
顶部