交换机属性介绍-交换机持久化、交换机自动删除、备用交换机

news2025/1/13 17:25:50

交换机属性-持久化和自动删除

  • 1、交换机常用属性
  • 2、交换机(Exchange)的持久化属性
    • 2.1、RabbitConfig配置类(关键代码)
    • 2.2、发送消息
    • 2.3、启动类
    • 2.4、application.yml配置文件
    • 2.5、pom.xml配置文件
    • 2.6、测试
  • 3、交换机(Exchange)的自动删除属性
    • 3.1、RabbitConfig配置类(关键代码)
    • 3.2、发送消息
    • 3.3、启动类
    • 3.4、application.yml配置文件
    • 3.5、pom.xml配置文件
    • 3.6、测试
  • 4、备用交换机
    • 4.1、使用场景
    • 4.2、代码还原场景
      • 4.2.1、生产者
        • 4.2.1.1、RabbitConfig配置类(关键)
        • 4.2.1.2、application.yml
        • 4.2.1.3、发送消息
        • 4.2.1.4、启动类
        • 4.2.1.5、配置文件pom.xml
      • 4.2.2、消费者
      • 4.2.2.1、监听类(监听消息发送)
      • 4.2.2.2、启动类
      • 4.2.2.3、配置文件application.yml
      • 4.2.2.4、配置文件pom.xml
    • 4.3、测试

1、交换机常用属性

1、Name:交换机名称;就是一个字符串
2、Type:交换机类型,direct, topic, fanout, headers四种
3、Durability:持久化,声明交换机是否持久化,代表交换机在服务器重启后是否还存在;
4、Auto delete:是否自动删除,曾经有队列绑定到该交换机,后来解绑了,那就会自动删除该交换机;
5、Internal:内部使用的,如果是yes,客户端无法直接发消息到此交换机,它只能用于交换机与交换机的绑定。
6、Arguments:只有一个取值alternate-exchange,表示备用交换机;
在这里插入图片描述

2、交换机(Exchange)的持久化属性

交换机默认是持久化的,即创建后重启rabbitmq服务器交换机也不会丢失。

在这里插入图片描述

2.1、RabbitConfig配置类(关键代码)

在这里插入图片描述

package com.power.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {

    @Value("${my.exchangeName}")
    private String exchangeName;

    @Value("${my.queueName}")
    private String queueName;

    //创建交换机
    @Bean
    public DirectExchange directExchange(){
        return ExchangeBuilder //交换机默认是持久化的
                .directExchange(exchangeName)
                .durable(false) //durable值默认是true,如果此处设置为false,那么Rabbitmq服务器重启后交换机就不会持久化,会自动删除
                .build();
    }

    //创建队列
    @Bean
    public Queue queue(){
        return QueueBuilder.durable(queueName).build();
    }

    @Bean
    public Binding binding(DirectExchange exchangeName,Queue queueName){
        return BindingBuilder.bind(queueName).to(exchangeName).with("info");
    }
}

2.2、发送消息

package com.power.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

@Service
@Slf4j
public class MessageService {

    @Resource
    private RabbitTemplate rabbitTemplate;

    @Value("${my.exchangeName}")
    private String exchangeName;

    @Bean
    public void sendMsg(){
        Message message = MessageBuilder.withBody("hello world".getBytes()).build();
        rabbitTemplate.convertAndSend(exchangeName,"info",message);
        log.info("消息发送完毕,发送时间是:"+new Date());
    }
}

2.3、启动类

package com.power;

import com.power.service.MessageService;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.annotation.Resource;

@SpringBootApplication
public class Application implements ApplicationRunner {

    @Resource
    private MessageService messageService;

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        messageService.sendMsg();
    }
}

2.4、application.yml配置文件

server:
  port: 8080
spring:
  application:
    name: rabbit_10_exchange_properties01

  rabbitmq:
    host: 你的服务器IP
    port: 5672
    username: 你的账号
    password: 你的密码
    virtual-host: power

my:
  exchangeName: exchange.properties.01
  queueName: queue.properties.01

2.5、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>

  <groupId>com.power</groupId>
  <artifactId>rabbit_10_exchange_properties01</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>rabbit_10_exchange_properties01</name>

  <properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.13</version>
    <relativePath/>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

2.6、测试

先启动服务,然后登录rabbitmq服务器查看,发现新创建的交换机并没有被持久化。
在这里插入图片描述关闭rabbitmq服务器,再重新rabbitmq
在这里插入图片描述
登录rabbitmq后台,查看刚刚创建的交换机不见了

在这里插入图片描述

3、交换机(Exchange)的自动删除属性

如果解绑了队列和交换机,即没有队列和交换机进行绑定时,默认情况下,交换机不会自动删除的;
当设置了该属性的时候,我们解绑队列和交换机的话,交换机会自动删除的。

3.1、RabbitConfig配置类(关键代码)

在这里插入图片描述

package com.power.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {

    @Value("${my.exchangeName}")
    private String exchangeName;

    @Value("${my.queueName}")
    private String queueName;

    //创建交换机
    @Bean
    public DirectExchange directExchange(){
        return ExchangeBuilder //交换机默认不是自动删除的。即如果队列和交换机解绑,默认情况下不会自动删除交换机
                .directExchange(exchangeName)
                .autoDelete()//不设该值是默认不自动删除,设完后自动删除。
                .build();
    }

    //创建队列
    @Bean
    public Queue queue(){
        return QueueBuilder.durable(queueName).build();
    }

    @Bean
    public Binding binding(DirectExchange exchangeName,Queue queueName){
        return BindingBuilder.bind(queueName).to(exchangeName).with("info");
    }
}

3.2、发送消息

代码同上

3.3、启动类

代码同上

3.4、application.yml配置文件

server:
  port: 8080
spring:
  application:
    name: rabbit_10_exchange_properties01

  rabbitmq:
    host: 你的服务器IP
    port: 5672
    username: 你的账号
    password: 你的密码
    virtual-host: power

my:
  exchangeName: exchange.properties.02
  queueName: queue.properties.02

3.5、pom.xml配置文件

同上

3.6、测试

先启动服务,然后登录rabbitmq服务器查看,发现新创建的交换机自动删除属性是true。

在这里插入图片描述进入该交换机,尝试解绑交换机和队列
在这里插入图片描述
解绑完成后,回到交换机列表页面,发现交换机exchange.properties.02自动删除了
在这里插入图片描述

4、备用交换机

4.1、使用场景

当消息经过交换器准备路由给队列的时候,发现没有对应的队列可以投递信息,在rabbitmq中会默认丢弃消息,如果我们想要监测哪些消息被投递到没有对应的队列,我们可以用备用交换机来实现,可以接收备用交换机的消息,然后记录日志或发送报警信息。

说明:
1、生产者发送消息给正常交换机(交换机类型为直连);
2、正常情况下,直连交换机接收到消息,根据生产者发送时的路由key将消息发送至正常队列;
3、正常队列接收到消息;
4、如果生产者发送消息时的路由key为info111,而正常交换机和正常队列绑定的路由key是info,那么此时的消息不会进入正常队列,而是会进入备份交换机里;
5、备份交换机接收到消息,交换机类型是扇形,会发送给备份队列;
6、消费者监听备份队列,如果备份队列有值,说明生产者发送的消息没有正常传递,此时消费者一旦监听到备份队列里头有值,就应该通过邮件,短信、记录日志等方式提醒系统运维人员。

在这里插入图片描述

4.2、代码还原场景

4.2.1、生产者

在这里插入图片描述

4.2.1.1、RabbitConfig配置类(关键)

在这里插入图片描述

package com.power.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {

    @Value("${my.exchangeNormalName}")
    private String exchangeNormalName;

    @Value("${my.exchangeAlternateName}")
    private String exchangeAlternateName;

    @Value("${my.queueNormalName}")
    private String queueNormalName;

    @Value("${my.queueAlternateName}")
    private String queueAlternateName;


    //创建正常交换机
    @Bean
    public DirectExchange directExchange(){
        return ExchangeBuilder
                .directExchange(exchangeNormalName)
                .alternate(exchangeAlternateName) //设置备用交换机
                .build();
    }

    //创建正常队列
    @Bean
    public Queue queueNormal(){
        return QueueBuilder.durable(queueNormalName).build();
    }

    //正常交换机和正常队列绑定
    @Bean
    public Binding binding(DirectExchange directExchange,Queue queueNormal){
        return BindingBuilder.bind(queueNormal).to(directExchange).with("info");
    }

    //创建备份交换机
    @Bean
    public FanoutExchange fanoutExchange(){
        return ExchangeBuilder.fanoutExchange(exchangeAlternateName).build();
    }

    //创建备份队列
    @Bean
    public Queue queueAlternate(){
        return QueueBuilder.durable(queueAlternateName).build();
    }

    //绑定备份交换机和备份队列
    @Bean
    public Binding bindingAlternate(FanoutExchange fanoutExchange,Queue queueAlternate){
        return BindingBuilder.bind(queueAlternate).to(fanoutExchange);
    }
}
4.2.1.2、application.yml
server:
  port: 8080
spring:
  application:
    name: rabbit_10_exchange03_alternate

  rabbitmq:
    host: 你的服务器IP
    port: 5672
    username: 你的账号
    password: 你的密码
    virtual-host: power

my:
  exchangeNormalName: exchange.normal.02          #正常交换机
  exchangeAlternateName: exchange.alternate.02    #备份交换机
  queueNormalName: queue.normal.02                #正常队列
  queueAlternateName: queue.alternate.02          #备份队列
4.2.1.3、发送消息

为了测试消息发送失败的场景,此处发送时的路由key设置为错的

package com.power.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

@Service
@Slf4j
public class SendMessageService {

    @Resource
    private RabbitTemplate rabbitTemplate;

    @Value("${my.exchangeNormalName}")
    private String exchangeNormalName;

    @Bean
    public void sendMsg(){
        Message message = MessageBuilder.withBody("hello world".getBytes()).build();
        rabbitTemplate.convertAndSend(exchangeNormalName,"info111",message);
        log.info("向正常交换机消息发送完毕,发送时间是:{}",new Date());
    }
}
4.2.1.4、启动类
package com.power;

import com.power.service.SendMessageService;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.annotation.Resource;

@SpringBootApplication
public class Application implements ApplicationRunner {

    @Resource
    private SendMessageService messageService;

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        messageService.sendMsg();
    }
}

4.2.1.5、配置文件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>

  <groupId>com.power</groupId>
  <artifactId>rabbit_10_exchange03_alternate</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>rabbit_10_exchange03_alternate</name>

  <properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.13</version>
    <relativePath/>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

4.2.2、消费者

在这里插入图片描述

4.2.2.1、监听类(监听消息发送)

package com.power.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
@Slf4j
public class ReceiveMessageService {

    @RabbitListener(queues={"queue.alternate.02"})
    public void getMsg(Message message){
        byte[] body = message.getBody();
        String msg = new String(body);
        log.info("监听到备份队列的消息:"+msg+",接收的时间是:"+new Date());
    }
}

4.2.2.2、启动类

package com.power;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

4.2.2.3、配置文件application.yml

server:
  port: 9090
spring:
  application:
    name: rabbit_10_exchange04_alternate_getMsg

  rabbitmq:
    host: 你的rabbitmq服务器IP
    port: 5672
    username: 你的账号
    password: 你的密码
    virtual-host: power

4.2.2.4、配置文件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>

  <groupId>com.power</groupId>
  <artifactId>rabbit_10_exchange04_alternate_getMsg</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>rabbit_10_exchange04_alternate_getMsg</name>

  <properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.13</version>
    <relativePath/>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

4.3、测试

先启动生产者发送消息:
在这里插入图片描述

登录rabbitmq后台可以看到,消息并没有进入正常队列,因为生产者发送消息时制度的路由key跟正常交换机和正常队列绑定的路由key是不一样的,所以消息经由备份交换机进入了备份队列。

在这里插入图片描述
此时启动消费者,监听备份队列,我们呢发现,消费者从备份队列中读取到了消息。验证了上边说的,消息进入了备份队列。
在这里插入图片描述

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

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

相关文章

探索PyAV:Python中的多媒体处理利器

文章目录 探索PyAV&#xff1a;Python中的多媒体处理利器第一部分&#xff1a;背景介绍第二部分&#xff1a;PyAV是什么&#xff1f;第三部分&#xff1a;如何安装PyAV&#xff1f;第四部分&#xff1a;简单的库函数使用方法1. 打开文件2. 查看流3. 遍历帧4. 编码帧5. 关闭输出…

MySql中索引为什么用B+树,他有什么特点?时间复杂度是多少?能存多少数据?是不是只能三层?他与B-树有什么不同?还有其它的树你是是否知道?

平衡二叉树 平衡二叉树又被称为AVL树平衡二叉树是一颗空树或者它的左右两个子树的高度差的绝对值不超过1&#xff0c;并且左右子树也是平衡树非叶子节点值大于左子节点值而小于右子节点值非叶子节点最多拥有两个子节点 平衡二叉树的不足之处及时间复杂度 如果每次插入的数据都…

纯前端实现在线预览excel文件(插件: LuckyExcel、Luckysheet)

概述 在实际开发中&#xff0c;遇到需要在线预览各种文件的需求&#xff0c;最近遇到在线预览excel文件的需求&#xff0c;在此记录一下&#xff01;本文主要功能实现&#xff0c;用于插件 LuckyExcel &#xff0c;Luckysheet&#xff01;废话不多说&#xff0c;上代码&#xf…

关于我的编程语言——C/C++——第七篇(深入4)

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09; 什么是文件&#xf…

【深度学习遥感分割|论文解读7】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割

【深度学习遥感分割|论文解读7】UNetFormer&#xff1a;一种类UNet的Transformer&#xff0c;用于高效的遥感城市场景图像语义分割 【深度学习遥感分割|论文解读7】UNetFormer&#xff1a;一种类UNet的Transformer&#xff0c;用于高效的遥感城市场景图像语义分割 文章目录 【…

wget命令之Tomcat(三)

引言 Tomcat是一个开源的Java Web应用服务器&#xff0c;实现了多个关键的Java EE规范&#xff0c;包括Servlet、JSP&#xff08;JavaServer Pages&#xff09;、JavaWebSocket等。由于Tomcat技术先进、性能稳定且免费&#xff0c;它成为了许多企业和开发者的首选Web应用服务器…

如何在Linux中使用Cron定时执行SQL任务

文章目录 前言一、方案分析二、使用步骤1.准备脚本2.crontab脚本执行 踩坑 前言 演示数据需要每天更新监控数据&#xff0c;不想手动执行&#xff0c;想到以下解决方案 navicat 创建定时任务java服务定时执行linux crontab 定时执行sql脚本 一、方案分析 我选择了第三个方案…

CISCO产品介绍

思科防火墙是由全球领先的网络解决方案提供商思科&#xff08;Cisco&#xff09;公司研发和生产的一系列网络安全设备。 思科的产品和服务涵盖了多个领域&#xff0c;包括但不限于&#xff1a; 网络硬件&#xff1a;思科的路由器和交换机是其核心产品&#xff0c;广泛应用于企…

机器学习(一)——基本概念、模型的评估与选择

目录 1 关于2 概念2.1 基础概念2.2 学习过程2.3 预测与评估2.4 标记与分类2.4.1 标记2.4.2 分类 2.5 回归分析2.6 聚类分析2.7 学习类型2.8 泛化能力2.9 统计学概念 3 模型评估与选择3.1 经验误差与过拟合3.2 评估方法3.2.1 留出法3.2.2 交叉验证法3.2.3 自助法3.2.4 调参与最终…

第三十五章 Vue路由进阶之声明式导航(跳转传参)

目录 一、引言 二、查询参数传参 2.1. 使用方式 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.2.3. Search.vue 2.2.4. Home.vue 2.2.5. index.js 三、动态路由传参 3.1. 使用方式 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. Search.vue 3.2.4. Hom…

通过pin_memory 优化 PyTorch 数据加载和传输:工作原理、使用场景与性能分析

在 PyTorch 框架中,有一个看似简单的设置可以对模型性能产生重大影响: pin_memory。这个设置具体起到了什么作用,为什么需要关注它呢?如果你正在处理大规模数据集、实时推理或复杂的多 GPU 训练任务,将 pin_memory设为 True可以提高 CPU 与 GPU 之间的数据传输速度,有可能节…

博达S3956交换机批量配置接口导致设备重启

文章目录 现象厂家查看信息如下解决方法 现象 设备信息 交换机型号&#xff1a;博达S3956版本&#xff1a;2.2.0F Build 101150ROM版本&#xff1a;0.1.8 配置命令 interface range GigaEthernet0/1-40switchport pvid 10设备重启&#xff0c;配置未生效&#xff08;批量配置…

【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本

文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块…

Mysql学习笔记(一):Mysql的架构

一、mysql的组成部分 下面是来自Mysql实战的图片&#xff0c;该图片很好的表示了mysql的组成 mysql架构图 我们主要是和server层打交道&#xff0c;该层由连接器&#xff0c;分析器&#xff0c;优化器执行器、&#xff08;查询缓存&#xff09;组成 二、连接器的作用 每个客户端…

题目:Wangzyy的卡牌游戏

登录 - XYOJ 思路&#xff1a; 使用动态规划&#xff0c;设dp[n]表示当前数字之和模三等于0的组合数。 状态转移方程&#xff1a;因为是模三&#xff0c;所以和的可能就只有0、1、2。等号右边的f和dp都表示当前一轮模三等于k的组合数。以第一行为例&#xff1a;等号右边表示 j转…

【实验10】卷积神经网络(1)卷积算子

目录​​​​​​​ 1 自定义二维卷积算子 2 自定义带步长和零填充的二维卷积算子 3 实现图像边缘检测 4 自定义卷积层算子和汇聚层算子 4.1卷积层&#xff1a; 4.2 汇聚层&#xff1a; 5 学习torch.nn.Conv2d()、torch.nn.MaxPool2d()&#xff1b;torch.nn.avg_pool2d()&…

基于springboot信用分析管理系统设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

用JavaScript、Nodejs写一个本地tcp服务,用于前端WebSocket调试

效果&#xff1a; 准备工作&#xff1a; 新建一个文件夹&#xff0c;在根目录安装依赖&#xff1a; npm install ws express 依赖介绍&#xff1a; WS是一个轻量级、高效的WebSocket库&#xff0c;适用于Node.js环境。 express 是一个流行的Node.js Web应用程序框架。 新…

golang分布式缓存项目 Day 1

注&#xff1a;该项目原作者&#xff1a;https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO&#xff08;First In, First Out&#xff09;先进先出 原理&…

论文阅读笔记:Depth Pro: Sharp Monocular Metric Depth in Less Than a Second

论文阅读笔记&#xff1a;Depth Pro: Sharp Monocular Metric Depth in Less Than a Second 1 背景1.1 动机1.2 提出的方法 2 创新点3 方法4 模块4.1 训练目标4.2 课程训练 4.3 边缘评价指标4.4 焦距估计 5 效果5.1 和SOTA方法的对比 论文&#xff1a;https://arxiv.org/abs/24…