12 2017 档案
摘要:1. 概念 共享锁: 共享读操作,但只能一个写(读可以同时,但写不能)。共享锁防止其他正在运行的程序获得重复的独占锁,但是允许他们获得重复的共享锁。独占锁: 只有一个读或一个写(读和写都不能同时)。独占锁防止其他程序获得任何类型的锁。 2. FileLock FileChannel.lock(lon
阅读全文
摘要:概述 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。非阻塞IO:例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区
阅读全文
摘要:测试证明, flush操作是直接写入磁盘, 而且是每个索引链或者说每个DWPT写入一个segment, 但是只flush不commit, 在closeIndexWriter时, 所有写入磁盘的数据会回滚, 即被删除 flush动作不是将内存中缓存的索引写入磁盘, 而是写入操作系统缓冲区??? 只有I
阅读全文
摘要:有限自动机算法(FST,Finite State Transducer):通过输入有序字符串构建最小有向无环图。通过共享前缀来节省空间,内存存放前缀索引,磁盘存放后缀词块 1、紧凑的结构,通过对词典中单词前缀和后缀的重复利用,压缩了存储空间。 2、O(len(str))的查询时间复杂度。 lucen
阅读全文
摘要:lucene中存在的两种锁, 第一种, 针对每个索引文件目录有一个锁, 该锁保证了只有一个IndexWriter实例写该目录 第二种, 在每个IndexWriter实例下, 有一个ThreadState对象池, 默认大小为8(该对象池也被称为线程池, 但实际上他只是一个锁池), 具体参见点击打开链接
阅读全文
摘要:当一个方法后面声明可能会抛出InterruptedException 异常时,说明该方法是可能会花一点时间,但是可以取消的方法。 抛InterruptedException的代表方法有: 1. java.lang.Object 类的 wait 方法 2. java.lang.Thread 类的 sl
阅读全文
摘要:public class FinalReferenceTest { public static final StringBuffer sb = new StringBuffer(); public static void main(String[] args){ sb.append("hello")
阅读全文
摘要:1. 随机读写文件类RandomAccessFile简介: 1) Java提供了一种功能特别强大的文件读写类:RandomAccessFile 2) 我们都知道File只能对文件进行创建、删除、改名等操作,但要读写文件的内容必须要经过流的包装; 3) 而RandomAccessFile虽然名字是以F
阅读全文
摘要:1. 所有的组合关系都是对OR而言, AND连接符不予分析 2. MUST_NOT和其他语句连接在一起时, 只做过滤, 不参与打分 3. editionkey:(13 25 ) 代表筛选出 13或15 -editionkey:(13 25 )代表过滤掉13 和 15
阅读全文
摘要:主要用于过滤查询和将multiTermQuery rewrite为原子查询后使用的查询对象, 他会返回一个constantquery A query that wraps another query or a filter and simply returns a constant score eq
阅读全文
摘要:IndexSearcher(Searcher).createWeight(Query) 代码如下: protected Weight createWeight(Query query) throws IOException { return query.weight(this); } Boolean
阅读全文
摘要:query树是由booleanQuery连接起来的,其叶子节点必然是termquery或是multiTermQuery termQuery的rewrite返回本身,而multiTermQuery的rewrite最终会返回一个个原子query 1、BoostingQuery BoostingQuery
阅读全文
摘要:lucene中String类型的查询表达式最终会被QueryParse解析为各种Query对象, 直接使用查询表达式和直接使用Query对象的不同在于前者需要配置分词器进行分词, 而后者所见即所得没有分词过程 QueryParser parser = new MyQueryParser(versio
阅读全文
摘要:执行后会保证numdocs和maxdocs值相同, 优化过程是重建索引段, 将删除的doc从segment中彻底删除, 也就是合并.del 和 .liv文件 通过以下对比可以看出优化操作也在进行段合并, 下图中num docs 和max doc之所以不想等, 是因为在这期间有索引更新
阅读全文
摘要:1、网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解
阅读全文
摘要:Character类是一个包装类。 char这种数据类型是基于原始的Unicode编码的,储存一个char用16个bit,因此定义characters也是16位定长的实体集合。 Unicode编码标准发生了变化,数量级从\uFFFF到了\u10FFFF 对Unicode标准中的所有字符,16位已经是
阅读全文
摘要:1.lucen源码下载 http://archive.apache.org/dist/lucene/java/ 2.下载下来,发现不是project文件,需要用ivy和ant,弄成project文件:可参考http://blog.csdn.net/ccit0519/article/details/8
阅读全文
摘要:在九个节点上设置三个shard三个replica,指定在每个节点上均匀分配的创建collection方式 curl 'http://localhost:8991/solr/admin/collections?action=CREATE&name='$name'&numShards=3&replica
阅读全文
摘要:HashSet不能添加重复的元素,当调用add(Object)方法时候,首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素; 如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入
阅读全文