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

每日十题八股-2025年1月23日

1.快排为什么时间复杂度最差是O(n^2)
2.快排这么强,那冒泡排序还有必要吗?
3.如果要对一个很大的数据集,进行排序,而没办法一次性在内存排序,这时候怎么办?
4.面试官:你的项目为什么要用消息队列?
5.面试官:消息队列是怎么演进的?
6.面试官:Kafka架构长什么样的?
7.面试官:你说说 Kafka 为什么是高性能的?
8.面试官:RocketMQ 和 Kafka 有什么区别?
9.面试官:RocketMQ 为什么性能不如 Kafka?
10.面试官:Kafka 会丢消息吗?

1.快排为什么时间复杂度最差是O(n^2)

在这里插入图片描述

2.快排这么强,那冒泡排序还有必要吗?

对于小规模数据或基本有序的数据(冒泡可以通过判断本次遍历有没有交换元素来确定数组是否已经有序),冒泡排序可能比快速排序更简单、更直观。
稳定性。对于需要稳定性的场景,冒泡排序更适合。

3.如果要对一个很大的数据集,进行排序,而没办法一次性在内存排序,这时候怎么办?

大数据集划分成内存可实现内部排序(快排等,时间复杂度可以控制在O(nlogn))的小数据集,然后归并排序(两两归并,每次读取两个小数据集的一部分,边排序变输出磁盘)。
败者树:归并阶段有个非常大的时间消耗就是 IO,也就是输入输出。最好就是让归并的层数越低越好,为了降低降低归并层数,可以使用败者树。

败者树是一种特殊的二叉树结构,用于归并排序中的多路归并。它通过比较多个数据源的当前最小值,逐步挑选出全局的最小值进行归并。败者树在归并排序中非常高效,尤其适用于多路归并。与逐一比较所有数据源的当前最小值相比,它的复杂度降低为 O(logk) (k 为数据源个数),因为树的高度为logk。

4.面试官:你的项目为什么要用消息队列?

在我们的项目中,使用消息队列主要是出于以下几个考虑:

第一,解耦。 项目中,模块之间原本耦合度较高,比如订单系统和库存系统的直接调用会导致双方改动时互相影响。引入消息队列后,订单系统只负责发送消息,库存系统只负责订阅消息,彼此独立,降低了耦合性,提高了系统的扩展性和维护性。

第二,异步处理。 有些操作不是必须实时完成,比如订单完成后发送通知短信或邮件。如果直接调用短信服务会导致用户等待时间变长,而通过消息队列将任务异步处理,订单接口的响应速度显著提升,提升了用户体验。

第三,削峰填谷。 在流量高峰期,比如秒杀活动,订单量会剧增。如果直接对后端系统施加压力,可能导致数据库崩溃。消息队列可以将请求暂存并按能力逐步消费,保护了后端系统的稳定性。

第四,可靠性保障。 消息队列支持消息持久化,即使消费者宕机,消息也不会丢失,保证了数据传递的可靠性。

总的来说,消息队列帮助我们实现了解耦、异步处理、流量削峰和可靠性保障,显著提高了系统的性能和稳定性,是项目中不可或缺的技术组件。

5.面试官:消息队列是怎么演进的?

消息队列的演进可以结合市面上的产品分为以下几个阶段:

第一阶段:初步引入消息队列(如 RabbitMQ)。
为了实现模块解耦和异步处理,项目开始使用消息队列。比如订单系统在完成订单后,将消息发送到 RabbitMQ 队列,通知短信或库存系统进行处理。这种方式显著降低了模块之间的耦合性,并提升了接口的响应速度。不过在初期,系统规模较小,RabbitMQ 的单机部署已经可以满足需求。

第二阶段:优化可靠性与高可用性(如 Kafka)。
随着业务增长,消息量激增,对高可用性和性能提出了更高要求。我们采用 Kafka 替代 RabbitMQ,因为 Kafka 支持消息持久化和分区机制,可以保证消息不会因为系统宕机丢失,同时支持大规模并发消费。比如在电商秒杀场景中,Kafka 可以通过削峰填谷机制,将瞬间的高并发流量缓冲下来,避免后端服务过载。

第三阶段:分布式消息队列(如 RocketMQ 和 Pulsar)。
当系统进一步扩展到分布式架构后,需要支持多数据中心和更低延迟的消息传递。例如,RocketMQ 支持灵活的消息重试机制和事务消息,适用于金融类场景,保证系统的最终一致性。而 Pulsar 支持多租户和分层存储,帮助降低存储成本的同时实现更高的性能。

第四阶段:云原生消息队列(如 Kafka on Confluent 和阿里云的 MNS)。
随着云计算的发展,越来越多的项目选择使用云原生的消息队列服务,比如 Kafka on Confluent 或阿里云的 MNS,这些服务提供了开箱即用的高可用性和自动扩展能力,大幅降低了运维成本,让开发者专注于业务逻辑实现。

总结: 从 RabbitMQ 到 Kafka,再到 RocketMQ、Pulsar,以及云原生服务,消息队列的演进不断解决性能、可靠性和分布式场景的挑战,为系统提供了解耦、异步处理和削峰填谷等能力,是现代分布式系统的重要支撑工具。

在 RabbitMQ 之前,确实存在一些早期的消息队列产品或概念,只是这些方案没有达到现代分布式消息队列的成熟度和广泛应用,以下是一些典型代表:

  1. IBM MQ(前身是 MQSeries,1993年推出):
    IBM MQ 是较早的企业级消息中间件,主要用于企业系统之间的消息传递和事务处理。它以强大的可靠性和事务支持著称,但价格昂贵,配置复杂,更适合大型企业的传统系统。

  2. JMS(Java Message Service,1999年推出):
    JMS 是 Java 平台的消息传递标准,支持点对点和发布订阅两种模式。像 ActiveMQ 是基于 JMS 的开源实现,适合早期小型分布式系统。但它在高并发场景下的性能和扩展性有限。

  3. ActiveMQ(2004年推出):
    ActiveMQ 是早期开源消息队列的代表之一,支持多种协议,兼容 JMS,易于部署。然而,ActiveMQ 在处理高并发和大规模场景时存在性能瓶颈,逐渐被更现代的产品(如 RabbitMQ 和 Kafka)取代。

  4. RabbitMQ(2007年推出):
    RabbitMQ 是消息队列发展的一个重要节点,它基于 AMQP 协议,专注于可靠消息传递和易用性,是现代轻量级消息队列的标杆产品。相比之前的方案,RabbitMQ 提供了更灵活的路由和更简单的管理。

总结: 在 RabbitMQ 之前,像 IBM MQ 和 ActiveMQ 等产品已经为消息队列打下了基础,但它们更偏向于传统的企业系统。而 RabbitMQ 开创了现代轻量级消息队列的先河,更适合互联网业务和微服务架构。
在这里插入图片描述

6.面试官:Kafka架构长什么样的?

生产者(Producer) 发送消息。
主题(Topic)和分区(Partition) 分类和分散存储消息。
Broker存储消息,支持高并发和高可用。
消费者(Consumer) 取出消息,完成业务逻辑。
Zookeeper 或元数据管理负责协调整个系统。
主分区和副本保证消息传递的可靠性和稳定性。
Kafka 就是靠这些部分紧密配合,高效地处理海量数据流动的!

  1. Producer(生产者):
    生产者就像“寄信人”,负责把消息(信件)发送到 Kafka 中的“主题”(类似于信箱)。比如一个电商系统,订单模块把“新订单消息”发到 Kafka 的订单主题里。

  2. Topic 和 Partition(主题和分区):
    主题(Topic): 是消息的分类,比如订单消息会发到“订单主题”,日志消息会发到“日志主题”。
    分区(Partition): 是为了“分开存放邮件”的格子。每个主题可以分成多个分区,分区让 Kafka 可以分散存储数据到不同的服务器上,从而支持高并发处理。
    作用:主题保证了消息的分类和管理。
    分区则通过分散存储,解决了“信件太多放不下”的问题,提升了处理速度。

  3. Broker(代理):
    Broker 是 Kafka 中的“邮递员”,它负责存储这些分区里的消息。Kafka 集群由多个 Broker 组成,每个 Broker 管理一部分分区。比如有 3 个 Broker,分区可能会分别分布在不同的 Broker 上,这样即使一个 Broker 坏了,其他的 Broker 还能继续工作。

  4. Consumer(消费者):
    消费者就是“收信人”,从主题中读取消息。比如“发货系统”作为消费者,会从“订单主题”里取出新订单,执行发货操作。
    如果有多个消费者组成消费组(Consumer Group),每个消费者会负责处理主题里的不同分区,避免重复处理。

  5. Zookeeper(管理员):
    可以把 Zookeeper 想象成 Kafka 的“协调员”,负责管理所有 Broker,比如监控哪个 Broker 存在哪些分区、哪个分区是主分区(Leader)等。新版本的 Kafka 开始使用内置的元数据管理,逐步替代 Zookeeper。

  6. Leader 和 Replica(主分区和副本):
    Kafka 里的每个分区都有一个主分区(Leader)和多个副本(Replica)。
    Leader 是负责读写的核心分区,比如“邮局的窗口”。
    副本是备份,当 Leader 坏了,Kafka 会从副本中选一个新 Leader,保证消息不会丢失。

7.面试官:你说说 Kafka 为什么是高性能的?

1. 高吞吐量的消息存储: 顺序写入
Kafka 将消息以日志的形式存储在磁盘中,每条消息都附带一个偏移量,Kafka 是通过顺序写入磁盘来实现高吞吐量的。这种顺序写入比随机写入要快得多,因为磁盘顺序写入比随机写入更高效,尤其是对于大数据量的处理。

  1. 分区和并行处理:
    Kafka 的每个主题(Topic)可以划分成多个分区(Partition)。每个分区可以分布在不同的机器上,意味着多个生产者和消费者可以并行工作,提高了系统的吞吐量。分区是实现水平扩展的关键,通过分区 Kafka 能够分散负载,避免单点瓶颈。

  2. 零拷贝:网络传输,数据不进入用户空间了sendfile
    在这里插入图片描述

4. 高效的网络传输: 批量发送和消费,并且可以消息压缩。
Kafka 在传输数据时,采用批量处理方式。生产者会先将多条消息积攒成一个大的批次,然后一次性发送到 Kafka 集群。这样可以减少网络请求的频率,减少网络延迟,提高数据传输效率。同时,消费者也可以批量拉取消息,进一步提升性能。

  1. 消息持久化和日志压缩:
    Kafka 默认将消息持久化到磁盘,并且支持高效的日志压缩。持久化机制使得即使系统崩溃,也能保证数据不会丢失。而日志压缩和保留策略保证了长期存储的消息在不占用过多空间的情况下依然能高效存储。

  2. mmap
    Kafka 的日志文件分为数据文件(.log)和索引文件(.index),Kafka 为了提高索引文件的读取性能,对索引文件采用了 mmap 内存映射,将索引文件映射到进程的内存空间,这样读取索引文件就不需要从磁盘进行读取。?(后面的回答又说是sendfile,RocketMQ用得是mmap)

  3. 扩展性:
    Kafka 支持水平扩展,添加更多的 Broker 以增加集群的存储容量和处理能力。每个分区可以分布到不同的 Broker 上,这使得 Kafka 可以非常灵活地适应不断增长的负载。

总结:
Kafka 之所以高性能,是因为它通过顺序写入磁盘、分区机制、批量处理、日志压缩等技术,最大化地提高了存储、网络传输和处理的效率。并且,Kafka 通过分布式设计和水平扩展,能够在处理大规模数据时保持高吞吐量和低延迟。

8.面试官:RocketMQ 和 Kafka 有什么区别?

  1. 消息的组织方式:
    Kafka:
    Kafka 可以把消息分成多个分区(Partition),每个分区就像一个“消息箱”。多个生产者把消息发到不同的分区,消费者也可以并行地从多个分区读取消息。分区使得 Kafka 能处理很多消息,效率高。

RocketMQ:
RocketMQ 也是分分区,但它支持两种模式:一种是发布-订阅模式,类似广播,多个消费者可以同时收到消息;另一种是点对点模式,一个消息只能被一个消费者消费。你可以根据业务需求选择模式。

  1. 消息的顺序:
    Kafka:
    Kafka 能保证同一个分区内的消息顺序,意思是如果你把消息放在一个分区里,它们的消费顺序是不会乱的。但不同分区之间的消息顺序没有保证。

RocketMQ:
RocketMQ 也能保证消息的顺序,甚至比 Kafka 更灵活。如果你有严格顺序要求的消息,RocketMQ 可以为你提供更多选择。

  1. 性能和吞吐量:
    Kafka:
    Kafka 主要的优势就是高性能。它能处理非常大的数据量和高并发的消息,非常适合大数据、日志收集等场景。

RocketMQ:
RocketMQ 性能也不错,但它的优势在于提供了更多不同的功能,比如支持事务消息和延迟消息。也就是说,如果你的业务需要确保消息的可靠性或者需要一些特殊处理,RocketMQ 可能会更适合。

  1. 可靠性和容错:
    Kafka:
    Kafka 通过将消息复制到多个服务器(副本)来保证可靠性,如果某个服务器出问题,消息也不会丢失。

RocketMQ:
RocketMQ 也通过类似的方式保证消息的可靠性,采用“主从”结构,确保消息不会丢失。

  1. 应用场景:
    Kafka:
    Kafka 适合用在大数据处理、日志收集和流式数据处理等场景。它非常擅长高并发、海量数据的场景。

RocketMQ:
RocketMQ 更适合需要确保消息顺序、需要事务保证或者需要定时/延迟处理的场景。比如在金融系统中,可能需要保证某些消息的顺序和事务性。

总结:
Kafka: 高吞吐量,适合大规模数据流,尤其是处理日志和实时数据流。
RocketMQ: 更加灵活,支持事务、延迟等特殊场景,适合对消息顺序和可靠性有高要求的场景。
换句话说,如果你要处理大规模的数据流,Kafka 是个好选择;如果你需要确保消息的顺序或有特殊的处理需求(比如延迟消息),那 RocketMQ 会更适合你。

9.面试官:RocketMQ 为什么性能不如 Kafka?

RocketMQ 性能不如 Kafka 主要是因为:

Kafka 在设计上非常注重高吞吐量和高并发,使用了顺序写入磁盘、分区和高效的消息存储方式,这使得它能够处理大规模的数据流。
RocketMQ 虽然也具备高吞吐量,但它提供了更多的功能(如事务消息、延迟消息等),这些附加功能会增加系统的复杂性,从而影响其整体性能。

聊完两种零拷贝技术,我们回过头来看下 kafka 为什么性能比 RocketMQ 好。这是因为 RocketMQ 使用的是 mmap 零拷贝技术(4变3),而 kafka 使用的是 sendfile(4变2)。kafka 以更少的拷贝次数以及系统内核切换次数,获得了更高的性能。

10.面试官:Kafka 会丢消息吗?

  1. 消息丢失场景:
    (1)生产者丢消息
    原因:
    如果生产者将消息发送给 Kafka 时,设置的 acks 参数值过低(如 acks=0),生产者不会等待 Kafka 的确认,即使消息没被成功写入 Broker,生产者也认为发送成功,从而可能导致消息丢失。

解决方法:
设置 acks=all(或 acks=-1),生产者会等待所有副本写入成功后才确认消息发送完成。
使用 retries 参数,让生产者在写入失败时自动重试。
开启 idempotence(幂等性),以避免消息重复或丢失。

(2)Broker 丢消息
原因:
Kafka 将消息写入内存后,默认是异步刷盘到磁盘。如果在消息刷盘前 Broker 宕机,内存中的消息可能丢失。
如果 Kafka 的副本同步机制未完成(如设置 min.insync.replicas 太低),且 Leader 节点出现故障,可能导致消息丢失。

解决方法:
设置 min.insync.replicas=2 或更高值,确保消息写入至少两个副本时才算成功。
将 log.flush.interval.messages 和 log.flush.interval.ms 调小,确保消息更快刷盘,但可能会影响性能。
部署可靠的 Kafka 集群,避免节点故障。

(3)消费者丢消息
原因:
消费者收到消息后还未处理完,就向 Kafka 提交了偏移量。如果消费者在处理消息时宕机,已提交的消息无法重新消费,从而导致消息丢失。
消费者组在 Rebalance 时,未正确管理消费偏移量,可能导致部分消息未被消费。

解决方法:
将 enable.auto.commit 设置为 false,手动提交消费偏移量,在消息处理完成后再提交偏移量。
使用 exactly-once 语义,确保消息处理和偏移量提交的原子性。

  1. Kafka 的可靠性机制:
    Kafka 提供了一些机制来最大限度减少消息丢失:
    副本机制(Replication):
    每个分区的消息会被复制到多个 Broker。即使 Leader 副本宕机,Follower 副本可以接替 Leader,确保数据不丢失。
    幂等性(Idempotence):
    生产者开启幂等性后,可以确保每条消息仅写入一次,即使生产者重试也不会重复写入或丢失消息。
    事务(Transactions):
    Kafka 支持事务,可以保证消息从生产者发送到消费者之间的端到端可靠性,确保 “exactly-once” 消费。

  2. 总结:Kafka 会不会丢消息?
    Kafka 并不能完全避免丢消息,但通过合理配置和优化,可以尽量避免丢失:
    生产者配置:
    设置 acks=all,启用幂等性(enable.idempotence=true)。
    Broker 配置:
    配置更高的副本数量和 min.insync.replicas,并确保定期刷盘。
    消费者配置:
    禁用自动提交偏移量,使用手动提交,确保消息处理完成后提交偏移量。
    使用事务:
    对需要严格可靠性保证的场景,开启事务功能。
    通过这些措施,可以让 Kafka 在实际使用中做到尽量减少消息丢失,并满足绝大多数业务场景的可靠性需求。

相关文章:

每日十题八股-2025年1月23日

1.快排为什么时间复杂度最差是O(n^2) 2.快排这么强,那冒泡排序还有必要吗? 3.如果要对一个很大的数据集,进行排序,而没办法一次性在内存排序,这时候怎么办? 4.面试官:你的…...

mysql相关知识(详细)

一、什么是数据库? 概念:数据库(Database,简称DB),长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据"仓库"。作用:存放管理数据分类:关系型数据库、NoSQL数…...

C++ 静态变量static的使用方法

static概述: static关键字有三种使用方式,其中前两种只指在C语言中使用,第三种在C中使用。 静态局部变量(C) 静态全局变量/函数(C) 静态数据成员/成员函数(C) 静态局部变量 静态局部变量&…...

对grid布局有哪些了解【css】

CSS Grid 布局是现代网页设计中非常强大的布局方式之一,它能够使你以更加灵活且直观的方式来设计网页的布局,特别适用于复杂的多行多列的布局。它允许你在网页上创建非常精确的网格,帮助你把内容放置在多个行和列中。 1. Grid 布局的基本概念…...

IOS 安全机制拦截 window.open

摘要 在ios环境,在某些情况下执行window.open不生效 一、window.open window.open(url, target, windowFeatures) 1. url:「可选参数」,表示你要加载的资源URL或路径,如果不传,则打开一个url地址为about:blank的空…...

低空经济(9)低空飞行器零部件供应商国内外厂家

低空飞行器零部件供应商国内外厂家 1.概述2.国内供应商2.1 动力系统2.2 航电系统2.3 机身结构部件2.4 传动系统2.5 液压系统与气动系统 3.国外供应商3.1 动力系统3.2 航电系统3.3 机身结构部件3.4 传动系统3.5 液压与气动系统 tips:资料来自网络,仅供参考…...

3b1b线性代数基础

零、写在前面 3b1b之前没认真看,闲了整理整理。 一、向量 学习物理的时候,向量是空间中的箭头。由其方向和长度决定。 学习数据结构的时候,向量是有序的数字列表。向量的每一维度有着不同含义。 线性代数中,我们通常认为**向量…...

困境如雾路难寻,心若清明步自轻---2024年创作回顾

文章目录 前言博客创作回顾第一次被催更第一次获得证书周榜几篇博客互动最多的最满意的引发思考的 写博契机 碎碎念时也运也部分经验 尾 前言 今年三月份,我已写下一篇《近一年多个人总结》,当时还没开始写博客。四月份写博后,就顺手将那篇总…...

SAP 中的三种内表

文章目录 1 : Introduction2 : Summary3: Reerence document4 : Example 1 : Introduction In the abap development we deal with data and the carrier is internal table . it is transfered in the whole programe. In the interview we offten meet it . What is the dif…...

从0到1学习机器学习实践--1 安装Anaconda

机器学习首先安装conda环境,这个是比较靠谱手把手执行的安装教程 最新最全(亲测)的conda安装教程和虚拟环境安装环境配置...

整合管理输入、工具与技术 、输出

过程输入工具与技术输出制定项目章程1.项目立项文件2.协议3.事业环境因素4.组织过程资产1.专家判断2.数据收集头脑风暴、焦点小组、访谈3.人际关系与团队技能冲突管理、引导、会议管理4.会议1.项目章程2.假设日志制订项目管理计划1.项目章程2.其他过程输出3.事业环境因素4.组织…...

sed — 流编辑器:从入门到精通

内容速览 简介 sed(Stream Editor)是一个功能强大的文本处理工具,广泛应用于文本文件的自动化编辑和批量处理。它通过逐行读取文件内容并在内存中的临时缓冲区(即“模式空间”)中处理文本,实现高效的文本…...

【玩转全栈】----Django基本配置和介绍

目录 Django基本介绍: Django基本配置: 安装Django 创建项目 创建app 注册app Django配置路由URL Django创建视图 启动项目 Django基本介绍: Django是一个开源的、基于Python的高级Web框架,旨在以快速、简洁的方式构建高质量的Web…...

【Linux】文件操作、系统IO相关操作、inode和输入输出重定向

⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、理解文件1.1 狭义理解1.2 广义理解1.3 文件操作1.4 系统角度 2、系统文件IO2.1 文件相关操作2.2 文件描述符2.3 重定向 3、动静…...

Prometheus+grafana实践:Doris数据库的监控

文章来源:乐维社区 Doris数据库背景 Doris(Apache Doris)是一个现代化的MPP(Massive Parallel Processing,大规模并行处理)数据库,主要用于在线分析处理(OLAP)场景。 D…...

c语言(转义字符)

前言: 内容: 然后记一下转义字符 \? 在书写连续多个问号时使用,防止他们被解析成三字母词 \ 用于表示字符常量 \\ 用于表示一个反斜杠,防止他被解析为一个转义序列符 \n 换行 \r …...

TOGAF之架构标准规范-信息系统架构 | 数据架构

TOGAF是工业级的企业架构标准规范,信息系统架构阶段是由数据架构阶段以及应用架构阶段构成,本文主要描述信息系统架构阶段中的数据架构阶段。 如上所示,信息系统架构(Information Systems Architectures)在TOGAF标准规…...

快速排序:一种高效的排序算法

前言 排序是最基本和最常用的操作之一。无论是数据处理、搜索优化,还是各种应用程序的内部逻辑,排序算法的选择都直接影响到程序的性能。快速排序(Quick Sort)作为一种典型的分治算法,以其平均时间复杂度 O(n log n) 和优越的实际表现,成为了现代编程中最常用的排序算法…...

PHP:从入门到进阶的编程之旅

在Web开发的广阔天地中,PHP(Hypertext Preprocessor,超文本预处理器)无疑是一颗璀璨的明星。自1995年问世以来,PHP凭借其开源、跨平台、易于学习和使用的特性,迅速成为Web开发领域中最受欢迎的语言之一。本…...

Windows的docker中安装gitlab

一.Windows的docker中安装gitlab 1.通过阿里云拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh 2.在本地创建备份数据的目录 mkdir -p D:home/software/gitlab/etc mkdir -p D:home/software/gitlab/logs mkdir -p D:home/software/gitlab/dat…...

计算机网络 (58)无线局域网WLAN

前言 无线局域网WLAN(Wireless Local Area Network)是一种利用无线通信技术将计算机设备互联起来,构成可以互相通信和实现资源共享的网络体系。 一、定义与特点 定义: WLAN通过无线信道代替有线传输介质连接两个或多个设备形成一个…...

LeetCode: 45.跳跃游戏II

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode: 45.跳跃游戏II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示…...

Blazo-Blazor Web App项目结构

让我们还是从创建项目开始,来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式,有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…...

汇编语法及相关指令

1.汇编指令的基本格式&#xff1a; <opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand> opcode&#xff1a;指令的功能码&#xff0c;用来表示当前指令的作用 cond&#xff1a;条件码&#xff0c;需要在指令执行之前先判断条件受否满足&…...

数据结构——堆(介绍,堆的基本操作、堆排序)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…...

linux+docker+nacos+mysql部署

一、下载 docker pull mysql:5.7 docker pull nacos/nacos-server:v2.2.2 docker images 二、mysql部署 1、创建目录存储数据信息 mkdir ~/mysql cd ~/mysql 2、运行 MySQL 容器 docker run -id \ -p 3306:3306 \ --name mysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/…...

10个非常基础的 Javascript 问题

Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。 根据MDN&#xff0c;JavaScript&#xff08;通常缩写为JS&#xff09;是一种轻量级的&#xff0c;解释性的&#xff0c;面向对象的语言&#xff0c;具有一流的功能&#xff0c;并且最著名的是Web页面…...

SCP收容物221~225

注 &#xff1a;此文接SCP收容物211~215,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-221 scp-222 scp-223 scp-224 scp-225 s…...

基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测

完整源码项目包获取→点击文章末尾名片&#xff01; 番石榴病害数据集 背景描述 番石榴 &#xff08;Psidium guajava&#xff09; 是南亚的主要作物&#xff0c;尤其是在孟加拉国。它富含维生素 C 和纤维&#xff0c;支持区域经济和营养。不幸的是&#xff0c;番石榴生产受到降…...

网络(三) 协议

目录 1. IP协议; 2. 以太网协议; 3. DNS协议, ICMP协议, NAT技术. 1. IP协议: 1.1 介绍: 网际互连协议, 网络层是进行数据真正传输的一层, 进行数据从一个主机传输到另一个主机. 网络层可以将数据主机进行传送, 那么传输层保证数据可靠性, 一起就是TCP/IP协议. 路径选择: 确…...

【mptcp】ubuntu18.04和MT7981搭建mptcp测试环境操作说明

目录 安装ubuntu18.04,可以使用虚拟机安装... 2 点击安装VMware Tool 2 更新ubuntu18.04源... 4 安装ifconfig指令工具包... 5 安装vim工具包... 5...

递归的本质

字节面试题叠罗汉&#xff0c;很遗憾没想出来&#xff0c;看了答案挺巧妙的&#xff0c;但是居然是个案例题。。。 复习一下递归的本质 正面解决问题 利用子问题来解决 可以通过规约推导的&#xff0c;基本可以用递归解决&#xff01; 在写这道算法题时&#xff0c;我想规…...

如何使用tmux !

在tmux的界面按住shift&#xff0c;就可以和普通linux界面一样&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 单击右键可以复制粘贴&#xff0c;滚动鼠标可以上下翻页&#xff01;&#xff01;&#xff01;&#xff01;…...

【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项

文章目录 S10L45 Working with Multiple Windows1 水平分割窗口2 在水平分割的新窗口中显示其它文件内容3 垂直分割窗口4 窗口的关闭5 在同一窗口水平拆分出多个窗口6 关闭其余窗口7 让四个文件呈田字形排列8 光标在多窗口中的定位9 调节子窗口的尺寸大小10 变换子窗口的位置11…...

C语言练习(16)

猴子吃桃问题。猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第10天早上想再吃时&#xff0c;见只剩一个桃子了…...

【0x0012】HCI_Delete_Stored_Link_Key命令详解

目录 一、命令参数 二、命令格式及参数 2.1. HCI_Delete_Stored_Link_Key 命令格式 2.2. BD_ADDR 2.3. Delete_All 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. Status 3.3. Num_Keys_Deleted 四、命令执行流程 4.1. 命令发送阶段 4.2. 控制器处理阶段…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证10)

基于Cookie传递token的主要思路是通过用户身份验证后&#xff0c;将生成的token保存到Response.Cookies返回客户端&#xff0c;后续客户端访问服务接口时会自动携带Cookie到服务端以便验证身份。之前一直搞不清楚的是服务端程序如何从Cookie读取token进行认证&#xff08;一般都…...

应用层协议 HTTP 讲解实战:从0实现HTTP 服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; HTTP 协议 &#x1f98b; 认识 URL&#x1f98b; urlencode 和 urldecode 二&#xff1a;&#x1f525; HTTP 协议请求与响应格式 &#x1f98b; HTTP 请求…...

Linux权限管理:从用户切换到文件权限

在Linux系统中&#xff0c;权限管理是确保系统安全和资源合理分配的核心机制。它通过用户和用户组的管理、文件权限的设置以及特殊权限的使用&#xff0c;实现了对系统资源的精细控制。 一、用户切换&#xff1a;su 和 sudo 1. 用户切换命令 su su&#xff08;switch user&a…...

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…...

Alibaba Spring Cloud 四 Seata 的核心组件:TC

Seata 的 Transaction Coordinator (TC) 是分布式事务架构中的核心组件之一&#xff0c;它负责管理全局事务的生命周期&#xff0c;包括事务的创建、状态维护以及协调各分支事务的提交和回滚。以下是有关 TC 的详细解析及其配置和使用方法&#xff1a; 1. TC 的核心功能 全局事…...

机器学习-线性回归(简单回归、多元回归)

这一篇文章&#xff0c;我们主要来理解一下&#xff0c;什么是线性回归中的简单回归和多元回归&#xff0c;顺便掌握一下特征向量的概念。 一、简单回归 简单回归是线性回归的一种最基本形式&#xff0c;它用于研究**一个自变量&#xff08;输入&#xff09;与一个因变量&…...

Java如何向http/https接口发出请求

用Java发送web请求所用到的包都在java.net下&#xff0c;在具体使用时可以用如下代码&#xff0c;你可以把它封装成一个工具类 import javax.net.ssl.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Outpu…...

three.js+WebGL踩坑经验合集(1):THREE.Line无故消失的元凶

在项目开发过程中&#xff0c;笔者两次遇到同事的一个提问&#xff0c;我场景中的Line在相机旋转到某些角度或者移动到某些位置的时候会无故消失。由于业务场景复杂&#xff0c;所以这两位同事都是先花费了大量时间排查业务问题&#xff0c;然后才找我求助。这个问题抽象出来的…...

【ROS】RViz2源码分析(四):初始化、启动

【ROS】郭老二博文之:ROS目录 1、简述 RViz2在main函数中,首先注册日志处理函数; 将 RCLCPP_DEBUG 等日志记录函数,通过 rviz_common::set_logging_handlers() 注册到 rviz_common 中。然后,创建界面类 rviz_common::VisualizerApp,并执行初始化 vapp.init(argc, argv)…...

【MySQL】 库的操作

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;【MySQL】 库的操作 发布时间&#xff1a;2025.1.23 隶属专栏&#xff1a;MySQL 目录 库的创建语法使用 编码规则认识编码集查看数据库默认的编码集和校验集查看数据库支持的编码集和校验集指定编码创建数据库验证不…...

豆包MarsCode 蛇年编程大作战 | 高效开发“蛇年运势预测系统”

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 豆包MarsCode 蛇年编程大作战 | &#x1f40d; 蛇年运势预测 在线体验地址&#xff1a;蛇年…...

新能源汽车充电桩选型以及安装应用

摘要:随着当前经济的不断发展,国家的科技也有了飞速的进步,传统的燃油汽车已经不能适应当前社会的发展,不仅对能源造成巨大的消耗,还对环境造成了污染,当前一种新型的交通运输工具正在占领汽车市场。在环境问题和能源问题愈发严重的当今社会,节能减排已经成为全世界的共同课题,…...

docker Ubuntu实战

目录 Ubuntu系统环境说明 一、如何安装docker 二、发布.netcore应用到docker中 三、查看docker信息 Ubuntu系统环境说明 cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.5 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.5 LTS (…...

w-form-select.vue(自定义下拉框组件)(与后端字段直接相关性)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的&#xff0c;我们来详细解释 w-form-select.vue 组件中每个属性的含义&#xff0c;并用表格列出它们是否与后端字段直接相关&#xff1a; 属性解释表格&…...