当前位置: 首页 > news >正文

【Java Web】Nacos 介绍和安装教程

文章目录

    • 1. Nacos 介绍
      • 1.1 Nacos 的定义
      • 1.2 Nacos 的主要功能
        • 1.2.1 服务注册与发现
        • 1.2.2 配置管理
        • 1.2.3 动态 DNS 服务
        • 1.2.4 服务和元数据管理
      • 1.3 Nacos 的适用场景
        • 1.3.1 微服务架构
        • 1.3.2 动态配置管理
        • 1.3.3 多环境部署
        • 1.3.4 云原生应用
    • 2. Nacos 的核心组件
      • 2.1 服务注册与发现
        • 2.1.1 服务注册
        • 2.1.2 服务发现
        • 2.1.3 负载均衡
      • 2.2 配置管理
        • 2.2.1 配置获取
        • 2.2.2 配置监听
        • 2.2.3 配置版本和历史
      • 2.3 集群管理
        • 2.3.1 集群搭建
        • 2.3.2 负载均衡和容错
        • 2.3.3 数据一致性
    • 3. Nacos 安装前的准备
      • 3.1 硬件要求
        • 3.1.1 CPU
        • 3.1.2 内存
        • 3.1.3 存储
      • 3.2 软件要求
        • 3.2.1 操作系统
        • 3.2.2 Java环境
      • 3.3 环境变量配置
        • 3.3.1 JAVA_HOME
        • 3.3.2 PATH
    • 4. Nacos 的安装
      • 4.1 通过源码安装
        • 4.1.1 克隆源码
        • 4.1.2 构建项目
        • 4.1.3 运行 Nacos
      • 4.2 通过二进制包安装
        • 4.2.1 下载二进制包
        • 4.2.2 解压二进制包
        • 4.2.3 启动 Nacos
      • 4.3 使用 Docker 安装
        • 4.3.1 获取 Nacos 镜像
        • 4.3.2 运行 Nacos 容器
    • 5. Nacos 的初次运行
      • 5.1 运行 Nacos 服务器
        • 5.1.1 单机模式运行
        • 5.1.2 集群模式运行
      • 5.2 访问 Nacos 控制台
        • 5.2.1 打开控制台
        • 5.2.2 登录
      • 5.3 基本操作示例
        • 5.3.1 服务注册示例
        • 5.3.2 配置管理示例
        • 5.3.3 查看集群状态
    • 6. Nacos 的常见问题和解决方案
      • 6.1 问题1:Nacos 启动失败
        • 6.1.1 分析
        • 6.1.2 解决方案
      • 6.2 问题2:无法连接到 Nacos 控制台
        • 6.2.1 分析
        • 6.2.2 解决方案
      • 6.3 问题3:配置无法同步到客户端
        • 6.3.1 分析
        • 6.3.2 解决方案
    • 7. 结论
      • 7.1 本文总结
      • 7.2 推荐阅读和进一步学习资源
      • 7.3 结尾

1. Nacos 介绍

1.1 Nacos 的定义

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

它可以帮助您快速构建、部署、监控和调整微服务平台。通过其集中式、外部化和动态的服务配置管理,您可以更容易地在分布式系统环境中使用微服务架构。

1.2 Nacos 的主要功能

Nacos 主要提供以下核心功能:

1.2.1 服务注册与发现

Nacos 支持基于 DNS 和 RPC 的服务发现机制。这意味着您可以使用 Nacos 作为您的服务注册中心,以便服务消费者能够找到服务提供者。

例如,服务提供者注册代码示例:

NamingService naming = NamingFactory.createNamingService("localhost");
naming.registerInstance("example", "DEFAULT_GROUP", "192.168.0.1", 8080);

1.2.2 配置管理

Nacos 还提供了强大的配置管理功能,可以外部化、集中式地管理应用配置,支持配置的动态更新。

例如,获取一个配置:

ConfigService configService = NacosFactory.createConfigService("localhost");
String content = configService.getConfig("example", "DEFAULT_GROUP", 5000);
System.out.println(content);

1.2.3 动态 DNS 服务

通过提供 DNS 基于服务的健康检查等功能,Nacos 可以自动从 DNS 服务器删除失败的服务实例。

1.2.4 服务和元数据管理

您还可以使用 Nacos 进行服务和元数据管理,例如安全、流量管理、负载均衡等。

1.3 Nacos 的适用场景

Nacos 适合在以下场景中使用:

1.3.1 微服务架构

在微服务架构中,Nacos 可以作为服务注册中心,允许服务相互发现和通信。

1.3.2 动态配置管理

通过集中管理应用的配置,您可以使用 Nacos 实时更改应用的行为而不需要重启。

1.3.3 多环境部署

Nacos 通过命名空间的概念,可以帮助你更好地管理不同环境(如开发、测试、生产等)的配置。

1.3.4 云原生应用

Nacos 与 Kubernetes、Spring Cloud 等流行的云原生技术无缝集成,能够更好地支持云原生应用的开发和运行。

总的来说,Nacos 作为一个全能的注册中心和配置中心,已经成为了云原生时代构建可扩展、可维护的微服务应用的重要组件。不仅简化了开发过程,还提高了系统的可靠性和可维护性。

2. Nacos 的核心组件

2.1 服务注册与发现

服务注册与发现是微服务架构的基石,Nacos 为此提供了全面支持。

2.1.1 服务注册

服务注册是指服务提供者向注册中心发布其可提供的服务列表。Nacos 支持多种服务注册方式,包括 HTTP、Dubbo、gRPC 等。

例如,使用 Java 通过 Nacos SDK 进行服务注册:

NamingService naming = NamingFactory.createNamingService("localhost");
naming.registerInstance("example", "DEFAULT_GROUP", "192.168.0.1", 8080);

2.1.2 服务发现

服务发现则允许消费者找到并消费这些服务。Nacos 通过健康检查确保提供的服务可用。

例如,使用 Java 通过 Nacos SDK 进行服务发现:

NamingService naming = NamingFactory.createNamingService("localhost");
List<Instance> instances = naming.getAllInstances("example");

2.1.3 负载均衡

Nacos 还内置了负载均衡功能,当有多个实例提供同一服务时,它可以根据某种策略自动分发请求。

2.2 配置管理

Nacos 的配置管理允许您集中式管理所有环境和微服务的配置。通过动态配置更新,可以实现无缝配置变更,提高运维效率。

2.2.1 配置获取

可以通过 SDK 或 HTTP 接口从 Nacos 获取配置。例如:

ConfigService configService = NacosFactory.createConfigService("localhost");
String content = configService.getConfig("example", "DEFAULT_GROUP", 5000);

2.2.2 配置监听

Nacos 还支持对配置的动态监听,如果配置发生变化,应用可以立即得到通知。

configService.addListener("example", "DEFAULT_GROUP", new Listener() {@Overridepublic void receiveConfigInfo(String configInfo) {System.out.println("Receive config info: " + configInfo);}
});

2.2.3 配置版本和历史

通过 Nacos 控制台,您还可以查看配置的历史版本和变更记录,以便跟踪和回滚配置。

2.3 集群管理

Nacos 支持集群部署,以实现高可用和容错能力。

2.3.1 集群搭建

可以通过配置多个 Nacos 实例并设置正确的集群配置来搭建集群。

例如,在 cluster.conf 文件中定义集群节点:

192.168.0.1:8848
192.168.0.2:8848
192.168.0.3:8848

2.3.2 负载均衡和容错

Nacos 集群支持请求的负载均衡和自动容错。如果某个节点失败,请求会自动路由到其他健康节点。

2.3.3 数据一致性

Nacos 集群使用 Raft 协议确保数据在所有节点间的一致性。

综上所述,Nacos 的核心组件支持了服务注册与发现、配置管理和集群管理,这些功能的组合使得 Nacos 成为构建现代微服务应用的理想选择。其易用性和可扩展性也使其在业界得到了广泛的认可和应用。

3. Nacos 安装前的准备

在开始安装 Nacos 之前,必须确保满足一些基本的硬件和软件要求,以确保安装过程顺利进行。

3.1 硬件要求

Nacos 的硬件需求相对灵活,但以下是一般推荐的最小要求:

3.1.1 CPU

  • 最低要求:2核
  • 推荐要求:4核或更多

3.1.2 内存

  • 最低要求:2GB
  • 推荐要求:4GB或更多

3.1.3 存储

  • 最低要求:10GB可用磁盘空间
  • 推荐要求:50GB或更多,取决于您的数据存储需求

3.2 软件要求

Nacos 有一些基本的软件需求,包括操作系统和Java环境。

3.2.1 操作系统

  • 推荐使用 Linux(例如 CentOS、Ubuntu)或 MacOS。
  • Windows 也支持,但可能需要额外配置。

3.2.2 Java环境

  • 需要Java 8或更高版本。
  • 可以使用OpenJDK、Oracle JDK或其他兼容的JDK。

例如,在 Ubuntu 系统上,可以使用以下命令安装 Java:

sudo apt-get update
sudo apt-get install openjdk-8-jdk

3.3 环境变量配置

确保系统环境变量正确设置是成功安装 Nacos 的关键。

3.3.1 JAVA_HOME

确保JAVA_HOME环境变量指向您的JDK安装目录。例如,在 bash shell 中,您可以在 ~/.bashrc 文件中添加以下行:

export JAVA_HOME=/path/to/your/jdk

然后,运行以下命令使其生效:

source ~/.bashrc

3.3.2 PATH

确保 PATH 环境变量包括 JDK 的二进制文件目录。通常,如果 JAVA_HOME 已正确设置,您可以将 $JAVA_HOME/bin 添加到 PATH

export PATH=$JAVA_HOME/bin:$PATH

4. Nacos 的安装

安装 Nacos 可以通过几种不同的方法来完成,包括源码安装、二进制包安装和使用 Docker 安装。以下是各个方法的详细步骤。

4.1 通过源码安装

通过源码安装允许您自定义 Nacos 的某些方面。以下是步骤:

4.1.1 克隆源码

从 GitHub 克隆 Nacos 的源码:

git clone https://github.com/alibaba/nacos.git

4.1.2 构建项目

进入源码目录,并使用 Maven 进行构建:

cd nacos/
mvn -Prelease-nacos clean install -U

4.1.3 运行 Nacos

启动 Nacos:

cd distribution/target/nacos-server-版本号/nacos/bin
./startup.sh -m standalone

4.2 通过二进制包安装

二进制包安装是最快捷的安装方式。

4.2.1 下载二进制包

从 Nacos 的官方网站或 GitHub 仓库下载适合的版本的二进制包。

4.2.2 解压二进制包

解压下载的二进制文件:

tar -xzf nacos-server-版本号.tar.gz

4.2.3 启动 Nacos

cd nacos/bin
./startup.sh -m standalone

4.3 使用 Docker 安装

使用 Docker 安装 Nacos 可以确保在不同的环境中获得一致的运行效果。

4.3.1 获取 Nacos 镜像

从 Docker Hub 获取 Nacos 的官方镜像:

docker pull nacos/nacos-server

4.3.2 运行 Nacos 容器

运行 Nacos 容器,在单机模式下:

docker run --name nacos-standalone -e MODE=standalone -p 8848:8848 -d nacos/nacos-server

5. Nacos 的初次运行

安装 Nacos 后,下一步是运行 Nacos 服务器并开始使用其功能。这部分将详细介绍如何启动服务器、访问控制台,并提供一些基本操作示例。

5.1 运行 Nacos 服务器

5.1.1 单机模式运行

如果您只想在本地尝试 Nacos,可以在单机模式下运行。以下是启动命令:

./startup.sh -m standalone

5.1.2 集群模式运行

在生产环境中,可能需要在集群模式下运行 Nacos。您需要准备好集群配置文件,并运行以下命令:

./startup.sh

5.2 访问 Nacos 控制台

Nacos 控制台是通过 Web 浏览器访问的,提供了管理和监视 Nacos 实例的用户界面。

5.2.1 打开控制台

打开 Web 浏览器,并访问以下 URL:

http://localhost:8848/nacos

5.2.2 登录

默认用户名和密码分别为 nacosnacos

5.3 基本操作示例

一旦登录到 Nacos 控制台,您可以开始使用其功能。

5.3.1 服务注册示例

下面是使用控制台手动注册一个服务的示例:

  1. 点击左侧菜单的“服务管理”。
  2. 点击“创建服务”按钮。
  3. 填写服务名称、保护阈值等信息,并点击“确认”。

5.3.2 配置管理示例

以下是如何创建和管理配置的步骤:

  1. 点击左侧菜单的“配置管理”。
  2. 点击“创建配置”按钮。
  3. 输入数据 ID、分组、内容等信息,并点击“发布”。

5.3.3 查看集群状态

在控制台中,还可以查看 Nacos 集群的健康状态和性能指标。

6. Nacos 的常见问题和解决方案

6.1 问题1:Nacos 启动失败

Nacos 启动失败可能会由于多种原因造成。

6.1.1 分析

检查日志文件,通常位于 nacos/logs 目录下。

6.1.2 解决方案

  • 确保满足系统要求,例如正确的 Java 版本。
  • 确保端口未被其他进程占用。
  • 检查配置文件是否正确。
  • 如果是集群模式,请检查集群配置是否正确。

6.2 问题2:无法连接到 Nacos 控制台

无法连接到 Nacos 控制台也是一个常见问题。

6.2.1 分析

确认 Nacos 服务正在运行,并且网络连接是正常的。

6.2.2 解决方案

  • 检查 Nacos 服务是否正在运行。
  • 确保防火墙和安全组规则允许访问 Nacos 控制台的端口。
  • 尝试在服务器本地访问控制台,以排除网络问题。
  • 检查浏览器控制台的错误,可能是前端资源加载失败。

6.3 问题3:配置无法同步到客户端

配置无法同步到客户端可能会影响系统的运行。

6.3.1 分析

检查客户端与 Nacos 服务器之间的连接以及配置。

6.3.2 解决方案

  • 确保客户端与 Nacos 服务器的网络连接正常。
  • 检查客户端的 Nacos 配置是否正确,例如端点、命名空间、数据ID等。
  • 在Nacos 控制台检查相应的配置是否存在。
  • 查看客户端日志以获取更多详细信息。

7. 结论

7.1 本文总结

在这篇文章中,我们深入探讨了 Nacos 的许多方面。我们了解了 Nacos 的定义、主要功能、适用场景,以及其核心组件如服务注册与发现、配置管理和集群管理等。我们还详细讨论了如何为 Nacos 安装做准备,通过不同方法安装 Nacos,并进行初次运行。此外,还提供了一些常见问题及其解决方案。

Nacos 作为一个开源的、易于使用的服务发现、配置和服务管理平台,可以为现代微服务架构提供强大的支持。无论是新手还是有经验的开发人员,都可以从 Nacos 的功能中受益。

7.2 推荐阅读和进一步学习资源

以下是一些推荐的阅读和进一步学习资源,以便深入了解 Nacos:

  1. 官方文档:Nacos 的官方文档是第一手资料,提供了全面的指导和教程。

  2. GitHub 仓库:Nacos 的GitHub 仓库包括源代码、示例和问题跟踪。

  3. 社区论坛:Nacos 社区是寻求帮助、分享经验和与其他 Nacos 用户互动的好地方。

  4. 相关书籍和在线课程:许多出版商和在线学习平台提供有关 Nacos 和微服务的书籍和课程。选择适合您的知识水平和学习风格的资源。

7.3 结尾

通过本文,我们希望您对 Nacos 有了更全面的理解,并激发了进一步探索和使用它的兴趣。Nacos 的灵活性和强大功能使其成为构建现代、可扩展和弹性的分布式系统的理想选择。不管您的需求和背景如何,都鼓励您尝试 Nacos,并看到它如何改变您的开发和运维工作流程。

相关文章:

【Java Web】Nacos 介绍和安装教程

文章目录 1. Nacos 介绍1.1 Nacos 的定义1.2 Nacos 的主要功能1.2.1 服务注册与发现1.2.2 配置管理1.2.3 动态 DNS 服务1.2.4 服务和元数据管理 1.3 Nacos 的适用场景1.3.1 微服务架构1.3.2 动态配置管理1.3.3 多环境部署1.3.4 云原生应用 2. Nacos 的核心组件2.1 服务注册与发…...

web漏洞-java安全(41)

这个重点是讲关于java的代码审计&#xff0c;看这些漏洞是怎么在java代码里面产生的。 #Javaweb 代码分析-目录遍历安全问题 这个漏洞原因前面文章有&#xff0c;这次我们看看这个漏洞如何在代码中产生的&#xff0c;打开靶场 解题思路就是通过文件上传&#xff0c;上传文件…...

用CSS和HTML写一个水果库存静态页面

HTML代码&#xff1a; <!DOCTYPE html> <html> <head><link rel"stylesheet" type"text/css" href"styles.css"> </head> <body><header><h1>水果库存</h1></header><table>…...

【回眸】备考PMP考点汇总 三(距离考试还有20天)

目录 前言 【回眸】备考PMP考点汇总 三&#xff08;距离考试还有20天&#xff09; 29、管理质量 30、获取资源 31、建设团队 32、管理团队 33、管理沟通 34、实施风险应对 35、实施采购 36、管理相关方参与 37、监控项目工作&#xff08;10%&#xff09; 38、实施整…...

新房的收房验房注意事项

文章目录 流程注意事项准备检查材料手续整体结构验收水电检测门窗结构地面工程墙面工程顶面工程阳台厨房卫生间户外设施 流程注意事项 只要发现问题&#xff0c;不管大小&#xff0c;都要在相关文件或表格中记录下来&#xff0c;而不管开发商以及陪同的收房人员如何花言巧语。…...

ARM裸机-5

1、可编程器件的编程原理 1.1、电子器件的发展方向 模拟器件-->数字器件 ASIC-->可编程器件 1.2、可编程器件的特点 CPU在固定频率的时钟控制下节奏运行。 CPU可以通过总线读取外部存储设备中的二进制指令集&#xff0c;然后解码执行。 这些可以被CPU解码执行的二进制指…...

SpringCloud学习路线(11)——分布式搜索ElasticSeach场景使用

一、DSL查询文档 &#xff08;一&#xff09;DSL查询分类 ES提供了基于JSON的DSL来定义查询。 1、常见查询类型&#xff1a; 查询所有&#xff1a; 查询出所有的数据&#xff0c;例如&#xff0c;match_all全文检索&#xff08;full text&#xff09;查询&#xff1a; 利用…...

负数补码表示

负数补码作用 在计算机中加法和减法采用同一电路&#xff0c;即用加法表示减法&#xff0c;如7 - 2 5变成7 &#xff08; -2&#xff09; 5&#xff0c;这样减法的电路不用另行设计&#xff0c;但计算机中数据以二进制存储&#xff0c;没有负号&#xff0c;因此设计负数补码代…...

ChatGPT结合知识图谱构建医疗问答应用 (一) - 构建知识图谱

一、ChatGPT结合知识图谱 在本专栏的前面文章中构建 ChatGPT 本地知识库问答应用&#xff0c;都是基于词向量检索 Embedding 嵌入的方式实现的&#xff0c;在传统的问答领域中&#xff0c;一般知识源采用知识图谱来进行构建&#xff0c;但基于知识图谱的问答对于自然语言的处理…...

C++ 类和对象

面向过程/面向对象 C语言是面向过程&#xff0c;关注过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 C是基于面对对象的&#xff0c;关注的是对象——将一件事拆分成不同的对象&#xff0c;依靠对象之间的交互完成 引入 C语言中结构体只能定义…...

c# 此程序集中已使用了资源标识符

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1508 此程序集中已使用了资源标识符“BMap.NET.WindowsForm.BMapControl.resources” BMap.NET.WindowsForm D:\MySource\Decompile\BMap.NET.WindowsForm\CSC 1 活动 运行程序时&a…...

WPF实战学习笔记30-登录、注册服务添加

登录、注册服务添加 添加注册数据类型添加注册UI修改bug UserDto的UserName更改为可null类型Resgiter 添加加密方法修改控制器 添加注册数据类型 添加文件MyToDo.Share.Models.ResgiterUserDto.cs using System; using System.Collections.Generic; using System.Linq; us…...

GDAL C++ API 学习之路 OGRGeometry 圆弧类 OGRCircularString

OGRCircularString Class <ogrsf_frmts.h> OGRCircularString 类是 OGR 几何库中的一个类&#xff0c;用于表示圆弧字符串&#xff08;circular string&#xff09;类型的几何图形。圆弧字符串是由一系列圆弧段组成的几何图形&#xff0c;每个圆弧段由三个点定义…...

机器学习:异常检测

问题定义 anomaly&#xff0c;outlier&#xff0c; novelty&#xff0c; exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据&#xff0c;而异常的数据的范围非常广的话&#xff08;无法穷举&#xff09;&#xff0c;二分类这些不好做。另外就…...

flask中的蓝图

flask中的蓝图 在 Flask 中&#xff0c;蓝图&#xff08;Blueprint&#xff09;是一种组织路由和服务的方法&#xff0c;它允许你在应用中更灵活地组织代码。蓝图可以大致理解为应用或者应用中的一部分&#xff0c;可以在蓝图中定义路由、错误处理程序以及静态文件等。然后可以…...

Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

Java版知识付费-轻松拥有知识付费平台 多种直播形式&#xff0c;全面满足直播场景需求 公开课、小班课、独立直播间等类型&#xff0c;满足讲师个性化直播场景需求&#xff1b;低延迟、双向视频&#xff0c;亲密互动&#xff0c;无论是互动、答疑&#xff0c;还是打赏、带货、…...

uniapp 瀑布流 (APP+H5+微信小程序)

WaterfallsFlow.vue <template><view class"wf-page" :class"props?.paddingC ? paddingC : "><!-- left --><view><view id"left" ref"left" v-if"leftList.length"><viewv-for…...

医疗小程序:提升服务质量与效率的智能平台

在医疗行业&#xff0c;公司小程序成为提高服务质量、优化管理流程的重要工具。通过医疗小程序&#xff0c;可以方便医疗机构进行信息传播、企业展示等作用&#xff0c;医疗机构也可以医疗小程序提供更便捷的预约服务&#xff0c;优化患者体验。 医疗小程序的好处 提升服务质量…...

ComPDFKit 转档SDK OCR表格识别功能

我们非常高兴地宣布&#xff0c;适用于 Windows、iOS、Android 和服务器的 ComPDFKit 转档SDK 1.8.0 现已发布&#xff01;在该版本中&#xff0c;OCR 功能支持了表格识别&#xff0c;优化了OCR文字识别率。PDF to HTML 优化了html 文件结构&#xff0c;使转换后的 HTML 文件容…...

华为OD机考--阿里巴巴黄金箱

题目内容 贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0~N的箱子每个箱子上面贴有一个数字箱子中可能有一个黄金宝箱。 黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字之和; 一个箱子左边部分…...

学习笔记(26):线性代数-张量的降维求和,简单示例

学习笔记(26)&#xff1a;线性代数-张量的降维求和&#xff0c;简单示例 1.先理解 “轴&#xff08;Axis&#xff09;” 的含义 张量的 “轴” 可以理解为 维度的方向索引 。对于形状为 (2, 3, 4) 的张量&#xff0c;3 个轴的含义是&#xff1a; 轴 0&#xff08;axis0&…...

关键字--sizeof

sizeof 是 C 中的一个编译时运算符&#xff0c;用于获取一个类型或对象在内存中所占的字节数&#xff08;单位&#xff1a;字节&#xff0c;byte&#xff09;。 用法 获取类型的大小&#xff1a; std::cout << sizeof(int) << std::endl; // 输出int类型的字节数…...

spring:继承接口FactoryBean获取bean实例

spring框架提供接口FactoryBean获取bean实例。 实现步骤&#xff1a; 实现接口FactoryBean。 在xml文件中配置实现接口FactoryBean的类。 调用接口FactoryBean中方法getObject&#xff0c;获取bean实例。 实现接口类 package com.itheima.factory;import org.springframework…...

JavaScript 中的单例内置对象:Global 与 Math 的深度解析

JavaScript 中的单例内置对象&#xff1a;Global 与 Math 的深度解析 在 JavaScript 的世界中&#xff0c;单例内置对象是开发者必须了解的核心概念之一。它们是语言规范中预定义的对象&#xff0c;无需显式创建即可直接使用。本文将深入解析 JavaScript 中最重要的两个单例内…...

11-Oracle 23ai Vector Embbeding和ONNX

Embedding &#xff08;模型嵌入&#xff09;是 AI 领域的一个核心概念 一、Embedding&#xff08;嵌入&#xff09;的含义 Embedding 是一种将 非结构化数据​&#xff08;如文本、图像、音频、视频&#xff09;转换为 数值向量的技术。 其核心是通过 嵌入模型​&#xff08;…...

Java持久层技术对比:Hibernate、MyBatis与JPA的选择与应用

目录 简介持久层技术概述Hibernate详解MyBatis详解JPA详解技术选型对比最佳实践与应用场景性能优化策略未来发展趋势总结与建议 简介 在Java企业级应用开发中&#xff0c;持久层&#xff08;Persistence Layer&#xff09;作为连接业务逻辑与数据存储的桥梁&#xff0c;其技…...

AndroidR车机TextToSpeech音频焦点异常问题分析

一、引言 文章《Android车机之TextToSpeech》介绍了TextToSpeech的使用,当前较多座舱系统语音服务都接入了原生TextToSpeech接口调用。 我司自研语音TTS服务,也接入了此TTS接口调用,对外提供TextToSpeech能力,播报时由客户端Client自行管理音频焦点,播报前申请音频焦点,…...

Elasticsearch + Milvus 构建高效知识库问答系统《一》

&#x1f50d; Elasticsearch Milvus 构建高效知识库问答系统&#xff08;RAG 技术实战&#xff09; &#x1f4cc; 目录 背景介绍Elasticsearch 在知识库检索中的作用Milvus 在知识库检索中的作用混合检索&#xff1a;Elasticsearch Milvus完整代码实现部署建议与优化方向…...

【 java 集合知识 第一篇 】

目录 1.概念 1.1.集合与数组的区别 1.2.集合分类 1.3.Collection和Collections的区别 1.4.集合遍历的方法 2.List 2.1.List的实现 2.2.可以一边遍历一边修改List的方法 2.3.List快速删除元素的原理 2.4.ArrayList与LinkedList的区别 2.5.线程安全 2.6.ArrayList的扩…...

AI Infra运维实践:DeepSeek部署运维中的软硬结合

发布会资料 《AI Infra运维实践&#xff1a;DeepSeek部署运维中的软硬结合》 袋鼠云运维服务 1、行业痛点 随着数字化转型的深入&#xff0c;企业面临的运维挑战日益复杂&#xff0c;所依托的平台在长期使用的过程中积累了各式各样的问题或者难点。这些问题不仅影响效率&…...