消息中间件-消息的可靠性传递

前言

消息中间件的可靠性消息传递,是消息中间件领域非常重要的方案落实问题(在这之前的MQ理论,MQ选型是抽象层次更高的问题,这里不谈)。

并且这个问题与日常开发是存在较大的关联的。可以这么说,凡是使用了MQ的,机会都要考虑这个问题。当然也有一些原始数据采集,日志数据收集等应用场景对此没有过高要求。但是大多数的业务场景,对此还是有着较高要求的。比如订单系统,支付系统,消息系统等,你弄丢一条消息,嘿嘿。

网上对于这方面的博客,大多从单一MQ,或者干脆就是在论述MQ。我不喜欢这样的论述,这样的论述太过局限,也过于拖沓。

这次,主要从理论方面论证消息的可靠性传递的落实。具体技术,都是依据这些理论的,具体实现都差不多。不过为了便于大家理解,我在文中会以RabbitMq,Kafka这两个主流MQ稍作举例。

在日常开发中,我更倾向于在具体开发前,先整理思路,走通理论,再开始编码。毕竟,如果连理论都走不同,还谈什么编码。

另外,我按照消息可靠性层次逐步推进,形成相应的目录,希望大家喜欢(因为我认为,相较网上这方面现有博客的目录,这样的目录更合理,更人性化)。

概述

这里简单谈一些有关消息可靠性传递的理论。

消息传递次数

消息在消息系统(生产者+MQ+消费者),其消费的次数,无非一下三种情况:

  • 最多一次
  • 最少一次
  • 不多不少一次

消息可靠性层次

这也代表着消息系统的消息可靠性的三个层次:

  • 最多一次:上游服务的消息发出了,至于下游能不能收到服务,就不管了。结果就是下游服务,可能根本就没有接收到消息。
  • 最少一次:上游服务的消息发出了,并通过某些机制,确保下游服务一定收到了该消息。但是收到了几次,就不管了。结果就是下游服务,可能多次收到同一条消息。
  • 不多不少一次:上游服务的消息发出了,并确保下游服务一定收到了消息。下游服务通过某些机制,确保多次收到该消息与单次收到该消息,对其系统状态的影响是相同的。

方案落实

实现上述三个层次,需要逐步从三个方面考虑:

  • 最多一次:会用消息队列即可,只要确保消息的连通性即可
  • 最少一次:通过MQ提供的确认机制,确保消息的传递
  • 不多不少一次:通过外部应用程序,确保消息的单次消费与多次消费对系统状态影响是一致的

上述三个层次,对系统的性能损耗,系统复杂度等都是逐步上升的。

当然,我们首先,需要了解这三个层次分别如何实现。
再在实际开发中,根据需要,灵活选取合适方案。

最多一次的消息传递

这个方案是最简单的,只要确保消息系统的正确运作,以及系统的连通性即可。在正常情况下,可以保证绝大部分数据的可靠性传递。但是仍旧存在极小数据的丢失,并且数据的丢失会因为消息队列的选择,以及消息并发量,而受到影响。

优点

  • 实现简单。只要搭建对应的MQ服务器,写出对应的生产者与消费者,以及相应配置,即可正常工作。

缺点

  • 无法保证数据的可靠性,会存在一定的数据丢失情况,尤其是在并发量较大时

实际应用

可以应用于日志上传这样对消息可靠性要求低的应用场景。

总结

如果数据量不大的情况下,推荐使用RabbitMQ,其消息可靠性在地数据量下,是最可靠的。但是在达到万级并发时,会存在消息丢失,丢失的比例可以达到千分之一。

如果数据量较大的情况下,要么采用集群。要么就采用Kafk(Kafka可支持十万级并发)

一般来说,这种消息可靠性多见于项目初建,或类似日志采集,原始数据采集这样的特定场景。

最少一次的消息传递

这个方案开始利用MQ提供的特定机制,来提高消息传递的可靠性。

优点

  • 不错的消息可靠性。确保不会出现消息丢失的情况
  • 实现并不复杂。只需要合理使用MQ的API,设置合理参数(如重试次数)即可

缺点

  • 会出现消息重复消费的情况
  • 参数的设置需要合理。如重试次数,一般设置为5次,也可根据情况,进行调整
  • 资源占用的提升。如带宽(每次消息成功生产,消费都需要返回一条数据进行确认)等

方案落实

该方案的实现组成,由以下三个方面构成:

  • 消息的可靠生产
  • 消息的可靠存储
  • 消息的可靠消费

通过以上三个方面的落实,确保可消息一定被下游服务消费。

消息的可靠生产

消息的可靠生产,是通过回调确认机制,确保消息一定被消息服务器接收。

消息生产,发送给消息服务器后,消息服务器会返回一个确认信息,表示数据正常接收。

如果生产者在一定时间内没有接收到确认信息,就会触发重试机制,进行消息的重发。

如RabbitMq的comfirm机制,Kafka的acks机制等。

RabbitMq的confirm机制存在三个模式:

  • 普通模式:channel.waitForConfirms()
  • 批量模式:channel.waitForConfirmsOrDie()
  • 异步模式:channel.addConfirmListener()

这三个模式,看名称就可以知道具体作用了。如果希望了解具体代码落实,详见RabbitMQ事务和Confirm发送方消息确认——深入解读,其中确认机制写得较为简洁。

至于Kafka的acks机制,同样存在三个模式:

  • acks = 0 :不需要Kafka的任何Partition确认,即确认发送成功(这个之确保消息发送出去了,并不保证消息服务器是否成功接收)
  • acks = 1 :(默认)需要Kafka的Partition Leader确认,即被Kafka的一个Partition(Leader)接收。但是这样依旧存在极小概率的消息丢失,即Partition Leader获取了对应消息,并给了acks确认回复。但是在其他Partition同步前,Partition Leader宕机,数据丢失。那么这就造成了消息丢失。
  • acks = all :需要Kafka对应ISR中的全部Partition确认,才确认消息发送成功(当然,这里假定Kafka是多节点集群,如果只有一个分区,那就毫无意义了)。

说到这里,简单说一下,上述的操作可能造成消息的重复生产。

最简单的例子,消息成功发送,但是对应的消息确认信息由于网络波动而丢失。那么生产者就会重复发送该消息,所以消息服务器接收到了两条相同消息,故产生了消息的重复生产。

另外,上述的重试,都是存在响应时长判断(超出1min,就认为数据丢失),以及重试次数限制(超过5次,就不进行重试。否则,大量重试数据可能会拖垮整个服务)。

消息的可靠存储

消息的可靠存储,是确保消息在消息服务器经过,或者说堆积时不会因为宕机,网络等状况,丢失消息。

网上很多博客在论述消息的可靠性传递时,常常把这点遗漏。因为他们理所当然地认为消息队列已经通过集群等实现了消息队列服务的可用性,故消息的可靠性存储也就实现了。

但是这里存在两个问题。第一,可靠性不等于可用性。第二,消息的可靠存储,作为消息可靠性传递的一部分,是不可缺失的。

可用性:确保服务的可用。即对应的服务,可以提供服务。

可靠性:确保服务的正确。即对应的服务,提供的是正确的服务。

区别:我浏览淘宝,淘宝页面打不开,这就涉及了可用性问题(可用性计算公式:可用时间/全部时长*100%)。而我浏览淘宝,查询订单,给我显示的是别人的订单,这就涉及了可靠性问题。

另外这里再纠正一点,可靠性并不依赖于可用性。即使我打不开淘宝页面,我也不能说淘宝提供订单查询就有问题(只是如果没有了可用性,谈论可靠性是非常没有意义的。毕竟都用不了了,谁还关心其内容是否正确呢,都看不到)

消息队列的可用性,是通过多个节点构成集群,避免单点故障,从而提升可用性。

消息队列的可靠存储,是通过备份实现(这里不纠结备份如何确保正确)的。如RabbitMq集群的MemNode与DiskNode,又或者Kafka的replication机制等。

消息的可靠消费

消息的可靠消费,就是确保消息被消费者获取,并被成功消费。避免由于消息丢失,或者消费者宕机而造成消息消费不成功,最终造成消息的丢失(因为RabbitMq服务器在认为消息被成功消费后,将对应数据删除或标记为“已消费”)。

至于消息的可靠消费,核心理念还是重试,重试,再重试。不过具体的实现就八仙过海,各显神通了。

这里分别说一下RabbitMq,Kafka,Rocket三者对于可靠消费的处理:

RabbitMq

提供ack机制。默认是auto,直接在拿到消息时,直接ack。确保了消息到达了消费者,但是无法解决消费者消费失败这样的问题。

实际开发中,为了确保消息的可靠消费,一般会设置为munal,只有在程序正确运行后,才会调用对应api,表示消息正确消费。

Kafka

由于Kafka的消息是落地到硬盘文件的,而且Kafka的消息分发方式是pull的,所以消息的拉取是通过offset机制去确认对应位置消息的。

当然,Kafka的offset默认是自动提交的(可通过nable_auto_commit与auto_commit_interval_ms控制)。

所以消费者调用服务失败等原因,可以通过手动offset提交,来实现对数据的重复消费(甚至是历史数据的消费),也就可以在消费失败时对同一消息进行再消费。

如果是消费者宕机等原因,由于Kafka服务器没有收到对应的offset提交,所以认为那条消息没有被消费成功,故返回的依旧是那条消息。

RocketMq

其实RocketMq的处理有些类似Kafka确认机制+RabbitMq死信队列的感觉。

首先,消费者从RocketMq拉取消息,如果成功消费,就返回确认消息。

如果未成功消费,就尝试重新消费。

尝试消费一定次数后(如5次),就会将该消息发送之RocketMq中的重试队列。

如果遇到消费者宕机的情况,RocketMq会认为该消息未成功消费,会被其他消费者继续消费。

其实在RabbitMq的可靠性消费时,我们也会将多次消费失败的数据保存下来,便于后期修复等。不过保存的方式由很多种,日志,数据库,消息队列等。而RocketMq则给出了具体的落实方案。

上述的操作,可能造成消息的重复消费。

最简单的例子,消息成功被消费者消费,但是消费者还没来得及发送确认信息,就宕机了。

消息队列由于没有收到确认消息,认为该条消息尚未被消息,就将该消息交由其他消费者继续消费。

不多不少一次的消息传递

这个方案,就是通过MQ以外的应用程序,来进行扩展,最终达到消息准确消费的目的。

那么为什么不将这个功能,囊括在MQ中呢?

个人认为有四个方面的考虑:

  • 消息中间件,应该明确其功能域,而消息生产与消息消费往往涉及业务,所以避免与业务的耦合。所以消息中间件只完善了可靠存储。
  • 准确消费,往往涉及MQ以外的部分,需要其他部分的配合。就类似与XA接口一样。这样会带来编码的约束,系统的耦合性等。
  • 准确消费的实现可以通过一个工具,模块去实现,但是不该硬编码。毕竟现有的处理方案并不一定就是最优解(尤其是在调控中心,TCC框架展现的现在)。
  • 性能影响。为了一个不通用的功能,会带来消息中间件的性能大幅下降

优势

  • 确保消息被准确消费(不多不少一次)

缺点

  • 实现复杂(生产者与消费者都需要建立对应数据库)
  • 需要建立对应规范(但是通用规范确定后,实现就会变得快速)
  • 资源占用的提升。如带宽(每次消息成功生产,消费都需要返回一条数据进行确认)等

存在的问题

消息存储部分的准确存储,不该我们来操心,所以只阐述消息生产与消息消费两个部分。

消息的重复生产

  • 消息发给了消息队列服务器,消息队列服务器的确认信息由于网络波动等,没有及时到达生产者
  • 消息发送给了消息队列服务器,生产者在接收消息前,宕机
  • 消息发送给了消息队列服务器,生产者在接收消息后,还没来得及进行确认逻辑,宕机

综上来看,就是消息发出后,到生产者消息确认信息的处理之间,出现各种意外,导致重复生产。

消息的重复消费

  • 消息已经被消费,消费者还没来得及发送确认信息,就宕机了
  • 消息已经被消费,消费者发出确认信息,确认信息由于网络波动等,没有及时到达消息队列服务器
  • 消息已经被消费,消费者发出确认信息,消息队列服务器对应实例在接收到确认信息前,宕机
  • 消息已经被消费,消费者发出确认信息,消息队列服务器接受到了确认信息,还没来得及进行确认逻辑,宕机

综上来看,就是消息已经被消费后,到消息队列服务器进行确认消息处理之间,出现各种意外,导致重复消费。

解决方案

解决方案:messageId+幂等

准确来说,解决方案的核心是幂等,而messageId是作为辅助手段的。

幂等

幂等,简单说明一下,就是多次操作与单次操作对系统状态的影响是一致的。

i = 1; 

就是幂等操作,因为无论进行几次,i的值都没有变化。

i++;

则不是幂等操作,因为i的值与执行次数息息相关。

故通过幂等操作来确保同一条消息,不被执行多次。

messageId

但是,消费者如何确定是否为同一条消息呢?

有的消息体存在唯一性字段,如orderId等。但有的消息并没有这样的唯一性字段。

所以需要一个专门的字段,来表示唯一性,并且与业务消息解耦。这就是messageId。

既可以采用消息体的唯一性字段(可以是单一字段,也可以是组合字段),也可以通过特定方式生成对应标识(分布式系统,需要注意不同实例生产者产生相同标识的可能,详见分布式全局唯一ID的实现)。

具体的生成情况,就不在这里赘述了。

方案落实

先来一张大图(这种事情,图片展示最直观了),展示一下流程:

在这里插入图片描述
(图片是绝对清晰的。看不清图片的朋友,请将图片在新页面打开,或下载。说实话,来到新公司,首先提升的就是画图能力。囧)

简单说一下流程,大家可以对照着上图,看一下:

生产者到消息中间件服务器

  1. 生产者根据需要发送的消息,生成对应messageId。并封装对应message至生产者数据库(该操作应该利用事务性,确保生产者事件处理与message保存至数据库的原子性),同时标注message状态为sending(发送中状态)
  2. 将对应message发送给消息队列服务器
  3. 如果没有收到生产确认信息,则重新发送message(如果这个时候遇到生产者实例宕机,也不用担心。因为后续会有补偿程序,进行补偿重发操作)
  4. 当收到消息中间件服务器的消息生产确认消息(即确定消息已经达到消息中间件服务器),将数据库中对应message的状态修改为sended(已发送状态)

上述中提到的补偿机制,其实是类似事务中的一个操作。通过一个定时任务,定时巡检数据库处于sending状态的message,并通过生产者极性发送(所以message一般都保存source,target等信息)。

之所以会有sending状态的message,就是因为存在生产者消息发送出去了,还没收到生产确认信息,结果生产者实例自己宕机的情况。

至于补偿机制的定时任务,是一个非常简单的实现,这里就不再赘述了。

消息中间件到消费者

这里进行的操作是针对非幂等的操作。

如果是幂等操作,则可以直接进行。毕竟多次执行与单次执行对数据库的影响是一致的。

但是注意幂等操作在部分场景下无效的问题(时间影响上),如“余额 = 1k”的操作对于数据库而言是幂等的,但是在两次“余额 = 1k”操作间,有一个“余额 = 2k”的操作,则会发生问题(丢失了“余额 = 2k”操作)。当然,这种类似ABA问题,完全可以引入版本号,来进行解决。

综上,还是推荐采用以下解决方法,流程较为简单:

  1. 消费者获取数据
  2. 消费者判断数据库是否有对应message
  3. 如果存在对应message,则放弃执行(因为这是一个重复操作)
  4. 如果不存在,则进行相关消息处理。并通过事务控制,在消费者数据库中添加message(确保消息的处理与数据库添加message是原子操作)

至此,消息的准确传递就完成了。

总结

消息可靠性传递的发展过程,也体现了人们对消息中间件功能的一步步追求,更是体现了工程师们解决问题的思路。

很多时候,我们会遇到很多问题,甚至令人感到杂乱不堪,无从下手。这个时候,最好的办法就是静下心来,对它们进行划分(按照重要程度,紧迫度,实现难度),再进行一个长期规划,一步步来解决。往往这个时候,动动笔,在笔记上列下清单,会是一个不错的办法。

其中消息的准确传递,涉及一些事务相关的内容。也许有人已经联想到,消息队列是否可以作为分布式事务的一种手段呢?我会在之后的博客中,来阐述分布式事务这一重要主题。

如果有什么问题或想法,可以私信或@我。

愿与诸君共进步。

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

相关文章

  1. 10-矩形覆盖

    我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法function rectCover(number) {// write code hereif(number < 3) return number;var pre = 1, cur = 2;for(var i = 2; i < number; i++) {cur = c…...

    2024/4/24 14:23:13
  2. 最小方差生成树

    题意:给定带权无向图,求出一颗方差最小的生成树。额外信息:整数U,V,W,代表连接U,V的边,和权值W。保证图连通。1<=U,V<=N<=50,N-1<=M<=1000,0<=W<=50。思路(转载):要使方差最小,则使 Σ(wi-平均数)^2最小即可。因为权值的范围很小,所以我们可以枚…...

    2024/3/29 7:06:54
  3. 2020 零基础到快速开发 Vue全家桶开发电商管理系统(Element-UI)【权限列表】

    ACM刷题记录希望通过这个专栏,给自己一个成长的记录,学如逆水行舟,不进则退,我们所谓的勤奋并不是看着别人努力而努力,而是在别人松懈了依旧在自己的道路上坚持下去。学习这件事说容易不容易,说难也很难,沉下心来,抛弃杂念,希望能在专栏留下回忆!一百个Chocolate9.90…...

    2024/5/1 7:42:54
  4. 图片在容器里水平垂直居中

    一、水平居中 .wrap{height: 200px;width:200px;text-align: center;}.warp img{display: inline-block; } .wrap{height: 200px;width:200px}.warp img{display: inline-block; margin:0 auto; } 二、垂直居中.warp{height: 200px;width: 200px; lin…...

    2024/3/29 7:06:53
  5. 命令行参数前的「-」和「--」有什么区别?

    在 Linux 的 shell 中,我们把 - 和 – 加上一个字符(字符串)叫做命令行参数,主流的有下面几种风格 Unix 风格参数,前面加单破折线 - BSD 风格参数,前面不加破折线 GNU 风格参数,前面加双破折线Unix 风格参数。一个减号,然后一个参数就是一个字母。Unix风格的参数是从贝…...

    2024/3/29 7:18:44
  6. 操作系统centos6.10的安装

    centos6的安装 1.选择第一项安装或升级2.检查光盘是否完好无损3.测试4.测试成功说明光盘没有任何问题5.点了OK后会自动把光盘弹出来(界面右下角光盘标识变成灰色 右键链接点continue继续)6.检查成功之后进入安装向导7.选择语言 英语8.选择美国的标准键盘9.选择把操作系统安装…...

    2024/3/29 7:18:43
  7. JavaWeb(一)-----互联网原理

    JavaWeb学习(一)------互联网原理 一,互联网原理 HTML:制作原理。 上网即是请求数据 在浏览器(客户端)输入一个网址,按下回车键后,浏览器会通过http协议向服务器发送请求,服务器响应之后,将客户需求的文件传输到浏览器端,过程中有实际的物理文件的传输。 实际物理数…...

    2024/5/1 8:22:51
  8. 左神算法初级班第一节

    排序冒泡排序:比较i位置和i+1位置上的数,把较大的数放在i+1位置上,从左往右,过一遍,找出数组中的最大数排在最末尾,然后再以同样的方式,找出次大的数放在次末位置上… 时间复杂度:O(N**2)void BubbleSort(int *a, int len) {int i, j, temp;for (j = len - 1; j >…...

    2024/4/28 5:57:20
  9. react项目总结(二 未完待续)

    1.包装成路由组件withRouter 2. this.props.location.pathname获取路由链接 3. 这种模式只是模糊匹配 如果要精准匹配需要 exact = true,如下面写法 <Route path = /user exact = {true} component = {Admin}/> 4.this.porps.history.replace()跳转路由链接,这种需要…...

    2024/3/29 7:18:40
  10. 尺取算法

    尺取的用途 尺取一般用来选取有一定规律的区间,对一定区间先判断是否符合条件后,再将这个区间推进。 尺取算法 尺取算法就像毛毛虫,一伸一缩的取区间,找到问题的答案。 例如:给长度为n的数组和一个整数m,求总和不小于m的连续子序列的最小长度 输入 n = 10,m = 15 5 1 3 …...

    2024/3/29 7:18:39
  11. C++你所不知道的命名空间

    我们每天都在用using namespace std;但你对命名空间了解多少? 这是个啥? 命名空间是一种机制,用来把单个标识符下存在大量有逻辑联系的程序实体组合到一起,并以此标识符作为此组群的名字。 换一种说法,就是一个集合,其关键字就是命名空间的名字 using namespace name {/*…...

    2024/3/29 7:18:38
  12. 软判决译码与因判决译码之间的区别

    Viterbi译码分硬判决和软判决两种,在结构和译码过程上没有区别,区别在于分支度量的计算方法。硬判决是指解调器根据其判决门限对接收到的信号波形直接进行判决后输出0或1,换句话说,就是解调器供给译码器作为译码用的每个码元只取0或1两个值,以序列之间的汉明距离作为度量进…...

    2024/3/29 7:18:37
  13. 第二章 导数与微分

    微分学是微积分的重要组成部分,它的基本概念是导数与微分。本章中,我们主要讨论导数和微分的概念以及它们的计算方法。——高等数学同济版习题2-1 导数概念本节重点介绍导数的基本概念及相关证明。 7.设f(x)={23x3,x⩽1,x2,x>1,f(x)=\begin{cases}\cfrac{2}{3}x^3,&x\…...

    2024/3/29 7:18:36
  14. VS code markdown 相关(更新中)

    预览快捷键 ctrl + k 然后 v 命令菜单 ctrl+shift+p...

    2024/3/29 7:18:35
  15. Python学习笔记-Python 日期和时间

    Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳, 如下实…...

    2024/3/29 7:18:34
  16. 爬取某站所有性感美女图片(Python版)

    Python版 环境python3.7 pip19.3依赖requests pyquery os前期准备 引入所需依赖 import requests import os from requests.packages import urllib3 from pyquery import PyQuery as pqheaders设置(重要) headers = {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10…...

    2024/3/29 7:18:33
  17. GitHub的学习

    初步学习GitHub 1、目的 借助GitHub托管项目代码2、基本概念 仓库(Repository) 仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库收藏(Star) 收藏项目。方便下次观看复制克隆项目(fork) 注意:该fork的项目是独立存在的发出请求(Pull Request) 基…...

    2024/3/29 7:18:32
  18. 初等模型---核军备竞赛

    在20世纪六七十年代的冷战时期,美苏两个核大国都声称为了保卫自己的安全,而实行所谓核威慑战略,核军备竞赛不断升级。随着苏联的解体和冷战的结束,双方通过了一系列的核裁军协议,2010年4月8日,美国与俄罗斯领导人在捷克首都布拉格签署新的削减战略武器条约。根据这项新条约…...

    2024/4/23 23:10:25
  19. JAVA程序设计:Dota2 参议院(LeetCode:649)

    Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让…...

    2024/4/2 0:08:31
  20. 和Python的第一次接触+习题复习

    ##从IDLE启动Python※IDLE是一个Python Shell. shell的意思就是外壳,基本上说,就是一个通过键入文本与程序交互的途径 ※我们看到>>>这个提示符,Ta的含义是告诉你,Python已经准备好了,在等着你键入Python指令 ※打开后,尝试在IDLEl里输入: <<<print(“…...

    2024/3/29 7:07:00

最新文章

  1. Taro引入echarts【兼容多端小程序(飞书/微信/支付宝小程序)】

    近期接到公司新需求&#xff0c;开发飞书小程序&#xff0c;并且原型中含有大量的图表&#xff0c;本想使用飞书内置图表组件 —— chart-space&#xff0c;但官方表示已经停止维护了&#xff0c;无奈之下&#xff0c;只能另寻他路&#xff0c;于是乎&#xff0c;图表之王&…...

    2024/5/1 10:04:28
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 探索进程控制第一弹(进程终止、进程等待)

    文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么&#xff1f;进程终止的情况代码跑完&#xff0c;结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…...

    2024/4/29 19:37:42
  4. ChatGPT 赚钱初学者指南(上)

    原文&#xff1a;The Beginner’s Guide to Earning Money Online with ChatGPT 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第一章&#xff1a;理解基础知识 什么是 ChatGPT&#xff1f; 在人工智能与人类对话相遇的数字织锦中&#xff0c;ChatGPT 作为一个突出…...

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

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

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

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

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

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/30 18:21:48
  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/30 9:43:09
  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/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

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

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

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

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

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

    2024/4/30 9:42:49
  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