自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

atarik@163.com

高产似母猪。100% 抄袭 , 欢迎指正

  • 博客(30)
  • 资源 (10)
  • 收藏
  • 关注

原创 lucene 搜索过程

IndexSearcher是搜索的入口,主要提供的api都是关于search的。关于搜索,比较有意思的话题有这么几个:如何计算打分,这个问题已经在空间向量模型一文中讨论过?如何从一个搜索词得到一个Query对象?如何从Query对象到评分器从而计算打分的?几个重要的参数是如何在被组织起来计算的,比如n, filter, sort, collector等。另外,分页是如何进行的?  本文以展

2017-09-26 11:26:44 2207 3

原创 lucene的默认评分算法-向量空间模型(Vector Space Model)

在lucene4以前,一直都是使用经典的向量空间模型作为其检索模型,这种方式虽然统一了评分算法,简化了计算,但是带来的问题是很难去调整,一旦向量空间模型不适合,也很难去替换一种更好的算法。  而lucene4则将检索模型与事实上的搜索做了解耦和抽象,并且加入了另外几种检索模型的实现,其中就有经典的BM25。  经典的向量空间模型的理论基础及其在lucene中的应用  向量空

2017-09-26 11:08:55 1714 3

原创 IndexReader中maxDoc()和numDocs()的区别

maxDoc()和numDocs()。前者返回下一个可用的内部Document号,后者返回索引中的Document的数目。因为我们的索引只含有两个Document,numDocs()返回2;又因为Document号从0开始,maxDoc()也返回2。    注意:每个Lucene的Document有个唯一的内部编号。这些编码不是永久分配的,因为Lucene索引分配时在内部重新分配Docum

2017-09-23 16:33:18 910

原创 匿名内部类

匿名类即没有名字的类,在某个类内部使用,因为没有名字,别的类将无法调用它,只能在创建的时候,使用new语句声明它们。如this.addWindowListener(new WindowAdapter(){});因此,理解的时候可以将匿名类当做匿名内部类;匿名内部类,即没有名字的内部类,正因为没有名字,所以只能用一次,程序员通常会考虑这个问题,从而精简代码。反过来说,当你发现某个类只需要被用一次

2017-09-23 09:04:20 235

原创 索引文件介绍与数据类型

Lucene生成的索引文件由上文中提到的代码生成的索引文件如下所示:格式都相当怪异,那些这些文件里面都存放了些什么东西?我们先来了解如下名词a)段信息(SegmentInfo):它包含段的元数据;b)字段名(Field name):它包含了用来构建索引的字段名;c)存储的字段值(Stored Field values):它包含每一个文档的属性-值(attr...

2017-09-20 21:43:51 1619

原创 实现简单的线程池

public class Pthread extends Thread { private ThreadPool pool; private volatile boolean isShutdown; private Runnable target; public Pthread(Runnable task, ThreadPool pool) {

2017-09-20 17:09:46 347

原创 迭代器并发修改异常ConcurrentModificationException

问题: 我有一个集合,如下,请问,我想判断里面有没有”world”这个元素,如果有,我就添加一个”javaee”元素,请写代码实现。 使用普通迭代器出现的异常: ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 产生的原因: 迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代

2017-09-19 20:29:35 590

原创 死锁问题的出现和解决

同步弊端:效率低 如果出现了同步嵌套,就容易产生死锁问题死锁问题及其代码重现死锁:  是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待的现象举例:中国人、美国人吃饭案例正常情况:中国人:筷子两支美国人:刀和叉现在:中国人:筷子一支,刀一把美国人:筷子一支,叉一把产生死锁问题:中国人拿着刀的同时等着美国人把另一只筷子给他...

2017-09-19 20:27:36 3413 1

原创 如果catch里面有return语句,finally里面的代码还会执行吗?

答案:会执行,在return 前执行代码示例1:/* * java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗? */public class FinallyDemo2 { public static void main(String[] args) { System.out.println(getInt());...

2017-09-19 20:21:32 3770 2

原创 能不能自己写个类叫java.lang.System?

答案:通常不可以,但可以采取另类方法达到这个需求。 解释:为了不让我们写System类,类加载采用委托机制,这样可以保证爸爸们优先,爸爸们能找到的类,儿子就没有机会加载。而System类是Bootstrap加载器加载的,就算自己重写,也总是使用Java系统提供的System,自己写的System类根本没有机会得到加载。但是,我们可以自己定义一个类加载器来达到这个目的,为了避免双亲委托机

2017-09-19 20:16:56 674

原创 类加载时机与过程

1  开门见山以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int cou

2017-09-19 20:00:06 439

原创 两种for循环的实质

第一种:实质上就是一个迭代器, 在遍历过程中修改元素值, 会报错java.util.ConcurrentModificationException, 这是因为迭代器中有参数expectModCount:预期被修改的次数  来做并发安全的控制HashSet s = new HashSet<>(); s.add("1"); s.add("2"); s.add("3"); for(S

2017-09-19 19:32:28 690

原创 RTTI实现原理(多态的原理)

编译类型和运行类型的概念运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息。多态(polymorphism)是基于RTTI实现的。RTTI的功能主要是由Class类实现的。Class类Class类是"类的类"(class of classes)。如果说类是对象的抽象和集合的话,...

2017-09-19 17:16:29 1164

原创 java ClassLoader类解析-双亲委托机制

做Java开发,对于ClassLoader的机制是必须要熟悉的基础知识,本文针对Java ClassLoader的机制做一个简要的总结。因为不同的JVM的实现不同,本文所描述的内容均只限于Hotspot Jvm.本文将会从JDK默认的提供的ClassLoader,双亲委托模型,如何自定义ClassLoader以及Java中打破双亲委托机制的场景四个方面入手去讨论和总结一下。JDK默

2017-09-19 14:28:02 395

原创 AtomicLong源码

package java.util.concurrent.atomic;import java.util.function.LongUnaryOperator;import java.util.function.LongBinaryOperator;import sun.misc.Unsafe;/**一个long值可以用原子更新。 有关原子变量属性的描述,请参阅java.util.c...

2017-09-14 14:49:48 1036

原创 String 的==和equals()方法

Linux界面都是命令行,也可以测试网速,用的还是speedtest,linux上的版本是基于python的工具/原料speedtestpython方法/步骤因为是下载githup版本库上的软件,linux上要安装git客户端,最简单的方法是yum来安装yum

2017-09-14 11:23:55 477

原创 Java中守护线程

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应

2017-09-14 11:03:33 235

原创 tf/idf评分算法

lucene 的评分机制elasticsearch是基于lucene的,所以他的评分机制也是基于lucene的。评分就是我们搜索的短语和索引中每篇文档的相关度打分。如果没有干预评分算法的时候,每次查询,lucene会基于一个评分算法来计算所有文档和搜索语句的相关评分。使用lucene的评分机制基本能够把最符合用户需要的搜索放在最前面。当然有的时候,我们可能想要自定义评分算法,这个就和lu...

2017-09-14 10:24:58 2682 3

原创 head dump分析

主要功能概述显示jvm运行时的参数,Java版本,以及系统属性。监控显示当前这个pid的cpu,堆,PermGen,类,线程的运行情况,可以主动进行垃圾回收,以及生成此时刻的dump文件。线程显示所有线程的“实时”状态(运行,休眠,等待,监视)以及时间,(调整好刷新时间),可以通过放大,放小,更细致的观察线程的状态,以及一个线程详细的时刻状态和线程d

2017-09-14 09:04:18 4858

原创 Java线程Dump分析工具--jstack

stack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式: jstack [-l][F] pid 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,...

2017-09-13 17:13:36 312

原创 java中的unsafe类

Java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存;类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。public native long al...

2017-09-13 16:38:10 257

原创 JDK内置工具使用

JDK内置工具使用一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring To

2017-09-13 09:30:28 303

原创 Java Thread State 分析

看到大量 Java Thread State 的第一反应是:1,线程状态为“waiting for monitor entry”:意味着它 在等待进入一个临界区 ,所以它在”Entry Set“队列中等待。此时线程状态一般都是 Blocked:java.lang.Thread.State: BLOCKED (on object monitor)

2017-09-13 09:29:46 437

原创 zookeeper-4 watcher

zookeeper实现了分布式数据的发布订阅功能, 当一个主题对象发生变更时, 会通知给所有的订阅者, 使订阅者做出相应的处理.zookeeper发布订阅功能的实现是依靠watcher机制来实现的.简单来说, 客户端向服务器注册watcher, 客户端存储watcher, 主体对象发生变化服务器向客户端发送通知, 客户端主动从服务端拉取数据并处理1. watcher接口用来表示一个

2017-09-06 16:52:36 412

原创 zookeeper-3

1. 每个znode上可以保存数据, 同时还可以挂载子节点, 因此构成一个层次化的命名空间, 被称之为树2. 在zk中, 事务只是能够改变服务器状态的操作, 每一个事务请求zk都会分配一个全局唯一的事务id3. znode分为持久节点, 临时节点, 顺序节点, 其中临时节点只能作为叶子节点4. znode节点stat描述第一行:该节点下的数据czxid: 该节点创建时的

2017-09-06 13:59:59 231

原创 zookeeper在storm集群中的应用

1. 心跳检测, 存储supervisor和worker的心跳(包括它们的状态),使得nimbus可以监控整个集群的状态, 从而重启一些挂掉的worker;2. 提交任务3. 存储整个集群的所有状态信息, 供ui显示4. storm在zk上的存储结构/-{storm-zk-root} -- storm在zookeeper上的根目录(默认为

2017-09-05 20:16:48 2374

原创 zookeeper-2 ZAB协议

zk如果是单点服务, 则不涉及到分布式同步协议的问题, 所有的数据都有一个节点处理即可, 该节点用来同步客户端分布式集群中的消息同步, 然而单点是不可靠的, zk本身也要实现分布式集群以保证高可用高并发的特性. 所以zk自身的分布式集群间的数据同步问题采用了ZAB协议实现, 而对客户端而言, 一个zk集群被视为一个稳定运行的单节点即可简言之, zk的分布式数据一致性问题依靠ZAB协议实现, 而...

2017-09-05 10:13:26 359

原创 zookeeper-1

1.采用的一致性协议ZAB(zookeeper atomic broadcast)2.zookeeper用来保证分布式系统中的数据一致性问题, 包括:顺序一致性, 原子性, 单一视图, 可靠性, 实时性3.zk包含的基本概念:集群角色, 会话(session), 数据节点(znode), 版本, 事件监听器(watcher), ACL(权限控制)4.zk的可执行脚本5.客户端脚...

2017-09-05 09:44:31 279

原创 solr搜索结果按某字段排序

如果想要搜索结果按某一field排序, 而相同的field情况下匹配度高的优先1) 使用sort可见使用sort排序只满足将section=3的排在前面, 但是同样都是section为3的不符合按相似度排序2) 应该对排序字段加权才是正解

2017-09-04 17:01:08 5765 6

原创 solr 标准查询解析器的加权

q=zhishidian:抗日战争^5  是对"抗日战争"分词后得到的所有结果进行加权

2017-09-02 16:13:10 601

Java虚拟机规范.pdf

Java虚拟机规范(Java SE 8版) pdf Java虚拟机规范(Java SE 8版) pdf Java虚拟机规范(Java SE 8版) pdf Java虚拟机规范(Java SE 8版) pdf

2019-10-12

搜狗词典转txt

py3脚本-py3脚本-py3脚本-py3脚本-py3脚本-py3脚本-py3脚本-py3脚本-

2019-04-26

dbeaver-ce_6.0.0_amd64.deb

dbeaver-ce_6.0.0_amd64.deb

2019-03-11

linux 下c实现简单的网络嗅探器

简单的网络嗅探器

2019-02-14

lucene3源码分析

lucene3源码分析

2018-07-12

io文档文档

io说明文档, io说明文档, io说明文档, io说明文档, io说明文档, io说明文档,

2018-05-07

lucene5+zoie实现近实时索引

lucene+zoie近实时索引demo lucene+zoie近实时索引demo

2018-03-07

rabbitmq-server-generic-unix-3.6.13.tar

rabbitmq linux 安装包 rabbitmq linux 安装包 rabbitmq linux 安装包 rabbitmq linux 安装包

2018-01-31

java监听器demo

一个java监听器的实现demo,即观察者设计模式实现

2016-12-27

activemq和spring整合发布消息和订阅消息demo

activemq和spring整合 发布消息和订阅消息demo

2016-11-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除