大数据面试题之Kafka(5)

目录

Kafka在哪些地方会有选举过程,使用什么工具支持选举? 

Kafka搭建过程要配置什么参数? 

Kafka的单播和多播 

Kafka的高水位和Leader Epoch 

Kafka的分区器、拦截器、序列化器? 

Kafka连接Spark Streaming的几种方式 

Kafka的生成者客户端有几个线程? 

Kafka怎么防止脑裂 

Kafka高可用体现在哪里 

Zookeeper在Kafka的作用


Kafka在哪些地方会有选举过程,使用什么工具支持选举? 

Kafka中有几个关键的选举过程,主要依赖于ZooKeeper来支持这些选举操作。以下是Kafka中选举过程的概览:

1、控制器(Kafka Controller)选举:Kafka集群中会选举一个Broker作为控制器(Kafka Controller),它负责管理集群中所有分
区和副本的状态,包括分区领导者的选举、副本的重新分配等管理任务。控制器的选举是通过ZooKeeper实现的,利用ZooKeeper的临时节
点和Watch机制来确保选举的原子性和唯一性。

2、分区领导者(Leader)选举:当某个分区的当前领导者副本出现故障时,Kafka Controller负责为该分区选举一个新的领导者。这个
过程同样依赖于ZooKeeper存储的元数据信息来确定哪些副本是最新的并且符合成为领导者的要求(通常是ISR列表中的副本)。
Controller基于这些信息决定新的领导者,并更新相关元数据,通知所有Broker。

3、消费者组(Consumer Group)的Offset管理:虽然不直接称为“选举”,但在消费者组管理中,Kafka确保了每个分区只有一个消费者
实例(在同一个消费者组内)能够消费消息。这种分配是通过消费者主动向Kafka集群声明自己正在消费哪些分区实现的,虽然这不涉及传统
意义上的选举,但它确保了消息的有序且公平的消费。

在所有这些选举过程中,ZooKeeper起到了核心的协调作用,提供了分布式环境下的一致性保证。ZooKeeper的使用确保了在复杂的分布式
系统中,各个组件能够协同工作,共同维护系统的稳定性和数据的一致性。

Kafka搭建过程要配置什么参数? 

搭建Kafka集群时,需要配置一系列参数以确保集群的正常运行和性能优化。以下是一些关键的配置参数,涵盖了Broker端、Zookeeper、
以及Topic级别的配置:

Broker端参数配置
1) broker.id:每个Broker的唯一标识。
2) listeners:指定Kafka Broker监听的地址和端口。
3) zookeeper.connect:Kafka与之交互的Zookeeper地址。
4) log.dirs:Kafka存储日志片段的目录路径。
5) num.partitions:默认情况下每个新建Topic的分区数量。
6) message.max.bytes:单条消息的最大大小。
7) replica.fetch.max.bytes:从领导者副本拉取消息的最大字节数。
8) offsets.topic.replication.factor:offsets存储主题的副本因子。
9) transaction.state.log.replication.factor:事务状态日志的副本因子。
10) transaction.state.log.min.isr:事务状态日志的最小ISR副本数。

Zookeeper参数配置
1) zookeeper.connection.timeout.ms:与Zookeeper连接超时时间。
2) zookeeper.session.timeout.ms:会话超时时间。
3) zookeeper.sync.time.ms:Zookeeper同步数据到磁盘的间隔时间。

Topic级别参数配置
1) auto.create.topics.enable:是否自动创建不存在的Topic。
2) num.partitions:Topic的分区数。
3) replication.factor:Topic的副本数。
4) cleanup.policy:Topic的清理策略,如删除或压缩。
5) retention.ms:消息保留的最长时间。
6) segment.ms:日志滚动的最长时间间隔。

生产者和消费者参数(非搭建过程但影响交互)
1) bootstrap.servers:生产者和消费者用来发现Kafka集群的Broker地址列表。
2) acks(生产者):控制消息确认机制。
3) enable.auto.commit(消费者):是否自动提交偏移量。
4) max.poll.records(消费者):每次poll操作最多返回的消息数量。

搭建Kafka集群时,应根据实际需求和硬件环境仔细调整这些配置参数。正确的配置对于确保Kafka集群的性能、可靠性和稳定性至关重要。
在修改配置后,记得重启Kafka服务以使更改生效,并检查日志以监控配置更改的效果及潜在问题。

Kafka的单播和多播 

Kafka中的单播和多播是消息传递的两种不同方式,它们主要依赖于Kafka的消费者组(Consumer Group)机制。以下是关于Kafka单播
和多播的详细解释:

1、单播(Unicast)

定义:单播消息是指一条消息只被一个消费者消费。

实现方式:

1) 同组消费者竞争消费:将所有期望单播消费的消费者加入到同一个消费者组。Kafka保证一个主题分区在同一时刻只被该消费者组中的一
个消费者实例消费。
如果一个主题只有一个分区,那么该主题的所有消息将按序被组内一个消费者接收。
如果有多个分区,但消费者数量小于或等于分区数,每个消费者将独占一个或多个分区,确保每个消息仅被一个消费者消费。
2) 确保分区与消费者一一对应:如果主题有多个分区,而消费者数量与分区数相等,可以通过适当的消费者分配策略(如range或sticky
策略)确保每个消费者恰好分配到一个分区,从而实现单播消费。
3) 避免自动重平衡:在消费者组内部,由于消费者动态加入或离开可能导致重新分配分区,可能短暂打破单播规则。对于严格单播需求,应
尽量避免频繁的消费者变更,并确保消费者稳定连接,或者在消费者变更时手动协调以保持分区与消费者的对应关系。

示例命令:

bin/kafka-console-consumer.sh --bootstrap-server <broker_list> --topic <topic_name> --group 
<same_group_id>

2、多播(Multicast)

定义:多播消息是指一条消息可以被多个消费者(通常是属于不同消费者组的消费者)同时消费。

实现方式:

使用不同的消费者组:将期望接收相同消息的消费者分别放入不同的消费者组。每个消费者组都会独立地消费主题的所有消息,从而实现多播
效果。
每个组内的消费者遵循单播原则:即组内只有一个消费者消费特定分区的消息,但不同组的消费者可以同时消费同一条消息。

示例命令:

# 第一个消费者组  
./kafka-console-consumer.sh --bootstrap-server <broker_list> --consumer-property group.id=testGroup1 --
topic test  
  
# 第二个消费者组  
./kafka-console-consumer.sh --bootstrap-server <broker_list> --consumer-property group.id=testGroup2 --
topic test

总结
Kafka的单播和多播为消息传递提供了灵活性。单播确保了消息的顺序性和唯一性,而多播则允许消息被多个消费者同时消费,满足不同的业
务需求。通过合理配置消费者组和分区,可以实现复杂的消息传递逻辑。

Kafka的高水位和Leader Epoch 

Kafka中的高水位(High Watermark, HW)和Leader Epoch是两个重要的概念,它们分别用于管理和保证Kafka集群中数据的可靠性和
一致性。以下是对这两个概念的详细解释:

Kafka的高水位(High Watermark, HW)

1) 定义:
高水位是Kafka中一个重要的概念,主要用于管理消费者的进度和保证数据的可靠性。
它标识了一个特定的消息偏移量(offset),即一个分区中已经提交消息的最高偏移量。这里的“已提交”指的是In-Sync Replicas
(ISR)中的所有副本都记录了这条信息。
2) 作用:
消费者进度管理:消费者可以通过跟踪高水位来确定自己的消费位置。消费者只能拉取到这个offset之前的消息,确保不会错过任何已提交
的消息。
数据可靠性:高水位还用于保证数据的可靠性。在Kafka中,只有消息被写入主副本(Leader Replica)并被所有同步副本(ISR)确认
后,才被认为是已提交的消息。高水位表示已经被提交的消息边界,之后高水位之前的消息才能被认为是已经被确认的。
3) 与Log End Offset(LEO)的关系:
LEO是日志最后的消息偏移量,表示当前日志文件中下一条待写入消息的offset。
介于高水位和LEO之间的消息就是未提交消息,所以同一个副本中,高水位是不会超过LEO的。

Kafka的Leader Epoch

1) 定义:
Leader Epoch是一个单调递增的整数,代表了分区在不同时间点的领导权变更历史。
每当发生leader变更(如原Leader崩溃、网络隔离等情况导致的重新选举),新的Leader就会拥有一个新的Epoch值,旧的Epoch则成为
过去的历史记录。
2) 作用:
管理事务性和一致性:Leader Epoch机制主要用于管理Kafka分区内的事务性和一致性,确保所有副本在处理数据时基于同一视图,避免
因并发操作引发的数据不一致问题。
故障恢复和数据完整性验证:在进行数据回溯或故障恢复时,Broker可以根据Leader Epoch判断提交的偏移量是否合法有效,只有与当前
Leader Epoch相匹配的偏移量才会被认可。
3) 幂等性生产支持:通过比较消息携带的Producer Epoch和当前Leader Epoch,Kafka可以只保留最近一次提交的消息,实现消息的
幂等性。

总结

Kafka的高水位和Leader Epoch是两个相互关联的概念,它们共同构成了Kafka数据可靠性和一致性的基础。高水位确保了消费者能够正
确地跟踪和消费消息,而Leader Epoch则确保了Kafka在领导权变更时能够保持数据的一致性和可靠性。

Kafka的分区器、拦截器、序列化器? 

在Apache Kafka中,分区器(Partitioner)、拦截器(Interceptor)和序列化器(Serializer)是生产者客户端中的三个关键组
件,它们各自承担着不同的职责,以确保消息高效、安全地传输到Kafka集群。

1、分区器(Partitioner)
分区器负责决定消息应当发送到主题(Topic)的哪个分区(Partition)。这是Kafka实现负载均衡和提高吞吐量的关键机制之一。Kafka
提供了默认的分区器实现(org.apache.kafka.clients.producer.internals.DefaultPartitioner),它根据以下规则进行分
区:

如果生产者消息中指定了分区号,则直接使用指定的分区。
如果消息携带了键(Key),则使用键的哈希值与主题的分区总数取模来决定分区。
如果既没有指定分区号也没有键,则按照轮询的方式或者使用粘性分区器(Sticky Partitioner)策略选择分区。
用户也可以自定义分区器来满足特定的业务需求。

2、拦截器(Interceptor)
拦截器是在Kafka 0.10.0.0版本引入的,允许在消息发送前后插入自定义的处理逻辑,而不改变生产者客户端的核心行为。拦截器可以被
用于审计、日志记录、安全性检查或任何预/后处理需求。Kafka支持两种类型的拦截器:生产者拦截器(Producer Interceptor)和消
费者拦截器(Consumer Interceptor)。生产者拦截器可以在消息发送到Kafka之前或之后执行逻辑,比如添加额外的元数据、修改消息
内容或执行安全性验证。

3、序列化器(Serializer)
序列化器负责将生产者产生的消息对象转换为字节流,以便通过网络发送给Kafka服务器。Kafka消息由两部分组成:键(Key)和值
(Value),每部分都可以独立地配置序列化器。常见的序列化器有StringSerializer、ByteArraySerializer、
IntegerSerializer等,以及更复杂的如AvroSerializer(用于Apache Avro格式的数据)。在消息消费端,相应地需要使用反序列化
器(Deserializer)将字节流还原为原始对象。

这三个组件共同协作,确保了消息在Kafka生态中的高效、安全和定制化的传输。正确的配置和使用它们,对于构建可扩展、高性能的Kafka
应用至关重要。

Kafka连接Spark Streaming的几种方式 

Kafka与Spark Streaming之间的连接主要有两种方式,这两种方式随着Spark Streaming和Kafka版本的演进而有所不同,具体如下:

1. Receiver-Based Approach (已逐渐淘汰)
这种方式在早期的Spark Streaming与Kafka集成中较为常见,通过Kafka的高阶API实现。主要特点如下:
原理:在Spark Streaming中,通过创建一个或多个长期运行的接收器(Receiver)来持续不断地从Kafka拉取消息。接收器将拉取到的
消息存储在Spark Executor的内存中,然后Spark Streaming的任务会周期性地处理这些数据。
优缺点:此方法简单易用,但由于数据先存储在Executor内存中,可能导致数据丢失的风险(除非开启WAL特性写入磁盘),且在大规模数
据处理时可能面临内存压力和容错问题。

2. Direct Approach (推荐方式)
直接连接(Direct)方式是Spark Streaming与Kafka集成的更现代、推荐的方法,它从Spark 1.3和Kafka 0.8开始引入,并在后续
版本中不断优化。主要特点如下:

原理:在每个Spark Streaming的batch作业执行时,直接与Kafka的partition建立连接,使用Kafka Simple Consumer API读取
数据。每个batch作业都会查询Kafka的偏移量并直接消费指定范围内的消息,消除了Receiver的中间环节。
优缺点:直接方法提供了更好的性能和容错能力,因为它避免了数据在Executor内存中的暂存,减少了数据丢失的风险,并能实现端到端的
Exactly Once语义。此外,它还允许更细粒度的偏移量控制,简化了offset管理。但是,直接方式的实现相对复杂,需要开发者对Spark 
Streaming和Kafka的API有较深的理解。

使用方法
Receiver方式:使用KafkaUtils.createStream方法创建DStream,需要指定Zookeeper地址、topic列表等。
Direct方式:使用KafkaUtils.createDirectStream或更新的SparkSession.read.format("kafka")方法来创建
DataFrame/Dataset,这种方式直接与Kafka brokers通信,不再依赖Zookeeper,并且可以通过Kafka的offset管理机制精确控制消
费位置。

总的来说,由于直接方式(Direct Approach)提供了更高效、可靠的集成方案,因此在现代的大数据处理架构中更受欢迎。

Kafka的生成者客户端有几个线程? 

Kafka的生成者客户端通常使用两个主要线程来处理任务:

主线程:负责处理API调用,将消息放入一个线程安全的累加器(RecordAccumulator)中。这个过程包括消息的分区、序列化以及应用任
何配置的拦截器逻辑。

Sender线程:负责将RecordAccumulator中积累的消息发送到Kafka broker。这个线程会批量发送消息以提高效率,并处理失败重试、
批次大小调整和压缩等任务。

这两个线程的分工合作确保了生产者能够高效、可靠地发送消息到Kafka集群,同时也保持了线程安全,使得生产者客户端可以在多线程环境
中安全地共享使用。

Kafka怎么防止脑裂 

Kafka通过以下方式防止脑裂:

1、纪元机制(Controller Epoch):
Kafka在集群中通常只应该有一个活动主节点(Controller)。
当新的主节点产生时,会通过Zookeeper生成一个全新的、数值更大的controller epoch标识,并同步给其他的Broker。
其他Broker在知道当前controller epoch后,如果收到由控制器发出的包含较旧epoch的消息,就会忽略它们。
这样,Kafka可以确保集群中只有一个主节点在活动,避免脑裂问题。

2、ISR(In-Sync Replica)机制:
Kafka会在Zookeeper上针对每个Topic维护一个称为ISR的集合,该集合中包含与Leader同步的副本。
如果ISR有增减,Kafka会更新zookeeper上的记录。
当Leader发生故障时,Kafka会从ISR中选择一个新的Leader,确保数据的一致性和可靠性。

3、Leader选举:
Kafka中的控制器(Controller)负责分区的Leader选举。
当一个Broker宕机时,存在与该Broker的主分区也会停止服务,此时需要重新选举新的Leader分区。
控制器会从Zookeeper中读取ISR列表,并选取下一个有效的分区副本成为新的Leader。

4、网络分区处理:
在网络分区的情况下,Kafka会尽量避免脑裂的发生。
例如,当Leader副本与其他Follower副本之间的网络连接断开时,Kafka会尝试重新选举Leader,确保只有一个Leader在对外提供服
务。

综上所述,Kafka通过纪元机制、ISR机制、Leader选举以及网络分区处理等方式来防止脑裂的发生,确保集群的稳定性和数据的一致性。

Kafka高可用体现在哪里 

Kafka的高可用性主要体现在以下几个方面:

1、集群架构:Kafka设计为分布式系统,包含多个Broker(服务器节点)。这种分布式的架构意味着即使个别Broker出现故障,其他
Broker仍能继续处理消息,确保服务不中断。

2、数据冗余:通过多副本机制,每个Topic的数据会被分成多个Partition,并且每个Partition的数据会在多个Broker上复制。默认情
况下,每个Partition会有三个副本,其中一个作为Leader,其余为Follower。即使Leader副本所在的Broker发生故障,系统也能迅速
选举出新的Leader,确保数据的持续可访问性。

3、ISR(In-Sync Replica)列表:Kafka维护了一个称为ISR(In-Sync Replicas)的集合,这个集合包含了与Leader副本保持同
步的所有Follower副本。只有ISR中的Follower副本才有资格在Leader失败时成为新的Leader,这确保了数据的一致性和完整性。

4、Leader选举:当Leader副本不可用时,Kafka会自动从ISR列表中选择一个新的Leader,这一过程快速且自动,保证了高可用性。

5、ZooKeeper集成:Kafka依赖ZooKeeper进行元数据管理和协调,包括Broker注册、 Partition leadership选举等,进一步增强
了系统的稳定性和高可用性。

6、故障恢复:Kafka具有快速的故障检测和恢复机制。一旦检测到Broker或Partition不可用,系统会立即触发恢复流程,重新分配
Partition的Leadership,确保消息生产和消费的连续性。

7、消息持久化:Kafka将消息持久化到磁盘,并支持配置消息的保留策略,这确保了即使在系统出现故障后,消息也不会丢失。

综上所述,Kafka通过这些机制实现了高可用性,确保了在大规模分布式环境下消息的可靠传递和系统的稳定运行。

ZookeeperKafka的作用

ZooKeeper在Kafka中扮演着核心的分布式协调服务角色,它的主要作用包括但不限于以下几点:

1、集群管理:ZooKeeper帮助管理Kafka集群的配置信息,比如Broker的注册与发现。每个Kafka Broker在启动时会向ZooKeeper注册,使得所有Broker和客户端能够发现集群中的其他成员。

2、Leader选举:Kafka的每个Topic被划分为多个Partition,每个Partition都有一个Leader副本负责读写操作。当Partition的
Leader副本失效时,ZooKeeper会参与Leader选举过程,确保新的Leader及时选出并接管工作。

3、分区分配:ZooKeeper存储了Topic及其Partitions的信息,以及Partitions在各Broker上的分布情况。这有助于Kafka在创建
Topic或Partition时进行合理的分配,以及在Broker加入或离开集群时重新分配Partitions。

4、消费者群组管理:ZooKeeper帮助管理消费者群组(Consumer Group)的状态和偏移量信息,实现消费者群组内的负载均衡。当
Consumer Group内成员变化时,ZooKeeper会触发再平衡(rebalance),确保每个分区的消息都能被适当数量的消费者公平消费。

5、分布式锁与同步:ZooKeeper提供分布式锁机制,帮助Kafka的Producer和Consumer在并发操作时维持数据一致性,比如在多个
Producer向同一Partition写入消息时,ZooKeeper可以提供必要的同步保障。

6、配置管理:Kafka的配置信息可以存储在ZooKeeper中,使得集群配置的变更能够实时地传播到所有相关节点,实现配置的集中管理和动
态更新。

尽管近年来Kafka在努力减少对ZooKeeper的依赖,比如在新版本中增强了内部的Group Coordination协议以减少对ZooKeeper的直接
使用,但至少在当前版本中,ZooKeeper仍然是Kafka架构中不可或缺的一部分,对于集群的稳定性和数据的一致性至关重要。

 引用:https://www.nowcoder.com/discuss/353159520220291072

通义千问、文心一言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/755005.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI问答-供应链管理:中的长鞭效应(Bullwhip Effect)/ 供应链中需求信息变异放大现象

供应链管理中的长鞭效应&#xff08;Bullwhip Effect&#xff09;是一个经济学上的术语&#xff0c;它描述了供应链中需求信息变异放大的现象。以下是关于长鞭效应的详细解释&#xff1a; 一、定义 长鞭效应&#xff0c;也被称为“需求变异加速放大原理”或“牛鞭效应”&…

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及&#xff0c;智能家居行业正迎来新的发展机遇&#xff0c;众多厂商纷纷投身于 Matter 产品的研发与验证。然而&#xff0c;开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。 乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行…

Python酷库之旅-第三方库openpyxl(15)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

一、音视频基础

音视频基础 一、音视频录制原理二、音视频播放原理三、图像表示RGB-YUVV1.图像基础概念1.1 像素1.2 分辨率1.3 位深1.4 帧率1.5 码率1.6 Stride跨距 2.RGB、YUV深入讲解2.1 RGB2.2 YUV2.2.1 YUV采样表示法2.2.2 YUV数据存储 2.3 RGB和YUV的转换(了解)为什么解码出错显示绿屏&am…

借助 Aspose.Words,在 C# 中将 Word 转换为 Excel

有时我们会遇到需要将 Word 文档&#xff08;DOC 或 DOCX&#xff09;转换为 Excel 文档的任务。例如&#xff0c;这对于数据分析和报告很有用&#xff0c;或者如果您收到了任何文本数据并想将其转换为表格格式&#xff08;XLS 或 XLSX&#xff09;以便进一步工作。在本文中&am…

【DevExpress】WPF DevExpressMVVM 24.1版本开发指南

DevExpressMVVM WPF 环境安装 前言重要Bug&#xff08;必看&#xff09;环境安装控件目录Theme 主题LoginWindow 登陆窗口INavigationService 导航服务DockLayout Dock类型的画面布局TreeView 树状列表注意引用类型的时候ImageSource是PresentationCore程序集的博主找了好久&am…

AV Foundation学习笔记二 - 播放器

ASSets AVFoundation框架的最核心的类是AVAsset&#xff0c;该类是整个AVFoundation框架设计的中心。AVAsset是一个抽象的&#xff08;意味着你不能调用AVAsset的alloc或者new方法来创建一个AVAsset实例对象&#xff0c;而是通过该类的静态方法来创建实例对象&#xff09;、不…

社团成员信息系统

ER实体关系图与数据库模型 DDL CREATE TABLE club (club_id int(11) NOT NULL AUTO_INCREMENT,club_name varchar(100) NOT NULL,president_name varchar(50) DEFAULT NULL,foundation_date date DEFAULT NULL,description text,PRIMARY KEY (club_id),KEY president_name (pr…

DP(动态规划)【2】 最大连续子列和 最长不降子序列

1.最大连续子列和 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> #include <queue> using namespace std; const int N10002,maxn10;int n,m,k,f[N]{0},dp[N]{0};int main() {scanf(&quo…

1.SQL注入-数字型

SQL注入-数字型(post) 查询1的时候发现url后面的链接没有传入1的参数。验证为post请求方式&#xff0c;仅显示用户和邮箱 通过图中的显示的字段&#xff0c;我们可以猜测传入数据库里面的语句&#xff0c;例如&#xff1a; select 字段1,字段2 from 表名 where id1; 编辑一个…

【漏洞复现】宏景HCM人力资源信息管理系统——任意文件读取漏洞

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 宏景HCM人力资源信息管理系统是一款全面覆盖人力资源管理各模块…

GPT-4o首次引入!全新图像自动评估基准发布!

目录 01 什么是DreamBench&#xff1f; 02 与人类对齐的自动化评估 03 更全面的个性化数据集 04 实验结果 面对层出不穷的个性化图像生成技术&#xff0c;一个新问题摆在眼前&#xff1a;缺乏统一标准来衡量这些生成的图片是否符合人们的喜好。 对此&#xff0c;来自清华大…

心理辅导平台系统

摘 要 中文本论文基于Java Web技术设计与实现了一个心理辅导平台。通过对国内外心理辅导平台发展现状的调研&#xff0c;本文分析了心理辅导平台的背景与意义&#xff0c;并提出了论文研究内容与创新点。在相关技术介绍部分&#xff0c;对Java Web、SpringBoot、B/S架构、MVC模…

lvs+上一章的内容

书接上回这次加了个keepalived 一、集群与分布式 1.1 集群介绍 **集群&#xff08;Cluster&#xff09;**是将多台计算机组合成一个系统&#xff0c;以解决特定问题的计算机集合。集群系统可以分为以下三种类型&#xff1a; **LB&#xff08;Load Balancing&#xff0c;负载…

Golang | Leetcode Golang题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; func removeElements(head *ListNode, val int) *ListNode {dummyHead : &ListNode{Next: head}for tmp : dummyHead; tmp.Next ! nil; {if tmp.Next.Val val {tmp.Next tmp.Next.Next} else {tmp tmp.Next}}return dummyHead.Next …

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 数字排列游戏(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

【论文复现】——基于LM优化的NDT点云配准算法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 1、论文概述 传统的正态分布变换配准算法处理初始位姿变换相…

修改网络的结构用于预训练

目录 一、模型准备 二、修改结构 1、在网络中添加一层 2、在classifier结点添加一个线性层 3、修改网络中的某一层(features 结点举例&#xff09; 4、替换网络中的某一层结构&#xff08;与第3点类似&#xff09; 5、提取全连接层的输入特征数和输出特征数 6、删除网络…

springboot + Vue前后端项目(第二十一记)

项目实战第二十一记 写在前面1. springboot文件默认传输限制2. 安装视频插件包命令3. 前台Video.vue4. 创建视频播放组件videoDetail.vue5. 路由6. 效果图总结写在最后 写在前面 本篇主要讲解系统集成视频播放插件 1. springboot文件默认传输限制 在application.yml文件中添…

《昇思25天学习打卡营第2天|快速入门》

文章目录 前言&#xff1a;今日所学&#xff1a;1. 数据集处理2. 网络的构建3. 模型训练4. 保存模型5. 加载模型 总体代码与运行结果&#xff1a;1. 总体代码2. 运行结果 前言&#xff1a; 今天是学习打卡的第2天&#xff0c;今天的内容是对MindSpore的一个快速入门&#xff0…