Kafka 工作流程及文件存储机制

在这里插入图片描述

Topic 与 partition

物理层面:

  • topic 是逻辑上的概念,而 partition 是物理上的概念
  • 每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。
  • Producer 生产的数据会被不断追加到该 log 文件末端,且每条数据都有自己的 offset。
  • 消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次的位置继续消费。

逻辑层面:
在这里插入图片描述

  • 由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制,将每个 partition 分为多个 segment。
  • 每个 segment 对应两个文件——“.index” 文件和 “.log” 文件。
  • .index 文件存储大量的索引信息,.log文件 存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移地址。

Kafka 生产者

分区的策略

  • 可扩展性与稳定性:方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic 又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了;
  • 并发性: 可以提高并发,以 Partition 为单位进行读写。

partition 的取值原则

  • 指明 partition 的情况下,直接将指明的值直接作为 partiton 值;
  • 没有指明 partition 值但有 key 的情况下,将 key 的 hash 值与 topic 的 partition 数进行取余得到 partition 值;
  • 既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition 值,也就是常说的 round-robin 算法

数据可靠性的保证

  • 为保证 producer 发送的数据,能可靠的发送到指定的 topic,topic 的每个 partition 收到 producer 发送的数据后,都需要 向 producer 发送 ack(acknowledgement 确认收到)
  • 如果 producer 收到 ack,就会进行下一轮的发送,否则重新发送数据。

副本的同步策略

在这里插入图片描述
在这里插入图片描述
Kafka 选择了第二种方案,原因如下:

  • 同样为了容忍 n 台节点的故障,第一种方案需要 2n+1 个副本,而第二种方案只需要 n+1 个副本,而 Kafka 的每个分区都有大量的数据,第一种方案会造成大量数据的冗余。
  • 虽然第二种方案的网络延迟会比较高,但网络延迟对 Kafka 的影响较小

AR、ISR、OSR

  • 分区中的所有副本统称为AR(Assigned Replicas)。
  • 所有与 leader 副本保持一定程度同步的副本(包括leader副本在内)组成 ISR(In-Sync Replicas),ISR集合是AR集合中的一个子集。
  • 与 leader 副本同步滞后过多的副本(不包括 leader 副本)组成 OSR(Out-of-Sync Replicas)

全同步可能出现的问题的解决方案:ISR

设想以下情景:leader 收到数据,所有 follower 都开始同步数据,但有一个 follower,因为某种故障,迟迟不能与 leader 进行同步,那 leader 就要一直等下去, 直到它完成同步,才能发送 ack。这个问题怎么解决呢?

  • Leader 维护了一个动态的 in-sync replica set (ISR),意为和 leader 保持同步的 follower 集合。
  • 当 ISR 中的 follower 完成数据的同步之后,leader 就会给 follower 发送 ack。
  • 如果 follower 长时间未向 leader 同 步 数 据 , 则 该 follower 将 被 踢 出 ISR , 该时间阈值由 replica.lag.time.max.ms 参数设定。Leader 发生故障之后,就会从 ISR 中选举新的 leader.
  • 简单的可以理解为维护了一个动态的可用的从机表

ACK的应答级别

对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,所以没必要等 ISR 中的 follower 全部接收成功
Kafka 为用户提供了三种可靠性级别,用户根据对可靠性和延迟的要求进行权衡:

  • 0:producer 不等待 broker 的 ACK,这一操作提供了一个最低的延迟,broker 一接收到还没有写入磁盘就已经返回,当 broker 故障时有可能丢失数据;
  • 1:producer 等待 broker 的 ACK,partition 的 leader 落盘成功后返回 ack,如果在 follower 同步成功之前 leader 故障,那么将会丢失数据.
  • -1(all):producer 等待 broker 的 ack,partition 的 leader 和 follower 全部落盘成功后才返回 ack。但是如果在 follower 同步完成后,broker 发送 ack 之前,leader 发生故障,那么会造成数据重复.

副样本的一致性保证

Log 文件主要使用 HW 和 LEO 来完成数据的更新与同步。

  • LEO:指的是每个副本最大的 offset;
  • HW:指的是消费者能见到的最大的 offset,ISR 队列中最小的 LEO
    在这里插入图片描述

通过上面两个变量可以很好的处理下面两种故障:

  • follower 故障

    • follower 发生故障后会被临时踢出 ISR,待该 follower 恢复后,follower 会读取本地磁盘记录的上次的 HW,并将 log 文件高于HW 的部分截取掉,从 HW 开始向 leader 进行同步
    • 等该 follower 的 LEO 大于等于该 Partition 的 HW,即 follower 追上 leader 之后,就可以重新加入 ISR 了
    • 简单的说,故障后,从故障的时间戳开始同步leader数据直到赶上当前的读文件为止。
  • leader 故障

    • leader 发生故障之后,会从 ISR 中选出一个新的 leader
    • 之后,为保证多个副本之间的数据一致性,其余的 follower 会先将各自的 log 文件高于 HW 的部分截掉,然后从新的 leader同步数据

注意: 这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复。

Exactly-once 机制

Kafka在0.11.0.0之前的版本中只支持 At Least Once 和 At Most Once 语义,尚不支持Exactly Once语义。

  • At Least Once 就是设置 ACK 的应答模式为-1。即可以保证数据的可靠性传输但是可能造成数据的重复传输。
  • At Most Once 就是设置ACK应答模式为-1,每个数据直接接受一次,但是无法保证数据的可靠传输。
  • Exactly-once:对于一些非常重要的信息,比如说交易数据,下游数据消费者要求数据既不重复也不丢失。实现 Exactly-once 的核心思想就是利用接口的幂等性(在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同)。

实现过程:

  • 为了实现 Producer 的幂等语义,Kafka 引入了 Producer ID(即PID)和 Sequence Number。

    • 每个新的 Producer 在初始化的时候会被分配一个唯一的 PID,该PID对用户完全透明而不会暴露给用户。
    • 每个producer发送的每一条信息 <Topic,Partition> 都会对应一个从 0 开始递增的 Sequence Number
  • 类似地,Broker 端也会为每个 <PID, Topic, Partition> 维护一个序号,并且每次 Commit 一条消息时将其对应序号递增。

    • 对于接收的每条消息,如果其序号比 Broker 维护的序号(即最后一次Commit的消息的序号)大一,则 Broker 会接受它,否则将其丢弃:
    • 如果消息序号比 Broker 维护的序号大一以上,说明中间有数据尚未写入,也即乱序,此时Broker拒绝该消息,Producer抛出 InvalidSequenceNumber。
    • 如果消息序号小于等于Broker维护的序号,说明该消息已被保存,即为重复消息,Broker直接丢弃该消息,Producer抛出 DuplicateSequenceNumber
  • 可以简单的理解为,给生产者本身和其所生产的信息增加版本号,进而控制顺序和不可重复性

Exactly-once 能够解决的问题

  • Broker保存消息后,发送ACK前宕机,Producer认为消息未发送成功并重试,造成数据重复。
  • 前一条消息发送失败,后一条消息发送成功,前一条消息重试后成功,造成数据乱序。

事务性的实现

为了实现事务,应用程序必须提供一个稳定的(重启后不变)唯一的ID,也即 Transaction IDTransactin ID 与 PID 可能一一对应。区别在于 Transaction ID由用户提供,而 PID 是内部的实现对用户透明。

  • 在 Producer 恢复时,每次 Producer 通过 Transaction ID 拿到 PID 的同时,还会获取一个单调递增的epoch。由于旧的Producer的epoch比新Producer的epoch小,Kafka可以很容易识别出该Producer是老的Producer并拒绝其请求。即维护一个epoch+一个版本号

有了 Transaction ID 后,Kafka 可保证:

  • 跨 Session 的数据幂等发送。当具有相同Transaction ID 的新 Producer 实例被创建且工作时,旧的且拥有相同 Transaction ID 的 Producer 将不再工作。
  • 跨 Session 的事务恢复。如果某个应用实例宕机,新的实例可以保证任何未完成的旧的事务要么 Commit 要么 Abort,使得新实例从一个正常状态开始工作。

Kafka 消费者

  • consumer 采用 pull(拉)模式从 broker 中读取数据。
  • push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由 broker 决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成 consumer 来不及处理消息,(广播与订阅
  • pull 模式则可以根据 consumer 的消费能力以适当的速率消费消息
  • pull 模式不足之处是,如果 kafka 没有数据,消费者可能会陷入循环中,一直返回空数据。针对这一点,Kafka 的消费者在消费数据时会传入一个时长参数 timeout,如果当前没有数据可供消费,consumer 会等待一段时间之后再返回,这段时长即为 timeout
  • 在消费者消费时,每个分区同一时间只能被同一消费组中的唯一一个消费者消费,但是多个消费者组可以同事消费同一个partition.

分区分配策略

一个 consumer group 中有多个 consumer,一个 topic 有多个 partition,所以必然会涉及到 partition 的分配问题,即确定那个 partition 由哪个 consumer 来消费。

  • Kafka 有三种分配策略,RoundRobinRange 以及 StickyAssignor

将分区的所有权从一个消费者移到另一个消费者称为重新平衡(rebalance)。当以下事件发生时,Kafka 将会进行一次分区分配:

  • 同一个 Consumer Group 内新增消费者
  • 消费者离开当前所属的 Consumer Group,包括 shuts down 或 crashe
  • 订阅的主题新增分区

Range(默认策略)

Range 是对每个 Topic 而言的(即一个 Topic一个Topic分区)

  • 首先对同一个Topic里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。
  • 然后用 Partitions 分区的个数除以消费者线程的总数来决定每个消费者线程消费几个分区。如果除不尽,那么前面几个消费者线程将会多消费一个分区。
  • 弊端: 一般topic 都无法除尽,也就是说增对于每个topic 都会存在一些消费者多消费一个分区。每个topic都会给这个消费者增加一个分区,N个topic,该消费者就多增加N个分区由于编号了,所以每次都是固定的消费者多消费分区

RoundRobinAssignor

RoundRobinAssignor策略的原理是将消费组内所有消费者以及消费者所订阅的所有 topic的partition按照字典序排序,然后通过轮询消费者方式逐个将分区分配给每个消费者。

  • RoundRobinAssignor策略对应的partition.assignment.strategy参数值为:org.apache.kafka.clients.consumer.RoundRobinAssignor
  • 如果同一个消费组内所有的消费者的订阅信息都是相同的,那么RoundRobinAssignor策略的分区分配会是均匀的。

举例,假设消费组中有 2 个消费者 C0 和 C1,都订阅了主题 t0 和 t1,并且每个主题都有3个分区,那么所订阅的所有分区可以标识为:t0p0、t0p1、t0p2、t1p0、t1p1、t1p2。最终的分配结果为:
在这里插入图片描述
如上图,左->右->左->右…如此反复轮训,如果两个消费者的消费能力相同,且订阅信息相同,那么就会被均匀分配。
弊端:

  • 如果消费者订阅的Topic 不完全相同,如下
  • 假设消费组内有3个消费者C0、C1和C2,它们共订阅了3个主题:t0、t1、t2,这3个主题分别有1、2、3个分区,即整个消费组订阅了t0p0、t1p0、t1p1、t2p0、t2p1、t2p2这6个分区。
    在这里插入图片描述
    具体而言,消费者C0订阅的是主题t0,消费者C1订阅的是主题t0和t1,消费者C2订阅的是主题t0、t1和t2,那么最终的分配结果为:
    在这里插入图片描述
  • 可以看到RoundRobinAssignor策略也不是十分完美,这样分配其实并不是最优解,因为完全可以将分区t1p1分配给消费者C1,如下图:
    在这里插入图片描述

StickyAssignor分配策略

我们再来看一下 StickyAssignor 策略,“sticky”这个单词可以翻译为“粘性的”,Kafka从0.11.x版本开始引入这种分配策略,它主要有两个目的:

  • 分区的分配要尽可能的均匀;
  • 分区的分配尽可能的与上次分配的保持相同。
  • 当两者发生冲突时,第一个目标优先于第二个目标。

StickyAssignor的实现代码是RangeAssignor和RoundRobinAssignor的十倍,复杂度则远远在十倍以上。目前基本没有看到对这块源码实现的分析。我们举例来看一下StickyAssignor策略的实际效果。

1. 消费者订阅相同 Topic

  • 假设消费组内有3个消费者:C0、C1和C2,它们都订阅了4个主题:t0、t1、t2、t3,并且每个主题有2个分区,也就是说整个消费组订阅了t0p0、t0p1、t1p0、t1p1、t2p0、t2p1、t3p0、t3p1这8个分区。最终的分配结果如下:
    在这里插入图片描述
  • 这样初看上去似乎与采用RoundRobinAssignor策略所分配的结果相同,但事实是否真的如此呢?再假设此时消费者C1脱离了消费组,那么消费组就会执行再平衡操作,进而消费分区会重新分配。如果采用RoundRobinAssignor策略,那么此时的分配结果如下:
    在这里插入图片描述
  • 如分配结果所示,RoundRobinAssignor策略会按照消费者C0和C2进行重新轮询分配。而如果此时使用的是StickyAssignor策略,那么分配结果为:
    在这里插入图片描述
  • 可以看到分配结果中保留了上一次分配中对于消费者C0和C2的所有分配结果,并将原来消费者C1的“负担”分配给了剩余的两个消费者C0和C2,最终C0和C2的分配还保持了均衡。
  • 简单的说就是粘性操作,在发生重分配时,不进行全局的重分配,只将发生故障的消费者所对应的partition进行分配

2. 消费者订阅不同 Topic

举例,同样消费组内有3个消费者:C0、C1和C2,集群中有3个主题:t0、t1和t2,这3个主题分别有1、2、3个分区,也就是说集群中有t0p0、t1p0、t1p1、t2p0、t2p1、t2p2这6个分区。消费者C0订阅了主题t0,消费者C1订阅了主题t0和t1,消费者C2订阅了主题t0、t1和t2。

  • 如果此时采用RoundRobinAssignor策略,那么最终的分配结果如下所示(和讲述RoundRobinAssignor策略时的一样,这样不妨赘述一下):
    在这里插入图片描述
  • 如果此时采用的是StickyAssignor策略,那么最终的分配结果为:
    在这里插入图片描述
  • 消费者脱离消费组的情况 RoundRobin
    在这里插入图片描述
  • 而如果采用的是StickyAssignor策略,那么分配结果为:
    在这里插入图片描述
  • 可以看到StickyAssignor策略保留了消费者C1和C2中原有的5个分区的分配:t1p0、t1p1、t2p0、t2p1、t2p2。(针对结果集2, 保留了三个绿色的,结果集2如下图,做参照)。
    在这里插入图片描述

Kafka 高效读写数据 的原因

1、顺序写磁盘:

  • Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是一直追加到文件末端,为顺序写。
  • 同样的磁盘,顺序写能到 600M/s,而随机写只有 100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间

2、零复制技术:

  • 传统OP流程:
    • 1、第一次:将磁盘文件,读取到操作系统内核缓冲区;
    • 2、第二次:将内核缓冲区的数据,copy 到 application 应用程序的buffer;
    • 3、第三步:将application应用程序buffer中的数据,copy到socket网络发送缓冲区(属于操作系统内核的缓冲区);
    • 4、第四次:将socket buffer的数据,copy到网卡,由网卡进行网络传输。
      在这里插入图片描述
  • 零拷贝技术:尽可能的减少复制次数
    在这里插入图片描述Customer从broker读取数据,采用sendfile,将磁盘文件读到OS内核缓冲区后,直接转到socket buffer进行网络发送。

3、memory Mapped files

  • 将磁盘文件映射到内存, 用户通过修改内存就能修改磁盘文件。
  • 它的工作原理是直接利用操作系统的 Page 来实现文件到物理内存的直接映射。 完成映射之后,你对物理内存的操作会被同步到硬盘上(操作系统在适当的时候)。
  • mmap也有一个很明显的缺陷——不可靠,写到mmap中的数据并没有被真正的写到硬盘,操作系统会在程序主动调用flush的时候才把数据真正的写到硬盘。

Zookeeper 在 Kafka 中的作用

  • 配置管理
    Topic 的配置之所以能动态更新就是基于 zookeeper 做了一个动态全局配置管理。

  • 负载均衡
    基于zookeeper 的消费者,实现了该特性,动态的感知分区变动,将负载使用既定策略分配到消费者身上。

  • 命名服务
    Broker 将 advertised.portadvertised.host.name,这两个配置发布到zookeeper上的zookeeper的节点上/brokers/ids/BrokerId(broker.id),这个是供生产者,消费者,其它 Broker 跟其建立连接用的。

  • 分布式通知
    比如分区增加,topic变动,Broker上线下线等均是基于zookeeper来实现的分布式通知。

  • 集群管理和master选举
    我们可以在通过命令行,对 kafka 集群上的 topic partition 分布,进行迁移管理,也可以对 partition leader 选举进行干预
    Master选举,要说有也是违反常规,常规的master选举,是基于临时顺序节点来实现的,序列号最小的作为master。而kafka的Controller的选举是基于临时节点来实现的,临时节点创建成功的成为Controller,更像一个独占锁服务。

  • 分布式锁
    独占锁,用于 Controller 的选举。
    在这里插入图片描述

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

相关文章

  1. 每日一题(深搜索+枝剪,DP+组合数学)

    组合数学思路DP实现 整数划分 组合数学思路&#xff1a; 设想n个数分为k份是n个小球分入k个箱子中 那么就可以分为两种情况数量 1.至少一个箱子里只有一个小球 2.没有任何箱子里只有一个小球 对1 至少一个箱子有一个小球的情况和n-1个小球放入k-1个箱子的组合数相同 对2 为确…...

    2024/4/18 13:03:05
  2. 响应式开发与 Bootstrap

    响应式开发 1.响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式设置&#xff0c;从而适配不同设备 响应式布局容器 响应式需要一个父级作为布局容器&#xff0c;来配合子级元素来实现变化 原理就是在不同屏幕下&#xff0c;通过媒体查询来改变布局容器的…...

    2024/4/15 6:11:12
  3. Android图片加载库 Glide

    1.Glide基本使用 图片占位符、错误符与后备回调符 1.1 Glid的引入: Glide是一个快速高效的Android图片加载库&#xff0c;可以自动加载网络、本地文件&#xff0c;app资源中的图片&#xff0c;注重于平滑的滚动。 开源地址&#xff1a;https://github.com/bumptech/glide 中…...

    2024/4/20 1:41:11
  4. 进程间通信——管道

    匿名管道 我们先来看&#xff0c;我们常用的匿名管道&#xff08;Anonymous Pipes&#xff09;&#xff0c;也即将多个命令串起来的竖线&#xff0c;背后的原理到底是什么。 上次我们说&#xff0c;它是基于管道的&#xff0c;那管道如何创建呢&#xff1f;管道的创建&#x…...

    2024/4/15 6:11:22
  5. Navicat通过HTTP通道连接数据库

    Background 由于内网安全限制&#xff0c;或者网关限制&#xff0c;Navicat应用在本地无法常规地建立连接&#xff0c;访问远程数据库。 Premise 安装Navicat系列工具Mac OSLNMP架构服务器 Process HTTP通道脚本目录&#xff1a; /Applications/Navicat Premium.app/Cont…...

    2024/4/15 6:11:17
  6. SpringBoot 集成Swagger3,spring-plugin-core提示不匹配

    今天使用SpringBoot集成Swagger 输出如下错误信息: *************************** APPLICATION FAILED TO START ***************************Description:An attempt was made to call the method org.springframework.plugin.core.PluginRegistry.getPluginFor(Ljava/lang/Ob…...

    2024/4/18 4:22:02
  7. java之final--Java笔记

    目录 final 1.可以修饰类、属性、方法&#xff08;不能修饰构造方法即构造器&#xff09;、局部变量 ​ 2.final修饰的属性最好用XX_XX来命名 ​ 3.当不希望类被继承时、不希望类的某个属性的值被修改时、不希望某个局部变量被修改时&#xff0c;可以用final修饰 ​ ​ ​…...

    2024/4/15 6:11:12
  8. 实战 | 基于敏捷模式的分层自动化测试体系建设与应用

    随着敏捷开发模式在IT领域有越来越广泛和深入的应用&#xff0c;测试团队也被要求能适应快速迭代、快速响应的敏捷开发模式&#xff0c;实现研发全过程和上下游团队的高效协作。为适应敏捷开发模式&#xff0c;德邦证券于2018年开始构建DevOps体系&#xff0c;并配套研发了DevO…...

    2024/4/15 6:11:22
  9. 复盘字节跳动 | 番茄小说三面经历,被盘问35个硬核技术,offer审批中

    字节番茄小说一面 2021/9/24 约1h 1. 自我介绍 2. 项目相关 3. Java中常用的集合类 (先说Collection和Map接口&#xff0c;再分别说子接口和实现类&#xff0c;以及大概的区别&#xff0c;没让细讲源码) 4. 有一组数据&#xff0c;需要按照顺序对它进行加密&#xff0c;如果…...

    2024/4/19 10:13:26
  10. #10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子

    题目链接&#xff1a;似乎在梦中见过的样子 int main() {scanf("%s",a1);int lstrlen(a1);scanf("%d",&k);for(int i1;i<l-k;i){printf("%s**\n",ai-1);//kmp(ai-1);} // printf("%d\n",sum);//kmp(si-1); }下面这个图为输出结…...

    2024/4/18 17:54:35
  11. Docker 网络

    1. 启动一个tomcat容器 docker run -d -p 8080 --name tomcat01 tomcat 2. 查看容器ip, 看到 eth0if5 网卡 docker exec -it tomcat01 ip addr --------------------------------------------------------------------------------------------- 4: eth0if5: <BROADCAST,MUL…...

    2024/4/15 6:11:17
  12. 【Golang】微服务实现工具 -- go-kit 易懂

    go-kit是一个分布式的开发工具集&#xff0c;在大型的组织&#xff08;业务&#xff09;中可以用来构建微服务&#xff0c;其解决了分布式系统中大多数常见问题&#xff0c;因此&#xff0c;使用者可以将精力集中在业务逻辑上 首先我们要明白&#xff0c;go-kit不是一个框架&am…...

    2024/4/15 6:10:52
  13. 一起学深度学习系列——线性回归

    动手学线性回归线性回归手撕[^1]构造数据集线性回归基于PyTorch实现python知识点补充python 的 迭代器描述iter()next()python 的 生成器描述线性回归手撕[^1] %matplotlib inline import random import torch from d2l import torch as d2l构造数据集 yXwbϵw[2,−3.4]Tb4.2…...

    2024/4/17 15:06:51
  14. MFC单文档点击菜单弹出对话框

    1. 资源文件dialog文件夹内添加一个新的dialog 2. 新dialog处右键点击类向导&#xff0c;新建对话框类 3. 在菜单对应的选项处&#xff0c;右键添加事件处理程序&#xff0c;选择View类 4. 在对应处编辑代码: dialog dig; dig.DoModal();...

    2024/4/19 1:02:54
  15. JavaScript 防止崩溃的可选链

    在开发过程中需要拿到一个嵌套比较深的属性的值&#xff0c;需要做很多的判断&#xff0c;例如&#xff1a; const obj {name: "xiaoming",age: 27,address: {province: {city: hangzhou}} }要拿到 obj 对象中 city 属性的值&#xff0c;需要判断 4 次看每一层是否…...

    2024/4/18 1:49:23
  16. CF 1603C(Extreme Extension-数学)

    给定一个正整数序列aia_iai​。每次操作可以把一个数aaa拆成b,a−bb,a-bb,a−b两个正整数放回原位置 一个序列的 extreme values 定义为将一个序列变为不降序列的最小操作步数。 你希望求出所有子串的 extreme values 的和。 序列长度n≤105,ai≤105n \le 10^5,a_i \le 10^5n≤…...

    2024/4/15 6:12:37
  17. 日记:软件测试从入门到入土

    移动端项目测试 相对其他来说更容易理解 加油&#xff0c;争取早日入土...

    2024/4/15 6:11:42
  18. 垂直同步细说

    垂直消隐间隔VBlank&#xff08;vertical blanking interval&#xff09; 在将光信号转换为电信号的扫描过程中&#xff0c;扫描总是从图像的左上角开始&#xff0c;水平向前行进&#xff0c;同时扫描点也以较慢的速率向下移动。当扫描点到达图像右侧边缘时&#xff0c;扫描点…...

    2024/4/19 12:27:09
  19. 30.package和import

    关于java语言中的包机制&#xff1a; 包有称为package&#xff0c;java中引入包机制主要是为了方便程序的管理&#xff0c;我们可以将不同的功能的类放在不同的软件包下&#xff0c;方便查找与管理。 关于package的定义&#xff1a; 在java源程序的第一行编写package语句&…...

    2024/4/15 6:11:52
  20. 自用的图标

    ...

    2024/4/19 15:09:38

最新文章

  1. Office文档在线预览-文档内容在线提取

    文档提取功能&#xff0c;支持文档内容提取。包括提取文档中的所有文字内容&#xff0c;提取文档中的图片&#xff0c;提取文档音视频&#xff0c;提取文档中的统计及图表等。同时支持文档中公式的提取&#xff0c;文档大纲目录提取等功能。 支持以下文档格式进行内容提取&…...

    2024/4/20 5:57:41
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 3d representation的一些基本概念

    顶点&#xff08;Vertex&#xff09;&#xff1a;三维空间中的一个点&#xff0c;可以有多个属性&#xff0c;如位置坐标、颜色、纹理坐标和法线向量。它是构建三维几何形状的基本单元。 边&#xff08;Edge&#xff09;&#xff1a;连接两个顶点形成的直线段&#xff0c;它定…...

    2024/4/19 5:59:16
  4. Linux从入门到精通 --- 2.基本命令入门

    文章目录 第二章&#xff1a;2.1 Linux的目录结构2.1.1 路径描述方式 2.2 Linux命令入门2.2.1 Linux命令基础格式2.2.2 ls命令2.2.3 ls命令的参数和选项2.2.4 ls命令选项的组合使用 2.3 目录切换相关命令2.3.1 cd切换工作目录2.3.2 pwd查看当前工作目录2.4 相对路径、绝对路径和…...

    2024/4/19 7:03:27
  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