RabbitMQ-基础学习

在虚拟机上安装Erlang的GCC环境,装erlong,然后安装rabbitmq

参考:安装说明链接

安装web端面板

在这里插入图片描述

创建交换机

在这里插入图片描述

先学习一下工作模式(详细介绍可见官网)

在这里插入图片描述

上代码

1.Hello Word模式

在这里插入图片描述

写在测试类中:
Providucer

@Test
	void contextLoads()throws Exception {
		//1.创建链接
		ConnectionFactory factory = new ConnectionFactory();
		//2。设置参数
		factory.setHost("192.168.63.130");
		factory.setPort(5672);
		factory.setVirtualHost("/peng");
		factory.setUsername("peng");
		factory.setPassword("peng");
		//3.创建链接Connection
		Connection connection = factory.newConnection();

		//4.创建Channel
		Channel channel = connection.createChannel();
		//5.创建队列Queue
		//queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
		/**
		 * 1.queue 队列名
		 * 2.durable 是否持久化
		 * 3.exclusive (1)是否独占站,只能有一个消费的监听者 (2)当Connection关闭时是否删除队列
		 * 4.autoDelete 是否自动删除,当没有consumer会自动删除掉
		 * 5.arguments:
		 * */

		channel.queueDeclare("peng",true,false,false,null);

		//6.发送消息
		//basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)
		/**
		 * 1.exchange:交换机名称
		 * 2.routingKey:路由名称
		 * 3.props:配置信息
		 * 4.body:发送的消息数据
		 */
		String body="第一个消息";
		channel.basicPublish("","peng",null,body.getBytes());
		//7.释放资源
		channel.close();
		connection.close();
	}

Consumer

@Test
	void contextLoads()throws Exception {
		//1.创建链接
		ConnectionFactory factory = new ConnectionFactory();
		//2。设置参数
		factory.setHost("192.168.63.130");
		factory.setPort(5672);
		factory.setVirtualHost("/peng");
		factory.setUsername("peng");
		factory.setPassword("peng");
		//3.创建链接Connection
		Connection connection = factory.newConnection();

		//4.创建Channel
		Channel channel = connection.createChannel();
		//5.创建队列Queue
		//queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
		/**
		 * 1.queue 队列名
		 * 2.durable 是否持久化
		 * 3.exclusive (1)是否独占站,只能有一个消费的监听者 (2)当Connection关闭时是否删除队列
		 * 4.autoDelete 是否自动删除,当没有consumer会自动删除掉
		 * 5.arguments:
		 * */

		channel.queueDeclare("peng",true,false,false,null);
		//basicConsume(String queue, DeliverCallback deliverCallback, CancelCallback cancelCallback)
		/**
		 * 1.queue:队列名
		 * 2.deliverCallback:是否自动确认收到
		 * 3.cancelCallback:回调对象
		 */
		Consumer consumer= new DefaultConsumer(channel){
			/**
			 * 1.consumerTag:
			 * 2.envelope:
			 * 3.properties:
			 * 4.body:
			 * @param consumerTag
			 * @param envelope
			 * @param properties
			 * @param body
			 * @throws IOException
			 */
			@Override
			public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
				System.out.println("consumerTag"+consumerTag);
				System.out.println("envelope"+envelope.getExchange());
				System.out.println("properties"+envelope.getRoutingKey());
				System.out.println("properties"+properties);
				System.out.println("body"+new String(body));
			}
		};
		channel.basicConsume("peng",true,consumer);
	}

2.Work Queues模式

在这里插入图片描述
生产者生产,两个消费者循环消费
P:

package com.providucer.factory;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
 * @ClassName: Providucerfactory
 * @author: 鹏
 * @date: 2023/7/4 14:42
 */

public class ProvideFactory {
    public static void main(String[] args) throws Exception{
        //1.创建链接
        ConnectionFactory factory = new ConnectionFactory();
        //2。设置参数
        factory.setHost("192.168.63.130");
        factory.setPort(5672);
        factory.setVirtualHost("/peng");
        factory.setUsername("peng");
        factory.setPassword("peng");
        //3.创建链接Connection
        Connection connection = factory.newConnection();
        //4.创建Channel
        Channel channel = connection.createChannel();
        //5.创建队列Queue
        //queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
        /**
         * 1.queue 队列名
         * 2.durable 是否持久化
         * 3.exclusive (1)是否独占站,只能有一个消费的监听者 (2)当Connection关闭时是否删除队列
         * 4.autoDelete 是否自动删除,当没有consumer会自动删除掉
         * 5.arguments:
         * */
        channel.queueDeclare("pengwork",true,false,false,null);
        //6.发送消息
        //basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)
        /**
         * 1.exchange:交换机名称
         * 2.routingKey:路由名称
         * 3.props:配置信息
         * 4.body:发送的消息数据
         */
        for (int i = 1; i <= 10; i++) {
            String body="第"+i+"个消息";
            channel.basicPublish("","pengwork",null,body.getBytes());
        }
        //7.释放资源
        channel.close();
        connection.close();
    }
}

C1:

package com.consumer.factory;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @ClassName: ConsumerFactory
 * @author: 鹏
 * @date: 2023/7/4 14:44
 */

public class ConsumerFactory {
    public static void main(String[] args)throws Exception {
        //1.创建链接
        ConnectionFactory factory = new ConnectionFactory();
        //2。设置参数
        factory.setHost("192.168.63.130");
        factory.setPort(5672);
        factory.setVirtualHost("/peng");
        factory.setUsername("peng");
        factory.setPassword("peng");
        //3.创建链接Connection
        Connection connection = factory.newConnection();

        //4.创建Channel
        Channel channel = connection.createChannel();
        //5.创建队列Queue
        //queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
        /**
         * 1.queue 队列名
         * 2.durable 是否持久化
         * 3.exclusive (1)是否独占站,只能有一个消费的监听者 (2)当Connection关闭时是否删除队列
         * 4.autoDelete 是否自动删除,当没有consumer会自动删除掉
         * 5.arguments:
         * */

        channel.queueDeclare("pengwork",true,false,false,null);
        //basicConsume(String queue, DeliverCallback deliverCallback, CancelCallback cancelCallback)
        /**
         * 1.queue:队列名
         * 2.deliverCallback:是否自动确认收到
         * 3.cancelCallback:回调对象
         */
        Consumer consumer= new DefaultConsumer(channel){
            /**
             * 1.consumerTag:
             * 2.envelope:
             * 3.properties:
             * 4.body:
             * @param consumerTag
             * @param envelope
             * @param properties
             * @param body
             * @throws IOException
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
/*                System.out.println("consumerTag"+consumerTag);
                System.out.println("envelope"+envelope.getExchange());
                System.out.println("properties"+envelope.getRoutingKey());
                System.out.println("properties"+properties);*/
                System.out.println("body"+new String(body));
            }
        };
        channel.basicConsume("pengwork",true,consumer);
    }
}

C2:

package com.consumer.factory;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @ClassName: ConsumerFactory
 * @author: 鹏
 * @date: 2023/7/4 14:44
 */

public class ConsumerFactory1 {
    public static void main(String[] args)throws Exception {
        //1.创建链接
        ConnectionFactory factory = new ConnectionFactory();
        //2。设置参数
        factory.setHost("192.168.63.130");
        factory.setPort(5672);
        factory.setVirtualHost("/peng");
        factory.setUsername("peng");
        factory.setPassword("peng");
        //3.创建链接Connection
        Connection connection = factory.newConnection();

        //4.创建Channel
        Channel channel = connection.createChannel();
        //5.创建队列Queue
        //queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
        /**
         * 1.queue 队列名
         * 2.durable 是否持久化
         * 3.exclusive (1)是否独占站,只能有一个消费的监听者 (2)当Connection关闭时是否删除队列
         * 4.autoDelete 是否自动删除,当没有consumer会自动删除掉
         * 5.arguments:
         * */

        channel.queueDeclare("pengwork",true,false,false,null);
        //basicConsume(String queue, DeliverCallback deliverCallback, CancelCallback cancelCallback)
        /**
         * 1.queue:队列名
         * 2.deliverCallback:是否自动确认收到
         * 3.cancelCallback:回调对象
         */
        Consumer consumer= new DefaultConsumer(channel){
            /**
             * 1.consumerTag:
             * 2.envelope:
             * 3.properties:
             * 4.body:
             * @param consumerTag
             * @param envelope
             * @param properties
             * @param body
             * @throws IOException
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
/*                System.out.println("consumerTag"+consumerTag);
                System.out.println("envelope"+envelope.getExchange());
                System.out.println("properties"+envelope.getRoutingKey());
                System.out.println("properties"+properties);*/
                System.out.println("body"+new String(body));
            }
        };
        channel.basicConsume("pengwork",true,consumer);
    }
}

消费结果:
在这里插入图片描述
在这里插入图片描述

3.Publish/Subscribe订阅模式

在这里插入图片描述
在这里插入图片描述
消费着只需要绑定相应的队列,生产者需要创建交换机

public class PubFactory {
    public static void main(String[] args) throws Exception{
        //1.创建链接
        ConnectionFactory factory = new ConnectionFactory();
        //2。设置参数
        factory.setHost("192.168.63.130");
        factory.setPort(5672);
        factory.setVirtualHost("/peng");
        factory.setUsername("peng");
        factory.setPassword("peng");
        //3.创建链接Connection
        Connection connection = factory.newConnection();
        //4.创建Channel
        Channel channel = connection.createChannel();
        //5.创建交换机
        //exchangeDeclare(String exchange, BuiltinExchangeType type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments)
        String exchange="test_fanout";
        channel.exchangeDeclare(exchange, BuiltinExchangeType.FANOUT,
                true,false,false,null);
        String queue1Name = "test_fanout_queue1";
        String queue2Name = "test_fanout_queue2";
        //1.exchange:交换机名称
        //2.type:交换机类型
        /**
         *        DIRECT("direct"),定向
         *         FANOUT("fanout"),扇形(广播)
         *         TOPIC("topic"),通配符方式
         *         HEADERS("headers")参数匹配
         */
        //3.durable:是否持久化
        //4.autoDelete:是福哦自动删除
        //5.internal: 内部使用一般用false
        //6.arguments: 参数

        //channel.exchangeDeclare();
        //6.创建队列
        channel.queueDeclare(queue1Name,true,false,false,null);
        channel.queueDeclare(queue2Name,true,false,false,null);
        //7.绑定交换机与队列
        /**
         * 1.queue:队列名称
         * 2.exchange:交换机名称
         * 3.routingKey:路由键,绑定规则
         *      如果交换机的类型为fanout,routingKey设置为""
         */
        channel.queueBind(queue1Name,exchange,"");
        channel.queueBind(queue2Name,exchange,"");
        String body="日志信息:接收成功";
        channel.basicPublish(exchange,"",null,body.getBytes());
        //8.释放资源
        channel.close();
        connection.close();
    }
}

4.Routing路由模式

路由模式相当于增加一层限制,只有通过相应的限制交换机才能将消息发布到对应的队列,也就是在发布的时候路由参数数设置值,且交换机类型必须为direct
channel.basicPublish(exchange,"error",null,body.getBytes());此处限制队列路由为error的可以发送


public class RoutingFactory {
    public static void main(String[] args) throws Exception{
        //1.创建链接
        ConnectionFactory factory = new ConnectionFactory();
        //2。设置参数
        factory.setHost("192.168.63.130");
        factory.setPort(5672);
        factory.setVirtualHost("/peng");
        factory.setUsername("peng");
        factory.setPassword("peng");
        //3.创建链接Connection
        Connection connection = factory.newConnection();
        //4.创建Channel
        Channel channel = connection.createChannel();
        //5.创建交换机
        //exchangeDeclare(String exchange, BuiltinExchangeType type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments)
        String exchange="test_direct";
        channel.exchangeDeclare(exchange, BuiltinExchangeType.DIRECT,
                true,false,false,null);
        String queue1Name = "test_fanout_queue1";
        String queue2Name = "test_fanout_queue2";
        //1.exchange:交换机名称
        //2.type:交换机类型
        /**
         *        DIRECT("direct"),定向
         *         FANOUT("fanout"),扇形(广播)
         *         TOPIC("topic"),通配符方式
         *         HEADERS("headers")参数匹配
         */
        //3.durable:是否持久化
        //4.autoDelete:是福哦自动删除
        //5.internal: 内部使用一般用false
        //6.arguments: 参数

        //channel.exchangeDeclare();
        //6.创建队列
        channel.queueDeclare(queue1Name,true,false,false,null);
        channel.queueDeclare(queue2Name,true,false,false,null);
        //7.绑定交换机与队列
        /**
         * 1.queue:队列名称
         * 2.exchange:交换机名称
         * 3.routingKey:路由键,绑定规则
         *      如果交换机的类型为fanout,routingKey设置为""
         */
        channel.queueBind(queue1Name,exchange,"error");
        channel.queueBind(queue2Name,exchange,"info");
        channel.queueBind(queue2Name,exchange,"error");
        channel.queueBind(queue2Name,exchange,"warming");
        String body="日志信息:接收成功";
        channel.basicPublish(exchange,"error",null,body.getBytes());
        //8.释放资源
        channel.close();
        connection.close();
    }
}

5. Topics模式

相对于routing在队列增加了匹配规则,让交换机发送与队列接受更加灵活*匹配一个单词,#匹配多个单词
channel.exchangeDeclare(exchange, BuiltinExchangeType.TOPIC, true,false,false,null);
设置为BuiltinExchangeType.TOPIC
在这里插入图片描述

public class TopicsFactory {
    public static void main(String[] args) throws Exception{
        //1.创建链接
        ConnectionFactory factory = new ConnectionFactory();
        //2。设置参数
        factory.setHost("192.168.63.130");
        factory.setPort(5672);
        factory.setVirtualHost("/peng");
        factory.setUsername("peng");
        factory.setPassword("peng");
        //3.创建链接Connection
        Connection connection = factory.newConnection();
        //4.创建Channel
        Channel channel = connection.createChannel();
        //5.创建交换机
        //exchangeDeclare(String exchange, BuiltinExchangeType type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments)
        String exchange="test_topic";
        channel.exchangeDeclare(exchange, BuiltinExchangeType.TOPIC,
                true,false,false,null);
        String queue1Name = "test_topic_queue1";
        String queue2Name = "test_topic_queue2";
        //1.exchange:交换机名称
        //2.type:交换机类型
        /**
         *        DIRECT("direct"),定向
         *         FANOUT("fanout"),扇形(广播)
         *         TOPIC("topic"),通配符方式
         *         HEADERS("headers")参数匹配
         */
        //3.durable:是否持久化
        //4.autoDelete:是福哦自动删除
        //5.internal: 内部使用一般用false
        //6.arguments: 参数

        //channel.exchangeDeclare();
        //6.创建队列
        channel.queueDeclare(queue1Name,true,false,false,null);
        channel.queueDeclare(queue2Name,true,false,false,null);
        //7.绑定交换机与队列
        /**
         * 1.queue:队列名称
         * 2.exchange:交换机名称
         * 3.routingKey:路由键,绑定规则
         *      如果交换机的类型为fanout,routingKey设置为""
         */
        channel.queueBind(queue1Name,exchange,"*.*");
        channel.queueBind(queue2Name,exchange,"*.one");
        channel.queueBind(queue2Name,exchange,"*.two");
        channel.queueBind(queue2Name,exchange,"ok.*");
        String body="日志信息:接收成功";
        channel.basicPublish(exchange,"error",null,body.getBytes());
        channel.basicPublish(exchange,"123.one",null,body.getBytes());
        channel.basicPublish(exchange,"123.two",null,body.getBytes());
        //8.释放资源
        channel.close();
        connection.close();
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Angular 调试工具(Augury)

目录 1、简介 2、检验代码 3、Angury 本地构建和安装 3.1 添加到Chrome 浏览器&#xff1a; 3.2 添加到Firefox浏览器 4、项目中对应的Npm脚本 5、Augury 三大主要功能 5.1 组件树&#xff08;Component Tree&#xff09; 5.1.1 Component Tree 5.2 路由树&#xff0…

【DBA课程-笔记】MongoDB入门到云上开发

课程目的&#xff1a;成为专业MongoDB的DBA nosql第一&#xff1a;MongoDB 一、讲师&#xff1a; 二、课程目录 第1章&#xff1a;MongoDB数据库入门 第2章&#xff1a;MongoDB数据数据查询与分析 第3章&#xff1a;MongoDB数据库核心知识 第4章&#xff1a;MongoDB数据库…

基于单片机智能加湿器 水位防干烧加湿器的设计与实现

功能介绍 以51/STM32单片机作为主控系统&#xff1b;LCD1602液晶显示当前温湿度&#xff0c;当前模式&#xff0c;湿度下限;按键设置湿度下限&#xff0c;当湿度低于下限时开启加湿器;水位传感器检查加湿器是否有水&#xff0c;如果没有水到话加湿器不进行工作&#xff0c;蜂鸣…

做题遇见的PHP函数汇总

mb_substr函数 mb_substr() 函数返回字符串的一部分&#xff0c;之前学过 substr() 函数&#xff0c;它只针对英文字符&#xff0c;如果要分割的中文文字则需要使用 mb_substr() 语法&#xff1a; mb_substr ( $str ,$start [, $length NULL [, $encoding mb_encoding() ]] …

ARM架构(寄存器点灯)

文章目录 前言一、LED原理图二、使用寄存器点灯的步骤三、如何操作寄存器四、实际操作1.使能GPIO端口2.将引脚设置为输出模式3.设置输出状态 五、全部代码总结 前言 本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯&#xff0c;一般对于新人来说都是使用HAL库或者标准库来…

交通 | 针对Close-Enough旅行商问题的一种分支定界算法

论文解读​&#xff1a;王飞龙&#xff0c;曲晨辉 1、问题背景 \qquad 旅行商问题(TSP)是一种众所周知的路径问题。TSP的目标是在图 G ( V , E ) G(V,E) G(V,E)中找一条以场站为起终点的最短路&#xff0c;访问所有客户点 V V V&#xff0c;同时没有子环路。令 E E E表示网络中…

实训笔记7.4

实训笔记7.4 7.4一、座右铭二、IDEA集成开发环境的安装和使用三、DEBUG断点调试四、Java设计模式4.1 适配器模式4.2 动态代理模式4.3 单例设计模式 五、Java中网络编程5.1 网络编程三个核心要素5.2 TCP网络编程 六、基于网络编程的聊天系统6.1 需求分析6.2 系统设计6.2.1 概要设…

VirtualBox安装Ubuntu(22.04.2)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

RabbitMQ学习笔记9 TTL死信队列+延迟队列实战

我们去新建一个交换机&#xff1a; 然后我们再用这种方法直接创建一个队列&#xff1a; 点击bind这样我们的交换机和队列就绑定到一起了。 然后我们要新建普通队列&#xff0c;设置过期时间&#xff0c;指定死信交换机。 发布一条消息。 它会把队列传递到死信队列中去。

SpringBoot整合SpringSecurity认证与授权

唠嗑部分 在项目开发中&#xff0c;权限认证是很重要的&#xff0c;尤其是一些管理类的系统&#xff0c;对于权限要求更为严格&#xff0c;那么在Java开发中&#xff0c;常用的权限框架有哪些呢&#xff1f; 推荐的有两种&#xff0c;Shiro 与 SpringSecurity&#xff0c;当然…

GC回收器演进之路

目录 未来演进方向 历经之路 引用计数法 标记清除法 复制法 标记整理 分代式 三色标记法的诞生 三色标记法的基本概念 产生的问题 问题 1&#xff1a;浮动垃圾 问题 2&#xff1a;对象消失 遍历对象图不需要 STW 的解决方案 屏障机制 插入屏障&#xff08;Dijks…

故障:启动修复无法修复你的电脑

有台笔记本很久没用了无法开机了&#xff0c;还是用的win7的系统&#xff0c;开机后提示我使用启动修复&#xff0c;但是失败了&#xff0c;提示我启动修复无法修复你的电脑 启动修复无法修复你电脑怎么办_自动修复电脑未正确启动的解决方法&#xff0d;win7之家 1、上网查了下…

Mybatis-SQL分析组件 | 京东云技术团队

背景 大促备战&#xff0c;最大的隐患项之一就是慢sql&#xff0c;带来的破坏性最大&#xff0c;也是日常工作中经常带来整个应用抖动的最大隐患&#xff0c;而且对sql好坏的评估有一定的技术要求&#xff0c;有一些缺乏经验或者因为不够仔细造成一个坏的sql成功走到了线上&am…

基于单片机智能衣柜 智能衣橱 换气除湿制系统紫外线消毒的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前衣柜温湿度和柜门开启关闭状态&#xff1b;按键设置当前衣柜湿度上限值、衣柜门打开和关闭&#xff0c;杀菌消毒&#xff1b;当湿度超过设置上限&#xff0c;继电器闭合开启风扇进行除湿&#xff1b;进行杀菌消毒时&am…

zk-IMG:对抗虚假信息

1. 引言 前序博客&#xff1a; ZKP图片授权——PhotoProof&#xff1a;proofs of permissible photo edits Daniel Kang等人2022年论文《ZK-IMG: Attested Images via Zero-Knowledge Proofs to Fight Disinformation》&#xff0c;在该论文中提供了一个简单的deep fake ima…

Web安全——渗透测试基础知识下

渗透测试基础 Web安全一、VMware虚拟机学习使用1、虚拟机简单介绍2、网络模式2.1 桥接网络&#xff08;Bridged Networking&#xff09;2.2 NAT模式2.3 Host-Only模式 3、通俗理解 二、Kali的2021安装与配置1、简单介绍2、Kali的版本3、配置3.1 安装虚拟机open-vm-tools-deskto…

IDEA中集成zookeeper的插件

IDEA中集成zookeeper的插件 一、IDEA中集成插件 搜索插件并安装&#xff1a; 安装完成&#xff0c;重启IDEA 配置zk集群 连接成功

哪家好用?四款国内外远程桌面软件横测:ToDesk、向日葵、TeamViewer、AnyDesk

一、前言 远程桌面软件对于职场人来说并不陌生&#xff0c;可以说是必备的办公软件之一。在经历过新冠疫情后&#xff0c;大家对于远程办公的认识越来越深入&#xff0c;也就在这段期间&#xff0c;远程桌面软件大范围的应用起来&#xff0c;真正走进大众视野并融入我们的工作和…

记一次阿里云被挖矿处理记录

摘要 莫名其妙的服务器就被攻击了&#xff0c;又被薅了羊毛&#xff0c;当做免费的挖矿劳动力了。 一、起因 上班&#xff08;摸鱼&#xff09;好好的&#xff0c;突然收到一条阿里云的推送短信&#xff0c;不看不知道&#xff0c;两台服务器被拉去作为苦力&#xff0c;挖矿去…

wireshark学习

抓包原理 哪种网络情况可以抓到包&#xff1f;&#xff08;1&#xff09;本机环境&#xff08;2&#xff09;集线器环境&#xff08;3&#xff09;交换机环境 交换机环境目前较为常用&#xff0c;这也分为三种情况&#xff08;1&#xff09;端口镜像&#xff08;2&#xff09…