milvus测试

milvus测试


目标

其实,我应该弄明白他的输入输出分别是什么?
输入是图片,图片经过ml模型进行特征提取,再在milvus中进行存储或者检索

部署

在这里插入图片描述
在这里插入图片描述

 ✘ dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus   master  lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal

clang, clang-format-10, 和 clang-tidy-10 都是 LLVM 项目的一部分,但它们有不同的用途和功能。以下是它们之间的主要区别:

  1. clang:
    • 描述clang 是 LLVM 项目的一个组成部分,它是一个编译器前端,用于 C、C++、Objective-C 和 Objective-C++ 编程语言。
    • 功能:它负责解析源代码、生成中间表示(Intermediate Representation,简称 IR)并与 LLVM 的其他部分结合使用以生成机器代码。其主要目标是提供快速的编译时间、低内存使用量、以及良好的诊断(例如,有帮助的错误和警告消息)。
    • 用途:编译 C/C++/Objective-C/Objective-C++ 程序。
  2. clang-format-10:
    • 描述clang-format 是一个工具,用于自动格式化 C、C++、Objective-C、Java、JavaScript、Protobuf 和 C# 代码,使其符合某种代码风格。
    • 功能:它可以处理代码的排版、缩进、括号、空格等,确保代码有一致的风格。
    • 用途:自动格式化代码以符合给定的代码风格,特别是在大型项目或团队中,为了确保代码风格的一致性。
  3. clang-tidy-10:
    • 描述clang-tidy 是一个用于 C++ 的静态代码分析工具。
    • 功能:它提供了许多内置的检查器,用于检测代码中的常见问题,如潜在的错误、性能问题、不建议的编码实践等。此外,它还允许用户定义自己的检查器。
    • 用途:静态分析 C++ 代码以找出潜在的问题、性能瓶颈和不符合最佳实践的代码片段。

总之,clang 是一个编译器,clang-format 是一个代码格式化工具,而 clang-tidy 是一个静态代码分析工具。每个工具都有其特定的用途和功能。

source.list

deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
 ✘ dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus   master ±  sudo apt install lib32gcc-s1 lib32stdc++6 libc6-i386
[sudo] dell 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:libc6-dev:i386 libcrypt-dev:i386 libncurses-dev:i386 linux-libc-dev:i386
使用'sudo apt autoremove'来卸载它(它们)。
下列软件包将被【卸载】:lib64ncurses-dev:i386 lib64ncurses6:i386 lib64ncursesw6:i386 lib64readline-dev:i386 lib64readline8:i386 lib64tinfo6:i386 libc6-amd64:i386 libc6-dev-amd64:i386
下列【新】软件包将被安装:lib32gcc-s1 lib32stdc++6 libc6-i386
升级了 0 个软件包,新安装了 3 个软件包,要卸载 8 个软件包,有 44 个软件包未被升级。
需要下载 3,295 kB 的归档。
解压缩后将会空出 19.1 MB 的空间。
您希望继续执行吗? [Y/n] y
获取:1 https://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 libc6-i386 amd64 2.31-0ubuntu9.12 [2,724 kB]
获取:2 https://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 lib32gcc-s1 amd64 10.5.0-1ubuntu1~20.04 [49.1 kB]
获取:3 https://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 lib32stdc++6 amd64 10.5.0-1ubuntu1~20.04 [522 kB]
已下载 3,295 kB,耗时 5(713 kB/s)  
(正在读取数据库 ... 系统当前共安装有 292741 个文件和目录。)
正在卸载 lib64readline-dev:i386 (8.0-4) ...
正在卸载 lib64ncurses-dev:i386 (6.2-0ubuntu2.1) ...
正在卸载 lib64ncurses6:i386 (6.2-0ubuntu2.1) ...
正在卸载 lib64ncursesw6:i386 (6.2-0ubuntu2.1) ...
正在卸载 lib64readline8:i386 (8.0-4) ...
正在卸载 lib64tinfo6:i386 (6.2-0ubuntu2.1) ...
正在卸载 libc6-dev-amd64:i386 (2.31-0ubuntu9.12) ...
正在卸载 libc6-amd64:i386 (2.31-0ubuntu9.12) ...
正在选中未选择的软件包 libc6-i386。
(正在读取数据库 ... 系统当前共安装有 292241 个文件和目录。)
准备解压 .../libc6-i386_2.31-0ubuntu9.12_amd64.deb  ...
正在解压 libc6-i386 (2.31-0ubuntu9.12) ...
被已安装的软件包 libc6:i386 (2.31-0ubuntu9.12) 中的文件替换了...
正在选中未选择的软件包 lib32gcc-s1。
准备解压 .../lib32gcc-s1_10.5.0-1ubuntu1~20.04_amd64.deb  ...
正在解压 lib32gcc-s1 (10.5.0-1ubuntu1~20.04) ...
正在选中未选择的软件包 lib32stdc++6。
准备解压 .../lib32stdc++6_10.5.0-1ubuntu1~20.04_amd64.deb  ...
正在解压 lib32stdc++6 (10.5.0-1ubuntu1~20.04) ...
正在设置 libc6-i386 (2.31-0ubuntu9.12) ...
正在设置 lib32gcc-s1 (10.5.0-1ubuntu1~20.04) ...
正在设置 lib32stdc++6 (10.5.0-1ubuntu1~20.04) ...
正在处理用于 libc-bin (2.31-0ubuntu9.12) 的触发器 ...#有些许忐忑对于以下包:lib64readline-dev:i386 lib64readline8:i386
 dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus   master ±  make install 
Download milvus-proto repo ...
Build 3rdparty ...
/nvme/baum/git-project/milvus/cmake_build /nvme/baum/git-project/milvus
Running on 
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=9
os=Linux
os_build=Linux
[options]
[build_requires]
[env]
......
-- Up-to-date: /nvme/baum/git-project/milvus/internal/core/output/lib/librdkafka++.so
-- Up-to-date: /nvme/baum/git-project/milvus/internal/core/output/lib/libglog.so.1
make[1]: 离开目录“/nvme/baum/git-project/milvus/cmake_build”
cache directory                     /home/dell/.ccache
primary config                      /home/dell/.ccache/ccache.conf
secondary config      (readonly)    /etc/ccache.conf
stats updated                       Sat Oct  7 14:42:32 2023
cache hit (direct)                    80
cache hit (preprocessed)               0
cache miss                          1457
cache hit rate                      5.20 %
called for link                       34
cleanups performed                     0
files in cache                      4293
cache size                         841.0 MB
max cache size                       5.0 GB
/nvme/baum/git-project/milvus
Build Tag: v2.2-testing-20230824-289-gcd5f03f80-dev
Build Time: Sat 07 Oct 2023 06:42:35 AM UTC
Git Commit: cd5f03f80
Go Version: go version go1.19.5 linux/amd64
Building Milvus ...
Installing binary to './bin'
cp -r -P /nvme/baum/git-project/milvus/internal/core/output/lib/*.dylib* /nvme/baum/git-project/milvus/lib 2>/dev/null
make: [Makefile:317:install] 错误 1 (已忽略)
cp -r -P /nvme/baum/git-project/milvus/internal/core/output/lib/*.so* /nvme/baum/git-project/milvus/lib 2>/dev/null
cp -r -P /nvme/baum/git-project/milvus/internal/core/output/lib64/*.so* /nvme/baum/git-project/milvus/lib 2>/dev/null
make: [Makefile:319:install] 错误 1 (已忽略)
Installation successful.

理论知识


向量数据库的存储引擎是文件系统吗?

参考链接:

https://www.milvus-io.com/milvus_lite

https://www.milvus-io.com/overview

https://github.com/milvus-io/milvus/blob/master/DEVELOPMENT.md

  • milvus workflow

在这里插入图片描述

  • 定义

    词汇词义
    位集(bitset)在 Milvus 中,位集是由 01 构成的位数数组,相对于整数、浮点数或字符,它们可以被用于紧凑、高效地表示某些数据。默认情况下,位数为 0,只有满足某些要求时才会设置为 1
    通道(channel)在 Milvus 中,有两个不同的通道。它们分别是 PChannel 和 VChannel。每个 PChannel 对应日志存储的主题,而每个 VChannel 对应集合中的一个分片。
    集合集合=RDBMS中的表,在Milvus中,集合用于存储和管理实体
    实体(entity)实体=现实世界对象的一组字段,在 Milvus 中,每个实体都由唯一的主键表示。
    依赖项(dependency)依赖项是其他程序在工作时所依赖的程序。Milvus 的依赖项包括 etcd (存储元数据)、MinIO 或 S3(对象存储)和 Pulsar(管理快照日志)
    字段(Field)字段是组成实体的单元。字段可以是结构化数据(例如数字、字符串)或向量。--------
    日志中间件(Log broker)日志中间件是一种支持回放的发布-订阅系统。它负责流式数据持久化、可靠异步查询的执行、事件通知和查询结果的返回。它还确保了当工作节点从系统故障中恢复时,增量数据的完整性
    消息存储(Message storage)消息存储是 Milvus 的日志存储引擎。
    Milvus 集群(Milvus cluster)在 Milvus 的集群部署中,一组节点提供服务,以实现高可用性和易扩展性。
    Milvus 独立部署(Milvus standalone)在 Milvus 的独立部署中,所有操作包括数据插入、索引构建和向量相似度搜索都在一个进程中完成。
    归一化(Normalization)归一化是指将嵌入(向量)转换为其范数等于1的过程。如果使用内积(IP)来计算嵌入相似度,则所有嵌入必须被标准化。标准化后,内积等于余弦相似度。
    分区(Partition)分区是集合的一个划分。Milvus 支持将集合数据划分为多个物理存储部分。这个过程被称为分区,并且每个分区可以包含多个段。
    PChannelPChannel 代表物理通道。每个 PChannel 对应日志存储的主题。Milvus 集群启动时,会默认分配一组 256 个 PChannel 来记录数据插入、删除和更新的日志。
    Vector index向量索引是从原始数据派生出的重新组织的数据结构,可以大大加速向量相似度搜索的过程。Milvus支持多种向量索引类型。
    段(Segment)段是由 Milvus 自动创建的用于容纳插入数据的数据文件。一个集合可以有多个段,一个段可以有多个实体。在向量相似度搜索期间,Milvus 扫描每个段并返回搜索结果。一个段可以是正在增长的,直到它被封存为止。一个封存的段不再接收任何新数据,并将被刷新到对象存储中,剩余的新数据将被插入到新创建的增长段中。增长段将被封存,因为它所包含的实体数达到了预定义的阈值,或者“增长”状态的持续时间超过了指定的限制。
  • 索引类型

    索引是数据的组织单位。在搜索或查询插入的实体之前,必须声明索引类型和相似度度量。如果您未指定索引类型,则Milvus将默认使用暴力搜索。

    大多数由Milvus支持的向量索引类型使用近似最近邻搜索(ANNS),包括:

    • FLAT:FLAT最适合于在小规模,百万级数据集上寻求完全准确和精确的搜索结果的场景。
    • IVF_FLAT:IVF_FLAT是一种量化索引,最适合于在精度和查询速度之间寻求理想平衡的场景。
    • IVF_SQ8:IVF_SQ8是一种量化索引,最适合于在磁盘、CPU和GPU内存消耗非常有限的场景中显著减少资源消耗。
    • IVF_PQ:IVF_PQ是一种量化索引,最适合于在高查询速度的情况下以牺牲精度为代价的场景。
    • HNSW:HNSW是一种基于图形的索引,最适合于对搜索效率有很高需求的场景。
    • ANNOY:ANNOY是一种基于树形结构的索引,最适合于寻求高召回率的场景。
  • 相似度度量

    在 Milvus 中,相似度度量用于衡量向量之间的相似性。选择一个好的距离度量方法可以显著提高分类和聚类的性能。根据输入数据的形式,选择特定的相似度度量方法可以获得最优的性能。

    对于浮点嵌入,通常使用以下指标:

    • 欧氏距离(L2):该指标通常用于计算机视觉领域(CV)。
    • 内积(IP):该指标通常用于自然语言处理领域(NLP)。

    在二元嵌入中广泛使用的度量标准包括:

    • 哈明距离:这个度量标准通常用于自然语言处理(NLP)领域。
    • 杰卡德距离:这个度量标准通常用于分子相似性搜索领域。
    • 塔尼莫托距离:这个度量标准通常用于分子相似性搜索领域。
    • 超结构距离:这个度量标准通常用于搜索分子的类似超结构。
    • 亚结构距离:这个度量标准通常用于搜索分子的类似亚结构。
  • 架构

    在这里插入图片描述

  • 两种运行模式

    Milvus 有两种运行模式:独立模式和集群模式。这两种模式共享相同的功能。您可以选择最适合您的数据集大小、流量数据等的模式。目前,Milvus 独立模式无法“在线”升级到 Milvus 集群。

    • 独立模式

      Milvus 独立模式包括三个组件:

      • **Milvus:**核心的功能组件。

      • **etcd:**元数据引擎,负责访问和存储 Milvus 的内部组件的元数据,包括代理、索引节点等。

      • **MinIO:**存储引擎,负责 Milvus 的数据持久化。

        在这里插入图片描述

    • 集群模式

      Milvus 集群模式包括八个微服务组件和三个第三方依赖项。所有微服务可以独立于 Kubernetes 部署。

      微服务组件

      • 根协调器
      • 代理
      • 查询协调器
      • 查询节点
      • 索引协调器
      • 索引节点
      • 数据协调器
      • 数据节点

      第三方依赖

      • **etcd:**存储集群中各组件的元数据。

      • **MinIO:**负责集群中大文件的数据持久化,例如索引和二进制日志文件。

      • **Pulsar:**管理最近的变异操作日志,输出流日志,并提供日志发布订阅服务。

        在这里插入图片描述

参考链接:

https://segmentfault.com/a/1190000041470259#item-4

  • 非结构化数据处理流程

    Milvus 为解决非结构化数据的检索问题而生:海量的非结构化数据一般会存储在分布式文件系统或对象存储上,之后通过深度学习网络完成推理,将这些非结构数据转化成 embedding 向量,并在向量空间内完成近似性检索,从而发现数据背后的一些特征。

    场景一般是:

    例如:图片经过训练和推理,转化成了embedding向量,该向量通过在向量空间的近似度比对来表征其相似性

    • 向量和标量

      基本操作:

      • 对于标量数据,针对数值类数据一般会做加减乘除的操作;对字符串类型的数据一般会做一些 term 的匹配, 或者一些类似 like 的近似匹配,抑或一些前缀匹配。

      • 针对向量数据而言,很少进行这种 100% 的完全匹配,更多是看近似度,也就是高维空间下的距离。较常见的距离表示有余弦距离、欧式距离等。空间中向量之间的距离,很大程度上能表示非结构化数据之间的相似度。

      数据的组织方式:

      • 传统数据很容易比较大小,无论是数值类,还是字符串,都可以通过二叉树或者 skip list 的方式排列组合,然后做二分查找。
      • 对于向量数据来讲,则更加复杂,因为它维度较高,很难像传统的数值类数据一样通过排序的方式做加速,往往需要一些特殊的索引结构和存储方式

在这里插入图片描述

  • milvus介绍

    在这里插入图片描述

    • 为云而生

    Milvus 2.0 的第三个考量是拥抱云原生。

    过去十几年,传统数据库基本采用 share nothing 的架构。随着 Snowflake 的出现,很多数据库采用了 shared storage ,越来越多的数据库开始做存储计算分离。Snowflake 给予业界很大启发,利用云上的基础设施去做数据持久化,然后基于本地存储做缓存,这种模这种模式被称为 share something,获得了很多产品的共识。

在这里插入图片描述

  • milvus单机与分布式

    在这里插入图片描述

  • milvus角色

    在这里插入图片描述

    具体到所有角色来看,整个 Milvus 的分布式方案有八个角色和三个不同的依赖。

    每种角色到底有什么作用呢?

    从最前端讲起, Proxy 就是充当系统门面,所有的 SDK 查询都会通过一个 load balancer,发给 Pulsar Proxy 去处理连接,做一些静态检查。比如,一个请求,可能 collection 名字根本不存在,Pulsar Proxy 就会直接报错,或者当插入的数据缺少了某些列,就会由 SDK 发现。完成了预处理之后, Proxy 就会把数据投递到 Message Broker 里。

    整体来讲,Proxy 会处理三类数据:写请求、读请求、控制请求,比如 DDL。Proxy 需要把数据投递到对应的 channel 里, Root Coord 类似于传统系统中的 Master,主要做一些 DDL 和 DCL 的管理,比如建 Collection、删 Collection。

    除此之外,Root Coord 还承担着非常大的责任,就是为系统分配时间戳。TimeTick 的机制会保证数据根据时间戳定序。

    很多朋友可能会担心,是不是会有单点的存在?对于 Milvus 而言,第一,性能瓶颈这块是比较好处理的,不太需要去做过多考虑,写入往往都是批量插入的,所以 TPS 本身没有那么高,只要满足吞吐的要求即可。第二,Milvus 在读链路的时候,对中心授权模块没有过多的依赖,因此 Root Coord 节点宕机不会对整个系统的读入有任何影响。第三,Milvus 依赖云原生的设计,Root Coord 如果宕机,可以快速被 Kubernetes 拉起来,可用性有保障。

    Data 有两种角色,Data Coord 和 Data node。Data Coord 是协调者,会做一些 load balance 的分配、管理 segment、处理 Data Node 故障的恢复,比如有些 Data Node 宕机的话,是通过 Data Coord 发现和恢复的。Data Node 就做一件事情,把 log 里面的数据转化成 log snapshot,log snapshot 可以理解为 binlog,会生成一块大的 binlog,每个 binlog 通过 parquet 的格式存。Data Node 生成文件后,就会把文件传给 Index Node、生成 Sealed Segment,然后 Index Coord 会对 Sealed Segment 建索引。

    有的同学会好奇,为什么建索引还要抽单独的角色去做,直接加一块做完可不可以?其实也是可以的。但是抽单独的角色去做的好处在于,第一, Index 很消耗性能,对弹性的要求更高。它不需要长时间保存的内存,如果有见缝插针的资源,Index 就可以用起来。第二, Index 本身很消耗资源,所以通常情况下用户做一些异构加速,Index Node 可以用 GPU 或专用硬件对索引做加速。Index Node 生成数据之后,就会把数据给到 Query Node 管理。所有的 Segment 都在 Query Node 上提供服务,通过 Query Node 执行查询。Query Node 有很多除了故障恢复以外的查询逻辑,同时也是整个 Milvus 里最复杂的节点。

  • 架构

    在这里插入图片描述

  • 数据模型

    在这里插入图片描述

    首先,我们为用户提供的最大概念叫做 Collection,即可以映射到传统数据库的一个表。每个 Collection 我们会分多个 Shard,默认情况下是两个 Shard,到底要取多少 Shard 取决于你的写入量有多大、需要把写入分到多少个节点去做处理。如果你的写入比较少,默认两个 Shard 就可以满足你的需求。

    如果你的集群规模是 10 台或 100 台,我们推荐 Shard 的规模做到 Data Node 的两到三倍。每个 Shard 中间又有很多 Partition ,Partition 自带数据的属性, Shard 本身是根据主键的哈希去分的,而 Partition 往往是根据你指定的字段或 Partition 的 tag 去分的。常见的 Partition 方式有根据数据写入的日期划分、根据用户是男女去划分、根据用户的年龄去划分等。Partition 的一个很大优势是在查询过程中,如果你加上 Partition tag 的话,可以帮你过滤掉很多数据。

    在这里插入图片描述

    Shard 更多是帮你去扩展写的操作,而 Partition 是帮你在读操作的情况下去提升读的一个性能,每个 Shard 里的每个 partition 又会对应到很多小的 Segment 。Segment 就是我们整个系统调度的最小单元,分为 Growing Segment 和 Sealed Segment。Growing Segment 就是 Query Node 订阅,用户持续写入 Segment,等 Growing Segment 写大了以后,就不允许继续;默认上限是 512MB,写到上限以后,我们就把它 seal 掉,并对 seal 的 Segment 建一些向量索引。

    在读的时候,Growing Segment 和 Sealed Segment 都是需要去被读到的,可以保证用户数据的可见实时性比较高。每个 Segment 里又分为很多 Entitity,Entity 是传统数据库里面“一行”的概念。Entity 是有 Schema 的,通常一个 Entitity 中必须有一个 Primary Key。一般来讲,我们会有一个隐式的 ts 字段,Primary Key 如果不是主动指定的话,往往可以自增。除此之外,还有一个列和 Vector,一个 Entitity 会有一个 Vector, Vector 也是整个 Milvus 系统的核心。

  • 数据存储

    在这里插入图片描述

首先,存储过程是以 Segment 为单位,用的是列存的方式,每个 Primary Key 、Column、Vector 都是单独用一个文件存储。Segment seal 掉之后,我们会针对性地构建 Vector Index,整个 segment 只构建一个。

Vector Index 目前来讲只能支持建一个索引,我们很快就会支持一个表建多个索引。比如你想尝试 HNSW 和 IVF-PQ 到底哪个性能好的话,可以建多个索引。后续我们可能还会再加入一些自动调优的部分,帮用户自动选择建一些索引。

为什么要选择存储的过程中去列存呢?第一,列存的压缩率比较高,通常我们都是存一些 int 型的数据,或者存一些稠密的 float int 向量,可以通过列存去做比较好的压缩。第二,做标量过滤可能会通过回盘的方式去做读取,那么列式存储可以用来做加速。

Sealed Segment 一旦写入完成,就不能修改。实际过程中,用户会有删除或者修改数据的需求,因此我们就在 Segment 加了 Delta Log,每个 Delta Log 包含了几行删除或追加的数据。

用户做删除的时候,我们会通过路由找到对应的 Segment,在 Segment 里面生成 Delta Log。Delta Log 有点类似于传统的 LSM 树的架构,我们会先去读原始文件,然后把 Delta Log 根据时间戳慢慢打到读出来的数据上。如果 Delta Log 的 ts 大于原始数据的 ts,那么原始数据就会被删除。Delta Log 写多了或者删除多了之后,也需要做清理,不然你的读取就会变得越来越慢。因此我们基于文件格式做 compaction ,定时把 Delta Log 整合到原有的文件里面,使得在读的过程中保证不需要往回打太多的数据。

docker测试


参考链接:

https://milvus.io/blog/how-to-get-started-with-milvus.md/#How-to-Use-Milvus
https://github.com/milvus-io/milvus/discussions/16559
https://blog.csdn.net/sinat_39620217/article/details/131847096?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-131847096-blog-124567338.235%5Ev38%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-131847096-blog-124567338.235%5Ev38%5Epc_relevant_anti_t3_base&utm_relevant_index=1#t24
https://zhuanlan.zhihu.com/p/473624021
https://github.com/milvus-io/milvus/blob/master/DEVELOPMENT.md#building-milvus-on-a-local-osshell-environment

独立运行milvus

下载docker compose配置
三个容器去跑milvus的单机

  • etcd:用于元数据存储和访问的分布式键值存储
  • minio:与 AWS S3 兼容的日志和索引文件持久存储
  • milvus:数据库服务器
dell@dell-Precision-3630-Tower  /nvme/baum/git-project  mkdir milvus_composedell@dell-Precision-3630-Tower  /nvme/baum/git-project  cd milvus_compose dell@dell-Precision-3630-Tower  /nvme/baum/git-project  wget https://github.com/milvus-io/milvus/releases/download/v2.0.2/milvus-standalone-docker-compose.yml -O docker-compose.yml--2023-10-10 10:53:21--  https://github.com/milvus-io/milvus/releases/download/v2.0.2/milvus-standalone-docker-compose.yml
正在连接 127.0.0.1:7890... 已连接。
已发出 Proxy 请求,正在等待回应... 302 Found
位置:https://objects.githubusercontent.com/github-production-release-asset-2e65be/208728772/6c538a38-db7b-43ac-b831-fa76d50ec417?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231010%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231010T025322Z&X-Amz-Expires=300&X-Amz-Signature=f213675bc22d8bc2c7bfcc28837534daa596a2bb44e53039d402eb0de9dee241&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=208728772&response-content-disposition=attachment%3B%20filename%3Dmilvus-standalone-docker-compose.yml&response-content-type=application%2Foctet-stream [跟随至新的 URL]
--2023-10-10 10:53:22--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/208728772/6c538a38-db7b-43ac-b831-fa76d50ec417?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231010%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231010T025322Z&X-Amz-Expires=300&X-Amz-Signature=f213675bc22d8bc2c7bfcc28837534daa596a2bb44e53039d402eb0de9dee241&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=208728772&response-content-disposition=attachment%3B%20filename%3Dmilvus-standalone-docker-compose.yml&response-content-type=application%2Foctet-stream
正在连接 127.0.0.1:7890... 已连接。
已发出 Proxy 请求,正在等待回应... 200 OK
长度: 1303 (1.3K) [application/octet-stream]
正在保存至: “docker-compose.yml”docker-compose.yml                100%[============================================================>]   1.27K  --.-KB/s    用时 0s    2023-10-10 10:53:23 (32.1 MB/s) - 已保存 “docker-compose.yml” [1303/1303])
#关于docker-compose.yml
#该配置为 etcd 分配了一个卷,用于存储持久数据。它定义了四个环境变量,并通过命令行运行服务,指示其监听 2379 端口的请求。
#该配置还为 minio 提供了一个卷,并使用默认访问密钥。不过,您应该创建一个新的带有唯一密钥的 minio 映像,以供生产使用。此外,配置还包括 minio 的健康检查,如果出现故障,它会重新启动服务。请注意,Minio 默认使用端口 9000 处理客户端请求。
#最后是运行 Milvus 的独立服务。它也有一个卷和环境变量,用于将其指向 etcd 和 minio 的服务端口。最后一部分为服务共享的网络提供了一个名称。这样,监控工具就更容易识别了。
  • 使用 docker compose up -d 启动服务。
dell@dell-Precision-3630-Tower  /nvme/baum/git-project  sudo docker compose up -d
[sudo] dell 的密码: 
[+] Running 27/27✔ standalone 11 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                     33.2s ✔ 171857c49d0f Pull complete                                                                                                   8.7s ✔ 419640447d26 Pull complete                                                                                                   2.2s ✔ 61e52f862619 Pull complete                                                                                                   1.6s ✔ 2580b47486e5 Pull complete                                                                                                  23.7s ✔ cd742921730d Pull complete                                                                                                  10.8s ✔ 936cb7027fe4 Pull complete                                                                                                  10.0s ✔ 319dd389c04d Pull complete                                                                                                  29.4s ✔ 543c11caaeb6 Pull complete                                                                                                  12.3s ✔ 06d62b89360c Pull complete                                                                                                  15.7s ✔ 5186d5863148 Pull complete                                                                                                  17.1s ✔ b410b80e82c0 Pull complete                                                                                                  19.8s ✔ minio 6 layers [⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                34.0s ✔ 188c0c94c7c5 Pull complete                                                                                                  22.4s ✔ ed66f2d577c3 Pull complete                                                                                                  24.1s ✔ b40a74db8d08 Pull complete                                                                                                  24.2s ✔ c77f9df7200e Pull complete                                                                                                  25.7s ✔ 14d4e804ec54 Pull complete                                                                                                  27.4s ✔ 3bd551264400 Pull complete                                                                                                  29.6s ✔ etcd 7 layers [⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                41.0s ✔ 1813d21adc01 Pull complete                                                                                                  32.9s ✔ 6e96907ab677 Pull complete                                                                                                  32.1s ✔ 444ed0ea8673 Pull complete                                                                                                  33.4s ✔ 0fd2df5633f0 Pull complete                                                                                                  35.8s ✔ 8cc22b9456bb Pull complete                                                                                                  34.4s ✔ 7ac70aecd290 Pull complete                                                                                                  35.0s ✔ 4b376c64dfe4 Pull complete                                                                                                  35.9s 
[+] Running 4/4✔ Network milvus               Created                                                                                           0.1s ✔ Container milvus-etcd        Started                                                                                           0.1s ✔ Container milvus-minio       Started                                                                                           0.1s ✔ Container milvus-standalone  Started                                                                                           0.0s 
  • docker ps 将显示三个容器正在运行:
 dell@dell-Precision-3630-Tower  /nvme/baum/git-project  docker compose ps     
NAME                IMAGE                                      COMMAND                                                                                                        SERVICE      CREATED         STATUS                   PORTS
milvus-etcd         quay.io/coreos/etcd:v3.5.0                 "etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd"   etcd         2 minutes ago   Up 2 minutes             2379-2380/tcp
milvus-minio        minio/minio:RELEASE.2020-12-03T00-03-10Z   "/usr/bin/docker-entrypoint.sh minio server /minio_data"                                                       minio        2 minutes ago   Up 2 minutes (healthy)   9000/tcp
milvus-standalone   milvusdb/milvus:v2.0.2                     "/tini -- milvus run standalone"                                                                               standalone   2 minutes ago   Up 2 minutes             0.0.0.0:19530->19530/tcp, :::19530->19530/tcp
  • 还可以通过 docker 日志检查 Milvus 服务器:
 dell@dell-Precision-3630-Tower  /nvme/baum/git-project  docker logs milvus-standalone
2023/10/10 02:54:25 maxprocs: Leaving GOMAXPROCS=16: CPU quota undefined__  _________ _   ____  ______    /  |/  /  _/ /| | / / / / / __/    / /|_/ // // /_| |/ / /_/ /\ \    /_/  /_/___/____/___/\____/___/     Welcome to use Milvus!
Version:   v2.0.2
Built:     Sat Apr  2 03:29:24 UTC 2022
GitCommit: 898533c5
GoVersion: go version go1.16.9 linux/amd64open pid file: /run/milvus/standalone.pid
lock pid file: /run/milvus/standalone.pid
[2023/10/10 02:54:25.136 +00:00] [DEBUG] [base_table.go:78] ["config directory"] [configDir=/milvus/configs/]
[2023/10/10 02:54:25.137 +00:00] [DEBUG] [component_param.go:592] ["init cacheSize"] ["cacheSize (GB)"=0]

使用python进行连接

  • 用 Python 示例程序来测试您的数据库。首先用 pip3 安装 PyMilvus:
 dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  pip3 install pymilvus
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1131)'))': /simple/pymilvus/
Collecting pymilvusDownloading pymilvus-2.3.1-py3-none-any.whl (168 kB)|████████████████████████████████| 168 kB 867 kB/s 
Requirement already satisfied: numpy<1.25.0; python_version <= "3.8" in /usr/lib/python3/dist-packages (from pymilvus) (1.17.4)
Collecting pandas>=1.2.4Downloading pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB)|████████████████████████████████| 12.4 MB 1.3 MB/s 
Collecting protobuf>=3.20.0Downloading protobuf-4.24.4-cp37-abi3-manylinux2014_x86_64.whl (311 kB)|████████████████████████████████| 311 kB 1.8 MB/s 
......
  • 下载hello_milvus例子

     dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.6/examples/hello_milvus.py
    
  • 运行

    该脚本将创建一个集合、添加索引并运行一些计算。运行。根据您的处理器和可用内存,这将需要几分钟才能完成。

    python3 ./hello_milvus.py
    

attu可视化工具

docker run -p 8000:3000 -e HOST_URL=http://{ your machine IP }:8000 -e MILVUS_URL={your machine IP}:19530 zilliz/attu:latest修改docker-compose.yaml
version: '3.5'services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.0environment:- ETCD_AUTO_COMPACTION_MODE=revision- ETCD_AUTO_COMPACTION_RETENTION=1000- ETCD_QUOTA_BACKEND_BYTES=4294967296volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcdcommand: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcdminio:container_name: milvus-minioimage: minio/minio:RELEASE.2020-12-03T00-03-10Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminvolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_datacommand: minio server /minio_datahealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3attu:container_name: attuimage: zilliz/attu:v2.0.5environment:MILVUS_URL: milvus-standalone:19530ports:- "8000:3000"depends_on:- "standalone"standalone:container_name: milvus-standaloneimage: milvusdb/milvus:v2.0.2command: ["milvus", "run", "standalone"]environment:ETCD_ENDPOINTS: etcd:2379MINIO_ADDRESS: minio:9000volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvusports:- "19530:19530"depends_on:- "etcd"- "minio"networks:default:name: milvusdell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  docker compose up -d
[+] Running 4/4✔ Container milvus-minio       Started                                                                                                                                                                  0.0s ✔ Container milvus-etcd        Started                                                                                                                                                                  0.0s ✔ Container milvus-standalone  Started                                                                                                                                                                  0.0s ✔ Container attu               Started                                                                                                                                                                  0.0s dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  docker compose  ps  
NAME                IMAGE                                      COMMAND                                                                                                        SERVICE      CREATED          STATUS                    PORTS
attu                zilliz/attu:latest                         "docker-entrypoint.sh /bin/bash -c '/app/build/env.sh && yarn start:prod'"                                     attu         34 seconds ago   Up 33 seconds             0.0.0.0:8000->3000/tcp, :::8000->3000/tcp
milvus-etcd         quay.io/coreos/etcd:v3.5.0                 "etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd"   etcd         34 seconds ago   Up 33 seconds             2379-2380/tcp
milvus-minio        minio/minio:RELEASE.2020-12-03T00-03-10Z   "/usr/bin/docker-entrypoint.sh minio server /minio_data"                                                       minio        34 seconds ago   Up 33 seconds (healthy)   9000/tcp
milvus-standalone   milvusdb/milvus:v2.0.2                     "/tini -- milvus run standalone"                                                                               standalone   34 seconds ago   Up 33 seconds             0.0.0.0:19530->19530/tcp, :::19530->19530/tcp#run
docker compose logs standalone

问题

在attu登陆milvus-standalone:19530时,遇到错误Error: Milvus is not ready yet.

#停止所有容器
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS                    PORTS                                           NAMES
4c751ced721e   zilliz/attu:latest                         "docker-entrypoint.s…"   10 minutes ago   Up 10 minutes             0.0.0.0:8000->3000/tcp, :::8000->3000/tcp       attu
656601ee17f6   milvusdb/milvus:v2.0.2                     "/tini -- milvus run…"   10 minutes ago   Up 10 minutes             0.0.0.0:19530->19530/tcp, :::19530->19530/tcp   milvus-standalone
66a741011521   minio/minio:RELEASE.2020-12-03T00-03-10Z   "/usr/bin/docker-ent…"   10 minutes ago   Up 10 minutes (healthy)   9000/tcp                                        milvus-minio
b81f4ddb637e   quay.io/coreos/etcd:v3.5.0                 "etcd -advertise-cli…"   10 minutes ago   Up 10 minutes             2379-2380/tcp                                   milvus-etcddell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  docker stop $(docker ps -q)4c751ced721e
656601ee17f6
66a741011521
b81f4ddb637e
#并且删除
localhost:8000/connect
#error:Network Error
docker compose down --volumes --remove-orphans

这个命令将停止并删除docker-compose.yml定义的所有服务。此外,它还会删除由docker-compose up创建的默认网络和数据卷以及删除在当前docker-compose.yml中没有定义但在上次docker-compose up命令中创建的容器。

您已经正确地执行了命令来停止和删除所有容器和相关资源。如果您需要重启服务,可以使用 docker compose up -d。如果您希望完全重新开始并从干净的 slate 创建所有资源,请确保删除所有相关的数据卷和网络,然后再次运行 docker compose up -d

docker run -p 8000:3000 -e HOST_URL=http://{ your machine IP }:8000 -e MILVUS_URL={your machine IP}:19530 zilliz/attu:v2.0.5

网络

 ✘ dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  docker network ls  
NETWORK ID     NAME      DRIVER    SCOPE
2f1a509e0e2d   bridge    bridge    local
a64353e264b2   host      host      local
187aeff5bafd   kwdb-br   bridge    local
3f0732598413   milvus    bridge    local
066dd83dd1b7   none      null      localdell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  docker network inspect milvus
[{"Name": "milvus","Id": "3f0732598413e82012bc83f52a6d361ee3349317db6668c2fcef00f4a6d325f5","Created": "2023-10-10T21:18:08.659747219+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.23.0.0/16","Gateway": "172.23.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {"41a27a7af5d26b664fa85a592e1cbf9d9610ca7a14c04962ce1e208121c105ab": {"Name": "milvus-etcd","EndpointID": "5ac05b8920421b28beed6bfe404c91bdc4e22da9d5793c69c7c5a3aa5d5a0300","MacAddress": "02:42:ac:17:00:02","IPv4Address": "172.23.0.2/16","IPv6Address": ""},"4d704500f4e5fc300001f580604fd1fa8e157f77bb0b01ea68f482e24ac8d78d": {"Name": "milvus-minio","EndpointID": "746ed1522f55efac79602dd5f77ccae83c21866d62f2bdcbf578f95b9a86e861","MacAddress": "02:42:ac:17:00:03","IPv4Address": "172.23.0.3/16","IPv6Address": ""},"9791c3b39d7e7ccc24b7211598ca45dd58544fd17811833323861aee02da552c": {"Name": "milvus-standalone","EndpointID": "b79758d99b524dd980fd1413122dc51006e0637a84e1d471e05585affe90152d","MacAddress": "02:42:ac:17:00:04","IPv4Address": "172.23.0.4/16","IPv6Address": ""}},"Options": {},"Labels": {"com.docker.compose.network": "default","com.docker.compose.project": "milvus_compose","com.docker.compose.version": "2.21.0"}}
]docker inspect your-container-ID -f "{{json .NetworkSettings.Networks }}"

两个docker添加到一个网络中

在这里插入图片描述

兼容性:
Milvus VersionRecommended Attu Image Version
v2.0.xv2.0.5
v2.1.xv2.1.5
v2.2.xv2.2.6
虚拟环境
 ✘ dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  sudo apt install python3.8-venv
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:libc6-dev:i386 libcrypt-dev:i386 libncurses-dev:i386 libpkgconf3 linux-libc-dev:i386
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:python3.8-venv
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 37 个软件包未被升级。
需要下载 5,448 B 的归档。
解压缩后会消耗 27.6 kB 的额外空间。
获取:1 https://mirrors.ustc.edu.cn/ubuntu focal-updates/universe amd64 python3.8-venv amd64 3.8.10-0ubuntu1~20.04.8 [5,448 B]
已下载 5,448 B,耗时 10(535 B/s)                    
正在选中未选择的软件包 python3.8-venv。
(正在读取数据库 ... 系统当前共安装有 296249 个文件和目录。)
准备解压 .../python3.8-venv_3.8.10-0ubuntu1~20.04.8_amd64.deb  ...
正在解压 python3.8-venv (3.8.10-0ubuntu1~20.04.8) ...
正在设置 python3.8-venv (3.8.10-0ubuntu1~20.04.8) ...dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  python3 -m venv milvus_com     ✘ dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  source milvus_com/bin/activate
(milvus_com)  dell@dell-Precision-3630-Tower  /nvme/baum/git-project/milvus_compose  pip install "pymilvus>=2.1.0" "hnswlib>=0.5.2" pybind11 "milvus>=2.1.0"Collecting pymilvus>=2.1.0Using cached pymilvus-2.3.1-py3-none-any.whl (168 kB)
Collecting hnswlib>=0.5.2Downloading hnswlib-0.7.0.tar.gz (33 kB)Installing build dependencies ... doneGetting requirements to build wheel ... donePreparing wheel metadata ... done
Collecting pybind11Using cached pybind11-2.11.1-py3-none-any.whl (227 kB)
Collecting milvus>=2.1.0Downloading milvus-2.3.1-py3-none-manylinux2014_x86_64.whl (48.4 MB)......#exit->deactivate
停止milvus
docker compose down --volumes --remove-orphans
sudo rm -rf volumes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/156226.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态版通讯录(接上回)

利用动态内存函数ralloc()来分配空间&#xff0c;并且自动初始化为0&#xff1b; 然后再使用realloc()来进行扩容。当当前数量达到最大容量时&#xff0c;就自动加2个空间。 退出程序时释放内存。

计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度(matlab代码)

目录 1 主要内容 系统结构 CCPP-P2G-燃气机组子系统 非线性处理缺陷 2 部分代码 3 程序结果 4 程序链接 1 主要内容 该程序参考《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》模型&#xff0c;主要实现的是计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度…

uni-app 实现考勤打卡功能

一、在页面中引入地图组件 <map id"map" style"width: 100%; height: 100%" :latitude"myLatitude" :longitude"myLongitude" :circles"circles" :markers"markers"> </map>属性名类型说明longitudeN…

使用ffmpeg和python脚本下载网络视频m3u8(全网最全面)

网上给娃找了些好看的电影和一些有趣的短视频&#xff0c;如何保存下来呢&#xff1f;从网上找各种工具&#xff1f;都不方便。于是想到何不编程搞定&#xff0c;搞个脚本。对程序员来说这都不是事儿。且我有华为云服务器&#xff0c;完全可以把地址记下&#xff0c;后台自动下…

MAX17058_MAX17059 STM32 iic 驱动设计

本文采用资源下载链接&#xff0c;含完整工程代码 MAX17058-MAX17059STM32iic驱动设计内含有代码、详细设计过程文档&#xff0c;实际项目中使用代码&#xff0c;稳定可靠资源-CSDN文库 简介 MAX17058/MAX17059 IC是微小的锂离子(Li )在手持和便携式设备的电池电量计。MAX170…

本地安装多个node版本,gvnm来安装切换使用。vue2和vue3对node版本要求不一样

首先&#xff0c;本地下载安装gvnm https://github.com/Kenshin/gnvm.。 里面有安装使用方式。 使用gvnm 来管理切换本地node 版本。 2&#xff0c;切换为高版本node,或是在vue2项目package.json 启动打包的时候 配置修改。就无需再切换低版本node 来启动vue2项目了 "s…

centos安装redis教程

centos安装redis教程 安装的版本为centos7.9下的redis3.2.100版本 1.下载地址 Index of /releases/ 使用xftp将redis传上去。 2.解压 tar -zxvf 文件名.tar.gz 3.安装 首先&#xff0c;确保系统已经安装了GCC编译器和make工具。可以使用以下命令进行安装&#xff1a; sudo y…

【网络基础】IP 子网划分(VLSM)

目录 一、 为什么要划分子网 二、如何划分子网 1、划分两个子网 2、划分多个子网 一、 为什么要划分子网 假设有一个B类IP地址172.16.0.0&#xff0c;B类IP的默认子网掩码是 255.255.0.0&#xff0c;那么该网段内IP的变化范围为 172.16.0.0 ~ 172.16.255.255&#xff0c;即…

基于STM32_DS18B20单总线传感器驱动

基于STM32_DS18B20单总线传感器驱动 文章目录 基于STM32_DS18B20单总线传感器驱动前言一、BS18B20&#xff1f;二、原理1.复位与检验2.基本命令3.唯一ROM识别码4.温度转换 三、驱动代码四、注意事项 前言 本文以一款典型的单总线传感器及其驱动——DS18B20为例&#xff0c;简单…

计算机毕业设计选什么题目好?springboot智慧养老中心管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Linux磁盘常见知识

目录 一、基础概念 1.1 文件系统类型 1.2 主分区、扩展分区、逻辑分区三者关系 1.3 UUID 1.4 lvm逻辑卷管理系统 二. 常用命令 2.1 查看命令 2.2 分区命令 2.3 格式化命令 1.4 挂载命令 三、扩容根目录 一、基础概念 1.1 文件系统类型 文件系统类型决定了向分区中存放、读取数…

C++——string

目录 STL STL六大组件 标准库中的string类 string类 string类常用接口 构造函数 下标遍历[] 迭代器 范围for push_back() append() insert() operator pop_back() erase() reserve resize clear c_str() substr() find() rfind() find_first_of getline str…

MQ-小试牛刀

MQ MQ解决了什么问题&#xff1f; 异步处理 解耦合 削峰填谷 大规模数据处理 解耦 A系统发送数据到BCD三个系统&#xff0c;通过接口调用发送。如果 E 系统也要这个数据呢&#xff1f;那如果C系统现在不需要了呢&#xff1f;A系统负责人几乎崩溃… A系统跟其它各种乱七…

2023版 STM32实战9 RTC实时时钟/闹钟

RTC简介 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 注意事项 -1- 要手动配置中断寄存器 -2- 需要等待写操作完成 -3- 时钟闹钟中段…

FPGA面试题(4)(跨时钟域处理)

跨时钟域处理方法 慢->快快->慢单bit在快时钟域同步打拍&#xff0c;将信号同步到快时钟域展宽后同步打拍多bit异步FIFO异步FIFO握手信号 一.打两拍 适用于单bit跨时钟域处理所谓的打两拍就是定义两级寄存器实现延时 那为什么是打两拍&#xff0c;不是打一拍&#x…

mysql面试题44:MySQL数据库cpu飙升的话,要怎么处理?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL数据库cpu飙升的话,要怎么处理呢? 当MySQL数据库的CPU使用率飙升时,可能表示数据库负载过重或存在性能问题。以下是处理MySQL数据库CPU飙…

腾讯云优惠券种类、领取方法及使用教程分享

腾讯云是国内领先的云计算服务提供商&#xff0c;为用户提供丰富的云计算产品和服务。为了吸引更多用户使用腾讯云的产品和服务&#xff0c;腾讯云会定期推出各种优惠券活动。本文将为大家介绍腾讯云优惠券的种类、领取方法及使用教程。 一、腾讯云优惠券种类介绍 腾讯云优惠券…

项目管理的优秀软件推荐,助力提升团队效能!

我们知道&#xff0c;每个产品在上市的过程中都需要经历市场调研、研发设计、功能测试、上市评估、营销推广等阶段。作为项目经理&#xff0c;最关键的任务不仅是确保产品的顺利孵化和上市&#xff0c;还有管理团队。我们研究了许多项目管理用户&#xff0c;工作的难点是如何在…

{2023版}老牌配资平台排行报告:十大排名和实盘评估详情

随着投资者对股市的深入了解&#xff0c;越来越多的人开始选择配资交易。在配资平台的选择上&#xff0c;除了要注意平台的合法性和安全性外&#xff0c;平台的口碑和服务质量也是非常重要的考虑因素。为了方便投资者的选择&#xff0c;尚红网、倍悦网、兴盛网、诚利和、嘉正网…

文本情感计算技术(深度)

文本情感计算技术的发展得益于社交媒体的蓬勃发展。文本情感计算的研究至今已有 20年的历史&#xff0c;仍是国内外学术界和产业界的研究热点。随着新技术的变迁、新任务的出现&#xff0c;以及更高性能算法需求的增长&#xff0c;文本情感计算涉及多项有挑战性的研究任务。文本…