/images/hugo/avatar.png

ES 基础

1. 倒排索引

1.1 什么是倒排索引

倒排索引是一种 从内容到文档的映射 数据结构,它和“正向索引”相反。

  • 正向索引:文档 → 内容
  • 倒排索引:内容(词语) → 出现该词语的文档列表

它的核心作用是 快速找到包含某个词的文档,是搜索引擎(比如 ElasticSearch、Lucene)最核心的数据结构。

Go generate

1. go generate

1.1 简介

项目构建,通常我们会依赖一些构建管理工具,比如shell脚本、make等。通过 make 我们可以在编译和构建 Go 代码之前,完成诸如 protobuf 文件生成等等编译代码所需要的前置动作。不过,Go 1.4 版本的Go工具链中增加了在构建之前驱动执行前置动作的能力,这就是go generate命令。我们看下面这个示例:

Go 常用工具

go 原生提供的工具,在 gopath 和 module-ware 两种模式上存在一些行为差异。接下来我们会分别介绍 go 原生工具在这两种模式下的使用。

1. go get

go get 用于获取 Go 包及其依赖包

常用命令如下:

Go reflect

1. 反射

Go在标准库中提供的reflect包让Go程序具备运行时的反射能力(reflection,又称为自省)。反射是程序在运行时访问、检测和修改它本身状态或行为的一种能力,各种编程语言所实现的反射机制各有不同。Go语言的interface{}类型变量具有析出任意类型变量的类型信息(type)和值信息(value)的能力,Go的反射本质上就是利用interface{}的这种能力在运行时对任意变量的类型和值信息进行检视甚至是对值进行修改的机制。