那么 Kafka 到底会不会丢数据呢?如果丢数据,究竟该怎么解决呢?

只有掌握了这些, 我们才能处理好 Kafka 生产级的一些故障,从而更稳定地服务业务。

认真读完这篇文章,我相信你会对Kafka 如何解决丢失数据问题,有更加深刻的理解。

这篇文章干货很多,希望你可以耐心读完。

01 总体概述

越来越多的互联网公司使用消息队列来支撑自己的核心业务。由于是核心业务,一般都会要求消息传递过程中最大限度地做到不丢失,如果中间环节出现数据丢失,就会引来用户的投诉,年底绩效就要背锅了。

那么使用 Kafka 到底会不会丢数据呢?如果丢数据了该怎么解决呢?为了避免类似情况发生,除了要做好补偿措施,我们更应该在系统设计的时候充分考虑系统中的各种异常情况,从而设计出一个稳定可靠的消息系统。

大家都知道 Kafka 整个架构非常简洁,是分布式的架构,主要由 Producer、Broker、Consumer 三部分组成,后面剖析丢失场景会从这三部分入手来剖析。

02 消息传递语义剖析

在深度剖析消息丢失的场景之前,我们先来聊聊 「 消息传递语义 」 到底是个什么玩意?

所谓的消息传递的语义是 Kafka 提供的 Producer 和 Consumer 之间的消息传递过程中消息传递的保证性。主要分为三种, 如下图所示:

1)首先当 Producer 向 Broker 发送数据后,会进行 commit, 如果 commit 成功, 由于 Replica 副本机制的存在,则意味着消息不会丢失,但是 Producer 发送数据给 Broker 后来,遇到网络问题而造成通信中断,那么 Producer 就无法准确判断该消息是否已经被提交(commit),这就可能造成 at least once 语义 。

2)在 Kafka 0.11.0.0 之前, 如果 Producer 没有收到消息 commit 的响应结果,它只能重新发送消息,确保消息已经被正确地传输到 Broker,重新发送的时候会将消息再次写入日志中;而在 0.11.0.0 版本之后, Producer 支持幂等传递选项,保证重新发送不会导致消息在日志出现重复 。 为了实现这个, Broker 为 Producer 分配了一个ID,并通过每条消息的序列号进行去重。也支持了类似事务语义来保证将消息发送到多个地方 Topic 分区中,保证所有消息要么都写入成功,要么就是失败,这个主要用在 Topic 之间的 exactly once 语义。

其中启用幂等传递的方法配置 :enable.idempotence = true。

启用事务支持的方法配置 :设置属性 transcational.id = "指定值"。

3)从 Consumer 角度来剖析, 我们知道 Offset 是由 Consumer 自己来维护的, 如果 Consumer 收到消息后更新 Offset, 这时 Consumer 异常 crash 掉, 那么新的 Consumer 接管后再次重启消费,就会造成 at most once 语义(消息会丢,但不重复)。

4) 如果 Consumer 消费消息完成后, 再更新 Offset, 如果这时 Consumer crash 掉,那么新的 Consumer 接管后重新用这个 Offset 拉取消息, 这时就会造成 at least once 语义(消息不丢,但被多次重复处理)。

总结: 默认 Kafka 提供 「 at least once 」 语义的消息传递 , 允许用户通过在处理消息之前保存 Offset 的方式提供 「 at most once 」 语义。如果我们可以自己实现消费幂等, 理想情况下这个系统的消息传递就是严格的 「 exactly once 」, 也就是保证不丢失、且只会被精确地处理一次,但是这样是很难做到的。

从 Kafka 整体架构图我们可以得出有三次消息传递的过程:

1)Producer 端发送消息给 Kafka Broker 端。

2)Kafka Broker 将消息进行同步并持久化数据。

3)Consumer 端从 Kafka Broker 将消息拉取并进行消费。

在以上这三步中每一步都可能会出现丢失数据的情况, 那么 Kafka 到底在什么情况下才能保证消息不丢失呢?

通过上面三步,我们可以得出:Kafka 只对 「 已提交 」的消息做 「 最大限度的持久化保证不丢失 」 

怎么理解上面这句话呢?

1)首先是 「 已提交 」的消息:当 Kafka 中 N 个 Broker 成功的收到一条消息并写入到日志文件后,它们会告诉 Producer 端这条消息已成功提交了,那么这时该消息在 Kafka 中就变成 "已提交消息" 了。

这里的 N 个 Broker 我们怎么理解呢?这主要取决于对 "已提交" 的定义, 这里可以选择只要一个 Broker 成功保存该消息就算已提交,也可以是所有 Broker 都成功保存该消息才算是已提交,即 「 ISR机制 」 。

2)其次是 「 最大限度的持久化保证不丢失 」,也就是说 Kafka 并不能保证在任何情况下都能做到数据不丢失。即 Kafka 不丢失数据是有前提条件的。假如这时你的消息保存在 N 个 Broker 上,那么前提条件就是这 N 个 Broker 中至少有1个是存活的,就可以保证你的消息不丢失。

也就是说 Kafka 是能做到不丢失数据的, 只不过这些消息必须是 「 已提交 」 的消息,且还要满足一定的条件才可以。

了解了 Kafka 消息传递语义以及什么情况下可以保证不丢失数据,下面我们来详细剖析每个环节为什么会丢数据,以及如何最大限度的避免丢失数据。

03 消息丢失场景剖析

Producer 端丢失场景剖析

在剖析 Producer 端数据丢失之前,我们先来了解下 Producer 端发送消息的流程,对于不了解 Producer 的读者们,可以查看 聊聊 Kafka Producer 那点事

消息发送流程如下:

1)首先我们要知道一点就是 Producer 端是直接与 Broker 中的 Leader Partition 交互的,所以在 Producer 端初始化中就需要通过 Partitioner 分区器从 Kafka 集群中获取到相关 Topic 对应的 Leader Partition 的元数据 。

2)待获取到 Leader Partition 的元数据后直接将消息发送过去。

3)Kafka Broker 对应的 Leader Partition 收到消息会先写入 Page Cache,定时刷盘进行持久化(顺序写入磁盘)。

4) Follower Partition 拉取 Leader Partition 的消息并保持同 Leader Partition 数据一致,待消息拉取完毕后需要给 Leader Partition 回复 ACK 确认消息。

5)待 Kafka Leader 与 Follower Partition 同步完数据并收到所有 ISR 中的 Replica 副本的 ACK 后,Leader Partition 会给 Producer 回复 ACK 确认消息。

根据上图以及消息发送流程可以得出:Producer 端为了提升发送效率,减少IO操作,发送数据的时候是将多个请求合并成一个个 RecordBatch ,并将其封装转换成 Request 请求 「 异步 」 将数据发送出去(也可以按时间间隔方式,达到时间间隔自动发送), 所以 Producer 端消息丢失更多是因为消息根本就没有发送到 Kafka Broker 端 。

导致 Producer 端消息没有发送成功有以下原因:

  • 网络原因: 由于网络抖动导致数据根本就没发送到 Broker 端。
  • 数据原因: 消息体太大超出 Broker 承受范围而导致 Broker 拒收消息。

另外 Kafka Producer 端也可以通过配置来确认消息是否生产成功:

在 Kafka Producer 端的 acks 默认配置为1, 默认级别是 at least once 语义, 并不能保证 exactly once 语义。

既然 Producer 端发送数据有 ACK 机制, 那么这里就可能会丢数据的 !!!

  • acks = 0: 由于发送后就自认为发送成功, 这时如果发生网络抖动, Producer 端并不会校验 ACK 自然也就丢了,且无法重试。
  • acks = 1: 消息发送 Leader Parition 接收成功就表示发送成功,这时 只要 Leader Partition 不 Crash 掉,就可以保证 Leader Partition 不丢数据,但是如果 Leader Partition 异常 Crash 掉了, Follower Partition 还未同步完数据且没有 ACK,这时就会丢数据。
  • acks = -1 或者 all: 消息发送需要等待 ISR 中 Leader Partition 和 所有的 Follower Partition 都确认收到消息才算发送成功, 可靠性最高, 但也不能保证不丢数据,比如当 ISR 中只剩下 Leader Partition 了, 这样就变成 acks = 1 的情况了。

Broker 端丢失场景剖析

接下来我们来看看 Broker 端持久化存储丢失场景, 对于不了解 Broker 的读者们,可以先看看 聊聊 Kafka Broker 那点事 , 数据存储过程如下图所示:

Kafka Broker 集群接收到数据后会将数据进行持久化存储到磁盘,为了提高吞吐量和性能,采用的是 「 异步批量刷盘的策略 」,也就是说按照一定的消息量和间隔时间进行刷盘。首先会将数据存储到 「 PageCache 」 中,至于什么时候将 Cache 中的数据刷盘是由 「 操作系统 」 根据自己的策略决定或者调用 fsync 命令进行强制刷盘,如果此时 Broker 宕机 Crash 掉,且选举了一个落后 Leader Partition 很多的 Follower Partition 成为新的 Leader Partition,那么落后的消息数据 就会丢失 。

既然 Broker 端消息存储是通过异步批量刷盘的,那么这 里就可能会丢数据的 !!!

  • 由于 Kafka 中并没有提供 「 同步刷盘 」 的方式,所以说从单个 Broker 来看还是很有可能丢失数据的。
  • kafka 通过 「 多 Partition (分区)多 Replica(副本)机制 」 已经可以最大限度的保证数据不丢失,如果数据已经写入 PageCache 中但是还没来得及刷写到磁盘,此时如果所在 Broker 突然宕机挂掉或者停电,极端情况还是会造成数据丢失。

Consumer 端丢失场景剖析

接下来我们来看看 Consumer 端消费数据丢失场景,对于不了解 Consumer 的读者们,可以先看看 聊聊 Kafka Consumer 那点事 , 我们先来看看消费流程:

1)Consumer 拉取数据之前跟 Producer 发送数据一样, 需要通过订阅关系获取到集群元数据, 找到 相关 Topic 对应的 Leader Partition 的元数据。

2)然后 Consumer 通过 Pull 模式主动的去 Kafka 集群中拉取消息。

3)在这个过程中,有个消费者组的概念( 不了解的可以看上面链接文章 ),多个 Consumer 可以组成一个消费者组即 Consumer Group,每个消费者组都有一个Group-Id。同一个 Consumer Group 中的 Consumer 可以消费同一个 Topic 下不同分区的数据,但是不会出现多个 Consumer 去消费同一个分区的数据。

4)拉取到消息后进行业务逻辑处理,待处理完成后,会进行 ACK 确认,即提交 Offset 消费位移进度记录。

5)最后 Offset 会被保存到 Kafka Broker 集群中的 __consumer_offsets 这个 Topic 中,且每个 Consumer 保存自己的 Offset 进度。

根据上图以及消息消费流程可以得出消费主要分为两个阶段:

  • 获取元数据并从 Kafka Broker 集群拉取数据。
  • 处理消息,并标记消息已经被消费,提交 Offset 记录。

既然 Consumer 拉取后消息最终是要提交 Offset, 那么这 里就可能会丢数据的 !!!

  • 可能使用的 「 自动提交 Offset 方式 
  • 拉取消息后 「 先提交 Offset,后处理消息 」 ,如果此时处理消息的时候异常宕机,由于 Offset 已经提交了, 待 Consumer 重启后,会从之前已提交的 Offset 下一个位置重新开始消费, 之前未处理完成的消息不会被再次处理,对于该 Consumer 来说消息就丢失了。
  • 拉取消息后 「 先处理消息,在进行提交 Offset 」 , 如果此时在提交之前发生异常宕机,由于没有提交成功 Offset, 待下次 Consumer 重启后还会从上次的 Offset 重新拉取消息,不会出现消息丢失的情况, 但是会出现重复消费的情况,这里只能业务自己保证幂等性。

04 消息丢失解决方案

上面带你从 Producer、Broker、Consumer 三端剖析了可能丢失数据的场景,下面我们就来看看如何解决才能最大限度的 保证消息不丢失。

Producer 端解决方案

在剖析 Producer 端 丢失场景的时候, 我们得出其是通过 「 异步 」方式进行发送的,所以如果此时是使用 「 发后即焚 」的方式发送,即 调用 Producer.send(msg) 会立即返回,由于没有回调,可能因网络原因导致 Broker 并没有收到消息,此时就丢失了。

因此我们可以从以下几方面进行解决 Producer 端消息丢失问题:

4.1.1 更换调用方式:

弃用调用发后即焚的方式,使用带回调通知函数的方法进行发送消息,即 Producer.send(msg, callback) , 这样一旦发现发送失败, 就可以做针对性处理。

Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback);public Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback) {// intercept the record, which can be potentially modified; this method does not throw exceptionsProducerRecord<K, V> interceptedRecord = this.interceptors == null ? record : this.interceptors.onSend(record);return doSend(interceptedRecord, callback);}

( 1 )网络抖动 导致消息丢失,Producer 端可以进行重试。

(2)消息大小不合格,可以进行适当调整,符合 Broker 承受范围再发送。

通过以上方式可以保证最大限度消息可以发送成功。

4.1.2 ACK 确认机制:

该参数代表了对 "已提交" 消息的定义。

需要将 request.required.acks 设置为 -1/ all ,-1/all 表示有多少个副本 Broker 全部收到消息,才认为是消息提交成功的标识。

针对 acks = -1/ all , 这里有两种非常典型的情况:

(1)数据发送到 Leader Partition, 且所有的 ISR 成员全部同步完数据, 此时,Leader Partition 异常 Crash 掉,那么会选举新的 Leader Partition,数据不会丢失, 如下图所示 

(2)数据发送到 Leader Partition ,部分 ISR 成员同步完成,此时 Leader Partition 异常 Crash, 剩下的 Follower Partition 都可能被选举成新的 Leader Partition,会给 Producer 端发送失败标识, 后续会重新发送数据,数据可能会重复, 如下图所示:

因此通过上面分析,我们还需要通过其他参数配置来进行保证:

replication.factor >= 2

min.insync.replicas > 1

这是 Broker 端的配置,下面会详细介绍。

4.1.3 重试次数 retries:

该参数表示 Producer 端发送消息的重试次数。

需要将 retries 设置为大于0的数, 在 Kafka 2.4 版本中默认设置为 Integer.MAX_VALUE。另外如果需要保证发送消息的顺序性,配置如下:

retries = Integer.MAX_VALUE
max.in.flight.requests.per.connection = 1

这样 Producer 端就会一直进行重试直到 Broker 端返回 ACK 标识,同时只有一个连接向 Broker 发送数据保证了消息的顺序性。

4.1.4 重试时间 retry.backoff.ms:

该参数表示消息发送超时后 两次重试之间的间隔时间 ,避免无效的频繁重试,默认值为100ms, 推荐设置为300ms 

Broker 端解决方案

在剖析 Broker 端丢失场景的时候, 我们得出其是通过 「 异步批量刷盘 」的策略,先将数据存储到 「 PageCache 」,再进行异步刷盘, 由于没有提供 「 同 步刷盘 」策略, 因此 Kafka 是通过 「 多分区多副本 」 的方式来 最大限度的 保证数据不丢失。

我们可以通过以下参数配合来保证:

4.2.1 unclean.leader.election.enable :

该参数表示 有哪些 Follower 可以有资格被选举为 Leader , 如果一个 Follower 的数据落后 Leader 太多,那么一旦它被选举为新的 Leader, 数据就会丢失,因此我们要将其设置为false,防止此类情况发生。

4.2.2 replication.factor :

该参数表示分区副本的个数。建议设置 replication.factor >=3 , 这样如果 Leader 副本异常 Crash 掉,Follower 副本会被选举为新的 Leader 副本继续提供服务。

4.2.3 min.insync.replicas :

该参数表示消息至少要被写入成功到 ISR 多少个副本才算 "已提交", 建议 设置 min.insync.replicas > 1, 这样才可以提升消息持久性,保证数据不丢失。

另外我们还需要确保一下 replication.factor > min.insync.replicas , 如果相等,只要有一个副本异常 Crash 掉,整个分区就无法正常工作了,因此推荐设置成: replication.factor = min.insync.replicas +1 , 最大限度保证系统可用性。

Consumer 端解决方案

在剖析 Consumer 端丢失场景的时候,我们得出其拉取完消息后是需要提交 Offset 位移信息的,因此为了不丢数据,正确的做法是: 拉取数据、 业务逻辑处理、 提交消费 Offset 位移信息。

我们还需要设置参数 enable.auto.commit = false, 采用手动提交位移的方式。

另外对于消费消息重复的情况,业务自己保证幂等性, 保证只成功消费一次即可 

05 总结

这里,我们一起来总结一下这篇文章的重点。

1、从 Kafka 整体架构上概述了可能发生数据丢失的环节。

2、带你剖析了 「 消息传递语义 」 的概念, 确定了 Kafka 只对 「 已提交 」 的消息做 「 最大限度的持久化保证不丢失 」 。

3、带你剖析了 Producer、Broker、Consumer 三端可能导致数据丢失的场景以及具体的高可靠解决方案。

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

相关文章

  1. 从0编写区块链:用python解释区块链最基本原理

    人工智能和区块链诞生至今已经有了十几年&#xff0c;当这些技术出现时&#xff0c;人们都说他们会改变世界&#xff0c;但至今为止&#xff0c;这两项技术对现实的影响依然有限。从技术上看人工智能的原理其实是从大量数据中寻找规律或模式&#xff0c;但区块链的技术原理是什…...

    2024/4/18 16:40:37
  2. 实现“双碳”目标,“一汽大众们”的经济账

    &#xff08;封面图&#xff09; 文|智能相对论 作者|Alex Chiang 实现全社会的“双碳”目标&#xff0c;交通出行行业责任重于泰山。 据统计&#xff0c;2008年至2018年&#xff0c;我国交通领域CO2排放增长5.8亿吨&#xff0c;其中5.1亿吨来自于道路交通&#xff0c;占总…...

    2024/4/14 6:30:20
  3. 【LeetCode】93. 复原 IP 地址

    题目&#xff1a;93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用.分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “…...

    2024/4/7 16:33:44
  4. git(手册)

    欢迎访问子曰个人博客&#xff08;http://zisay.cn&#xff09; 一、安装 1、设置本地计算机上的用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" 2、初始化本地仓库&#xff0c;选择你要作为仓库的文件夹…...

    2024/4/14 6:30:05
  5. easy Connect拉起虚拟网卡失败,请确保虚拟网卡已经安装在系统上并处于启用状态,然后再重新登录解决此问题。

    我出现的问题&#xff1a;打开后知网还有其他三个点不开&#xff0c;显示服务正在启动中&#xff0c;最后就是点不开 已解决&#xff0c;查其原因为虚拟显卡的问题 首先----检查情况是否有黄色感叹号 首先打开设备管理器检查网络适配器中是否如下图中的一样没有出现感叹号的…...

    2024/4/14 6:30:05
  6. 面向机器翻译的运输词表学习方案

    更多分享请关注公众号 系统之神与我同在 词汇表在NLP的各项任务(如NER、情感分析、翻译、对话、总结)中都扮演着至关重要的作用&#xff0c;生成词汇表几乎是所有任务中必不可少的第一步。那么如何生成最佳的词汇表&#xff1f;这一问题可以分为两个小问题&#xff1a; Q1&am…...

    2024/4/14 6:30:00
  7. 【设计模式】生成器模式

    生成器模式 生成器模式的定义&#xff1a; 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示 要实现同样的构建过程可以创建不同的表现&#xff0c;那么一个自然的思路就是先把构建过程独立出来&#xff0c;在生成器模式中把它称为指导者…...

    2024/4/19 14:31:14
  8. 前端高效开发必备的 js 库

    之前有很多人问学好前端需要学习哪些 js 库, 主流框架应该学 vue 还是 react ? 针对这些问题, 笔者来说说自己的看法和学习总结. 首先我觉得在学习任何知识之前必须要有一个明确的学习目标, 知道自己为什么要学它, 而不是看网上说的一股脑的给你灌输各种知识, 让你学习各种库…...

    2024/4/14 6:29:50
  9. windows下搭建redis集群

    1、下载Ruby&#xff0c;运行集群脚本要用到&#xff0c;下载地址https://rubyinstaller.org/downloads/https://rubyinstaller.org/downloads/ 2、复制redis文件 再redis安装目录建立文件夹&#xff0c;以端口命名&#xff0c;把文件全部复制进去就可以了 3、修改配置 4、启动…...

    2024/4/14 6:29:55
  10. 重温一次oath2.0的配置

    准备工作针对资源和认证服务器分别进行不同的配置授权服务器配置资源服务器配置接下来我们就进行授权码模式的测试&#xff1a;首先是获取授权码用授权码换取access_token使用access_token读取用户资源样例基本依赖UserDetails 样例loadUsername样例别人的security配置样例别人…...

    2024/4/5 4:20:24
  11. Spring Boot实现 CORS 跨域资源共享

    CORS 是一个 W3C 标准&#xff0c;全称叫做"跨域资源共享"&#xff08;Cross-Origin resource sharing&#xff09;&#xff1b; 在详细介绍 CORS 之前先简单介绍下什么是同源政策&#xff0c;这样才能了解到 CORS 的由来|必要性。 浏览器同源政策 "同源政策&…...

    2024/4/14 6:30:05
  12. PCIE详解

    本博客整理自网络&#xff0c;仅供学习参考&#xff0c;如有侵权&#xff0c;联系删除。邮箱&#xff1a;rom100163.com。 原文链接&#xff1a;[转]老男孩读pcie - yimuxi - 博客园 一.从PCIe速度说起 PCIe发展到现在&#xff0c;从PCIe 1.0&#xff0c;PCIe 2.0&#xff0c…...

    2024/4/14 6:30:05
  13. 《IDEA Plugin 开发手册》• 小傅哥.pdf | 4章12节,完稿发版

    作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 一、前言 &#x1f4a5;为什么&#xff1f;写写快乐的热门文章不好吗&#xff01; 从开始准备成体系的编写 IDEA Plugin 知识内…...

    2024/4/17 16:04:54
  14. 微信小程序源码获取方式

    1.登录微信&#xff0c;从微信访问小程序之后会在微信文件目录生成微信小程序的加密包&#xff08;C:\Users\Administrator\Documents\WeChat Files\Applet&#xff09;&#xff0c;路径可右键微信中的图片获取 2.解密工具 https://pan.baidu.com/s/1OEp0_CSdXYYSZzQIc4Pshw 提…...

    2024/4/18 8:58:10
  15. LeetCode Day7【数据结构】有效的数独,矩阵置零

    LeetCode Day7【数据结构】有效的数独,矩阵置零36 Valid Sudoku有效的数独73 Set Matrix Zeroes矩阵置零36 Valid Sudoku有效的数独 题目 暴力循环找重复&#xff0c;按照题目要求的三个条件一个个找&#xff0c;代码&#xff1a; class Solution {public boolean isValidSud…...

    2024/4/14 6:29:55
  16. 服务拆分及远程调用

    服务拆分及远程调用 服务拆分 服务拆分注意事项&#xff1a; 单一职责&#xff1a;不同微服务&#xff0c;不要重复开发相同业务数据独立&#xff1a;不要访问其它微服务的数据库面向服务&#xff1a;将自己的业务暴露为接口&#xff0c;供其它微服务调用 远程调用 步骤一 注…...

    2024/4/18 16:04:25
  17. Hadoop生态圈(十四)- HDFS小文件解决方案

    目录前言1. Hadoop Archive归档1.1 创建Archive1.2 查看Archive1.2.1 查看归档之后的样子1.2.2 查看归档之前的样子1.3 提取Archive1.4 Archive使用注意事项2. Sequence File2.1 Sequence File介绍2.2 Sequence File优缺点2.3 Sequence File格式2.3.1 未压缩格式2.3.2 基于reco…...

    2024/4/14 6:31:11
  18. C语言二:C常量、整数常量、浮点常量、字符常量、转义序列、字符串常量、定义常量、C存储类(auto、register、static、extern)

    C常量 常量是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。 常量可以是任何的基本数据类型&#xff0c;比如整数常量、浮点常量、字符常量&#xff0c;或字符串字面值&#xff0c;也有枚举常量。 常量就像是常规的变量&#xff0c;只不…...

    2024/4/14 21:40:07
  19. 服务器安全管理

    服务器安全分为内部和外部安全。 外部的话是来防入侵、防cc、ddos攻击&#xff0c;内部的话是防木马病毒的执行。自安全策略、补丁、弱口令安全检测、防病毒、资源监控、文件目录保护、定期杀毒这些都是服务安全所包含的范畴。 深信达MCK主机加固系统&#xff0c;构建独立的身…...

    2024/4/14 6:30:56
  20. [PyQt5】一个小软件的制作过程02 | 页面跳转

    【PyQt5】一个小软件的制作01 | Qt Designer设计界面 本软件界面功能的实现主要是基于pycharm完成的&#xff0c;其中包括页面的跳转、各按钮功能实现、获得页面填写内容、显示图片、查找信息、删除信息等等。这一篇主要讲的是页面跳转&#xff0c;其余功能会在后续文章中记录。…...

    2024/4/14 6:30:36

最新文章

  1. 【Linux】进程的地址空间

    一、看现象 1 #include<stdio.h>2 #include<unistd.h>3 4 int g_val 100;5 int main()6 {7 printf("father process is running!pid: %d,ppid: %d\n",getpid(),getppid( ));8 sleep(1);9 10 int id fork();11 if(id 0)12 {13 int cn…...

    2024/4/20 7:21:58
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. DM数据库状态

    DM 数据库包含以下几种状态&#xff1a; 配置状态&#xff08;MOUNT&#xff09;&#xff1a; 不允许访问数据库对象&#xff0c;只能进行控制文件维护、归档配置、数据库模式修改等操作&#xff1b;打开状态&#xff08;OPEN&#xff09;&#xff1a; 不能进行控制文件维护、…...

    2024/4/18 15:26:52
  4. 基于.NET Core开发的轻量级分布式配置中心

    前言 今天给大家推荐一个基于.NET Core开发的轻量级分布式配置中心&#xff1a;AgileConfig。 AgileConfig官方介绍 AgileConfig秉承轻量化的特点&#xff0c;部署简单、配置简单、使用简单、学习简单&#xff0c;它只提取了必要的一些功能&#xff0c;并没有像Apollo那样复…...

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

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

    2024/4/19 14:24:02
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

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

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

    2024/4/19 11:57:31
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/19 11:57:31
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/4/19 11:57:53
  11. 【外汇早评】美欲与伊朗重谈协议

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

    2024/4/19 11:58:14
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/4/19 11:58:20
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/19 23:45:49
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

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

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

    2024/4/19 11:58:51
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/20 3:12:02
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/19 11:59:15
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/19 11:59:23
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/4/19 11:59:44
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/4/19 11:59:48
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

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

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

    2024/4/19 12:00:25
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/19 12:00:40
  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