AbstractQueuedSynchronizer是JUC的核心框架,其设计非常精妙。使用了Java的模板方法模式。首先试图还原一下其使用场景:对于排他锁,在同一时刻,N个线程只有1个线程能获取到锁;其他没有获取到锁的线程被挂起放置在队列中,待获取锁的线程释放锁后,再唤醒队列中的线程。线程的挂起是获取锁失败时调用Unsafe.park()方法;线程的唤醒是由其他线程释放锁时调用Unsafe.un
Lucene的索引过程分两个阶段,第一阶段把文档索引到内存中;第二阶段,即内存满了,就把内存中的数据刷新到硬盘上。 倒排索引信息在内存存储方式 Lucene有各种Field,比如StringField,Tex
缓存对于提高搜索引擎的吞吐量,降低CPU占用率极为重要。Lucene/Solr在这块做了很多的工作。Lucene/Solr中默认提供了5种缓存,同时solr还提供扩展缓存接口,允许开发者自定义缓存。1 缓存的基本原理Solr实现了两种策略的缓存:LRU(Leatest Recently Used)和LFU(Least&n
公司里面对公用数据库的访问有很多限制,因为涉及到性能问题。一般程序用到的就只有几张表。为了更自由地访问数据,一般都需要作数据导出。用程序实现数据导出,有以下几个问题:1 数据丢失用程序导数据,特别是增量导数据,是容易丢失数据的。我的处理方法是利用数据库表的AddTime字段。每次增量导入时,从dest表中取得最大时间,如果不存在(空表),则指定人工指定一个时间点。导入的时间要比最大时间小几秒钟,我
Solr提供了丰富的数据导入接口,可以导入数据库表、xml、json、csv各种格式的数据信息。Solr的数据导入接口可以分为两类:DIH接口和HTTP接口 。关于DIH接口的用法可以参看链接:http://blog.chenlb.com/2010/03/solr-data-import-quick-start.html,我就不重复造轮子了。关于HTTP接口有Embed
Lucene中默认的打分模型是VSM(Vector Space Model),其打分公式如下:看到很多文章都是对这个公式进行解析,但问题的关键在于看了一大段的解析之后,依然不懂其中的细节。我们直接从例子入手:建立如下的索引:publicclass LuceneDemo { Directory d; Analyzer analyzer; public LuceneDemo() throws IO
<由于本文从word中粘贴过来,故排版比较乱,可下载附件中的pdf版>引言在许多的信息检索应用中,很多地方都需要以前缀匹配的方式来检索输入的字符串。比如:编译器的词法分析、目录检索、拼写检查、中文分词的词库等自然语言处理相关的应用。为了提高检索的效率,我们通常把字符串构建成Trie树的形式。Trie树的每个结点是一个数组,数组中存储着下一个结点的索引信息。如对K=set{baby,ba
一、引言这段时间学习《机器学习》,学到第5章的“Logistic回归”,感觉相当吃力。追本溯源,从“Logistic回归”到“线性回归”,再到“最小二乘法”。最终定格到了《高等数学》(第六版·下册)第九章第10节“最小二乘法”,这才了解到最小二乘法背后的数学原理出自哪里。“最小二乘法”是最优化问题中建立经验公式的一种实现方法。了解它的原理,对于了解“Logistic回归”和“支持向量机的学习”都很
本来没有打算学习velocity模板引擎的,看到solr的browse中应用的是velocity,就简单地学习了一下。 从http://velocity.apache.org/download.cgi下载velocity-tools-2.0.zip文件,然后解压。在解压缩后的velocity-tools-2.0\examples目录下
我一直想写一些关于图论学习的收获。一直由于这样或者那样的原因都没有开始。无论如何,现在开始吧! 那么到底什么是图呢?我们这里说的图当然不是像照片一样的东东。最权威的定义:图=顶点集合+边集合。换言之,凡是能抽象成点集合和边集合的东西都是图。比如:中国地图。地图上的城市是一个个的点,而任意两个相邻城市之间有路
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号