SpringCloud stream消息驱动和链路追踪

简要说明

在学习消息驱动之前,肯定有之前并没有接触过rabbitMQ或者其他的MQ(消息中间件)的。为了保证springcloud系列学习的连续性为之后的springcloud alibaba做好准备,只能先提前简单的学习一下rabbitMQ的安装。保证整个学习的完整性。之后打算在学习一下中间件。重新温习一下redis等之后。作为普通学生今后连续性学习编程的时间可能就不多了。毕竟还有考研深造的打算。在在时间上总是要放弃一些的。个人也会坚持每周抽时间学一下。既是为了防止遗忘的太多。同时也是为了自己的兴趣。如有学习建议欢迎指导

RabbitMQ安装

RabbitMQ和redis一样安装在Linux的虚拟机上效果会好一些。因为没有系统的学习过,这一次我选择安装window版本的RabbitMQ

在系统学习的时候在去使用centos来进行安装。

RabbitMQ是用Erlang来编写的需要Erlang的环境,现在自己的电脑上安装Erlang的环境。

安装环境的下载地址:https://www.erlang.org/downloads

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-whcFy3nA-1642512161911)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116212041825.png)]

选择最新版本的windows的版本进行安装。点击Next

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tbWMUk8O-1642512161914)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116212520422.png)]

选择好安装位置以后进行安装。

和java一样配置erlang语言的环境变量ERLANG_HOME

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udZqUCoT-1642512161916)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116212855389.png)]

之后在去配置path变量 将%ERLANG_HOME%\bin加入到path中。完成之后进行保存。保存之后验证环境变量是否配置成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqdHMd2A-1642512161918)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116213242638.png)]

在cmd中使用erl测试环境变量是否配置成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5uk2TmaW-1642512161919)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116213426876.png)]

依赖的环境完成之后在安装window版的rabbitMQ

下载并安装RabbitMQ

  • 下载地址:http://www.rabbitmq.com/download.html

进入官网的指定位置来下载RabbitMQ

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83kB9cag-1642512161920)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116213710267.png)]

在官方的网址上如果找不到可以用下面的地址从github上下载旧的版本

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.7/rabbitmq-server-3.7.7.exe

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9SW6F3yY-1642512161921)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116214931542.png)]

点击Next选择对应的安装位置。finsh之后下一步就是来配置RabbitMQ了

配置RabbitMQ

配置RabbitMQ的环境变量

启动 rabbitmq_management

在命令行CMD中使用dos命令,进入rabbitmq安装目录的sbin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PEtBedHV-1642512161922)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116215547894.png)]

执行以下命令:进行安装

rabbitmq-plugins enable rabbitmq_management 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmSGUsto-1642512161923)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116215713436.png)]

打开命令行命令行,进入RabbitMQ的安装目录: sbin

输入 rabbitmqctl status , 如果出现以下的图,说明安装是成功的,并且说明现在RabbitMQ Server已经启动了,运行正常。

在这里插入图片描述

在安装完成之后我们打开sbin目录,双击rabbitmq-server.bat启动服务看看是否可以进行访问。

启动RabbitMQ

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0OvsCA8m-1642512161924)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116220015200.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9wAb0H4T-1642512161924)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116225758361.png)]

之后在浏览器输入http://localhost:15672/即可访问成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7QAUsuJ-1642512161925)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116225906347.png)]

用户名 密码均为: guest, 登录

至此, windows安装RabbitMQ已全部完成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-khHhQHhR-1642512161925)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220116230121738.png)]

在安装完window版本的rabbitMQ之后便可以去完成springcloud的消息驱动的学习了,之后的开发中还是建议将RabbitMQ安装到Linux虚拟机上。

Stream消息驱动简单介绍

为什么要引入SpringCloud Stream?

技术兴起的原因:为了解决系统中不同中间件的适配问题,出现了cloud stream,采用适配绑定的方式,自动给不同的MQ之间进行切换。

屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。

img

举例:对于我们Java程序员来说,可能有时要使用ActiveMQ,有时要使用RabbitMQ,甚至还有RocketMQ以及Kafka,这之间的切换似乎很麻烦,我们很难,也没有太多时间去精通每一门技术,那有没有一种新技术的诞生,让我们不再关注具体MQ的细节,自动的给我们在各种MQ内切换。

简介:Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架。它可以基于 Spring Boot 来创建独立的、可用于生产的 Spring 应用程序。Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现,并引入了发布-订阅、消费组、分区这三个核心概念。通过使用 Spring Cloud Stream,可以有效简化开发人员对消息中间件的使用复杂度,让系统开发人员可以有更多的精力关注于核心业务逻辑的处理。但是目前 Spring Cloud Stream 只支持 RabbitMQ 和 Kafka 的自动化配置。

一句话:屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。

Binder Implementations 绑定器
通过绑定器Binder作为中间件,实现了应用程序与消息中间件细节的解耦。

Input对应消息生产者

Output对应消息消费者

相关术语

MQ相关术语
Message:生产者/消费者之间靠消息媒介传递信息内容

MessageChannel:消息必须走特定的通道

消息通道的子接口SubscribableChannel,由MessageHandle消息处理器所订阅。

相关注解
Middleware:中间件,目前只支持RabbitMQ和Kafka
Binder:应用层和消息中间件之间的封装,实现了Kafka和RabbitMQ的Binder,通过Binder可以很方便的连接中间件,可以动态的改变。消息类型,这些可以通过配置文件修改。
Input:表示输入通道,消息进入该通道传到应用程序。
Output:注解标识输出通道,发布的消息将通过该通道离开应用程序。
StreamListener:监听队列,用于消费者的队列的消息接收。
EnableBinding:将信道channel和exchange绑定在一起。

Stream消息驱动生产者

新建子模块

cloud-stream-rabbitmq-provider8801 消息生产模块

修改yaml配置文件

binder: defaultRabbit 这里报红,但是不影响操作

server:port: 8801spring:application:name: cloud-stream-providercloud:stream:binders: # 在此处配置要绑定的rabbitmq的服务信息;defaultRabbit: # 表示定义的名称,用于于binding整合type: rabbit # 消息组件类型environment: # 设置rabbitmq的相关的环境配置spring:rabbitmq:host: localhost #rabbitmq服务启动所在机器的IP地址port: 5672username: guestpassword: guestbindings: # 服务的整合处理output: # 这个名字是一个通道的名称destination: studyExchange # 表示要使用的Exchange名称定义content-type: application/json # 设置消息类型,本次为json,文本则设置“text/plain”binder: defaultRabbit # 设置要绑定的消息服务的具体设置eureka:client: # 客户端进行Eureka注册的配置service-url:defaultZone: http://localhost:7001/eurekainstance:lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)instance-id: send-8801.com  # 在信息列表时显示主机名称prefer-ip-address: true     # 访问的路径变为IP地址

创建启动类

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

创建业务类

包括三个部分发送消息的接口,发送消息接口的实现类,controller

package com.dzu.springcloud.service;public interface IMessageProvider {String sendMessage();
}
package com.dzu.springcloud.service.impl;import com.dzu.springcloud.service.IMessageProvider;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;import javax.annotation.Resource;
import java.util.UUID;@EnableBinding(Source.class) //定义消息的推送管道
public class IMessageProviderImpl implements IMessageProvider
{@Resourceprivate MessageChannel output; // 消息发送管道@Overridepublic String sendMessage(){String serial = UUID.randomUUID().toString();output.send(MessageBuilder.withPayload(serial).build());System.out.println("*****serial: "+serial);return null;}
}
package com.dzu.springcloud.controller;import com.dzu.springcloud.service.IMessageProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class SendMessageController {@Autowiredprivate IMessageProvider iMessageProvider;@GetMapping(value = "/sendMessage")public String send(){return  iMessageProvider.sendMessage();}
}

之后打开window版本的rabbitMQ进行测试。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZSuokapx-1642512161926)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220117205754366.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZTguW2z-1642512161927)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220117205905187.png)]

Stream消息驱动消费者

新建cloud-stream-rabbitmq-consumer8802消息驱动的消费者模块收到对应消息

引入和消费者相同的pom依赖

<dependencies><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.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId></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><dependencies><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.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId></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>

修改pom文件和上面生产者的配置信息相同。(只修改端口号和input)

server:port: 8802spring:application:name: cloud-stream-providercloud:stream:binders: # 在此处配置要绑定的rabbitmq的服务信息;defaultRabbit: # 表示定义的名称,用于于binding整合type: rabbit # 消息组件类型environment: # 设置rabbitmq的相关的环境配置spring:rabbitmq:host: localhost #rabbitmq服务启动所在机器的IP地址port: 5672username: guestpassword: guestbindings: # 服务的整合处理input: # 这个名字是一个通道的名称destination: studyExchange # 表示要使用的Exchange名称定义content-type: application/json # 设置消息类型,本次为json,文本则设置“text/plain”binder: defaultRabbit # 设置要绑定的消息服务的具体设置eureka:client: # 客户端进行Eureka注册的配置service-url:defaultZone: http://localhost:7001/eurekainstance:lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)instance-id: send-8802.com  # 在信息列表时显示主机名称prefer-ip-address: true     # 访问的路径变为IP地址

创建该模块的主启动类

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

编写核心的业务逻辑的代码

package com.dzu.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;@Component
@EnableBinding(Sink.class)
public class ReceiveMessageListenerController {@Value("${server.port}")private String serverPort;@StreamListener(Sink.INPUT)public void input(Message<String> message){System.out.println("消费者1号,------>接收到的消息: "+message.getPayload()+"\t"+" port: "+serverPort);}
}

启动8802测试是否可以接收到传来的消息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7gA6mSO2-1642512161928)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220117212559363.png)]

分组消费和持久化

1、仿照8802,克隆一份8803

2、启动项目

RabbitMQ、7001(服务注册)、8801(消息生产)、8802(消息消费)、8803(消息消费)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VaGUzYNl-1642512161928)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220117214600911.png)]

3、运行后的两个问题

1、有重复消费问题
2、消息持久化问题

先开看重复消费的问题。(两个消费者微服务同时收到相同的重复信息)

在这里插入图片描述

目前是8802/8803同时都收到了,存在重复消费问题
比如在如下场景,订单系统我们做集群部署,都会从RabbitMQ中获取订单信息,

那如果一个订单同时被两个服务获取到,那么就会造成数据错误,我们得避免这种情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cNIi5BIP-1642512161930)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220117214933512.png)]

这时我们就可以使用Stream中的消息分组来解决

注意在Stream中处于同一个group中的多个消费者是竞争关系,就能够保证消息只会被其中一个应用消费一次。
不同组件是可以全面消费的(重复消费)
同一个组内发生竞争关系,只有其中一个可以消费

解决消息重复消费问题

首先自定义分组(修改配置文件)

在8802和8803的配置文件的下面都加上相同的分组

group: spectrumrpcA
server:port: 8802spring:application:name: cloud-stream-providercloud:stream:binders: # 在此处配置要绑定的rabbitmq的服务信息;defaultRabbit: # 表示定义的名称,用于于binding整合type: rabbit # 消息组件类型environment: # 设置rabbitmq的相关的环境配置spring:rabbitmq:host: localhost #rabbitmq服务启动所在机器的IP地址port: 5672username: guestpassword: guestbindings: # 服务的整合处理input: # 这个名字是一个通道的名称destination: studyExchange # 表示要使用的Exchange名称定义content-type: application/json # 设置消息类型,本次为json,文本则设置“text/plain”binder: defaultRabbit # 设置要绑定的消息服务的具体设置group: spectrumrpcAeureka:client: # 客户端进行Eureka注册的配置service-url:defaultZone: http://localhost:7001/eurekainstance:lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)instance-id: send-8802.com  # 在信息列表时显示主机名称prefer-ip-address: true     # 访问的路径变为IP地址

在配置了相同分组之后同一个组中的不同微服务之间采用轮询的算法类接收消息。

在这里插入图片描述

配置了分组之后就可以解决重复消费和持久化的问题。

Sleuth链路追踪

定义:springcloud Slenuth中提供了一套完整的服务跟踪解决方案。在分布式系统中提供了解决方案并兼容支持了zipkin

搭建链路监控

官网下载zipkin的jar包

https://zipkin.io/pages/quickstart.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmCXeN4t-1642512161932)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220118211012210.png)]

cmd命令行java -jar运行该jar包之后在通过浏览器访问

引入了zipkin的jar包之后通过仪表盘显示即可。

具体的配置可以参考其他的参考资料不在进行详细说明。

总结:

到此springcloud微服务框架的一站式开发已经学习完成,之后便可以进行springcloud alibaba的测试和学习了。

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

相关文章

  1. Java学习笔记三之数据类型

    数据类型 占用空间大小 默认值 byte 1 0 short 2 0 int 4 0 …...

    2024/4/20 17:46:03
  2. 三分钟入门c++

    一&#xff0c;推荐书籍 1.入门书籍 《C程序设计教程》&#xff0c;钱能 《易学C》&#xff0c;潘嘉杰 《C primer plus》 Stephen Prata 《大话设计模式》&#xff0c;程杰 《C编程规范:101条规则、准则与最佳实践》&#xff0c;刘基诚 《C和C程序员面试秘籍》&#xf…...

    2024/4/27 21:22:30
  3. 转行做程序员,从月薪5k到50k,45岁程序员道出了一路的心酸

    前言 20年前&#xff0c;自己有幸入行IT行业&#xff0c;毕竟对于出身寒门的我来说&#xff0c;能够有一份体面的工作已经很不错了。 现在自己也45岁了&#xff0c;薪资也突破了五万元&#xff0c;在行业中虽然算的上中等&#xff0c;但却感觉人生才刚刚开始。如今&#xff0…...

    2024/4/18 22:55:09
  4. 重点知识学习(8.4)--[线程池 , ThreadLocal]

    文章目录1.线程池线程池构造函数中的7个参数线程池的执行过程线程的执行工作队列execute 与 submit 的区别四个类型拒绝策略关闭线程池方法 shutdownNow 和 shutdown2.ThreadLocal(线程变量)关于线程封闭初探执行原理ThreadLocal带来的内存泄漏问题1.线程池 说到线程的连接释放…...

    2024/4/14 23:04:22
  5. linux服务器监听端口客户端访问不通常见原因

    程序监听需要root权限监听的端口&#xff0c;但是程序没有以root权限运行&#xff0c;此时&#xff0c;程序会随机监听一个不需要root权限的端口。 解决办法&#xff1a;1. 以root权限运行程序。2. 把监听的端口改为不需root权限的端口。防火墙为设置允许该端口通过。以root权限…...

    2024/4/14 14:30:43
  6. 利用旧电脑去搭建linux服务器

    1. 场景 一旧电脑&#xff0c;8G内存&#xff0c;搁置甚是可惜&#xff0c;于是变废为宝&#xff0c;利用window Linux子系统以及花生壳内网穿透工具&#xff0c;搭建一台Linux。 2. 环境 win10 win10 linux子系统 花生壳内网穿透工具 3. 搭建步骤 3.1 安装linux子系统 进…...

    2024/4/14 14:26:14
  7. Python Module — asyncio

    目录 文章目录目录Python 的协程asyncioEvent Loopasync 与 awaitasync defasync forasync withFuture 与 TaskPython 的协程 Python 对协程的支持经历了多个版本&#xff1a; Python2.x 对协程的支持比较有限&#xff0c;通过 yield 关键字支持的生成器实现了一部分协程的功…...

    2024/4/7 4:47:13
  8. 【C进阶】指针

    指针楔子字符指针指针数组数组指针数组参数&#xff0c;指针参数一维数组传参二维数组传参一级指针传参二级指针传参函数指针函数指针数组回调函数楔子 在文章开始前&#xff0c;我们先复习一下什么是指针&#xff1a; 指针实际上是一个变量&#xff0c;是用来存储地址的。指…...

    2024/4/19 14:39:59
  9. Android 设备唯一标识(多种实现方案)

    前言 项目开发中&#xff0c;多少会遇到这种需求&#xff1a;获得设备唯一标识DeviceId&#xff0c;用于&#xff1a; 1.标识一个唯一的设备&#xff0c;做数据精准下发或者数据统计分析&#xff1b; 2.账号与设备绑定&#xff1b; 3..... 分析 这类文章&#xff0c;网上有许…...

    2024/4/14 14:26:19
  10. Docker 下 Redis 安装

    一、Docker 版本 二、查看可安装的版本 docker search redis 三、拉取最新版本 Redis 镜像 docker pull redis:latest 四、查看本地镜像 docker images 五、运行容器 docker run -itd --name redis-test -p 6379:6379 redis --requirepass "1234"# -p 6379:6379&…...

    2024/4/16 2:21:57
  11. Django框架学习--4--分布式路由ORM基础

    本篇文章要点&#xff1a; 1.如何通过分布式路由方法避免主路由文件的urlpatterns过于臃肿&#xff1f; 2.使用ORM框架代替数据库的操作&#xff1f; 1. Django的分布式路由实现 创建应用 应用在django项目中是一个独立的业务模块&#xff0c;可以包含自己的路由、视图、模版和…...

    2024/4/7 4:47:09
  12. 三分钟了解C++

    一&#xff0c;c的基本定义 C是C语言的继承&#xff0c;它既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的基于对象的程序设计&#xff0c;还可以进行以继承和多态为特点的面向对象的程序设计。C擅长面向对象程序设计的同时&#xff0c;还可以进…...

    2024/4/7 4:47:08
  13. 《高性能MySQL》读书笔记

    文章目录前言MySQL架构与历史MySQL逻辑架构连接管理优化与执行并发控制锁粒度表锁行级锁事务隔离级别事务日志性能优化简介通过性能剖析进行优化理解性能剖析剖析MySQL查询慢查询日志pt-query-digest优秀资料慢SQL定位分析选择优化的数据类型整数类型字符串类型BLOG 和 TEXT 类…...

    2024/4/14 14:25:49
  14. Flutter:基于video_player实现视频相关手势控制、全屏播放

    import ‘video_player_control.dart’; class ControllerWidget extends InheritedWidget { ControllerWidget({ this.controlKey, this.child, this.controller, this.videoInit, this.title }); final String title; final GlobalKey controlKey; final Widget child; fi…...

    2024/4/21 18:21:54
  15. QT_信号和槽

    自定义信号与槽 1、首先定义两个类 teacher 老师类 student 学生类 新建类的方式&#xff1a; 信号写在 signals:中 只需要声明即可 槽函数写在 公共slots:中 不仅需要声明也需要定义 在student 的.cpp中 需要实现槽函数 用qDebug输出“吃饭” …...

    2024/4/17 20:53:42
  16. 4小---

    1、 可以作为软件测试对象的是(B)。 A. 需求规格说明 B. 源程序 C. 设计规格说明 D. 数据库设计 2、 对软件系统结构图描述正确的是(D)。 A.原子模块是位于中间结点的模块 B.扇出是调用一个给定模块的模块数 C.结构图是描述软件系统功能的 D. 深度越深宽度越宽说明系统越复杂 …...

    2024/4/14 14:26:59
  17. HTML学习、图像链接标签 行内元素和块元素 列表 2022-1-17

    图像标签 img src:相对路径 绝对路径 点击图片右键–copy path–就直接可以将绝对路径复制出来&#xff0c;填到src里面 我们通常会直接建一个文件夹resourse来存放其他资源&#xff0c;单独存放图片的建一个文件夹&#xff08;image&#xff09;,然后把图片复制在这个文件夹…...

    2024/4/16 18:18:58
  18. C/C++内存管理

    文章目录C/C内存管理C/C内存分布C语言中动态内存管理方式malloc/calloc/realloc和free面试题C内存管理方式new/delete操作内置类型new/delete操作自定义类型总结operator new与operator delete函数operator new与operator delete的类专属重载new和delete的实现原理内置类型自定…...

    2024/4/20 13:43:22
  19. unix操作系统的特点

    UNIX系统在计算机操作系统的发展史上占有重要的地位。它确实对已有技术不断作了精细、谨慎而有选择的继承和改造&#xff0c;并且&#xff0c;在操作系统的总体设计构想等方面有所发展&#xff0c;才使它获得如此大的成功。UNIX系统的主要特点表现在以下几方面&#xff1a; (1)…...

    2024/4/19 20:23:06
  20. C++实现TCP/IP客户端与服务端通信——Windows+基础版+合并版

    /* *客户端与服务端的实现代码分别封装在两个函数中&#xff0c;可以在主函数中通过选择分别执行客户端或服务端代码 *实现客户端与服务端简单字符串通信&#xff08;字符串长度有限制&#xff09; *服务端只能够同时连接一个客户端并与其通信 *服务端能够获取所连接客户端的IP…...

    2024/4/14 14:26:59

最新文章

  1. c++后台开发八股文遗漏复习点

    c primer cht2 常量指针&#xff08;pointer to constant&#xff09;与指针常量&#xff08;constant pointer&#xff09;。记&#xff1a;常量指针是指向常量的指针。 可以用常量指针指向非常量对象。但是不建议。 不能用非常量引用指向一个常量对象。可以用常量引用指向一…...

    2024/4/28 2:19:24
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 从头开发一个RISC-V的操作系统(二)RISC-V 指令集架构介绍

    文章目录 前提ISA的基本介绍ISA是什么CISC vs RISCISA的宽度 RISC-V指令集RISC-V ISA的命名规范模块化的ISA通用寄存器Hart特权级别内存管理与保护异常和中断 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提…...

    2024/4/24 5:34:22
  4. 触想四代ARM架构工业一体机助力手功能康复机器人应用

    一、行业发展背景 手功能康复机器人是医疗机器人的一个分支&#xff0c;设计用于帮助肢体障碍患者进行手部运动和力量训练&#xff0c;在医疗健康领域有着巨大的成长空间。 手功能康复机器人融合了传感、控制、计算、AI视觉等智能科技与医学技术&#xff0c;能够帮助患者改善康…...

    2024/4/24 17:47:22
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57