手把手教你在ARM64架构下编译和部署Milvus:从环境搭建到Docker镜像制作全攻略

一、前言

Milvus是一款开源的向量搜索引擎,专为AI应用和分析设计。其卓越的性能和独特的特性,在各类AI使用场景中得到广泛应用。然而,对于arm64架构环境下的编译过程可能具有挑战性。arm64架构在硬件层面与普通的x86架构有着显著的差别,常用的编译工具和方法可能不适用于该架构。此外,由于硬件资源的限制,选择适当的编译策略也十分重要。因此,在进行Milvus的编译工作之前,我们需要仔细准备环境,包括配置运行环境、选择适当的编译工具和方法,并制作适用于arm64架构的Docker镜像。

二、构建编译环境

  • 主机环境:鲲鹏920
  • 操作系统:银河麒麟V10

推荐编译milvus2.2.12以上的版本(预发版及稳定版)以上的版本开始用Conan来管理依赖了, Conan是一个开源的、分布式的、跨平台的包管理器。推荐直接购买一台华为云的香港云服务器,这样访问github就不会有阻碍了。

2.1 构建编译环境步骤

# 1. 首先,从DockerHub上拉取arm64v8/ubuntu:20.04镜像(可选步
03-19
### C++ 中枚举类型的用法 #### 枚举类 (enum class) 的定义 在现代 C++ 中,`enum class` 是一种强类型的安全方式来定义一组命名常量。它提供了更好的作用域控制以及避免了传统 `enum` 可能带来的名称冲突问题。 以下是标准库中的一些典型例子: - **错误码映射**: `<system_error>` 提供了一个名为 `errc` 的枚举类用于表示系统特定的错误码[^1]。 - **指针安全性指示器**: `<memory>` 定义了 `pointer_safety` 枚举类,其成员包括 `relaxed`, `preferred`, `strict`,分别代表不同的内存管理策略。 - **输入/输出流错误处理**: `<iosfwd>` 使用 `io_errc` 来标记可能发生的 I/O 流错误,其中 `stream` 成员对应于流操作中的异常情况。 - **异步通信错误处理**: `<future>` 利用了 `future_errc` 枚举类来描述未来对象可能出现的各种错误状态,比如 `broken_promise`, `future_already_retrieved`, 或者 `promise_already_satisfied` 等。 这些示例展示了如何通过 `enum class` 将逻辑上相关的值分组在一起,并赋予它们清晰的意义。 #### 自定义枚举类的例子 下面是一个简单的自定义 `enum class` 示例及其应用方法: ```cpp #include <iostream> #include <string> // 定义一个颜色枚举类 enum class Color { RED, GREEN, BLUE }; std::string getColorName(Color c) { switch(c){ case Color::RED: return "Red"; case Color::GREEN: return "Green"; case Color::BLUE: return "Blue"; default: return "Unknown"; } } int main() { Color myColor = Color::GREEN; std::cout << "The color is: " << getColorName(myColor) << std::endl; return 0; } ``` 此代码片段演示了如何创建并使用一个基本的颜色枚举类。注意,在访问 `myColor` 值时必须显式指定它的类型为 `Color`,这增强了编译期检查的能力,减少了潜在的编程错误风险。 #### 关于传统的 `enum` vs. `enum class` 尽管两者都可以用来声明一系列整型常数集合,但是相比起旧式的 `enum`,`enum class` 更加安全可靠。这是因为后者强制要求使用者明确指出所属类别,从而有效防止全局名字空间污染以及意外赋值等问题的发生[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小盒子_spring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值