当前位置: 首页 > news >正文

做自适应网站/电商运营助理

做自适应网站,电商运营助理,杭州做网站的好公司有哪些,做网站page1、kafka消息发送的流程? 在消息发送过程中涉及到两个线程:一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列,sender 线程不断从双端队列 RecordAccumulator 中拉取…

1、kafka消息发送的流程?

在消息发送过程中涉及到两个线程:一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列,sender 线程不断从双端队列 RecordAccumulator 中拉取消息发送到 Kafka Broker

外部数据(生产者)发送消息经过 main 线程,其中数据在 main 线程中先经过拦截器、序列化器、分区器后被推送到双端队列中。双端队列(RecordAccumulator缓冲区总大小默认是 32MB,这个值可以调整)。数据在双端队列中被分为多个双端队列的容器(当双端队列的容器 batch.size 的数据累计到 16KB 的时候会自动发送到 sender 端;还有一种情况是数据不满足 16KB 的时候,可以设置 sender 等待 linger.ms 设置时间,时间到了之后就会发送数据,单位是 ms,默认值是 0ms,延迟建议设置在 5 - 100ms 之间)。

当数据满足以上条件的时候,sender 从双端队列 RecordAccumulator 去拉取数据。当数据到达 sender 线程的时候,数据会被封装成多个分区的请求(默认一个连接最多可以发送 5 个请求)发送到 Kafka 集群。每发送一个请求,sender 会等待 Kafka 集群返回一个确认(ack)。如果消息发送成功,会收到 ack 确认;如果没有收到 ack(比如网络故障、Kafka 集群繁忙等情况),为了重新发送消息,有重试机制,重试发送的时间间隔默认是 100ms,并且可以设置重试次数(默认是Integer.MAX_VALUE即 2147483647)。经过这些步骤后,消息就会进入 Kafka 集群。

2、Kafka 的设计架构你知道吗

kafka的框架主要有以下的几个方面构成:

1、Producer:消息生产者,负责创建消息并将其发送到 Kafka 集群

2、Consumer:消息消费者,从 Kafka 集群中拉取消息进行处理

3、Consumer Group(CG):消费者组,由多个 consumer 消费者组成,消费者组内的每个消费者负责消费不同分区的数据,一个分区只能有一个组内的消费者消费,消费者租之间互不影响。所有消费者组,即消费者组是逻辑上的一个订阅者。

4、Broker:一台kafka服务器就是一个broker,一个集群由多个broker组成。

5、Topic:队列,生产者消费者都面向一个topic

6、Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。

7、Replica:副本,每一个topic都有很多个副本,一个Leader和多个Follower

8、Leader:主副本 每个分区多个副本的“领导者”生产者发送数据的对象 和 消费者拉取数据的对象都属 Leader

9、follower:从副本 保持和Leader 数据同步,备份数据,防止Leader崩溃数据丢失。

Leader 发生故障时,某个 Follower 会成为新的 Leader。

3、Kafka 分区的目的?

(1)便于合理使用存储资源,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块的数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。

(2)提高并行度,生产者可以以分区为单位发送数据;消费者可以以分区为单位进行消费数据。

4、你知道 Kafka 是如何做到消息的有序性?

保证消息的有序性需要依赖以下几个机制和策略:

1、单一分区内的消息有序,每一个topic内只有一个partation分区,因为分区内有序,可以将所有消息发送到一个分区内,在创建一个topic的时候可以将分区数调为1

2、使用幂等性生产者(默认自动开启),幂等性主要是防止生产者重复发送消息,并且发送到一个分区,保证消息的有序性

一、分区内消息有序性

  1. 分区机制
    • Kafka 的 Topic 是由一个或多个分区(Partition)组成的。在每个分区内部,消息是按照一定的顺序存储和追加的。这个顺序通常是由生产者发送消息的时间顺序或者由生产者指定的消息键(key)来决定的。
    • 当生产者发送消息时,如果只使用一个分区(即将 Topic 的分区数设置为 1),那么所有消息会按照发送的先后顺序依次追加到这个分区的日志文件中。
    • 但是,将 Topic 的分区数设置为 1 会限制系统的吞吐量。因为 Kafka 通过分区来实现并行处理,多个分区可以让多个生产者和消费者同时工作。所以这种方式在对消息顺序要求极高,且对吞吐量要求不高的场景下比较适用。
  1. 消息键(key)的使用
    • 生产者可以为消息指定一个键(key)。当指定了键之后,Kafka 会根据这个键来计算消息应该被发送到哪个分区。通常是通过对键进行哈希运算,将具有相同键的消息发送到同一个分区。

二、幂等性生产者保证消息有序性

1.幂等性原理

  • Kafka 从 0.11 版本开始引入了幂等性生产者。
  • 幂等性是指生产者在发送消息时,对于具有相同消息键(key)和分区(Partition)的消息,无论发送多少次,在 Kafka 服务端只会持久化一次。
  • 生产者在发送消息时,会为每个消息生成一个唯一的标识符(PID,Producer ID)和一个序列号(Sequence Number)。PID 是生产者的唯一标识,序列号用于标记每个消息的发送顺序。当 Kafka 服务端接收到消息时,会根据 PID 和序列号来判断消息是否已经接收过。

2.结合分区的作用

  • 幂等性生产者和分区机制相结合可以更好地保证消息的有序性。当消息具有相同的键并且被发送到同一个分区时,幂等性可以防止因为生产者重试等原因导致的重复消息插入到分区中间,破坏消息顺序。

5、ISR、OSR、AR 是什么?

AR = ISR + OSR

AR(Assigned Repllicas)是指一个分区的所有副本集合:Kafka 分区中的所有副本(包含Leader)统称为 AR

ISR是 AR 的一个子集,表示和 Leader 保持同步的副本集合(包括 Leader 本身)。如果 Follower 长时间未向 Leader 发送通信请求或落后太多而不能在规定时间内同步数据,则该 Follower 将被踢出 ISR。Leader 发生故障之后,kafka就会从 ISR 中选举新的 Leader。

OSR是 AR 中除 ISR 之外的副本集合表示 Follower 与 Leader 副本同步时,延迟过多而不能跟上 Leader 进度的副本。

判断一个 Follower 是否在 ISR 中的依据是 它在可配置的时间(由 replica.lag.time.max.ms 参数设定,默认 10s)内能够跟上 Leader 副本的消息写入进度。(这里的进度主要是通过比较副本最后一次写入消息的偏移量(offset)来衡量)

6、Kafka 在什么情况下会出现消息丢失?

0:生产者发送过来的数据,不需要等数据落盘应答

假如发送了Hello 和 World两个信息,Leader直接挂掉,数据就会丢失

生产者 ---> Kafka集群 一放进去就跑

1:生产者发送过来的数据,Leader收到数据后应答

生产者把数据发送给了Leader,leadr收到数据后应答,生产者就以为数据发送成功了。但是此时,leader挂掉了,但是Follower 并没有同步数据过来,Follower此时变成了leader,这个时候数据就会丢失,因为此时的Leader的数据是follower没有同步完的数据,导致消息丢失。(图1)

-1(all)生产者发送过来的数据,Leader和ISR队列里所有节点收齐数据后应答

leader收到数据后所有的follower开始同步数据,但是这时候有一个follower副本挂掉了,然后迟迟不能同步数据,但是leadr也挂断了然后选举了那个坏的follower作为leader导致数据丢失。(图2)

思考:Leader收到数据,所有Follower都开始同步数据, 但有一个Follower,因为某种故障,迟迟不能与Leader进行同步,那这个问题怎么解决呢?

解决方案:

Leader维护了一个动态的in-sync replica set(ISR),意味和 Leader保持同步的Follower+Leader集合(leader:0,ISR:0,1,2)

如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值由replica.lag.time.max.ms参数设定,默认30s。

例如2超时,(leader:0, isr:0,1)。 这样就不用等长期联系不上或者已经故障的节点。

7、怎么尽可能保证 Kafka 的可靠性?

如果分区副本设置为1个(只有一个leader),或者ISR里应答的最小副本数量 ( min.insync.replicas 默认为1)设置为1,和ack=1的效果是一样的,仍然有丢数的风险(Leader:0,ISR : 0)。

数据完全可靠条件 = ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2

副本数是2,但是ISR中不一定有两个,因为会挂掉。

可靠性总结:

acks=0,生产者发送过来数据就不管了,可靠性差,效率高;

acks=1,生产者发送过来数据Leader应答,可靠性中等,效率中等;

acks=-1,生产者发送过来数据Leader和ISR队列里面所有Follwer应答,可靠性高,效率低;

在生产环境中,acks=0很少使用;acks=1,一般用于传输普通日志,允许丢个别数据;

acks=-1,一般用于传输和钱相关的数据,对可靠性要求比较高的场景。

8、Kafka中如何做到数据唯一,即数据去重?

重复原因:

当ask为-1的时候,可能出现数据重复问题,数据发送给了Leader,follower也同步成功了,此时准备应答 ask为-1的时候Leader挂了,Follower顶上,由于发送者不知道数据已经发送成功,会给新的Leader再发消息,此时数据重复。

去重:

Exactly Once:数据唯一

开启幂等性(幂等性,就是producer无论向broker发送多少重复的数据,只能是持久化的一条数据,保证数据的不重复,幂等性是默认开启的,类似于distinct)

数据唯一:幂等性+ack-1+分区副本数大于等于2+isr最下副本数大于等于2(不停机情况下)

但是幂等性只能保证在服务器不停机的情况下不会出现重复数据,当服务器运行的时候突然停机,就会出现leader重新阅读的情况导致数据丢失,这时候需要开启事务

事务:开启事务的前提要开启幂等性,生产者请求kafka服务器一个唯一id、这个id不能重复(幂等性需要),然后服务器返回这个id、,然后消费者发送信息请求给kafka,然后kafka给生产者一个返回值这时候生产者发送数据给topic,kafka事务协调器进行持久化请求给transacti分区(这个分区默认有50个分区,每个分区负责一部分事务)

当开始幂等性+事务+ack-1+分区副本大于等于2+isr最小分区副本大于等于2 就可以保证数据的唯一性(可能存在停机的情况下,用)

9、生产者如何提高吞吐量?

在消息发送过程中双端队列中调节batch.size:批次大小,默认16k(可以调大一点),linger.ms:信息等待时间调到(5~100ms),compression.type:压缩snappy (压缩类型有none、gzip、snappy、lz4 和 zstd),RecordAccumulator:缓冲区大小,修改为64m(默认32m)

10、zk在kafka集群中有何作用?

  1. 集群元数据管理
    • 在 Kafka 集群中,Zookeeper(ZK)用于存储和管理集群的元数据信息。元数据包括主题(Topic)的信息,如主题的名称、分区(Partition)数量、每个分区的副本(Replica)分配情况等。
    • 同时,Zookeeper 还记录了 Broker 的信息,包括每个 Broker 的唯一标识(broker.id)、主机地址和端口号等。这些信息使得 Kafka 集群中的各个组件(如生产者、消费者)能够方便地发现和定位集群中的其他组件,以及了解集群的整体拓扑结构。
  1. 集群成员管理
    • Zookeeper 用于维护 Kafka 集群中 Broker 的成员状态。当一个 Broker 加入或离开集群时,它会在 Zookeeper 中更新相应的状态信息。例如,通过在 Zookeeper 中创建或删除临时节点来表示 Broker 的加入或离开。
    • 这种成员管理方式对于集群的自动发现和动态扩展非常重要。其他 Broker 和客户端(生产者、消费者)可以通过监听 Zookeeper 中的节点变化来及时了解集群的成员动态。当新的 Broker 加入时,生产者和消费者可以根据新的集群状态调整消息的发送和接收策略,比如重新平衡消费者组内的分区分配。
  1. 选举机制支持
    • 在 Kafka 中,一些关键的选举过程依赖于 Zookeeper。例如,当分区(Partition)的主副本(Leader)出现故障时,需要从副本(Follower)中选举出一个新的 Leader。这个选举过程通常是借助 Zookeeper 来实现的。
    • Zookeeper 提供了一种分布式协调服务,通过它可以实现基于多数投票或者其他选举算法的 Leader 选举。在选举过程中,各个副本会在 Zookeeper 中竞争创建一个特定的临时节点,成功创建节点的副本将成为新的 Leader。这种选举机制保证了在主副本故障时,能够快速、公平地选出新的 Leader 来维持集群的正常运行。
  1. 消费者组管理与偏移量存储
    • 对于消费者组(Consumer Group),Zookeeper 用于协调消费者组内的消费者。它可以记录消费者组的成员信息,如每个消费者的唯一标识等。并且,在旧版本的 Kafka 中,消费者的消费偏移量(Offset)也是存储在 Zookeeper 中的。
    • 当消费者组内的消费者发生变化(如消费者加入或离开)时,Zookeeper 帮助协调分区的重新分配。同时,消费者会定期将自己的消费偏移量提交到 Zookeeper,这样在消费者重启或者重新加入消费者组时,可以从 Zookeeper 中获取上次的消费偏移量,从而继续从上次的位置进行消费。不过,在较新的 Kafka 版本中,也可以将偏移量存储在 Kafka 内部主题(__consumer_offsets)中,减少对 Zookeeper 的依赖。

11、简述kafka集群中的Leader选举机制

  1. 控制器(Controller)选举
    • 在 Kafka 集群启动时,每个 Broker 都会尝试在 Zookeeper(ZK)中创建一个特殊的临时节点(例如 “/controller”)来竞争成为控制器。第一个成功创建该节点的 Broker 就会被选举为控制器(Controller Leader)。
    • 控制器负责整个集群的管理工作,包括监控 Broker 的上线和下线情况,以及管理所有 Topic 分区副本的 Leader 选举等诸多事务。例如,当有新的 Broker 加入集群时,控制器会感知到并进行相应的处理;当有 Broker 下线时,控制器也会协调相关的资源回收等操作。
    • 被选举为控制器的 Broker 会将自身的节点信息存储到 Zookeeper 的相关节点(如记录 ISR 等信息的节点)中,方便其他组件获取集群管理相关的信息。
  1. 分区副本 Leader 选举(基于控制器)
    • 当一个分区的 Leader 副本出现故障时,控制器会负责协调选举新的 Leader。控制器首先会查看该分区的 ISR(In - Sync Replicas)列表。ISR 是与原 Leader 保持同步的副本集合,这些副本中的数据与 Leader 的数据在一定程度上是一致的,这一一致性程度是由replica.lag.time.max.ms参数控制的。
    • 选举新 Leader 的依据是在 ISR 中存活的副本,并且通常会按照 AR(Assigned Replicas,即该分区所有分配的副本)中的某种顺序进行选择。例如,假设 AR 是 [1,0,2],ISR 也是 [1,0,2],那么按照这个顺序优先考虑副本 1 作为新的 Leader。如果副本 1 不可用,就会考虑副本 0,以此类推。这种轮询查询的方式确保了能够从与原 Leader 数据同步程度较高的副本中快速选出新的 Leader,从而减少对消息服务的中断时间。
    • 控制器在选举出新的 Leader 后,会向集群中的所有 Broker 发送通知,告知它们该分区新的 Leader 是谁,以便其他副本能够及时调整自己的角色(从副本开始从新 Leader 处同步数据),同时也让生产者和消费者知道可以和新的 Leader 进行消息交互。

当选举leader的时候,kafka集群中有一个broker的controller会被选举为controller Leader,负责管理集群broker的上下线,所有topic的分区副本分配和Leader选举等工作。

contorllet依赖于zookeeper,启动集群的时候会在zk中注册记录,然后将节点信息上传到zk isr【】中,谁先注册谁就是leader如果集群的某一个leader挂掉的话,contorller会监听到broker节点变化,然后选举新的leader(选举规则:在ISR中存活为前提,按照AR(kafka分区中的所有副本统称)中的排序优先选)例如AR【1,0,2】 ISR【1,0,2】那么选举顺序就是1,0,2轮询查询,最后更新Leader和ISR。

12、kafka是如何处理数据乱序问题的。

出现乱序的原因:

1)生产者在发送3请求的时候,发生异常,发生异常需要重新发送,所以排在了后面,在进行落盘的时候,先落盘1,2 ,落盘3的时候发现是4,需要等,等到3出现为止,然后将 3,4 ,5排序,排序后再进行落盘。

顺序错乱了,会自动排序(开启幂等性)。

kafka在1.0之前版本保证分区有序,是采用:max.in.flight.requests.per.connection=1(不需要考虑是否开启幂等性)

1.0及以后的版本采用,开启幂等性,然后设置max.in.flight.requests.per.connection需要设置小于等于5, 未开启幂等性:max.in.flight.requests.per.connection需要设置为1,

启用幂等性,kafka服务端会缓存producer的5个request的元数据,这都可保证最近5个request的数据是有序的

13、kafka中节点如何服役和退役

服役:

1、需要创建以下json,创建一个均衡的主题,然后生成一个负载均衡的计划(kafka-reassign-partitions.sh --bootstrap-server bigdata01:9092 --topics-to-move-json-file topics-to-move.json --broker-list "0,1,2,3" --generate)

2、执行之前写的json,然后将生成的未来分区策略复制,

3、创建副本存储计划(所有副本存储在 broker0、broker1、broker2、broker3 中),

4、然后执行副本存储计划,

5、验证副本存储计划

退役:先按照退役一台节点,生成执行计划,然后按照服役时操作流程执行负载均衡

1、创建json 创建一个负载均衡主题

2、创建执行计划

3、创建副本存储计划

4、执行副本

5、验证副本存储计划

总结:

kafka节点的服役和退役的节点操作是相同,均是将主题中的数据均匀的分配到新增或者删除节点之外的borker中。

14、Kafka中Leader挂了,Follower挂了,然后再启动,数据如何同步?

由于数据同步的时候先进入Leader,随后同步给Follower,假如Follower挂掉了,Leader和其他的Follower 继续往前存储数据,挂掉的节点从ISR集合中剔除,此时挂掉的Follower又重启了,它会先从上一次挂掉的节点的HW开始同步数据,直到追上最后一个Follower为止,此时会重新回归ISR。

Follower 恢复启动:当 Follower 节点重新启动后,它会向 Controller 发送请求,获取自己所属分区的 leader 信息以及 ISR 集合信息。然后,Follower 会根据这些信息与 leader 建立连接,并从 leader 副本拉取自己落后的数据进行同步。在同步过程中,Follower 会不断向 leader 发送 FetchRequest 请求,获取消息数据,并将其写入本地日志文件,直到与 leader 的数据差距缩小到 ISR 所允许的范围内,此时该 Follower 会重新加入 ISR 集合,完成数据同步过程。

Leader 恢复启动:如果 Leader 节点重新启动,它首先会检查本地的日志数据是否完整。如果数据完整,它会向 Controller 注册自己,并等待 Controller 协调其他副本与它进行数据同步(如果有需要)。Controller 会根据之前记录的元数据信息,通知其他 Follower 副本与新启动的 leader 进行同步操作,确保各个副本的数据一致性。如果 leader 节点发现本地数据不完整(例如在宕机前某些数据未持久化到磁盘),则可能需要根据具体情况进行数据恢复操作,如从其他副本或备份中获取缺失的数据,然后再进行同步操作,以保证整个分区的数据完整性和一致性。

15、kafka中初始化的时候Leader选举有一定的规律,如何打破这个规律呢?

  1. 调整副本列表顺序
    • 可以手动调整 AR(Assigned Replicas)或 ISR(In - Sync Replicas)中副本的顺序。例如,在创建主题或修改分区副本分配时,改变副本的排列顺序,使得选举时优先考虑不同的副本。
  1. 修改选举策略相关参数
    • 改变replica.lag.time.max.ms参数,影响副本进入或退出 ISR 的条件。这样可能会改变选举时 ISR 中的副本集合,从而打破原有的选举顺序。例如,缩短这个时间,让一些原本可能在 ISR 中的副本被排除在外,改变了选举的候选范围。

相关文章:

大数据面试题--kafka夺命连环问

1、kafka消息发送的流程? 在消息发送过程中涉及到两个线程:一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列,sender 线程不断从双端队列 RecordAccumulator 中拉取…...

【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解

目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…...

Zabbix如何配置将信息发送到邮件

申请邮箱,下面以QQ邮箱为例 1.1登录邮箱后,点击设置->账号 1.2开启服务 1.3点击生成授权码(这里生成的授权码记得保存,后面要用到) 创建报警媒介类型 2.1点击管理/媒介/Email 2.2编辑 Email,这里配置的…...

jmeter常用配置元件介绍总结之前置处理器、测试片段

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作,优先级比取样器高,用来处理一些…...

Redis2:Redis数据结构介绍、通用命令、String类型、Key的层级格式

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

jenkins流水线pipeline

创建项目 1. 新建item 并选择pipeline 1.1 和普通项目配置的区别 普通项目配置目录: pipeline项目目录: pipeline的两种语法 声明式语法 2. 配置 2.1 流水线配置 2.2 选择声明式 声明式需要添加一个名为Jenkinsfile的文件实现流水线 Jenkinsfile的…...

【计网】基于TCP协议的Echo Server程序实现与多版本测试

目录 前言: 1、InitServer类的实现 1.1. 创建流式套接字 1.2. bind 绑定一个固定的网络地址和端口号 1.3.listen监听机制 1.4.完整代码 2. 循环接收接口与服务接口 2.1.accept函数讲解 讲个商场拉客的故事方便我们理解: 2.2.服务接口实现 3.服…...

「QT」几何数据类 之 QVector2D 二维向量类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

深度学习——权重初始化、评估指标、梯度消失和梯度爆炸

文章目录 🌺深度学习面试八股汇总🌺权重初始化零初始化 (Zero Initialization)随机初始化 (Random Initialization)Xavier 初始化(Glorot 初始化)He 初始化正交初始化(Orthogonal Initialization)预训练模型…...

Rust: 利用 chrono 库实现日期和字符串互相转换

在 Rust 中,日期和字符串之间的转换通常涉及 chrono 库,这是一个功能强大的日期和时间处理库。以下是如何在 Rust 中将日期转换为字符串以及将字符串转换为日期的示例。 首先,你需要在你的 Cargo.toml 文件中添加 chrono 依赖: …...

【IEEE/EI会议】第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)

会议通知 会议时间:2025年4月25-27日 会议地点:中国南京 会议官网:www.aemcse.org 会议简介 第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)由南京信息工程大学主办,将于2025年4月25日…...

volatile 关键字的作用学习

转自: chatgpt 1.介绍 在 C 中,volatile 关键字的作用是告诉编译器一个变量的值可能在任何时刻被外部因素改变,编译器不能对其进行优化。这对于那些可能由硬件、其他线程或信号处理程序更改的变量特别有用。 当一个变量被声明为 volatile 时&#xff…...

数据字典是什么?和数据库、数据仓库有什么关系?

一、数据字典的定义及作用 数据字典是一种对数据的定义和描述的集合,它包含了数据的名称、类型、长度、取值范围、业务含义、数据来源等详细信息。 数据字典的主要作用如下: 1. 对于数据开发者来说,数据字典包含了关于数据结构和内容的清晰…...

Docker平台搭建方法

Docker平台搭建方法 1.1在VMware中创建两个虚拟机,只需要1个网卡,连接192.168.200.0网络。 虚拟机分配2个CPU,2G内存,60G硬盘,主机名分别为server和client,IP地址分别为192.168.200.137和192.168.200.138。server节点还兼做regis…...

JavaScript数组

目录 1. 基本概念 2. 创建数组对象 2.1 字面量创建 2.2 构造函数创建 2.3 静态方法Array.of() 2.4 静态方法Array.from() 2.5 空槽位 3. 常用实例方法 3.1 修改方法 3.11 push 和 unshift 3.12 shift 和 pop 3.13 fill 3.14 cpoyWithin 3.15 reverse 3.16 sort …...

产品经理如何使用项目管理软件推进复杂项目按时上线

前言 相信很多产品同学或多或少都有过这样的经历:平时没有听到任何项目延期风险,但到了计划时间却迟迟无法提测……评审时没有任何argue,提测后发现开发的功能不是自己想要的……费劲九牛二虎之力终于让项目上线了,然而发现成果达…...

构建基于 DCGM-Exporter, Node exporter,PROMETHEUS 和 GRAFANA 构建算力监控系统

目录 引言工具作用概述DCGM-ExporterNode exporterPROMETHEUSGRAFANA小结 部署单容器DCGM-ExporterNode exporterPROMETHEUSGRAFANANode exporterDCGM-Exporter 多容器Node exporterDCGM-ExporterDocker Compose 参考 引言 本文的是适用对象,是希望通过完全基于Doc…...

第13章 聚合函数

一、聚合函数介绍 实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。(可以是一个字段的数据,也可以是通…...

【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(4)

前言 大家好吖,欢迎来到 YY 滴计算机网络 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…...

C# 中 LibraryImport 和 DllImport有什么不同

libraryimport 和 dllimport 是两个与动态链接库(DLL)相关的术语,它们在不同的编程语言和上下文中有不同的含义和用途。 在 C# 中,DllImportAttribute 是一个特性,用于指示一个方法声明是作为对非托管 DLL 中函数的 P…...

PDF编辑工具Adobe Acrobat DC 2023安装教程(附安装包)

Adobe Acrobat DC 2023 是 Adobe 公司推出的一款功能强大的 PDF 文档处理软件。它不仅支持创建、编辑和签署 PDF 文件,还提供了丰富的工具来管理和优化这些文件。以下是 Acrobat DC 2023 的一些主要特点: 1.PDF 创建与编辑:用户可以直接从多…...

系动词、表语和主语补足语

系动词、表语和主语补足语 1. The classification of English verbs (英语动词的分类)2. 系动词 (连系动词)2.1. Grammatical function (语法功能) 3. 表语和主语补足语3.1. Predicative expression (表语)3.2. Subject complement (主语补足语) 4. Copula-like words4.1. List…...

【网络安全 | 并发问题】Nginx重试机制与幂等性问题分析

未经许可,不得转载。 文章目录 业务背景Nginx的错误重试机制proxy_next_upstream指令配置重试500状态码非幂等请求的重试问题幂等性和非幂等性请求non_idempotent选项的使用解决方案业务背景 在现代互联网应用中,高可用性(HA)是确保系统稳定性的关键要求之一。为了应对服务…...

Java 详解 接口

文章目录 一、概述1.1、何为接口1.2、接口的定义 二、特点2.1、接口的成员变量2.2、接口的成员方法2.3、接口中不可以含有构造器和代码块2.4、接口不可以实例化对象2.5、接口和类之间使用implements关键字进行连接2.6、当类在重写接口中的方法时,不可以使用默认的访…...

wordpress搬家迁移后怎么修改数据库用户名

在WordPress中修改数据库用户名,你需要更新WordPress的配置文件wp-config.php。以下是步骤和示例代码: 使用FTP客户端或文件管理器登录到你的网站的主机账户。 找到wp-config.php文件,它通常位于WordPress安装的根目录中。 打开wp-config.…...

C# 用于将一个DataTable转换为Users对象的列表

1&#xff1a;第一种例子&#xff1a; /// <summary> /// 用户名循环赋值 /// </summary> /// <param name"dt"></param> /// <returns></returns> public List<Users> FenPeiFillModelUsers(DataTable dt) { …...

Spark中的shuffle

Shuffle的本质基于磁盘划分来解决分布式大数据量的全局分组、全局排序、重新分区【增大】的问题。 1、Spark的Shuffle设计 Spark Shuffle过程也叫作宽依赖过程&#xff0c;Spark不完全依赖于内存计算&#xff0c;面临以上问题时&#xff0c;也需要Shuffle过程。 2、Spark中哪…...

网络安全SQL初步注入2

六.报错注入 mysql函数 updatexml(1,xpath语法,0) xpath语法常用concat拼接 例如: concat(07e,(查询语句),07e) select table_name from information_schema.tables limit 0,1 七.宽字节注入(如果后台数据库的编码为GBK) url编码:为了防止提交的数据和url中的一些有特殊意…...

使用Go语言编写一个简单的NTP服务器

NTP服务介绍 NTP服务器【Network Time Protocol&#xff08;NTP&#xff09;】是用来使计算机时间同步化的一种协议。 应用场景说明 为了确保封闭局域网内多个服务器的时间同步&#xff0c;我们计划部署一个网络时间同步服务器&#xff08;NTP服务器&#xff09;。这一角色将…...

注意力机制篇 | YOLO11改进 | 即插即用的高效多尺度注意力模块EMA

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。与传统的注意力机制相比&#xff0c;多尺度注意力机制引入了多个尺度的注意力权重&#xff0c;让模型能够更好地理解和处理复杂数据。这种机制通过在不同尺度上捕捉输入数据的特征&#xff0c;让模型同时关注局部细节和全局…...