/images/avatar.png

以图搜图系统概述

以图搜图系统概述

以图搜图指的是根据图像内容搜索出相似内容的图像。

构建一个以图搜图系统需要解决两个最关键的问题:首先,提取图像特征;其次,特征数据搜索引擎,即特征数据构建成数据库并提供相似性搜索的功能。

GitHub Actions 指南

GitHub Actions 指南

GitHub Actions 使你可以直接在你的 GitHub 库中创建自定义的工作流,工作流指的就是自动化的流程,比如构建、测试、打包、发布、部署等等,也就是说你可以直接进行 CI(持续集成)和 CD (持续部署)。

使用 Makefile 构建指令集

使用 Makefile 构建指令集

make 是一个历史悠久的构建工具,通过配置 Makefile 文件就可以很方便的使用你自己自定义的各种指令集,且与具体的编程语言无关。 例如配置如下的 Makefile :

实现 memcached 客户端:TCP、连接池、一致性哈希、自定义协议

实现 memcached 客户端:TCP、连接池、一致性哈希、自定义协议。

废话不多说,文本将带你实现一个简单的 memcached 客户端。

集群:一致性哈希

memcached 本身并不支持集群,为了使用集群,我们可以自己在客户端实现路由分发,将相同的 key 路由到同一台 memcached 上去即可。 路由算法有很多,这里我们使用一致性哈希算法。

时序数据库 InfluxDB(七)


单点故障和容灾备份


InfluxDB 开源的社区版本面临的最大的问题就是单点故障和容灾备份,有没有一个简单的方案去解决这个问题呢?

既然有单点故障的可能,那么索性写入多个节点,同时也解决了容灾备份的问题:

时序数据库 InfluxDB(六)


CQ 连续查询


连续查询 Continuous Queries( CQ )是 InfluxDB 很重要的一项功能,它的作用是在 InfluxDB 数据库内部自动定期的执行查询,然后将查询结果存储到指定的 measurement 里。

配置文件中的相关配置:

时序数据库 InfluxDB(五)


系统监控


InfluxDB 自带有一个监控系统,默认情况下此功能是开启的,每隔 10 秒中采集一次系统数据并把数据写入到 _internal 数据库中,其默认使用名称为 monitor 的 RP(数据保留 7 天),相关配置见配置文件中的:

时序数据库 InfluxDB(四)


存储引擎


InfluxDB 数据的写入如下图所示:

https://raw.githubusercontent.com/RifeWang/images/master/influxdb/write-data.png

所有数据先写入到 WAL( Write Ahead Log )预写日志文件,并同步到 Cache 缓存中,当 Cache 缓存的数据达到了一定的大小,或者达到一定的时间间隔之后,数据会被写入到 TSM 文件中。

时序数据库 InfluxDB(三)


数据类型


InfluxDB 是一个无结构模式,这也就是说你无需事先定义好表以及表的数据结构。

InfluxDB 支持的数据类型非常简单:

  • measurement : string
  • tag key : string
  • tag value : string
  • field key : string
  • field value : string , float , interger , boolean

你可以看到除了 field value 支持的数据类型多一点之外,其余全是字符串类型。