上一页 1 ··· 8 9 10 11 12 13 14 15 下一页
摘要: Lucene Analyzer包含两个核心组件,Tokenizer以及TokenFilter。两者的区别在于,前者在字符级别处理流,而后者则在词语级别处理流。Tokenizer是Analyzer的第一步,其构造函数接收一个Reader作为参数,而TokenFilter则是一个类似拦截器的东东,其参数 阅读全文
posted @ 2018-01-23 15:03 車輪の唄 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 分词这块内容往往是做搜索的入门级内容,例如我们刚接触搜索的时候,经常会碰到“想要检索的检索不到”的问题,这时得对分词有个大概的了解了。 这里是简要分析,因此我用的是lucene1.9来分析(目前看的源码主要也是1.9版本,虽然都快出4.0了) 一)体系结构 首先我们了解两组类结构,一是Analyze 阅读全文
posted @ 2018-01-23 15:00 車輪の唄 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 将springboot自动生成的pom文件 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> 修改为 (主要 阅读全文
posted @ 2018-01-22 19:22 車輪の唄 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截, 阅读全文
posted @ 2018-01-19 17:39 車輪の唄 阅读(21) 评论(0) 推荐(0) 编辑
摘要: springmvc, servlet 和 http 日后认真研究, 先记录下常用获取方式 post请求有请求体, get请求只有请求行和请求头,没有请求体 1. 直接从HttpServletRequest获取信息, 多在springmvc的拦截器中获取请求头中的信息, 用于权限校验 public b 阅读全文
posted @ 2018-01-19 17:22 車輪の唄 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。 下面看看实现的细节。 @Configuration 注解: @Target(ElementType.TYPE) @Retention(RetentionPolicy.R 阅读全文
posted @ 2018-01-19 14:42 車輪の唄 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 类加载器是有层次的 一般是: 自定义类加载器 >> 应用程序类加载器 >> 扩展类加载器 >> 启动类加载器 上面的层次关系被称为双亲委派模型(Parents Delegation Model)。除了最顶层的启动类加载器外,其余的类加载器都有对应的父类加载器。 再简单说下双亲委托机制:如果一个类加载 阅读全文
posted @ 2018-01-18 21:54 車輪の唄 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 分析需求引入事件机制 使用spring的事件机制有助于对我们的项目进一步的解耦。假如现在我们面临一个需求: 我需要在用户注册成功的时候,根据用户提交的邮箱、手机号信息,向用户发送邮箱认证和手机号短信通知。传统的做法之一是在我们的UserService层注入邮件发送和短信发送的相关类,然后在完成用户注 阅读全文
posted @ 2018-01-11 16:48 車輪の唄 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Undertow是Jboss开发的一款基于XNIO的高性能 Web 服务器,并且兼容servlet3.1,在spring boot中很容易利用starter来替换掉tomcat作为服务容器。 这里有一篇文章,时间 2017年1月26日发布的: Tomcat vs. Jetty vs. Underto 阅读全文
posted @ 2018-01-10 10:03 車輪の唄 阅读(22) 评论(0) 推荐(0) 编辑
摘要: http://liuluo129.iteye.com/blog/1965268 spring spring mvc filter 过滤器相关类的结构 spring mvc的org.springframework.web.filter包下的Java文件如下: 类的结构如下: AbstractReque 阅读全文
posted @ 2018-01-09 22:53 車輪の唄 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 1. 概念 共享锁: 共享读操作,但只能一个写(读可以同时,但写不能)。共享锁防止其他正在运行的程序获得重复的独占锁,但是允许他们获得重复的共享锁。独占锁: 只有一个读或一个写(读和写都不能同时)。独占锁防止其他程序获得任何类型的锁。 2. FileLock FileChannel.lock(lon 阅读全文
posted @ 2017-12-27 16:18 車輪の唄 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 概述 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。非阻塞IO:例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区 阅读全文
posted @ 2017-12-26 17:23 車輪の唄 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 测试证明, flush操作是直接写入磁盘, 而且是每个索引链或者说每个DWPT写入一个segment, 但是只flush不commit, 在closeIndexWriter时, 所有写入磁盘的数据会回滚, 即被删除 flush动作不是将内存中缓存的索引写入磁盘, 而是写入操作系统缓冲区??? 只有I 阅读全文
posted @ 2017-12-22 18:08 車輪の唄 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 有限自动机算法(FST,Finite State Transducer):通过输入有序字符串构建最小有向无环图。通过共享前缀来节省空间,内存存放前缀索引,磁盘存放后缀词块 1、紧凑的结构,通过对词典中单词前缀和后缀的重复利用,压缩了存储空间。 2、O(len(str))的查询时间复杂度。 lucen 阅读全文
posted @ 2017-12-20 10:45 車輪の唄 阅读(147) 评论(0) 推荐(0) 编辑
摘要: lucene中存在的两种锁, 第一种, 针对每个索引文件目录有一个锁, 该锁保证了只有一个IndexWriter实例写该目录 第二种, 在每个IndexWriter实例下, 有一个ThreadState对象池, 默认大小为8(该对象池也被称为线程池, 但实际上他只是一个锁池), 具体参见点击打开链接 阅读全文
posted @ 2017-12-16 13:55 車輪の唄 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 当一个方法后面声明可能会抛出InterruptedException 异常时,说明该方法是可能会花一点时间,但是可以取消的方法。 抛InterruptedException的代表方法有: 1. java.lang.Object 类的 wait 方法 2. java.lang.Thread 类的 sl 阅读全文
posted @ 2017-12-14 22:35 車輪の唄 阅读(9) 评论(0) 推荐(0) 编辑
摘要: public class FinalReferenceTest { public static final StringBuffer sb = new StringBuffer(); public static void main(String[] args){ sb.append("hello") 阅读全文
posted @ 2017-12-13 16:59 車輪の唄 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 1. 随机读写文件类RandomAccessFile简介: 1) Java提供了一种功能特别强大的文件读写类:RandomAccessFile 2) 我们都知道File只能对文件进行创建、删除、改名等操作,但要读写文件的内容必须要经过流的包装; 3) 而RandomAccessFile虽然名字是以F 阅读全文
posted @ 2017-12-13 16:13 車輪の唄 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 1. 所有的组合关系都是对OR而言, AND连接符不予分析 2. MUST_NOT和其他语句连接在一起时, 只做过滤, 不参与打分 3. editionkey:(13 25 ) 代表筛选出 13或15 -editionkey:(13 25 )代表过滤掉13 和 15 阅读全文
posted @ 2017-12-10 17:40 車輪の唄 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 主要用于过滤查询和将multiTermQuery rewrite为原子查询后使用的查询对象, 他会返回一个constantquery A query that wraps another query or a filter and simply returns a constant score eq 阅读全文
posted @ 2017-12-09 09:58 車輪の唄 阅读(10) 评论(0) 推荐(0) 编辑
摘要: IndexSearcher(Searcher).createWeight(Query) 代码如下: protected Weight createWeight(Query query) throws IOException { return query.weight(this); } Boolean 阅读全文
posted @ 2017-12-09 09:53 車輪の唄 阅读(11) 评论(0) 推荐(0) 编辑
摘要: query树是由booleanQuery连接起来的,其叶子节点必然是termquery或是multiTermQuery termQuery的rewrite返回本身,而multiTermQuery的rewrite最终会返回一个个原子query 1、BoostingQuery BoostingQuery 阅读全文
posted @ 2017-12-09 09:52 車輪の唄 阅读(16) 评论(0) 推荐(0) 编辑
摘要: lucene中String类型的查询表达式最终会被QueryParse解析为各种Query对象, 直接使用查询表达式和直接使用Query对象的不同在于前者需要配置分词器进行分词, 而后者所见即所得没有分词过程 QueryParser parser = new MyQueryParser(versio 阅读全文
posted @ 2017-12-08 15:07 車輪の唄 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 执行后会保证numdocs和maxdocs值相同, 优化过程是重建索引段, 将删除的doc从segment中彻底删除, 也就是合并.del 和 .liv文件 通过以下对比可以看出优化操作也在进行段合并, 下图中num docs 和max doc之所以不想等, 是因为在这期间有索引更新 阅读全文
posted @ 2017-12-07 16:53 車輪の唄 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 1、网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解 阅读全文
posted @ 2017-12-07 09:52 車輪の唄 阅读(9) 评论(0) 推荐(0) 编辑
摘要: Character类是一个包装类。 char这种数据类型是基于原始的Unicode编码的,储存一个char用16个bit,因此定义characters也是16位定长的实体集合。 Unicode编码标准发生了变化,数量级从\uFFFF到了\u10FFFF 对Unicode标准中的所有字符,16位已经是 阅读全文
posted @ 2017-12-07 09:46 車輪の唄 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 1.lucen源码下载 http://archive.apache.org/dist/lucene/java/ 2.下载下来,发现不是project文件,需要用ivy和ant,弄成project文件:可参考http://blog.csdn.net/ccit0519/article/details/8 阅读全文
posted @ 2017-12-06 18:06 車輪の唄 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 在九个节点上设置三个shard三个replica,指定在每个节点上均匀分配的创建collection方式 curl 'http://localhost:8991/solr/admin/collections?action=CREATE&name='$name'&numShards=3&replica 阅读全文
posted @ 2017-12-01 11:50 車輪の唄 阅读(13) 评论(0) 推荐(0) 编辑
摘要: HashSet不能添加重复的元素,当调用add(Object)方法时候,首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素; 如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入 阅读全文
posted @ 2017-12-01 09:54 車輪の唄 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 测试实体类 @Data public class TestEn { String ss; Inner inner; //@Data public class Inner{ String s; @Override public String toString() { return "Inner [s= 阅读全文
posted @ 2017-11-28 19:28 車輪の唄 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 选修7 => 选修7 选修七 选修8 => 选修8 选修八 选修9 => 选修9 选修九 五E课堂 => 五E课堂 五e课堂 五E => 五E 五e 是在分词后进行处理,是一个filter 阅读全文
posted @ 2017-11-27 15:20 車輪の唄 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 在很多搜索网站上都有这样的一个功能,就是竞价排名,绑定某个关键字,给钱了那我给你排前面。 包括很多视频网站的一些站内搜索功能也有这样的需求; 最近在看solr官网,solr的查询功能中就包含了这一功能。参考地址如下: https://wiki.apache.org/solr/QueryElevati 阅读全文
posted @ 2017-11-24 11:02 車輪の唄 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 1.Hashmap在插入元素过多的时候需要进行Resize,Resize的条件是 HashMap.Size >= Capacity * LoadFactor。 2.Hashmap的Resize包含扩容和ReHash两个步骤,ReHash在并发的情况下可能会形成链表环 HashMap进行存储时,假设s 阅读全文
posted @ 2017-11-17 08:51 車輪の唄 阅读(9) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/conansonic/article/details/53235528 https://yq.aliyun.com/articles/45333 阅读全文
posted @ 2017-10-29 11:42 車輪の唄 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 总体上分为三步 1) 读取段信息(segment_N, si文件) , 获取segmentinfos对象, 其下有private List<SegmentCommitInfo> segments = new ArrayList<>(); SegmentCommitInfo类代表了每次的提交信息, s 阅读全文
posted @ 2017-10-26 15:18 車輪の唄 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 在使用Lucene时,有一条建议”不要频繁去打开关闭硬盘索引”。为什么会有这条建议?这就需要在IndexReader的实例化过程中找答案。先说一个结论“IndexReader的实例化过程是一个非常耗时的过程”。由于IndexReader只是一个抽象类,在调用代码: 真正得到的是StandardDir 阅读全文
posted @ 2017-10-24 15:34 車輪の唄 阅读(17) 评论(0) 推荐(0) 编辑
摘要: wait notify interrupt join 可以中断的有哪些? 第一: sleep, wait , join, 都是可以被中断的 第二: I/O操作, 传统的的I/O操作(阻塞式,流的形式)被阻塞时,是不可以被中断的,调用流的close方法也会被阻塞; Java 1.4中引入的新的I/O 阅读全文
posted @ 2017-10-23 15:06 車輪の唄 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 1. sleep()不释放同步锁,wait()释放同步锁 2. sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起 3. 这两个方法来自不同的类分别是Thread和Object 4 阅读全文
posted @ 2017-10-23 14:38 車輪の唄 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 1. zk启动异常通过zookeeper.out文件查看, 该文件在启动命令的执行文件夹下, 所以一般在bin层文件夹下执行启动名利 bin/zkServer.sh start 2. 启动命令的位置也决定了zoo.cfg配置中的相对路径位置 3. myid文件位于data文件夹下, 而data文件夹 阅读全文
posted @ 2017-10-23 10:40 車輪の唄 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高效的进行文档更新。更新修改器是中特殊的键, 用来指定复杂的操作,比如增加、删除或者调整键,还可能是操作数组或者内嵌文档。 1.$inc 这个修改器干什么使的呢?看看下面示例的具体操作后的结果即可知道。 示例文档:{ 阅读全文
posted @ 2017-10-20 15:52 車輪の唄 阅读(6) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 下一页