Elasticsearch插件开发——Rescore篇
一、前言 在 ElasticSearch 中,重打分是一个对指定数目的查询结果进行再次打分的一个过程。通常情况下,一个查询可能会匹配成千上万的结果,但用户很可能只对结果的前几页感兴趣。这种情况下就可以使用重打分功能来优化性能。但是,当前 Elasticsearch 中只默认实现了 rescore_q
2021-04-12
【Elasticsearch源码解析】通信模块篇——ES中对REST请求的处理浅析
一、前言 从本文开始,我打算开一个新坑,分模块来讲一讲 ES 的源码。本系列的目的主要是方便我自己对于 ES 源码的理解进行梳理和总结。当然,如果有人能读到我的解析并能从中获益就更好了。本系列文章会基于 ES 在 github 上的最新开源代码,版本是 7.12.0。 二、Elasticsearch
2021-04-09
对于Linux中oom-killer的简单探究
最近在对 Elasticsearch 集群进行压力测试的时候发现,当我不停的对集群进行创建索引操作时,集群的 master 节点总会莫名其妙的挂掉。表现是 ES 进程退出,并且 JVM 没有生成相应的 dump 文件。我陷入了疑惑,后来经过别人指点我才知道原来进程是被 Linux 中的 oom-ki
2020-11-28
Java的匿名类、匿名函数与方法引用
一、前言 从我接触 Java 伊始,就见过了很多匿名函数,最典型的是 Java 的多线程,写法如下: new Thread(() -> { for (int i = 0; i < 100; i++) { System.out.println(i); } }).star
2020-11-07
由缓存穿透想到的——HashSet和布隆过滤器
一、缓存穿透 设想一种高并发场景,后台服务在查询数据库(如 Mysql)之前先查缓存(如 Redis)。如果缓存失效,大量无法在数据库中查询到结果的请求(如数据库中没有的 ID 查询)没有在 Redis 中查到内容,就会“穿透”我们的缓存服务,直接打到数据库上。这就有可能导致数据库因为压力过大而挂掉
2020-08-26
CTF从零单排(二)—— bof (pwnable.kr)
一、题目分析 查看题目给出的信息,一个 C 代码文件和一个可执行文件,C 代码文件如下: #include <stdio.h> #include <string.h> #include <stdlib.h> void func(int key){ char
2020-08-15
travis-ci自动部署博客到腾讯云COS
我的博客使用的是 hugo,博客一直放在腾讯云 COS 上,只要域名备案就能使用,加上 CDN 速度也不错。但是使用腾讯云 COS 更新博客,需要登录腾讯云控制台,手动把本地 hugo 生成的文件上传到 COS 上,十分痛苦并且一点也不 geek。与之形成鲜明对比的就是 netlify,部署十分方便
2019-04-05
CTF从零单排(一)—— collision (pwnable.kr)
一、前言 最近突然对 CTF 产生了兴趣,感觉能从中学到很多东西。并且我发现很多关于 CTF 的解法文章对我这样的小白很不友好,因此我打算新开一坑,从零基础的角度详细地记录一下 CTF 的题解。 二、题目及分析 今天做的题目是 pwnable.kr 里面的第二题——collision(第一题比较简单
2019-03-11
GPG牛刀小试
一、GPG 简介 GPG(或 GnuPG)是自由软件基金会(Free Software Foundation)开发的程序,是基于商业加密软件 PGP(Pretty Good Privacy)的作者(Phil Zimmermann)倡导提出的开放标准 OpenPGP 实现的,主要作用是加密,签名和生成
2019-01-21
[Leetcode] Add Two Numbers
一、题目描述 链接 二、题目分析 题目很容易理解,将两个用链表表示的数相加,结果也用链表表示,三个链表都是倒序(reverse order)表示的。其实倒序算是简化了题目,如果不倒序实现相加,由于要考虑进位的问题,需要先将链表翻转。 这道题有两种解法:一个是在遍历过程中实现按位的加法;还有一种就比较
2019-01-13