Rabbitmq的五种模式和案例

2023-10-26

 消息生产者p将消息放入队列

消费者监听队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列删除
(隐患,消息可能没有被消费者正确处理,已经消失了,无法恢复)

应用场景:聊天室 

案例:

1>.首先准备依赖

<dependency>  
     <groupId>org.springframework.boot</groupId>  
     <artifactId>spring-boot-starter-amqp</artifactId>  
</dependency>


2>.写一个test类

public class SimpleTest {  
   //模拟生产者将消息放入队列  
   @Test  
   public void send() throws Exception{  
       /*1 创建连接工厂 
        * 2 配置共创config 
        * 3 获取连接 
        * 4获取信道 
        * 5 从信道声明queue 
        * 6 发送消息 
        * 7 释放资源 
        */
  
       ConnectionFactory factory=new ConnectionFactory();  
       factory.setHost("106.23.34.56");  
       factory.setPort(5672);  
       factory.setVirtualHost("/tb");  
       factory.setUsername("admin");  
       factory.setPassword("123456");  
       //从工厂获取连接  
       Connection conn=factory.newConnection();  
       //从连接获取信道  
       Channel chan=conn.createChannel();  
       //利用channel声明第一个队列  
       chan.queueDeclare("simple"falsefalsefalsenull);  
       //queue String类型,表示声明的queue对列的名字  
       //durable Boolean类型,表示是否持久化  
       //exclusive Boolean类型:当前声明的queue是否专注;true当前连接创建的  
       //任何channle都可以连接这个queue,false,新的channel不可使用  
       //autoDelete Boolean类型:在最后连接使用完成后,是否删除队列,false  
       //arguments Map类型,其他声明参数  
       //发送消息  
       String msg="helloworld,nihaoa";  
       chan.basicPublish("""simple"null, msg.getBytes());  
       //exchange String类型,交换机名称,简单模式使用默认交换""  
       //routingkey String类型,当前的消息绑定的routingkey,简单模式下,与队列同名即可  
       //props BasicProperties类型,消息的属性字段对象,例如BasicProperties  
       //可以设置一个deliveryMode的值0 持久化,1 表示不持久化,durable配合使用  
       //body byte[] :消息字符串的byte数组  
   }  
   //模拟消费端  
   @Test  
   public void receive() throws Exception{


ConnectionFactory factory=new ConnectionFactory();  
factory.setHost("106.23.34.56");  
factory.setPort(5672);  
factory.setVirtualHost("/tb");  
factory.setUsername("admin");  
factory.setPassword("123456");  
//从工厂获取连接

Connection conn=factory.newConnection();//从连接获取信道Channel chan=conn.createChannel();chan.queueDeclare("simple", false, false, false, null);//创建一个消费者QueueingConsumer consumer= new QueueingConsumer(chan);chan.basicConsume("simple", consumer);//监听队列while(true){//获取下一个delivery,delivery从队列获取消息Delivery delivery = consumer.nextDelivery();String msg=new String(delivery.getBody());System.out.println(msg);}}}

2.work模式


生产者将消息放入队列
多个消费者同时监听同一个队列
,消息如何被消费?
C1,C2
共同争抢当前消息队列的内容,谁先拿到消息,谁来负责消费
应用场景
:红包;大型项目中的资源调度过程(直接由最空闲的系统争抢到资源处理任务) 

案例:

1>首先写一个工具类

public class ConnectionUtil {
 
 public static Connection getConn(){
   try{
     ConnectionFactory factory=new ConnectionFactory();
     factory.setHost("106.33.44.179");
     factory.setPort(5672);
     factory.setVirtualHost("/tb");
     factory.setUsername("admin");
     factory.setPassword("123456");
   
     //从工厂获取连接
     Connection conn=factory.newConnection();
     return conn;
   }catch(Exception e){
     System.out.println(e.getMessage());
     return null;
   }
   
 }
}


2>写test类

public class WorkTest {
 @Test
 public void send() throws Exception{
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明队列
   chan.queueDeclare("work"falsefalsefalsenull);
   for(int i=0;i<100;i++){
     String msg="1712,hello:"+i+"message";
     chan.basicPublish("""work"null, msg.getBytes());
     System.out.println("第"+i+"条信息已经发送");
   }
   chan.close();
   conn.close();
 }
 @Test
 public void receive1() throws Exception{
   //获取连接,获取信道
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   chan.queueDeclare("work"falsefalsefalsenull);
   //同一时刻服务器只发送一条消息给同一消费者,消费者空闲,才发送一条
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //绑定队列和消费者的关系
   //queue
   //autoAck:消息被消费后,是否自动确认回执,如果false,不自动需要手动在
   //完成消息消费后进行回执确认,channel.ack,channel.nack
   //callback
   //chan.basicConsume(queue, autoAck, callback)
   chan.basicConsume("work"false, consumer);
   //监听
   while(true){
     Delivery delivery=consumer.nextDelivery();
     byte[] result = delivery.getBody();
     String msg=new String(result);
     System.out.println("接受到:"+msg);
     Thread.sleep(50);
     //返回服务器,回执
     chan.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
   }  
 }
 @Test
 public void receive2() throws Exception{
   //获取连接,获取信道
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   chan.queueDeclare("work"falsefalsefalsenull);
   //同一时刻服务器只发送一条消息给同一消费者,消费者空闲,才发送一条
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //绑定队列和消费者的关系
   //queue
   //autoAck:消息被消费后,是否自动确认回执,如果false,不自动需要手动在
   //完成消息消费后进行回执确认,channel.ack,channel.nack
   //callback
   //chan.basicConsume(queue, autoAck, callback)
   chan.basicConsume("work"false, consumer);
   //监听
   while(true){
     Delivery delivery=consumer.nextDelivery();
     byte[] result = delivery.getBody();
     String msg=new String(result);
     System.out.println("接受到:"+msg);
     Thread.sleep(150);
     //返回服务器,回执
     chan.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
   }
 }
 
}

3 publish/fanout发布订阅


生产者将消息交给交换机
有交换机根据发布订阅的模式设定将消息同步到所有的绑定队列中
;
后端的消费者都能拿到消息

应用场景:邮件群发,群聊天,广告

案例:

public class FanoutTest {
 //交换机,有类型,发布订阅:fanout
 //路由模式:direct
 //主题模式:topic
 @Test
 public void send() throws Exception {
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明交换机
   //参数意义,1 交换机名称,2 类型:fanout,direct,topic
   chan.exchangeDeclare("fanoutEx""fanout");
   //发送消息
   for(int i=0;i<100;i++){
     String msg="1712 hello:"+i+"msg";
     chan.basicPublish("fanoutEx"""null, msg.getBytes());
     System.out.println("第"+i+"条信息已经发送");
   }
 }
 
 @Test
 public void receiv01() throws Exception{
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //生命队列
   chan.queueDeclare("fanout01"falsefalsefalsenull);
   //声明交换机
   chan.exchangeDeclare("fanoutEx""fanout");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("fanout01""fanoutEx""");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("fanout01",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("一号消费者接收到"+
     new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().
         getDeliveryTag(), false);
   }
 }
 @Test
 public void receiv02() throws Exception{
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //生命队列
   chan.queueDeclare("fanout02"falsefalsefalsenull);
   //声明交换机
   chan.exchangeDeclare("fanoutEx""fanout");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("fanout02""fanoutEx""");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("fanout02",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("二号消费者接收到"+new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
   }
 }
}

4 routing路由模式


生产者发送消息到交换机,同时绑定一个路由Key,交换机根据路由key对下游绑定的队列进行路
key的判断,满足路由key的队列才会接收到消息,消费者消费消息

应用场景项目中的error报错

案例:

public class RoutingTopicTest {
 
 @Test
 public void routingSend() throws Exception{
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明交换机
   //参数意义,1 交换机名称,2 类型:fanout,direct,topic
   chan.exchangeDeclare("directEx""direct");
   //发送消息
   String msg="路由模式的消息";
   chan.basicPublish("directEx""jt1713"
       null, msg.getBytes());
 }
 @Test
 public void routingRec01() throws Exception{
   System.out.println("一号消费者等待接收消息");
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明队列
   chan.queueDeclare("direct01"falsefalsefalse, null);
   //声明交换机
   chan.exchangeDeclare("directEx""direct");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("direct01""directEx""jt1712");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("direct01",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("一号消费者接收到"+
     new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().
         getDeliveryTag(), false);
   }
 }
 @Test
 public void routingRec02() throws Exception{
   System.out.println("二号消费者等待接收消息");
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明队列
   chan.queueDeclare("direct02"falsefalsefalse, null);
   //声明交换机
   chan.exchangeDeclare("directEx""direct");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("direct02""directEx""jt1711");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("direct02",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("二号消费者接收到"+
     new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().
         getDeliveryTag(), false);
   }
 }
}

5 topic主题模式


*号代表单个词语
#代表多个词语

其他的内容与routing路由模式一致

案例:

public class RoutingTopicTest {
 
 
 @Test
 public void routingRec02() throws Exception{
   System.out.println("二号消费者等待接收消息");
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明队列
   chan.queueDeclare("direct02"falsefalsefalse, null);
   //声明交换机
   chan.exchangeDeclare("directEx""direct");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("direct02""directEx""jt1711");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("direct02",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("二号消费者接收到"+
     new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().
         getDeliveryTag(), false);
   }
 }
 
 @Test
 public void topicSend() throws Exception{
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明交换机
   //参数意义,1 交换机名称,2 类型:fanout,direct,topic
   chan.exchangeDeclare("topicEx""topic");
   //发送消息
   String msg="主题模式的消息";
   chan.basicPublish("topicEx""jt1712.add.update"
       null, msg.getBytes());
 }
 @Test
 public void topicRec01() throws Exception{
   System.out.println("一号消费者等待接收消息");
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明队列
   chan.queueDeclare("topic01"falsefalsefalse, null);
   //声明交换机
   chan.exchangeDeclare("topicEx""topic");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("topic01""topicEx""jt1712");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("topic01",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("一号消费者接收到"+
     new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().
         getDeliveryTag(), false);
   }
 }
 @Test
 public void topicRec02() throws Exception{
   System.out.println("二号消费者等待接收消息");
   //获取连接
   Connection conn = ConnectionUtil.getConn();
   Channel chan = conn.createChannel();
   //声明队列
   chan.queueDeclare("topic02"falsefalsefalse, null);
   //声明交换机
   chan.exchangeDeclare("topicEx""topic");
   //绑定队列到交换机
   //参数 1 队列名称,2 交换机名称 3 路由key
   chan.queueBind("topic02""topicEx""jt1712.#");
   chan.basicQos(1);
   //定义消费者
   QueueingConsumer consumer=new QueueingConsumer(chan);
   //消费者与队列绑定
   chan.basicConsume("topic02",false, consumer);
   while(true){
     Delivery delivery= consumer.nextDelivery();
     System.out.println("二号消费者接收到"+
     new String(delivery.getBody()));
     chan.basicAck(delivery.getEnvelope().
         getDeliveryTag(), false);
   }
 }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rabbitmq的五种模式和案例 的相关文章

  • 在 PLSQL Oracle 中抛出特定错误消息...在休眠中捕获?

    是否可以在 PL SQL oracle 存储过程中抛出特定的错误消息 并在调用它时在 Hibernate 中捕获它 您可以从 PL SQL 代码中抛出用户定义的错误消息 20000 到 20999 之间的错误代码保留用于用户指定的错误消息
  • Java中的整数除法[重复]

    这个问题在这里已经有答案了 这感觉像是一个愚蠢的问题 但我在 Java 文档中找不到答案 如果我声明两个 int 然后将它们相除 到底发生了什么 他们是否转换为floats doubles首先 划分 然后投射回integer 或者除法是作为
  • Thread.yield()之后线程的Thread.State是什么?

    是什么Thread State之后的一个线程Thread yield 是不是一个Thread State WAITING 谢谢 不 线程仍会在RUNNABLE http download oracle com docs cd E17409
  • 将命令行参数传递给可运行的 JAR [重复]

    这个问题在这里已经有答案了 我从 Eclipse 项目构建了一个可运行的 JAR 用于处理给定的 XML 文件并提取纯文本 但是 此版本要求将该文件硬编码在代码中 有没有办法做这样的事情 java jar wiki2txt enwiki 2
  • Spring MVC 配置启用

    我正在从头开始建立一个项目 目前我正在配置Spring MVC 4 1 5使用java配置 整个应用程序正在 tomcat gradle 插件上运行 有人可以解释一下为什么我需要对班级进行以下调用DefaultServletHandlerC
  • java中数字字符串间隔排序

    我正在与一些人一起上一个人课 其中有姓名 年龄范围等详细信息 年龄区间为 0 5 6 10 11 30 31 45 46 50 50 100 100 110 我正在上 Person 课name ageBand字符串间隔及其参数化构造函数 g
  • 创建 CXF Web 服务客户端时出现 ServiceConstructionException (scala+java+wsdl2java)

    这些其他问题暗示了解决方案 但我无法让它发挥作用 无法解析 http schemas xmlsoap org wsdl soap 的绑定 https stackoverflow com questions 26159206 could no
  • 当服务器仅从请求中读取标头时,Http 客户端未收到响应

    我在 Java 中搞乱了 HTTP 和套接字 希望你能对此有所了解 当我用 Java SE 11 编写的 HTTP 服务器没有读取整个请求然后响应时 客户端不会收到它或收到错误 这是为什么 在服务器读取整个请求之前 客户端是否无法读取响应
  • 如何从属性中获取枚举值

    我有一个带有值的枚举VALID and INVALID 它们有一个与之关联的布尔属性 我想根据我提供的布尔值获取枚举值 如果是true我应该得到VALID 如果是false我应该得到INVALID 我想根据成员变量的值 在如下所示的 get
  • 如何抑制有关已弃用 api 的 javac 警告?

    当我编译时 javac 输出 Note Some input files use or override a deprecated API Note Recompile with Xlint deprecation for details
  • 将 LinkedHashset 内容复制到新的 ArrayList?

    我有一个最初包含一些内容的 listView 如果它得到相同的内容 我通过删除重复linkedhashset 现在 我想复制linkedhashset内容 即没有重复的内容到新的ArrayList 我尝试复制通过 p addAll 0 lh
  • 从文件执行db语句

    我在我的应用程序中使用嵌入式 Apache derby 我有一个名为的 SQL 脚本创建的数据库 sql创建数据库中的所有表并用初始数据填充它 例如 SET SCHEMA APP CREATE TABLE study study id bi
  • 在 Eclipse 中编写链接特定行的注释

    我正在 Java 中使用 Eclipse 并且处理很长的类 我需要这样的功能 在方法的顶部注释中 例如 有一个由该方法执行的操作列表 对于列出的每个操作 我想将注释的一部分 超链接 到相关代码的特定行 然后使用 Ctrl Click 到该行
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • FileNotFoundException(系统找不到指定的路径)

    我得到这个例外 java io FileNotFoundException C filename xml The system cannot find the path specified 使用此代码 FileWriter fileWrit
  • 使用 Java 重新启动 Tomcat

    我需要从 Java 代码重新启动 tomcat 例如 如果某个查询在一段时间内没有执行 那么它将自动重新启动 tomcat 我已经尝试了以下关闭和启动代码 但是当我们关闭tomcat时 java代码将不会运行并且tomcat不会启动 注意
  • 为什么这个 eclipse 错误显示以及它的解决方案应该是什么

    缺少库 xdoclet 1 2 1 jar 选择 XDoclet 的主目录 1 2 1 为什么这个 eclipse 错误显示以及它的解决方案应该是什么alz 这可能是因为该 jar 没有添加到您的项目构建路径中 请按照以下步骤操作 Righ
  • 如何使用放心发送Content-Type表单数据请求?

    我需要使用 Rest Assured 调用表单数据类型 API 这是我的代码 private Map
  • Java 中的引用变量里面有什么?

    我们知道对象引用变量保存表示访问对象的方式的位 它不保存对象本身 但保存诸如指针或地址之类的东西 我正在阅读 Head First Java 第 2 版 一书 书中写道 第 3 章第 54 页 在 Java 中我们并不真正知道什么是 在引用
  • 如何使用 GWT 2.4 在服务器端动态创建 UI

    我正在尝试使用 Google Web Toolkit v2 4 创建用户界面 由于多种原因 我需要在运行时指定服务器上接口的内容 我的意思不仅仅是按钮需要动态标签等 而是整个 UI 需要在运行时创建 我的大部分 UI 都可以指定为直接的 H

随机推荐

  • TypeError: test_recharge() missing 1 required positional argument: ‘item‘

    提示test recharge 缺少一个必须的位置参数 item 说明是item有问题 debug后 发现item没有出现用例中的数据 再看是发现没有写 ddt 写上去就好了
  • CorelDraw X4 unable to load resource dll_七夕小子_新浪博客

    CorelDraw X4以前安装过 现在重新安装后 运行时 弹出几个对话框 Unable to load resource dll CRLUTLINTL dll Unable to load resourse DLL CrlCmnMappe
  • java中让控制台输出彩色字符的方法-Jansi

    在网上有很多类似的文章 教你如何在控制台输出彩色字符 其中比较好的方法是用别人的做好的包 Jansi 但是在网上很多的文章没有给出完整的操作过程 只是给出了方法 在这里将会有完整的过程 1 下载jnsi包 http maven outofm
  • 【报告分享】ChatGPT:AI模型框架研究.pdf(附下载链接)

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年2月份热门报告合集 限时免费 ChatGPT4体验 无需翻墙直接用 ChatGPT团队背景研究报告 ChatGPT的发展历程 原理
  • Selenium基础用法

    目录 一 概念和自己的理解 二 安装 三 浏览器驱动 四 正真的基础上场 1 先要打开浏览器 打不开 我们后面也就做不了 万事开头先有前提 2 获取元素的方法 3 操作元素 4 浏览器操作 5 鼠标操作 6 键盘操作 7 下拉框操作 8 页
  • JDK 1.5 新特性

    文章目录 1 JDK 1 5 新特性 1 1 自动装箱和拆箱 1 1 1 什么是自动装箱和拆箱 1 1 2 自动装箱拆箱要点 1 1 3 自动装箱拆箱样例 1 1 4 自动装箱缺点 1 1 5 重载与自动装箱 1 1 6 自动拆装箱的缓存机
  • 【位图&&布隆过滤器&&海量数据面试题】

    文章目录 1 位图 2 布隆过滤器 1 位图 首先我们来看看一个腾讯的面试题 给40亿个不重复的无符号整数 没排过序 给一个无符号整数 如何快速判断一个数是否在这40亿个数中 分析 40亿个不重复整形数据 大概有160亿字节 也就是16GB
  • 数据结构单链表的创建以及简单操作

    在数据结构中 目录 一 数据节点类型结构体封装 二 创建单链表 1 创建链表 2 头部插入 3 遍历链表 4 尾部插入 5 释放链表 链表可以解决顺序表无法开辟连续空间的问题 大大提高了内存的利用率 这使我们在开发中不再局限于小型数据量的项
  • 开发岗校招求职攻略——面试准备(7.2胸有成竹-技术面技巧)

    1 前言 当你踏入面试房间的第一只脚开始 你的一举一动就都在面试官眼里和心里了 从最开始的自我介绍 到最后结束面试时的提问 都不能草率对待 下面 我根据技术面的几种常见面试形式 分别介绍一些特有的技巧 并且会在此基础上再额外介绍一些通用技巧
  • 查找已安装 npm 包的版本

    问 如何查找已安装的 node js npm 包的版本 这将打印 npm 本身的版本 npm v 这会打印一个神秘的错误 npm version 这会在注册表上打印软件包版本 即可用的最新版本 npm view version 如何获取已安
  • IDEA 连接 数据库

    IDEA 连接 数据库 一 首先确保数据库服务是打开的 使用 mysql u root p 连接数据库服务器 若不能进入到 mysql 里面则说明 没有启动服务器 使用 net start mysql 命令启动 如果 net start m
  • 攻防世界Web赛题记录

    Cat 题目 https adworld xctf org cn task answer type web number 3 grade 1 id 4658 page 2 Writeup 攻防世界 web Cat XCTF 4th WHCT
  • QT tabWidget样式表

    背景设置 QTabWidget pane border 1px solid rgba 125 250 250 160 border radius 3px background transparent 透明 margin top 1px cl
  • npm报错:xxx packages are looking for funding run `npm fund` for details(解决办法)

    报错信息 30 packages are looking for funding run npm fund for details 报错原因 这里是开发者捐赠支持的提示 打开一个github的链接之后 会显示是否需要打赏捐赠的信息 解决方案
  • LPDDR4 JEDEC标准测试实例解析--地址总线写操作

    说完DQ信号的读写测试 接下来 再来聊一聊命令及地址总线 CA Bus 的测试 由于CA bus只有一个信号流向 因此 只需要进行写操作的测试即可 如下图所示 为JEDEC标准中定义的CA相关的测试参数 接下来 将对测试项逐一进行解析 tC
  • 【直接收藏】分享 42 个常用前端布局方案

    对 CSS 布局掌握程度决定你在Web开发中的开发页面速度 随着Web技术的不断革新 实现各种布局的方式已经多得数不胜数了 本篇文章总结了四十二种CSS的常见布局 这四十二种布局可以细分为如下几类 水平居中 垂直居中 水平垂直居中 两列布局
  • centos 64 位系统安装postgresql odbc 方法

    1 64位系统下 postgresql 的psqlodbc驱动下载地址 http www postgresql org ftp odbc versions src 2 64位系统下 安装psqlodbc需要的安装包 unixODBC 2 3
  • 机器学习实验(一)—Linear Regression

    前几天做了几个机器学习的简单实验 机器学习实验二 Logistic Regression 实验一是关于简单的线性回归的实验 下面是我的实验报告的截图 直接把word的内容撸过来 格式就全乱了 没有找到解决办法 直接上图吧 也是一种办法 后面
  • 关于差速移动机器人的运动学模型推导

    预备 在机器人的运动中 经常会涉及到航向推演 下面这篇博客写的挺好的 https blog csdn net heyijia0327 article details 44983551 在学习机器人运动模型推导的时候 有看到 网上别人的推导过
  • Rabbitmq的五种模式和案例

    消息生产者p将消息放入队列 消费者监听队列 如果队列中有消息 就消费掉 消息被拿走后 自动从队列删除 隐患 消息可能没有被消费者正确处理 已经消失了 无法恢复 应用场景 聊天室 案例 1 gt 首先准备依赖