呼延十

还记得年少时的梦吗

Lucene系列(四)directmonotonicwriter源码分析

前言 来学习一下DirectMonotonicWriter类的代码. 源码版本: 8.7.0 介绍 先上一下源码注释: Write monotonically-increasing sequences of integers. This writer splits data into blocks and then for each block, computes the av...

Lucene系列(三)directwriter源码分析

前言 本文学习下 Lucene 在存储大量整数时使用到的编码方法。 介绍 DirectWriter 用 bit 编码方式进行数组压缩的功能,它在整个数组的所有元素都不大的情况下能带来不错的压缩效果。 DirectWriter 是 Lucene 为整型数组重编码成字节数组的工具,它的底层包含一系列编码器,将整型数组的所有元素按固定位长度的位存储。它按 Bit 存储,预留长度过长会浪费空...

Lucene系列(二)int的变长存储与zigzag编码

前言 lucene代码量还是比较多的, 在没有看的很明白的情况下, 先写一写新学到的工具类的一些操作吧~也是收获很多. 在lucene写入索引文件时, 为了节省空间,经常会对数据进行一些压缩, 这篇文章介绍一种对int, long类型有用的压缩方式. 即变长存储. 它在lucene中的应用十分广泛, 有事没事就用一下,因此为了熟练的理解代码, 我们还是来一探究竟吧~ 在lucene8...

Lucene系列(一)什么是 Lucene

前言 上一个系列还没有完结,我又来开新坑啦~ 接触搜索/推荐相关工作,也有两年了。工作里对lucene的接触不少,却也不精。最近工作里没有那么忙,因此想通过学习源码的方式,来对lucene进行一个系统的学习。 此外,听闻lucene源码堪称面对对象设计届的典范,也想从中吸收一些代码设计/开发方面的知识。最近老是感觉自己写的代码有问题,想尝试优化却感觉非常吃力,经常一顿操作下来提升的很有...

Redis系列(十九)独立功能之bitmap(位图)

之前写过一篇文章,对位图这个数据结构及其在 Java 中的应用做了详细的介绍,同时也简单介绍了 Redis 中的位图。 位图数据结构及其在-Java 和-Redis 中的应用. 如果有兴趣,强烈推荐阅读上面的文章,可以让你对位图的认识更进一步。当然,本文会对 Redis 中的位图进行更深一些的讲解,如果你只关心 Redis 中的位图. 那么看本文就够了。 注:本文假设读者对于位图这个数...

Redis系列(十八)独立功能之hyperloglog

Redis 提供了很多精巧的独立功能,本文介绍 HyperLogLog, 它可以称作唯一性统计的利器了。 首先设想一个非常常见的业务需求,统计接口 uv, 应该怎么做。在日常的工作中,大部分情况下我们是走离线大数据那一套东西,将数据通过 kafka 等发送,之后导入 hive, 从 hive 中用 distinct来查找。 有没有别的方法呢?HyperLogLog帮你。 目录 ...

Redis系列(十七)独立功能之pubsub

前面我们提到,可以使用 Redis 的列表结构作为消息队列来使用,但是它有一个致命的弱点,那就是不支持消息多播,一个消息只能被一个消息消费掉。这在分布式系统流行的今天,肯定是不能接受的,或者说应该场景及其有限的。 那么今天我们就学习一下 Redis 在 5.0 之前,对于多播消息队列的一个解决方案。PUBSUB. 目录 介绍 简单使用 相关命令 ...

Redis系列(十六)应用之两种缓存和两种队列

前言 DB 缓存 API 缓存 延时队列 多播的实时队列 总结 前言 Redis 是一个很强大的内存数据库,而依据我学习 Redis 的经验,网上最缺的资料不是 Redis 的实现原理,Redis 的运维等等。而是对于 Redis 的应用场景,这方面的资料简直少到令人发指。依据我的记忆,一年前,我搜索Redis 的 sorted set 具体可以应用在哪些地方...