关闭
当前搜索:

lucene查询索引的6个步骤

先准备数据源,以两个文件名字符串做为值,保存两个document,如下图: 然后以"path:txt"为查询条件,来查询索引文件。我调试发现会有6个步骤。数据主要来源于3个文件,tim、doc、fdt。 1.先根据查询字段与词找出该字段所有的term(.tim文件中的terms) 2.加载tim文件(seekExact方法中currentFrame.loadBlock...
阅读(7) 评论(0)

HashMap的面试题你能回答几个?

1.HashMap用什么数据结构实现的? 答:数组。什么样的数组?答:Node[] table这样的。Node是什么?答:看下图: 也就是说这个数组每个元素都是个单向链表。 2.HashMap的get过程是? 答:先得到key的hash值,再把这个hash值与length-1按位与(取余),得到table数组的下标。取出这个下标值的key,与传入的key比较,如...
阅读(16) 评论(0)

搜索系统19:lucene索引的五个关键知识点

1.文件锁是怎么实现的? org.apache.lucene.store.NativeFSLockFactory 这个write.lock一直为0字节。那它有什么用,怎么判断这个Lock文件就是lucene里定义的锁?如下,判断文件的创建时间是否与之前创建时的时间一致: 代码:org.apache.lucene.store.NativeFSLockFactory.Nati...
阅读(53) 评论(0)

搜索系统18:lucene索引文件结构

1.多文件索引与复合索引的区别 2.segments(段)文件 3.段元数据 .si 保存了索引段的元数据信息 4.fnm(域名)文件 相当于solr里的schemal.xml文件 5.项词典(.TIS、TII)文件 lucene老版本的项词典是tis文件,新版本是tim文件,如图: 我没在这个文件里找到字段名,可能已经转成了数值。 《lu...
阅读(30) 评论(0)

智能小车48:不用volatile,编译器会优化什么?

有网友评论了我前面的中断实验的c代码,说全局变量需加上volatile关键字。平时写Java程序也没有用到这个,只知道这个用于多线程,但也不能完全解决多线程并发修改共享变量的问题。这几天我都在思考这个问题,向干了多年嵌入式开发的同学请教,还问了下韦东山老师,然后下文就是我的这个问题的理解。 测试两种情况 ,分别给全局变量INTNUM加上volatile和不加volatile,然后在AtmelSt...
阅读(37) 评论(0)

搜索系统17:HttpClient的网络连接是否被复用了

上文查看是否复用连接的方法有误,当时方法是把route(ip与端口等)传给连接池,相同的请求第二次就能返回相同的对象。这是没错,但相同的对象并不代表复用了Socket(连接)。因为这个对象是org.apache.http.pool.RouteSpecificPool。为了搞明白它与连接的关系,是否复用了连接,还需深入分析下。先查看一下它的结构: 一、从Socket到CPoolEntr...
阅读(22) 评论(0)

智能小车46:最小系统Atmega328p的中断实验

我居然没有找到Atmega328p的中文资料,这让我做每个实验都要自己去查下英文资料,比较麻烦。这里再多费话一句,为什么我要用Atmega328p做实验,因为这是arduino uno的mcu,代码可以直接移植到arduino上去。在做了arduino实验后,再看看Atmega328p数据手册、avr单片机、电路原理图,可以从底层深刻理解程序。真希望有更多的同学一起来追问和回答这些底层技术问题。好...
阅读(53) 评论(0)

搜索系统16:从HttpClient学习连接池

一.HttpClient请求的一般过程 1.拿连接 2.与服务器建立连接(new Socket) 3.从服务获取结果 4.keepAlive的判断 在代码org.apache.http.impl.execchain.MainClientExec里请求结束后(requestExecutor.execute),用策略模式来判断是否keepAlive if (reus...
阅读(29) 评论(0)

搜索系统15:tomcat如何使用NIO处理网络请求

搜索也需要web服务器,要搜得快,web服务器的性能很重要。本文简要介绍下tomcat的启动与请求处理,以便以后调优使用。我的java基础知识很久没更新了,我对连接池的认识还停留在ServerSocket阶段,以为tomcat还是用的这个呢。一看源码,学到了不少新知识,文中源码来自于tomcat-embed-core8.5.5。 一、tomcat启动NIO服务流程 1.主线程实例化Http...
阅读(19) 评论(0)

智能小车45:最小系统(Atmega328p)怎么存数据?

最小系统(Atemga328p芯片)其实是可以存储数据的,在说存数据前先了解下这个芯片有哪些存储器。 1.Flash(32K Bytes) 就是我们的程序存放的地方,这个最大,但和我们电脑的硬盘有点区别就是程序运行时不可写,只能编程时一次烧录进去。Flash中包含了boot loader,这个后面再学。 2.SRAM(2K Bytes) 和电脑的内存差不多。不过这个...
阅读(63) 评论(0)

搜索系统14:HttpClient怎么有两个超时参数,都该怎么配?

在Java的网络应用中,apache的HttpClient用的很多,比如Solrj中就用的是这个来给服务器发请求。其中有两个超时参数可配置,一个是HttpClientUtil.setConnectionTimeout,另一个是HttpClientUtil.setSoTimeout。通过debug代码发现在类org.apache.http.conn.scheme.PlainSocketFactory...
阅读(29) 评论(0)

搜索系统13:一个查询从solr到lucene都干了些什么事?

用了solr一段时间后,我想了解下solr是如何包装lucene。因为使用过程中几乎没有遇到直接操作lucene代码的情况,这让我有些迷糊。今天来看看一个solr查询的执行过程,经过debug发现了以下堆栈。 再看堆栈顶的方法里的lucene工具类: 哈,这就是lucene类了。这个时候就可能产生很多疑问了,solr不是分core/collection么,这里怎么没有体现?so...
阅读(25) 评论(0)

智能小车44:最小系统其实很简单

今天最终于搭了一个最小系统。敢说最小,因为只需要1个芯片。为了展示烧录程序的效果,加了个电阻和LED灯。但灯闪得太慢,不是程序里写的500毫秒,所以我再加个16m晶振和电阻,提供准确时钟。注意这个电阻为1M,且与晶振要并联。上图: 嗯,这个连线有点多,主要是因为ICSP接口需要6条线连接Atmega328p这个芯片。ICSP的接线方式还是要介绍下的,不然程序烧不进芯片。 ICSP编程器的6...
阅读(36) 评论(0)

搜索系统12:从solrj学习负载均衡的实现

我下面分析的solrj的版本是5.3.1,先看一下它的请求处理过程。 我们重点分析下这个LBHttpSolrClient.request方法,这个版本中有两个request方法,我这只分析request(final SolrRequest request, String collection)这个方法,通过这个就能看出原理了。 先看源码的注释,了解下这个方法的处理过程。 Trie...
阅读(30) 评论(0)

智能小车43:avr溶丝位晶振的设置

我们用AtmelStudio来开发了avr点亮一盏Led的实验,实验中是把程序烧进了arduino uno板,没有什么问题。 这两天我准备用arduino uno的mcu(ATmega328P)来搭建一个最小系统的硬件环境,由于知识储备还不够,不敢从头搭建。我选择了从某宝上买了个HiAvr的板子,这个有原理图,可以拿来学习。下图就是我焊接好的样子。 这次还是用《智能小车41:用Atm...
阅读(54) 评论(0)
63条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:6249次
    • 积分:665
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类