Spring Cloud 教程(二) | 搭建SpringCloudAlibaba

Spring Cloud 教程(二) | 搭建SpringCloudAlibaba

  • 前言
  • 一、SpringBoot 与 SpringCloud 版本对应关系:
  • 二、SpringCloud 与 SpringCloudAlibaba版本对应关系:
  • 三、SpringCloudAlibaba版本 与 组件版本 对应关系:
  • 四、搭建SpringCloudAlibaba 项目
    • 1. 聚合工程搭建
    • 2. 集成nacos-discovery,实现服务注册和发现
    • 3. 集成OpenFeign,实现Feign调用
      • 1.引入OpenFeign 和 LoadBalancer 依赖(这两个要一起用)
      • 2. 商品服务加入测试代码
      • 3. 用户服务 准备 Feign调用 商品服务
    • 4. 集成Loadbalancer,实现负载均衡
    • 5. 集成 sentinel,实现流量卫兵的监控
    • 6. 集成 nacos-config,实现配置中心
    • 7. 集成 gateway,实现云梯网关

前言

通过上一篇文章,我们得知目前最新的都是 SpringCloud 第二代(Spring Cloud + Alibaba)这一套
接下来,就是针对于如何搭建SpringCloudAlibaba.

一、SpringBoot 与 SpringCloud 版本对应关系:

  1. 1 进入 SpringCloud 官网
    地址: https://spring.io/projects/spring-cloud/#overview

在这里插入图片描述
这里列出了 SpringCloud 的最近几个版本,在往下看也说明了 关于Spring Cloud的Dalston、Edgware、Finchley、Greenwich、2020.0(aka Ilford)、2021.0(aka Jubilee)和2022.0(aka Kilburn)版本已经达到生命周期终止状态且不再受支持的情况。

Spring Cloud Dalston, Edgware, Finchley, Greenwich, 2020.0 (aka Ilford), 2021.0 (aka Jubilee), and 2022.0 (aka Kilburn) have all reached end of life status and are no longer supported.

以看到它的命名规则是 YYYY.MINOR.MICRO ;其中 YYYY 代表年份,MINOR 每年都从 0 开始;MICRO 是小版本;

在 SpringCloud 概览的页面我们选择任意一个版本进入,就可以看到改大版本下都有哪些小版本:
在这里插入图片描述
在这里插入图片描述

可以看出这个 2021 版本下的最新版本为 2021.0.8 版本的

二、SpringCloud 与 SpringCloudAlibaba版本对应关系:

【方式 1】点击 gitcode 地址 即可查看
在这里插入图片描述

【方式 2】点击 github 地址 即可查看
在这里插入图片描述
点击 版本说明 即可查看
老版本说明如下(我这边是SpringBoot为 2.6.13):
使用我的 spring-cloud-alibaba-dependencies 即为 2021.0.5.0 版本
在这里插入图片描述

三、SpringCloudAlibaba版本 与 组件版本 对应关系:

点击 组件版本关系 即可查看
我这边用的是2021.0.5.0 版本
在这里插入图片描述

四、搭建SpringCloudAlibaba 项目

1. 聚合工程搭建

使用Maven聚合工程创建微服务架构

  • alibaba-common 服务:公共服务,包含各种通用的工具类、常量定义、异常类等
  • alibaba-user 服务:用户服务
  • alibaba-product 服务:商品服务

创建步骤就是 springboot搭建聚合工程一样的操作

在这里插入图片描述
聚合父工程的pom.xml 如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-cloud-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-cloud-demo</name><description>Demo project for Spring Boot</description><!-- 一般来说父级项目的packaging都需要改为pom,packaging默认类型jar类型--><packaging>pom</packaging><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version></properties><!-- 模块说明:这里声明多个子模块 --><modules><module>alibaba-common</module><module>alibaba-user</module><module>alibaba-product</module></modules><dependencies></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 2021.0.8--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.8</version><type>pom</type><scope>import</scope></dependency><!--spring cloud alibaba 2021.0.5.0--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.0.5.0</version><type>pom</type><scope>import</scope></dependency><!-- common 公共模块--><dependency><groupId>com.example</groupId><artifactId>alibaba-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></dependencyManagement></project>

然后以 alibaba-user 用户服务为例(三部曲:引依赖,写配置文件,写启动类):

pom如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>alibaba-user</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>com.example</groupId><artifactId>alibaba-common</artifactId></dependency></dependencies></project>

配置文件如下:
用户服务给的端口 是6666,商品服务给的端口 是6667

注意一下:我这边使用这些端口6000 区域 的,使用浏览器直接请求接口会显示为:
“嗯… 无法访问此页面,网址为http://127.0.0.1:6667/product/list 的页面可能存在问题,或者已永久移动到新的网址。”
原因是:端口号 6000 区域的 并不是被普遍认为是“不安全”的端口,但浏览器可能基于其安全策略或配置限制了对该端口的访问。
所以后面我测试的时候用的是 postman工具,或者你可以改成浏览器支持安全的端口,例如:8000区域

server.port=6666
spring.application.name=alibabauser

启动类如下:
在这里插入图片描述

package com.example.alibabauser;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class AlibabaUserApplication {public static void main(String[] args) {SpringApplication.run(AlibabaUserApplication.class,args);}
}

alibaba-product 服务 也是如上操作,这里就不具体写了。

2. 集成nacos-discovery,实现服务注册和发现

在 alibaba-common 公共服务 的pom.xml 添加 nacos 依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>alibaba-common</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><!--provided 意味着打包的时候可以不用包进去--><scope>provided</scope></dependency><!--nacos client--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies></project>

alibaba-user 服务 和 alibaba-product 服务 的配置文件

都加上以下naocos配置

#配置 nacos 地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
#表示暴露所有端点
management.endpoints.web.exposure.include=*

nacos 服务器安装启动以后(这里就不细说了。需要去下载winows版本的naocs,然后改成单例启动),然后启动 alibaba-user 服务 和 alibaba-product 服务

请求 http://localhost:8848/nacos ,就可以看到Nacos的页面上面出现了两个服务,说明成功注册到Nacos服务中心
在这里插入图片描述

3. 集成OpenFeign,实现Feign调用

1.引入OpenFeign 和 LoadBalancer 依赖(这两个要一起用)

在 alibaba-common 公共服务 的pom.xml 添加 openfeign 依赖 和 loadBalancer 依赖

<!--openfeign(要和客户端负载均衡器一起用) -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--客户端负载均衡器-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

2. 商品服务加入测试代码

在 alibaba-product 服务 加 Controller 代码
在这里插入图片描述

package com.example.alibabaproduct.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;@RestController
@RequestMapping("/product")
public class ProductController {private static final Logger logger = LoggerFactory.getLogger(ProductController.class);@GetMapping("/list")public Map list() {logger.info("进入商品服务===,端口号:6667");HashMap<String , Object> map = new HashMap<>();map.put("这里是商品服务,端口号:",6667);map.put("苹果",10);map.put("辣条",7);return map;}
}

3. 用户服务 准备 Feign调用 商品服务

在 用户服务的 入口类加入@EnableFeignClients 注解
在这里插入图片描述

package com.example.alibabauser;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableFeignClients
public class AlibabaUserApplication {public static void main(String[] args) {SpringApplication.run(AlibabaUserApplication.class,args);}
}

在 用户服务的 下面创建 feign目录 ,添加 feign接口

1.需要在feign接口接口上面加上@FeignClient注解,name值为 应用的名称(你想调用哪个服务的就填哪个服务)
2.把你想调用商品服务的那个方法,复制到这个feign接口 下面。

在这里插入图片描述

package com.example.alibabauser.feign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;import java.util.Map;@FeignClient(name = "alibabaproduct")
public interface ProductFeign{@GetMapping("/product/list")Map list();
}

在 用户服务的 加 Controller 代码

在这里插入图片描述

package com.example.alibabauser.controller;import com.example.alibabauser.feign.ProductFeign;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
@RequestMapping("/user")
public class UserController {private static final Logger logger = LoggerFactory.getLogger(UserController.class);@Autowiredprivate ProductFeign productFeign;@GetMapping("/list")public Map list() {logger.info("进入用户服务===,端口号:6666");Map list = productFeign.list();return list;}}

接着启动两个服务,请求127.0.0.1:6666/user/list
会发现请求成功到了商品那边的接口。说明feign的调用方式成功了
在这里插入图片描述

4. 集成Loadbalancer,实现负载均衡

我们根据 商品alibaba-product 服务 再 复制一份 为 alibaba-product-6668 服务 出来,来验证负载均衡的。
记住要想实现负载均衡,这个 spring.application.name 是重点

spring.application.name(用于配置应用程序名称的配置项)

  1. 在单个Spring Boot应用程序内部,spring.application.name 的值是唯一的,因为它用于标识该应用程序本身。在同一个JVM实例中运行的Spring Boot应用程序通常不会有两个相同的spring.application.name。
  2. 在微服务架构中,spring.application.name 通常用作服务注册到服务发现组件(如Nacos、Eureka、Consul等)时的服务名称。在这种情况下,不同的微服务实例可以有相同的 spring.application.name,因为它们代表相同类型的服务,但运行在不同的物理或虚拟节点上。服务发现组件通过服务名称、实例ID、端口号等信息来区分不同的服务实例。

在这里插入图片描述
alibaba-product-6668 服务 和 alibaba-product 服务 的 spring.application.name 值都为 alibabaproduct
启动项目以后,你会在nacos里面看到以下情况
在这里插入图片描述
在这里插入图片描述

执行 127.0.0.1:6666/user/list 时,会发现有时候去了 商品服务6667 ,有时候去了商品服务6668
在这里插入图片描述

5. 集成 sentinel,实现流量卫兵的监控

如果没有 下载sentinel 控制台,请先确定版本后,在下载winows版本的
下载地址为:https://github.com/alibaba/Sentinel/releases

在 alibaba-common 公共服务 的pom.xml 添加 sentinel 依赖

<!--sentinel依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

然后配置alibaba-user,alibaba-product服务的配置文件

# sentinel配置
# 指定Sentinel控制台的地址,默认是8080
spring.cloud.sentinel.transport.dashboard=127.0.0.1:8858
# 指定客户端与Sentinel控制台交互的端口,默认是8719
spring.cloud.sentinel.transport.port=8719
#启用Eager模式,可提前处理流量控制,缺点增加应用程序的启动时间
spring.cloud.sentinel.eager=true

启动服务以后,请求访问http://localhost:8858 控制台 你就可以看到 你的服务已经被监控了
在这里插入图片描述
在这里插入图片描述

6. 集成 nacos-config,实现配置中心

在 alibaba-common 公共服务 的pom.xml 添加 nacos-config 依赖

<!--nacos统一配置中心管理依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

然后nacos新建一个命名空间:
我这边起名叫:生产环境
在这里插入图片描述
在这里插入图片描述

点击加号,进入新增页面,把 Data ID、Group、配置格式、配置内容 都填好
我这边以用户服务为例子,配置内容就是我们之前写在 application.properties 文件里面的内容
在这里插入图片描述

然后在到 用户 服务里面新增一个 前缀为 bootstrap.properties文件
再把之前application.properties 的内容清空也行,直接删除也行

为什么需要使用 bootstrap前缀的文件?
由于application配置文件的加载优先级低于bootstrap配置文件,如果Nacos的配置信息放在application配置文件中,那么在应用启动时可能会因为还未连接到Nacos服务器而无法加载这些配置。
虽然不是强制要求,但将Nacos的配置信息放在bootstrap配置文件中是最佳实践。

如果出现 错误 “No spring.config.import property has been defined”,
表示 springcloud新版默认禁用了bootstrap,如果需要使用bootstrap需要自己手动引入对应的依赖。
于是在 公共服务 的maven中加上以下依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

bootstrap.properties 内容如下

#应用程序名称
spring.application.name=alibabauser
#配置 nacos 地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
# nacos的配置文件读取配置
#命名空间ID
spring.cloud.nacos.config.namespace=fb3c1759-401b-4607-9bce-5e3d43590a0b
#分组配置
spring.cloud.nacos.config.group=DEFAULT_GROUP
#以下配置构成了Nacos上的dataId值
spring.cloud.nacos.config.prefix=user
spring.profiles.active=prod

项目再次启动,发现在读取到 user-prod.properties 里面端口配置6666及sentinel连接配置,说明读取ok.

7. 集成 gateway,实现云梯网关

新建一个module(alibaba-gateway)并引入依赖
(mvc的web依赖跟gateway依赖冲突,所以gateway依赖自己单独引入非web,或者排除掉web)

冲突原因如下:
冲突主要源于Spring Cloud Gateway是基于WebFlux框架实现的,它默认使用非阻塞的I/O模型,
而spring-boot-starter-web则是基于Servlet API构建的,用于传统的阻塞式Web开发。

我这边使用的是排除,完整的xml如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>alibaba-gateway</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><!--gateway依赖--><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- common 公共模块--><dependency><groupId>com.example</groupId><artifactId>alibaba-common</artifactId><version>0.0.1-SNAPSHOT</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></exclusion></exclusions></dependency></dependencies></project>

接着 创建启动类
在这里插入图片描述

创建完以后,把4个服务全部启动
在这里插入图片描述

先通过云梯请求用户服务
http://127.0.0.1:7666/user/list ,多请求几次,发现负载均衡的,一会6667,6668
在这里插入图片描述
在这里插入图片描述

再通过云梯请求商品服务
http://127.0.0.1:7666/product/list ,多请求几次,发现也是负载均衡的,一会6667,6668
在这里插入图片描述
在这里插入图片描述

参考文章
【1】idea 搭建springcloud+springcloud alibaba项目(maven)

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

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

相关文章

【Redis】主从复制(上)

文章目录 1.主从复制的基本概念基本概念主从复制的作用 2.在一个服务器上建立一个主从结构的redis集群建立主从关系断开主从关系redis中重要配置安全性只读传输延迟 3.主从关系--拓扑结构一主一从一主多从树形主从结构 1.主从复制的基本概念 基本概念 Redis 的主从复制&#…

AI驱动TDSQL-C Serverless 数据库技术实战营-融合智能体与TDSQL-C技术,高效实现二手房数据查询与分析应用

文章目录 什么是TDSQL-C技术创新算力服务器与数据库服务器申请与部署购买 TDSQL-C Mysql Serverless 实例购买HAI高算力服务器 准备工作准备数据下载依赖 案例研发创建数据库写入数据智能体与TDSQL-C 的结合应用第一步配置llama3.1第二步代码开发运行应用测试应用 总结 什么是T…

文献笔记 - Ground effect on rotorcraft unmanned aerial vehicles: a review

这篇博文是自己看文章顺手做的笔记 只是简单翻译和整理 仅做个人参考学习和分享 如果作者看到觉得内容不妥请联系我 我会及时处理 本人非文章作者&#xff0c;文献的引用格式如下&#xff0c;原文更有价值 摘要—— 收集和讨论小型多旋翼无人机受地面效应的影响&#xff0c;…

WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制

知识点&#xff1a; 1、JavaWeb常见安全及代码逻辑&#xff1b; 2、目录遍历&身份验证&逻辑&JWT&#xff1b; 3、访问控制&安全组件&越权&三方组件&#xff1b; 演示案例&#xff1a; JavaWeb-WebGoat8靶场搭建使用 安全问题-目录遍历&身份认…

第一个maven web工程(eclipse)

1、点击file--》new--》Maven Project&#xff0c;如下&#xff1a; 2、直接next&#xff0c;如下 3、搜索web原型&#xff0c;如下 4、填写项目的坐标&#xff0c;如下 5、创建完成后&#xff0c;需要自己补一个文件夹&#xff0c;名称为java&#xff0c;如下&#xff1a; …

C++进阶|多态知识点详解及经典面试题总结

&#x1f36c; mooridy-CSDN博客 &#x1f9c1;C专栏&#xff08;更新中&#xff01;&#xff09; 目录 1. 多态的概念 2. 多态的定义及实现 2.1 多态的构成条件 2.2 虚函数的重写/覆盖 2.3 虚函数重写的⼀些其他问题 2.4 override 和 final关键字 2.5 重载/重写/隐藏的…

IDEA全局搜索快捷键ctrl+shift+f失效问题解决

目录 一、搜狗输入法 二、windows输入法 其实就是与输入法快捷键冲突了&#xff0c;一般用的最多的就是windows自带输入法和搜狗输入法&#xff0c;我们只需要把两个输入法的快捷键取消即可解决。 一、搜狗输入法 二、windows输入法 “设置”-“日期和时间”&#xff0c;选择…

Elasticsearch——介绍、安装与初步使用

目录 1.初识 Elasticsearch1.1.了解 ES1.1.1.Elasticsearch 的作用1.1.2.ELK技术栈1.1.3.Elasticsearch 和 Lucene1.1.4.为什么不是其他搜索技术&#xff1f;1.1.5.总结 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排 1.3.Elasticsearch 的一些概念1.3.1.文档和字…

【中级通信工程师】终端与业务(三):电信业务

【零基础3天通关中级通信工程师】 终端与业务(三)&#xff1a;电信业务 本文是中级通信工程师考试《终端与业务》科目第三章《电信业务》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目&#xff0c;有效复习通过率可达90%以上&#xff0c;本文结合了高频考点和近几…

SQL 性能调优

什么是 SQL 性能调优 SQL 性能调优是优化 SQL 查询以尽可能高效地运行的过程&#xff0c;从而减少数据库负载并提高整体系统性能。这是通过各种技术实现的&#xff0c;例如分析查询执行计划、优化索引和重写查询以确保最佳执行路径。目标是最大限度地减少执行查询所需的时间和…

Windows安装openssl开发库

1 下载openssl安装包并安装 下载网址&#xff1a; https://slproweb.com/products/Win32OpenSSL.html 下载对应的安装版本。 双击安装包&#xff0c;一路下一步完成安装。注意&#xff1a;1.安装路径不要有空格&#xff1b; 2. 建议不要把DLL拷贝到系统路径。 2 编辑代码 …

什么是Node.js?

为什么JavaScript可以在浏览器中被执行&#xff1f; 在浏览器中我们加载了一些待执行JS代码&#xff0c;这些字符串要当中一个代码去执行&#xff0c;是因为浏览器中有JavaScript的解析引擎&#xff0c;它的存在我们的代码才能被执行。 不同的浏览器使用不同的javaScript解析引…

数据结构之链表(1),单链表

目录 前言 一、什么是链表 二、链表的分类 三、单链表 四、单链表的实现 五、SList.c文件完整代码 六、使用演示 总结 前言 本文讲述了什么是链表&#xff0c;以及实现了完整的单链表。 ❤️感谢支持&#xff0c;点赞关注不迷路❤️ 一、什么是链表 1.概念 概念&#xff1a;链…

19、网络安全合规复盘

数据来源&#xff1a;5.网络安全合规复盘_哔哩哔哩_bilibili

精密制造的革新:光谱共焦传感器与工业视觉相机的融合

在现代精密制造领域&#xff0c;对微小尺寸、高精度产品的检测需求日益迫切。光谱共焦传感器凭借其非接触、高精度测量特性脱颖而出&#xff0c;而工业视觉相机则以其高分辨率、实时成像能力著称。两者的融合&#xff0c;不仅解决了传统检测方式在微米级别测量上的局限&#xf…

【C++】入门基础知识-1

&#x1f36c;个人主页&#xff1a;Yanni.— &#x1f308;数据结构&#xff1a;Data Structure.​​​​​​ &#x1f382;C语言笔记&#xff1a;C Language Notes &#x1f3c0;OJ题分享&#xff1a; Topic Sharing 目录 前言&#xff1a; C关键字 命名空间 命名空间介…

使用 Llama-index 实现的 Agentic RAG-Router Query Engine

前言 你是否也厌倦了我在博文中经常提到的老式 RAG(Retrieval Augmented Generation | 检索增强生成) 系统&#xff1f;反正我是对此感到厌倦了。但我们可以做一些有趣的事情&#xff0c;让它更上一层楼。接下来就跟我一起将 agents 概念引入传统的 RAG 工作流&#xff0c;重新…

凌晨1点开播!Meta Connect 2024开发者大会,聚焦Llama新场景和AR眼镜

作者&#xff1a;十九 编辑&#xff1a;李宝珠 北京时间 9 月 26 日凌晨 1 点&#xff0c;Meta Connect 2024 开发者大会即将举行&#xff0c;马克扎克伯格将聚焦 AI 和元宇宙&#xff0c;向大家分享 Llama 模型的更多潜在应用&#xff0c;并介绍 Meta 最新产品 AR 眼镜和 Meta…

OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐

2022年OceanBase推出云数据库产品OB Cloud,正式启动云数据库战略。两年来OB Cloud发展情况如何&#xff0c;9月26日&#xff0c;OceanBase公有云事业部总经理尹博学向记者作了介绍。 尹博学表示&#xff0c;OB Cloud推出两年以来&#xff0c;已服务超过700家客户&#xff0c;客…

智算中心动环监控:构建高效、安全的数字基础设施@卓振思众

在当今快速发展的数字经济时代&#xff0c;智算中心作为人工智能和大数据技术的核心支撑设施&#xff0c;正日益成为各行业实现智能化转型的重要基石。为了确保这些高性能计算环境的安全与稳定&#xff0c;卓振思众动环监控应运而生&#xff0c;成为智算中心管理的重要组成部分…