SpringCloud Alibaba Nacos 服务注册和配置中心

一、前言

        接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十二篇,即介绍 SpringCloud Alibaba Nacos 服务注册和配置中心。

二、Nacos 简介

2.1 为什么叫 Nacos

        前四个字母分别为 Naming Configuration 的前两个字母,最后的 sService

2.2 Nacos 是什么

        Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

        Nacos 就是注册中心 + 配置中心的组合等价于 Eureka + Config  + Bus

2.3 作用

        替代 Eureka 做服务注册中心,替代 Config 做服务配置中心。

三、安装并运行 Nacos

3.1 前提

        确保本地有 Java8 Maven环境。

3.2 下载

        在官网下载合适的版本,如下图:

3.3 安装

        解压安装包,进入到 bin 目录下切换命令行,执行 startup.cmd -m standalone 命令即可,如下图:

3.4 测试

        命令运行成功后直接访问 http://localhost:8848/nacos,如下图:

        用户名和密码都是 nacos ,登录进去,如下:

四、Nacos作为服务注册中心演示

4.1 基于 Nacos 的服务提供者

4.1.1 创建工程

        创建一个服务提供者 cloudalibaba-provider-payment9001 模块,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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.springcloud</groupId><artifactId>SpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloudalibaba-provider-payment9001</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--SpringCloud ailibaba nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

        我们可以这样引入的前提是:父工程引入了 alibaba 相关的依赖,如下:

<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>

        application.yml 内容如下所示:

server:port: 9001spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址management:endpoints:web:exposure:include: '*'

        主启动类的代码如下所示:

package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9001
{public static void main(String[] args) {SpringApplication.run(PaymentMain9001.class, args);}
}

        业务类 PaymentController,代码如下所示:

package com.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PaymentController
{@Value("${server.port}")private String serverPort;@GetMapping(value = "/payment/nacos/{id}")public String getPayment(@PathVariable("id") Integer id) {return "nacos registry, serverPort: "+ serverPort+"\t id"+id;}
}

4.1.2 测试

        启动 cloudalibaba-provider-payment9001 模块,访问 http://localhost:9001/payment/nacos/1,如下图:

        打开 nacos 的控制台,可以看到服务注册的信息,如下图:

4.1.3 创建工程

        为了后面测试负载均衡,我们按照创建 9001 工程的步骤,再创建一个 9002 的工程,创建的步骤这里不再赘述。等到创建成功后,启动,打开 nacos 管理界面,如下图:

4.2 基于 Nacos 的服务消费者

4.2.1 创建工程

        创建一个服务消费模块 cloudalibaba-consumer-nacos-order83pom.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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.springcloud</groupId><artifactId>SpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloudalibaba-consumer-nacos-order83</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--SpringCloud ailibaba nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</version></dependency><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

        application.yml 内容如下所示:

server:port: 83spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:nacos-user-service: http://nacos-payment-provider

        主启动类的代码如下所示:

package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient
@SpringBootApplication
public class OrderNacosMain83
{public static void main(String[] args){SpringApplication.run(OrderNacosMain83.class,args);}
}

        配置类的代码如下所示:

package com.springcloud.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class ApplicationContextBean
{@Bean// 设置支持负载均衡@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}

         业务类 controller 的代码如下所示:

package com.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;@RestController
public class OrderNacosController
{@Resourceprivate RestTemplate restTemplate;@Value("${service-url.nacos-user-service}")private String serverURL;@GetMapping("/consumer/payment/nacos/{id}")public String paymentInfo(@PathVariable("id") Long id){return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);}}

4.2.2 测试

        启动 cloudalibaba-consumer-nacos-order83 模块,打开 nacos 管理界面,如下图:

        在浏览器输入 http://localhost:83/consumer/payment/nacos/13,测试负载均衡,如下图:

        可以看到,实现了负载均衡的功能,Nacos 天生支持负载均衡的功能,如下图:

4.3 服务注册中心对比

4.3.1 Nacos 全景图

        Nacos 想要全景覆盖,每一种技术都想支持

4.3.2 Nacos 和 CAP

4.3.2 CP 和 AP 切换

        C 是所有节点在同一时间看到的数据是一致的;而 A 的定义是所有的请求都会收到响应。

        何时选择使用何种模式?一般来说,如果不需要存储服务级别的信息且服务实例是通过 nacos-client 注册,并能够保持心跳上报,那么就可以选择 AP 模式。当前主流的服务如 Spring cloudDubbo 服务,都适用于 AP 模式,AP 模式为了服务的可能性而减弱了一致性,因此 AP 模式下只支持注册临时实例。

        如果需要在服务级别编辑或者存储配置信息,那么 CP 是必须,K8S 服务和 DNS 服务则适用于 CP 模式。CP 模式下则支持注册持久化实例,此时则是以 Raft 协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

        Nacos 支持 APCP 模式的切换,切换的命令为:

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

五、Nacos 作为服务配置中心演示

5.1 Nacos 作为配置中心-基础配置

5.1.1 创建工程

        创建一个 cloudalibaba-config-nacos-client3377 模块用来演示配置中心,pom.xml 内容如下所示,只是多了一个 nacos-config 的配置。

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.springcloud</groupId><artifactId>SpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloudalibaba-config-nacos-client3377</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--一般基础配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

        创建两个配置文件 application.yml bootstarp.yml,为什么创建两个呢?因为 Nacos springcloud-config 一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

        springboot 中配置文件的加载是存在优先级顺序的,bootstrap 优先级高于 application

        bootstarp.yml 的内容如下所示,里面标识出来了注册中心的地址和配置中心的地址,并标识除了读取哪种类型结尾的文件。

# nacos配置
server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

        application.yml 内容如下所示:

spring:profiles:active: dev # 表示开发环境

        主启动类的代码如下所示:

package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{public static void main(String[] args) {SpringApplication.run(NacosConfigClientMain3377.class, args);}
}

        业务类 controller 的代码如下所示:

package com.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
// 在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
@RefreshScope 
public class ConfigClientController
{@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}

5.1.2 Nacos 中添加配置信息

        我们想实现动态的获取远程配置文件的最新值,我们可以在 nacos 中添加配置信息,然后再获取。

        Nacos 中的 dataid 的组成格式及与 SpringBoot 配置文件中的匹配规则,官网的地址在这,匹配规则如下:

        最后的公式可以总结为:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

        打开 nacos 的管理界面,新增一个配置,如下图:

        总结起来就是如下图:

5.1.3 测试

        运行 cloud-config-nacos-client3377 的主启动类,调用接口查看配置信息:http://localhost:3377/config/info,如下图:

        修改下 Nacos 中的 yaml 配置文件,再次调用查看配置的接口,就会发现配置已经刷新,如下图:

5.1.4 历史配置

        Nacos 会记录配置文件的历史版本默认保留 30 天,此外还有一键回滚功能,回滚操作将会触发配置更新。

5.2 Nacos 作为配置中心-分类配置

5.2.1 问题

        实际开发中,通常一个系统会准备 dev 开发环境、test 测试环境、prod 生产环境。如何保证指定环境启动时服务能正确读取到 Nacos 上相应环境的配置文件呢?

        一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境......那怎么对这些微服务配置进行管理呢?

5.2.2 解决方案

        我们可以在 Nacos 的图形化管理界面通过配置命名空间、Group Data Id 来解决上述的问题。

5.2.3 设计原因

        Namespace+Group+Data ID 三者关系?为什么这么设计?这三者之间的关系类似于 Java 里面的 package 名和类名,最外层的 namespace 是可以用于区分部署环境的,Group DataID 逻辑上区分两个目标对象。如下图:

        默认情况:Namespace=publicGroup=DEFAULT_GROUP,默认 Cluster DEFAULT

        Nacos 默认的命名空间是 publicNamespace 主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个 Namespace,不同的 Namespace 之间是隔离的。

        Group 默认是 DEFAULT_GROUPGroup 可以把不同的微服务划分到同一个分组里面去。

        Service 就是微服务;一个 Service 可以包含多个 Cluster(集群),Nacos 默认 ClusterDEFAULTCluster 是对指定微服务的一个虚拟划分。比方说为了容灾,将 Service 微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的 Service 微服务起一个集群名称 HZ,给广州机房的 Service 微服务起一个集群名称 GZ,还可以尽量让同一个机房的微服务互相调用,以提升性能。

        最后是 Instance,就是微服务的实例。

5.2.4 DataID 方案

        指定 spring.profile.active 和配置文件的 DataID 来使不同环境下读取不同的配置,新建 pro 配置 DataID,如下图:

        新建 test 配置 DataID,如下图:

        通过 spring.profile.active 属性就能进行多环境下配置文件的读取,如下:

        输入 http://localhost:3377/config/info,进行测试,如下:

5.2.5 Group 方案

        可以通过 Group 实现环境区分,新建一个 Group,如下图:

        在 nacos 图形界面控制台上面新建配置文件 DataID,如下图:

        接下来在 config 下增加一条 group 的配置即可。可配置为 DEV_GROUP TEST_GROUP 

         输入 http://localhost:3377/config/info,进行测试,如下:

5.2.6 Namespace 方案

        新建 dev test 的 Namespace,如下图:

        接下来回到服务管理-服务列表查看,如下图:

        按照域名配置填写,如下图:

        在 bootstarp.yml 中添加 namespace 的属性,如下,值为上图生成的 id

          输入 http://localhost:3377/config/info,进行测试,如下:

 六、Nacos 集群和持久化配置

6.1 官网说明

6.1.1 架构图说明

        官网的地址在这,官网的架构图如下所示:

        看上面的架构图可能看的不是很懂,如果翻译一下,可能会更懂一些,翻译过来就是下面的这张图,如下:

6.1.2 重点说明

        默认 Nacos 使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的 Nacos 节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 的存储。下图摘抄自官网。

6.2 Nacos 持久化配置解释

6.2.1 默认数据库

        Nacos 默认自带的是嵌入式数据库 derby

6.2.2 数据库切换

        derby mysql 切换配置步骤,首先在安装包的 nacos\conf 目录下找到 sql 脚本,如下:

        在 mysql 的客户端中执行里面的 sql 脚本,执行完毕后如下图:

        修改 nacos\conf 目录下的 application.properties 文件,填写自己的数据库信息,如下:

        修改完毕后重新启动 nacos,然后打开 nacos 的管理界面,如下图,可以看见,我们以前创建的配置列表都没有了,证明切换成功了。

6.3 Linux 版 Nacos + MySQL 生产环境配置

        我们此次搭建 1Nginx + 3nacos 注册中心 + mysql

ip 地址用途
192.168.229.1Mysql 数据库服务器
192.168.229.166安装 nacos 节点
192.168.229.169安装 nacos 节点
192.168.229.172安装 nacos 节点和 Nginx

6.3.1 Nacos 下载 Linux 版

        下图摘抄自官网,可以从官网选取合适的 linux 版本,下载完成后拷贝到 linux 环境里面,如下图:

        分别拷贝三份到不同的服务器里面,并解压安装包并将解压后的文件拷贝到 opt 文件夹下,如下图: 

6.3.2 集群配置

6.3.2.1 mysql 数据库配置

        首先确保你的数据库的版本为 5.x 版本,若为 8.0 版本可能会出问题。

        然后进行 linux 服务器上 mysql 数据库配置,sql 语句在如下的位置

        运行上面的 mysql 数据库脚本,会创建一个 nacos_config 的数据库,如下:

6.3.2.2 application 配置

        分别修改三个服务器上的 /opt/nacos/conf/application.properties 文件,位置如下:

        在配置文件中添加如下的内容,修改完成后记得保存退出

spring.datasource.platform=mysqldb.num=1
db.url.0=jdbc:mysql://192.168.229.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
6.3.2.3 集群配置

        接下来需要修改 cluster.conf 配置文件,文件位置如下所示:

        每台服务器都需要添加一样的内容,内容如下:

192.168.229.166:8848
192.168.229.169:8848
192.168.229.172:8848

6.3.2.4 启动验证

        在启动 nacos 之前,先将虚拟机里面三台服务器的防火墙关掉,命令如下:

systemctl status firewalldsystemctl stop firewalld

        分别启动三台服务器里面的 nacos,如下图:

        可以输入 tail -f /opt/nacos/logs/start.out  命令来查看日志的输出,当出现下面的提示时,就证明启动成功了。

        然后在浏览器分别访问刚刚开启的这三台 nacos,如下图:

6.3.2.5 nginx 配置

        Nginx 的下载和安装,请参考我的这篇博客,安装完成后,进入到 conf 文件夹下,准备修改 nginx.conf 配置文件,如下图:

        修改的内容如下图: 

        修改完成后,启动 nginx,如下图:

        在浏览器输入 http://192.168.229.172:1111/nacos,如下图:

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

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

相关文章

HarmonyOS(鸿蒙)应用开发——(一)

目录 1 创建hellopro项目 2 了解ArkTS 3 了解ArkTS的组件 4 组件介绍 4.1 常用基础组件&#xff1a; 4.1.1 Text 4.1.2 Button 4.1.3 TextInput 4.2 容器组件 4.2.1 Column 4.2.2 Row 5 案例——实现一个简易登录页面 5.1 在实现预览效果之前&#xff0c;我们…

MCU技术的创新浪潮与产业变革

MCU技术的创新浪潮与产业变革 一、MCU技术的创新发展 MCU&#xff0c;即微控制器&#xff0c;作为现代电子设备的核心部件&#xff0c;一直在不断地创新与发展。随着科技的进步&#xff0c;MCU的性能得到了极大的提升&#xff0c;功能也越来越丰富。从8位到32位&#xff0c;再…

【SpringMVC】知识汇总

SpringMVC 短暂回来&#xff0c;有时间就会更新博客 文章目录 SpringMVC前言一、第一章 SpingMVC概述二、SpringMVC常用注解1. Controller注解2. RequestMapping注解3. ResponseBody注解4. RequestParam5. EnableWebMvc注解介绍6. RequestBody注解介绍7. RequestBody与RequestP…

echart多折线图堆叠 y轴和实际数据不对应

当使用 ECharts 绘制堆叠折线图时&#xff0c;有时会遇到 y 轴与实际数据不对应的问题。 比如明明值是50&#xff0c;但折线点在y轴的对应点却飙升到了二百多 解决办法&#xff1a; 查看了前端代码发现在echart的图表中有一个‘stack’的属性&#xff0c;尝试把他删除之后y轴的…

探索vLLM:释放超大规模语言模型的力量

背景 vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM是一个快速且易于使用的库,用于 LLM 推理和服务,可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法「PagedAttention」,有效地管理注…

分布式游戏服务器

1、概念介绍 分布式游戏服务器是一种专门为在线游戏设计的大型系统架构。这种架构通过将游戏服务器分散部署到多台计算机&#xff08;节点&#xff09;上&#xff0c;实现了数据的分散存储和计算任务的并行处理。每个节点都负责处理一部分游戏逻辑和玩家请求&#xff0c;通过高…

应急响应靶机训练-Web3题解

前言 接上文&#xff0c;应急响应靶机训练-Web3。 前来挑战&#xff01;应急响应靶机训练-Web3 题解 首先登录用户administrator 寻找隐藏用户 找到隐藏用户hack6618$ 然后去找apache的日志文件 分析得出两个IP地址 192.168.75.129 192.168.75.130 然后更换hack6618$的…

Offline RL : SEABO: A Simple Search-Based Method for Offline Imitation Learning

NIPS 2024 paper Intro 离线强化学习一般需要带奖励标签的数据&#xff0c;而现实中这种标签获取困难。本文提出一种基于搜索的离线方法SEABO。SEABO以无监督学习的方式&#xff0c;对最接近专家演示的transaction较大的奖励&#xff0c;否则分配较小的奖励。 Method SEAB…

Flume-transaction机制源码分析

一、整体流程 FileChannel主要是由WAL预写日志和内存队列FlumeEventQueue组成。 二、Transaction public interface Transaction {// 描述transaction状态enum TransactionState { Started, Committed, RolledBack, Closed }void begin();void commit();void rollback();voi…

Introduction to Data Mining 数据挖掘

Why Data Mining? • The Explosive Growth of Data: from terabytes to petabytes — Data collection and data availability ◦ Automated data collection tools, database systems, Web, computerized society — Major sources of abundant data ◦ Business: Web, e-co…

哔哩哔哩秋招Java二面

前言 作者&#xff1a;晓宜 个人简介&#xff1a;互联网大厂Java准入职&#xff0c;阿里云专家博主&#xff0c;csdn后端优质创作者&#xff0c;算法爱好者 一面过后面试官叫我别走&#xff0c;然后就直接二面&#xff0c;二面比较简短&#xff0c;记录一下&#xff0c;希望可以…

JWT 认证机制

1. 了解 Session 认证的局限性 Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问&#xff0c;所以当涉及到前端跨域请求后端接口的时候&#xff0c;需要做很多额外的配置&#xff0c;才能实现跨域 Session 认证 注意&#xff1a; 1. 当前端请求后端接…

AMPQ和rabbitMQ

RabbitMQ 的 Channel、Connection、Queue 和 Exchange 都是按照 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;标准实现的。 AMPQ的网络部分 AMQP没有使用HTTP&#xff0c;使用TCP自己实现了应用层协议。 AMQP实现了自己特有的网络帧格式。 一个Connection…

用 Visual Studio 调试器中查看内存中图像

返回目录&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 前一篇&#xff1a;OpenCV4.9.0在windows系统下的安装 后一篇&#xff1a;OpenCV-Java 开发简介 ​警告 本教程可以包含过时的信息。 Image Watch 是 Microsoft Visual Studio 的插件&a…

气膜馆建造成本高吗?专业气膜厂家告诉你!

气膜馆作为一种现代化建筑结构&#xff0c;在体育、娱乐和展览领域备受青睐。然而&#xff0c;对于许多人来说&#xff0c;最关心的问题之一就是建造气膜馆的成本。下面轻空间气膜厂家将带您深入探讨气膜馆的建设成本&#xff0c;特别关注每平米的建设成本是多少&#xff0c;以…

matlab 将矩阵写入文件

目录 一、概述1、算法概述2、主要函数二、将矩阵写入到文本文件三、将矩阵写入电子表格文件四、将矩阵写入指定的工作表和范围五、将数据追加到电子表格六、将矩阵数据追加到文本文件七、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此…

Android 系统源码快速入门

Android源码快速入门 今天分享的内容是Android源码快速入门&#xff0c;主要分为以下几个步骤&#xff1a; * 硬件要求 * 虚拟机安装 * 开发环境搭建 * 下载编译源码 * 从一个简单的实际开发需求体验 Framework 开发硬件要求 用于 Android Framework 开发的电脑需要较强的 C…

HBase在表操作--显示中文

启动HBase后&#xff0c;Master和RegionServer两个服务器&#xff0c;分别对应进程为HMaster和HRegionServe。&#xff08;可通过jps查看&#xff09; 1.进入表操作 hbase shell 2.查看当前库中存在的表 list 3.查看表中数据&#xff08;注&#xff1a;学习期间可用&#…

传统企业在推行TPM时需要注意哪些问题?

当下&#xff0c;传统企业面临着转型升级的巨大压力。为了提升生产效率和产品质量&#xff0c;许多企业选择推行全面生产维护&#xff08;Total Productive Maintenance&#xff0c;简称TPM&#xff09;管理模式。然而&#xff0c;在实际推行过程中&#xff0c;传统企业需要注意…

MAC IntelliJ IDEA搭建Doris Fe

目录 版本信息 安装环境依赖 拉取源码 下载 Doris 编译依赖 修改系统最大文件句柄数 编译 Doris 配置 Debug 环境 生成 FE 代码 FE模块代码导入 配置 Debug FE 启动 FE 报错问题 版本信息 本次安装的doris版本信息为doris-2.1.0-rc11 IntelliJ IDEA 配置jdk17、m…