Lucene系列(1)——理论介绍

注:本文基于Lucene 8.2.0 版本。说到搜索我们的第一反应应该就是百度、Google这样的搜索巨头,然后一些开发者可能还会想到Solr和ElasticSearch(后文简称ES)这样的开源的全文检索(full-text search)引擎。特别是ES,现在发展的可谓是如火如荼,前段时间还和阿里、腾讯达成战略合作,开始在中国市场发力。不论是百度搜索、Google搜索、Solr或者ES,它们都是为了解决一个问题:信息检索(Information Retrieval,IR)。这是一门非常古老且

- 阅读全文 -

IDEA或Eclipse中编译调试ElasticSearch源码

对于想深入学习ES的人来说,编译源码,从而方便的进行阅读、调试是必不可少的。这方面的文章也不少,我尝试过几个,但多多少少都碰到了一些问题。最后参考官方的一篇博客编译成功了,可以正常的调试代码,且步骤简单。原文也不长,英文能力还行的可以直接阅读原文:How to Debug Elasticsearch Source Code in IntelliJ IDEA。这里我简单总结并扩展一下,也支持Eclipse,并说明一下实际操作中要注意的细节。关于JDK版本ES是Java开发的,所以编译的时候肯定是需

- 阅读全文 -

Flink FLIP-50: Spill-able Heap Keyed State Backend

最近Flink有个新特性FLIP-50提交到社区,并且已经被社区接受了,这个特性名称为:FLIP-50: Spill-able Heap Keyed State Backend。是的,这关于state的一个特性。在流处理中,如果处理流程中涉及状态,那就需要一种机制能够缓存这个状态的数据,比如Window算子就是流式框架中常见的一种包含状态的算子。举个业务上的例子,比如我们要统计5分钟内耗时最长的交易,那一种做法就是缓存5分钟的数据,然后直接对耗时字段求max即可。既然要保留状态(即缓存数据),那

- 阅读全文 -

filebeat数据重复和截断及丢失问题分析

本文讨论Filebeat收集文件的时候可能产生的数据重复或者数据截断及丢失的问题。数据重复关于数据重复我们先看关于Filebeat的一段官方描述:Filebeat guarantees that events will be delivered to the configured output at least once and with no data loss. Filebeat is able to achieve this behavior because it stores the d

- 阅读全文 -

Filebeat重启后不收集的问题分析

Filebeat作为elastic公司使用Golang开发的新一代的日志采集工具,旨在替换原来Logstash的日志收集功能(注意,Logstash的核心功能包含收集和解析两大块,Filebeat的定位只是替代收集部分,所以Filebeat并不能完全取代Logstash)。因为其性能高,资源占用少且轻量级,已经逐渐被很多公司采用。而使用的问题也非常多,今天来讨论之前在elastic中文社区看到的一个问题:filebeat采集log,每次filebeat程序断开,重新启动之后会生成一个regist

- 阅读全文 -

Java的单例模式

Java的单例模式(Singleton Pattern)是指在任何情况下,都只有一个类实例存在。该模式也是众多设计模式中最简单的模式之一,但其中还是有不少门道,今天做一个学习总结。单例模式的多种实现方式单例模式的实现方式众多,一般的套路就是在常规的类上面增加三个特性:将构造方法设为private,包含一个静态的类实例字段作为唯一的一个类实例,如果上一条中的类实例是private的,那就还需要一个静态工厂方法,用于返回该实例字段;如果是public的,那就不需要这一条了。另外,不同的实现方法也有不

- 阅读全文 -

Java Lambda表达式(下)

上篇文章中我们总结了Lambda的一些基本知识,本文总结剩余的一个知识点:Lambda表达式中变量的作用域问题。Lambda表达式变量作用域这里使用书上面给的一个例子,我们定义了一个静态的repeatMessage方法,代码如下:public static void repeatMessage(String text, int delay) { ActionListener listener = event -> { System.out.println(text)

- 阅读全文 -

Java Lambda表达式(上)

Java 8中引入了Lambda表达式,目的是支持函数式编程。为了说明问题假设我们有一个需求:使用List的forEach方法遍历输出一个List。先说明两个点:当然遍历List有很多种方式,这里限定使用forEach只是为了说明Lambda;其实forEach和Lambda一样都是Java 8才引入的,但不影响问题说明。旧方式:在没有Lambda之前,我们的代码类似下面这样:List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);

- 阅读全文 -

微信公众号

随机文章

最近回复

  • repostone: 非技术的路过。
  • NYC: 确认一下你配置的调度策略是Fair,而不是Capacity,不要...
  • NYC: 这个没问题,我文章里面说的是策略,配置的时候是通过CDH配置的。...
  • 一方: 但是我的action队列抢占了资源,导致action不能并行,难...
  • NYC: 是的,不管是哪个队列,队列内部只要有资源够action/lanu...
  • 一方: 老铁,我想问下,你分配好队列,然后固定了lancher队列的am...
  • 一方: https://blog.csdn.net/bigdatapri...
  • NYC: 1,我的解决方案是不可能完全杜绝死锁的,我目前也没有发现比较好的...
  • 一方: 老铁你好!看了下你的解决方案,感觉还是无法解决死锁的问题啊,假如...
  • luke: **感谢分享**

分类

标签