MQ面试题之Kafka

前言

前文介绍了消息队列相关知识,并未针对某个具体的产品,所以略显抽象。本人毕业到现在使用的都是公司内部产品,对于通用产品无实际经验,但是各种消息中间件大差不差,故而本次选择一个相对较熟悉的Kafka进行详细介绍。

MQ面试题之Kafka

1. kafka架构
在这里插入图片描述

只需深入理解上图即可清楚Kafka的工作流程。

  1. 描述一下Kafka是什么,以及它的主要特点是什么?

Kafka是由Apache软件基金会开发的一个开源流处理平台,主要用于构建实时数据管道和流应用程序。它是一个高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。Kafka的主要特点包括:
高吞吐量:Kafka可以处理数百万的消息每秒处理数以亿计的事件
可持久化:Kafka将消息持久化到磁盘,这样即使消费者离线,也可以继续消费消息。
分布式系统:Kafka是分布式的,可以在多个服务器上运行,这样可以提高系统的可用性和扩展性。
实时性:Kafka可以在毫秒级别处理消息,满足实时数据处理的需求。
容错性:Kafka集群可以容忍节点的故障,如果一个节点出现故障,其他节点可以继续工作。
Kafka广泛应用于各种场景,如日志收集、消息传递、流数据处理等。它可以作为数据流平台,将数据从一个系统传输到另一个系统,并在传输过程中进行实时处理。此外,Kafka还可以与Hadoop等离线数据处理系统集成,提供实时的数据管道。
3. Kafka如何实现数据的高效读取?
Kafka通过以下几种方式实现数据的高效读取:
顺序写磁盘:Kafka的生产者将数据写入到log文件中时,采用顺序写的方式,即一直追加到文件末端,这充分利用了磁盘的顺序读写性能。由于磁盘的机械机构特性,顺序写的速度远高于随机写,因此在读写磁盘时能显著提高性能。
零拷贝技术:Kafka实现了零拷贝技术,直接在操作系统层面完成文件的操作,避免了在应用层进行数据的复制和拷贝,减少了CPU和内存的使用,提高了数据读取的效率。
分段日志+索引文件:Kafka将topic中的大文件分成多个小文件段,每个文件段对应一个小的索引文件。通过索引信息,可以快速定位message和确定response的最大大小。这样可以提高读取操作的效率和响应速度。
Pagecache(页面缓存):Kafka将数据持久化到Pagecache中,这样在读取数据时可以直接在内存中进行,避免了磁盘I/O操作,提高了读取效率。同时,Kafka会尽量利用所有空闲内存(非JVM内存),避免GC负担
综上所述,Kafka通过多种方式实现了数据的高效读取,包括顺序写磁盘、零拷贝技术、分段日志+索引文件和Pagecache等。这些技术能够提高数据的读写速度和效率,满足了大规模数据处理和高并发访问的需求。

  1. Kafka中的ack机制有哪些级别,它们分别代表什么?

Kafka中的ack机制是用于确认消息已经被成功接收和处理的机制。以下是Kafka中的三种ack级别:
ack=0:这是最低级别的确认,代表生产者在发送消息后不需要等待来自服务器的任何确认。这意味着生产者无法知道消息是否成功存储在Kafka集群中,因此可靠性最低,但在处理大量数据时能提供最高的吞吐量。
ack=1:生产者会等待直到消息的领导者副本(Leader Replica)确认接收到消息。一旦领导者副本存储了消息,生产者会收到一个确认。这个级别在性能和数据可靠性之间提供了一个平衡,但如果领导者副本在确认后发生故障,而消息还未复制到追随者副本(Follower Replicas),则消息可能会丢失。
ack=-1(或all):生产者等待领导者副本和所有追随者副本都存储了消息后才进行确认。这种模式下,数据可靠性最高,但效率最低。如果存在追随者副本故障的情况,可能会造成数据重复。

  1. 解释Kafka中的偏移量概念,以及它的重要性是什么?

Kafka中的偏移量是用于标识每条消息在分区中的位置的数字。每个消息都有一个唯一的偏移量,由Kafka分配,并在分区中递增。偏移量可以用于回溯分区中的消息,也可以用于跟踪已经消费的消息
偏移量的重要性主要体现在以下几个方面:
保证消息可靠性Kafka通过保证消息的有序性来确保消息的可靠性,而偏移量是衡量消息有序性的重要指标。通过偏移量,Kafka能够追踪每条消息的位置,确保消息的可靠传输和正确处理。
避免消息重复消费:在消费消息时,如果偏移量设置不当,可能导致消费者重复消费同一消息。通过合理设置偏移量,可以有效避免这种情况的发生,确保每条消息只被消费一次。
实现消息的Exactly-Once语义:在某些场景下,需要确保消息只被处理一次,即Exactly-Once语义。通过偏移量,Kafka能够提供这种语义保证,确保每条消息在处理过程中只被处理一次。
追踪和监控:偏移量可以用于追踪和监控消费者进度,以及检查是否有缺失的消息。通过获取当前消费的偏移量,可以了解消费者所在的位置和进度,便于监控和管理。
容错机制:Kafka中的偏移量还可以作为实现消费者的容错机制的重要依据。当消费者发生故障时,可以从偏移量中恢复消费者的位置,继续从上次消费的位置开始消费,避免了数据的丢失或重复。
综上所述,Kafka中的偏移量是实现消息可靠传输和处理的关键因素,对于保证消息的有序性、避免消息重复、实现Exactly-Once语义、监控和追踪以及容错机制等方面都具有重要的作用。

  1. Kafka如何保证消息的顺序性?

Kafka通过以下两种方式来保证消息的顺序性:
单分区有序:Kafka只保证单partition有序,即生产者发送到同一个partition的所有消息都按照发送的顺序进行存储和消费。这样可以确保在单partition内部,消息是有序的
全局顺序:如果需要全局顺序,即所有消息按照发送的顺序被消费,可以设置topic只有一个partition。这样,无论哪个生产者发送消息,都只能发送到这一个partition中,从而保证了全局顺序。
在Kafka中,消费者按照其拉取消息的顺序来消费消息。消费者从broker拉取数据时,会按照broker中的存储顺序拉取数据。如果消费者按照相同的消费速度进行消费,那么拉取的顺序就是消费的顺序。这就保证了Kafka可以按照发送的顺序消费消息。
然而,如果Kafka需要保证多分区消息的全局顺序,就可能会出现问题。因为如果一个生产者同时向多个partition发送消息,由于网络延迟或者硬件性能的问题,可能会导致不同partition的消息接收时间不同,从而影响全局顺序。在这种情况下,可以使用一些编程技巧或者调整Kafka的配置参数来尽量保证全局顺序,但是不能完全保证。

  1. Kafka的数据持久性如何?

Kafka的数据持久性非常高,主要体现在以下几个方面:
数据持久化到磁盘:Kafka将数据持久化到磁盘上,而不是仅仅保存在内存中。这样即使在服务器突然断电或宕机的情况下,数据也不会丢失。Kafka使用了一种叫做“日志文件”的方式来进行数据存储,这种方式能够保证数据的可靠性和持久性。
消息持久化:Kafka的消息在发送之后会被持久化到磁盘上,保证了消息的可靠传输和持久化存储。Kafka通过将数据追加到日志文件中,实现了高效的顺序写磁盘,从而提高了数据持久化的速度和效率。
高可靠性:Kafka通过副本机制和分布式架构的设计,保证了数据的高可靠性。每个分区都有多个副本,主副本负责写操作,而其他副本作为备份。这样即使主副本出现问题,也可以从其他副本中恢复数据。
监控和日志记录:Kafka提供了完善的监控和日志记录功能,能够实时监控系统的运行状态和数据的流动情况。通过查看日志和监控数据,可以及时发现和解决潜在的问题,进一步保证了数据的持久性和可靠性。
综上所述,Kafka的数据持久性非常高,通过持久化到磁盘、消息持久化、高可靠性和监控日志记录等方式,保证了数据的可靠传输和持久化存储。这些特性使得Kafka在实时数据处理、日志收集、消息队列等领域得到了广泛应用。

  1. 如何在Kafka中配置和调整消费者的行为?

使用auto.offset.reset配置来重置消费者的偏移量。主要有三种策略:latest,从最大位点开始消费;earliest,从最小位点开始消费;none,不做任何操作,也即不重置。
调整消费者的session.timeout.ms和heartbeat.interval.ms配置。session.timeout.ms是消费者超时时间,默认是10秒。超过这个时间,Kafka会认为消费者挂掉了,并重新进行均衡。heartbeat.interval.ms是心跳监测时间,默认值是3秒。消费者每3秒发送一次心跳给协调者。
调整消费者的批量消费配置。可以通过设置ConcurrentKafkaListenerContainerFactory.setBatchListener(true)开启批量消费,并配置批量消费数ConsumerFactory.MAX_POLL_RECORDS_CONFIG = 100,默认为500。
调整消费者的线程池配置。消费者使用线程池进行批量消费数据,可以调整线程池大小来优化性能。
调整消费者的拉取大消息的配置。在拉取大消息时,需要注意控制拉取速度,修改配置:max.poll.records,默认值:500。如果单条消息超过1 MB,建议设置为1。

  1. Kafka的适用场景是什么?

日志收集:Kafka可以作为一个高效的日志收集器,收集分布在不同服务器上的大量日志数据,供后续分析和处理。
实时流处理:Kafka可以将实时流数据存储在队列中,供实时流处理框架(如Storm、Spark Streaming、Flink等)进行处理,支持数据实时处理和分析。
消息系统:Kafka可以作为消息系统使用,提供可靠的消息传输和处理,用于实现异步通信和解耦应用程序的组件。它比其他传统的消息系统有更好的吞吐量,内置分区、副本和故障转移等功能,可以处理大规模的消息。
网站活动跟踪:Kafka可以用于跟踪网站上的活动,如用户浏览、点击、搜索等,进行实时的统计和分析。
数据管道:Kafka可以用于搭建数据管道,将数据从不同的数据源(如数据库、文件系统等)传输到不同的数据目的地(如Hadoop、Elasticsearch等)。
分布式应用程序:Kafka可以用于分布式应用程序之间的数据通信,实现不同节点之间的数据共享和协作。
此外,Kafka还适用于需要异步处理、流量削峰等场景。例如,在处理订单状态时,如果后一个流程需要等待前一个流程执行完成后才能执行,可以使用Kafka将业务流程变成异步的,提高效率在流量削峰方面,Kafka可以控制客户端的流量,避免后端服务崩溃,保证服务的稳定性。
综上所述,Kafka适用于多种场景,特别是需要处理大规模数据、实时处理和分析、可靠消息传输和分布式处理等场景。

  1. 如何理解Kafka的分区和副本机制?

Kafka的分区和副本机制是其高可靠性和高吞吐量的重要保障。
分区是Kafka主题的一部分,它将主题中的数据分割为多个有序的、独立的片段,每个分区都有一个唯一的偏移量,通过这个偏移量,消费者可以按顺序读取和访问消息。分区可以提高数据的并行处理能力,因为可以同时在多个分区上处理数据。
Kafka的副本机制是为了实现数据的高可用性。每个分区都有多个副本,其中一个副本是主副本,其他副本是从副本。主副本负责接收所有的写入请求,并将数据同步复制到所有的从副本中。当主副本发生故障时,Kafka会自动从副本中选择一个新的主副本,以保证数据的可靠性和可用性。这种机制能够提高系统的容错能力,当某个Broker上的分区数据丢失时,仍然可以从其他Broker上的副本中获取数据。
总的来说,Kafka的分区和副本机制是其作为分布式流处理平台的重要特性,能够保证数据的可靠性和可用性,同时提高系统的吞吐量和处理能力。

  1. Kafka如何处理重复消费和数据丢失的问题?

消费者偏移量管理:Kafka维护了每个消费者在每个分区中消费的偏移量信息。消费者可以在消费消息后提交偏移量,表示已经成功处理了该消息。当消费者重新启动或发生故障时,可以使用已提交的偏移量来从上次消费的位置继续消费,避免重复消费。
幂等性处理:应用程序的消费逻辑可以设计为幂等的,即使消息被重复消费,也不会导致副作用。通过在应用程序逻辑中实现幂等性,即使消息重复消费,也不会产生错误结果。
消息去重技术:可以通过在应用程序中维护一个已处理消息的记录或使用外部存储(如数据库)来实现消息的去重。
唯一标识符:在每条消息中添加一个唯一标识符,并在应用程序中记录已经处理的标识符。
幂等性生产者:在消息的生产端实现幂等性,确保相同的消息重复发送时不会引起重复消费。
设置副本因子:副本因子是用于设置每个分区存储的副本数量。副本因子的值至少应该大于1,以保证数据的安全性。
配置参数设置:通过合理设置一些参数,如log.flush.interval.messages和log.flush.interval.ms,可以控制数据写入磁盘的时间间隔,从而避免数据丢失。
断电或机器故障时的处理当Kafka的数据一开始就存储在PageCache上时,定期flush到磁盘上。如果出现断电或机器故障等,PageCache上的数据会丢失。可以通过配置参数log.flush.interval.messages和log.flush.interval.ms来控制flush间隔,但并不能完全避免数据丢失。

  1. 你如何理解Kafka的消费者组?在实际项目中是如何使用它的?

Kafka的消费者组是其提供的一种消费者机制用于实现消息的并行处理和负载均衡。在消费者组中,可以有多个消费者实例,它们共享一个公共的ID即Group ID,并协调消费订阅主题的所有分区。每个分区只能由同一个消费者组中的一个Consumer实例来消费,保证了消息的单播。
在实际项目中,使用Kafka的消费者组可以实现以下功能:
并行处理:消费者组可以将消息分散到多个实例上进行并行处理,提高了处理速度和吞吐量。
负载均衡:通过将消息分配给多个实例进行消费,消费者组可以实现负载均衡,避免某个实例成为瓶颈。
容错处理:当某个实例发生故障时,消费者组会自动将其从消费组中剔除,并将该实例消费的分区分配给其他实例,保证了系统的可用性和可靠性。
消息一致性通过使用Kafka的幂等性和事务机制,可以实现消息的一致性消费和处理
在具体使用时,需要考虑以下几个方面:
确定合适的消费者数量:根据业务需求和资源情况,合理配置消费者数量,避免过多的消费者导致资源浪费或过少的消费者导致处理速度受限。
选择合适的负载均衡策略:根据业务需求和数据分布情况,选择合适的负载均衡策略,如轮询、随机等。
处理消费者的异常情况:在实际应用中,需要考虑到消费者的异常情况,如进程崩溃、网络故障等,并采取相应的措施进行容错处理。
监控和日志记录:对消费者组进行实时监控和日志记录,以便及时发现和处理问题。
综上所述,Kafka的消费者组是一种强大的机制,可以实现消息的并行处理、负载均衡、容错处理和消息一致性等功能。在实际项目中,需要根据业务需求和资源情况合理使用消费者组,以实现最佳的性能和可靠性。

  1. 在设计Kafka集群时需要考虑哪些因素?

硬件配置:包括服务器的CPU、内存、磁盘和网络等硬件配置。需要根据业务需求和数据规模来合理配置硬件资源,保证Kafka集群的性能和稳定性。
操作系统:Kafka可以在不同的操作系统上运行,如Linux、Windows等。选择合适的操作系统可以提高Kafka的性能和稳定性,同时需要考虑到操作系统的维护和管理的便利性。
网络架构:Kafka集群的网络架构包括网络拓扑结构、网络带宽、网络延迟等。需要考虑如何合理地设计网络架构,以保证Kafka集群的性能和稳定性。
数据存储:Kafka将数据存储在磁盘上,需要考虑如何合理地设计数据存储方案,以保证数据的可靠性和性能。
副本机制:Kafka提供了副本机制来保证数据的可靠性和可用性。需要考虑如何合理地设计副本方案,以保证数据的可靠性和性能。
监控和日志记录:需要考虑如何对Kafka集群进行实时监控和日志记录,以便及时发现和处理问题。
安全性:需要考虑如何保证Kafka集群的安全性,如数据加密、身份认证等。
扩展性:需要考虑如何保证Kafka集群的扩展性,以便在业务规模增长时能够快速地扩展集群规模。

  1. Kafka的性能优化有哪些方法?

调整Kafka Broker配置:根据实际业务需求和硬件配置,合理调整Kafka Broker的配置参数,如num.partitions、num.consumer-fetchers、replica.fetch.max.bytes等,可以提高Kafka的性能和吞吐量。
优化生产者和消费者代码:通过优化生产者和消费者的代码,可以减少不必要的处理和网络传输,提高Kafka的性能和吞吐量。例如,使用批量发送、减少序列化开销、使用压缩等。
选择合适的压缩算法:Kafka支持多种压缩算法,如Snappy、LZ4、GZIP等。根据实际业务需求和数据规模,选择合适的压缩算法可以提高Kafka的性能和压缩效率。
使用快速存储器:Kafka的数据存储在磁盘上,使用快速存储器可以提高数据读写的速度,从而提高Kafka的性能和吞吐量。
优化网络配置:网络延迟和带宽是影响Kafka性能的重要因素。通过优化网络配置,如调整Kafka Broker的网络缓冲区大小、减少网络延迟等,可以提高Kafka的性能和吞吐量。
分区策略优化:在设计Kafka主题时,需要考虑分区策略。合理的分区策略可以提高Kafka的性能和吞吐量。例如,根据业务需求将数据分散到多个分区中,避免某个分区过大或过小等情况。
使用合适的消费者模型:Kafka提供了多种消费者模型,如Simple Consumer、Consumer Groups等。根据实际业务需求和数据规模,选择合适的消费者模型可以提高Kafka的性能和可靠性。
监控和日志记录:通过实时监控Kafka集群的状态和日志信息,可以及时发现和解决性能瓶颈和问题。同时,定期进行性能测试和负载压力测试,可以帮助发现潜在的性能问题。
综上所述,Kafka的性能优化可以从多个方面入手,包括调整配置参数、优化生产者和消费者代码、选择合适的压缩算法、使用快速存储器、优化网络配置、分区策略优化、使用合适的消费者模型以及监控和日志记录等。需要根据实际业务需求和数据规模进行合理的优化,以提高Kafka的性能和可靠性。

15. kafka数据存储
在这里插入图片描述

认真理解上图即可。

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

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

相关文章

YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 …

RBD —— Fracture SOP

目录 Assemble —— 清理破碎操作并生成碎片 Boolean Fracture —— 使用切割面破碎输入的几何体 Convex Decomposition —— 将输入几何体分解为凸线段 Glue Cluster —— 构建cluster值想glue约束添加强度 RBD Material Fracture —— 基于材质类型预破碎 Concrete Gl…

C++ 之LeetCode刷题记录(二十)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二…

RK3588平台开发系列讲解(视频篇)RKMedia框架

文章目录 一、 RKMedia框架介绍二、 RKMedia框架API三、 视频处理流程四、venc 测试案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 RKMedia框架介绍 功能: VI(输…

【牛客刷题】笔试选择题整理(day1-day2)

每天都在进步呀 文章目录 1. 小数求模运算2. 进程的分区,这里说的不是JVM的分区。进程中,方法存放在方法区。3. 访问权限控制4. 继承与多态5. 与equals()6. 类加载顺序7. super()与this()7.1 super7.1.1 super调用父类构造方法7.1.2 super调用父类属性和…

私人漫画图书馆:分类管理,一目了然 | 开源日报 No.157

tachiyomiorg/tachiyomi Stars: 26.9k License: Apache-2.0 tachiyomi 是一个免费开源的安卓漫画阅读器。 该项目的主要功能、关键特性、核心优势包括: 从多种来源在线阅读本地阅读已下载内容可配置的阅读器,具有多个查看器、翻页方向和其他设置支持追…

什么叫高斯分布?

高斯分布,也称为正态分布,是统计学中最常见的概率分布之一。它具有钟形曲线的形态,对称分布在均值周围,且由均值和标准差两个参数完全描述。 高斯分布的概率密度函数(Probability Density Function, PDF)可…

[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

DevOps系列文章之 GitLabCI汇总

GitlabCI环境搭建 前提 先安装 docker Docker容器化安装 docker pull gitlab/gitlab-ee:12.4.0-ee.0 创建挂载目录 mkdir -p /srv/gitlab mkdir -p /srv/gitlab/config # 映射到 Glitlab 容器中的配置目录 mkdir -p /srv/gitlab/logs # 映射到 Glitlab 容器中的日志目录 m…

mac裁剪图片

今天第一次用mac裁剪图片,记录一下过程,差点我还以为我要下载photoshop了, 首先准备好图片 裁剪的目的是把图片的标题给去掉,但是不能降低分辨率,否则直接截图就可以了 解决办法 打开原始图片(不要使用预览&#xf…

Python环境下基于机器学习的NASA涡轮风扇发动机剩余使用寿命RUL预测

本例所用的数据集为C-MAPSS数据集,C-MAPSS数据集是美国NASA发布的涡轮风扇发动机数据集,其中包含不同工作条件和故障模式下涡轮风扇发动机多源性能的退化数据,共有 4 个子数据集,每个子集又可分为训练集、 测试集和RUL标签。其中&…

【开源】基于JAVA语言的二手车交易系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块2.3 车辆预约管理模块2.4 车辆预定管理模块2.5 车辆留言板管理模块2.6 车辆资讯管理模块 三、系统设计3.1 E-R图设计3.2 可行性分析3.2.1 技术可行性分析3.2.2 操作可行性3.2.3 经济…

Java入门——数据类型、自动类型转换、强制类型转换

目录 数据类型 基本数据类型 自动类型转换 表达式的自动类型转换 强制类型转换 计算机中表示数据的最小单元 计算机中表示数据的最小单元:一个字节(byte,简称B,是使用8个二进制位组成的)字节中的每个二进制位就称…

Python进阶第一篇(Python的面向对象)

文章目录 一、初识对象1.案例代码2.读出结果 二、类的成员方法三、类和对象四、构造方法六、其他内置方法1.魔术方法案例代码2.读出结果 七、封装1.封装案例代码2.读出结果 八、继承1.复写与调用2.类型注解 九、多态 在这个探索和学习的旅程中,我们将深入理解一些编…

基于DataKit迁移MySQL到openGauss

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

网络防御保护——防火墙子接口配置

一.实验拓扑图 二.实验要求 1.生产区在工作时间内可以访问服务区,仅可以访问http服务器。 2.办公区全天可以访问服务区,其中,10.0.2.20可以访问FTP服务器和HTTP服务器,10.0.2.10仅可以ping通10.0.3.10。 3.办公区在访问服务区时采…

【软件测试】学习笔记-Nginx 在系统架构中的作用

本篇文章你探讨 Nginx 在应用架构中的作用,并从性能测试角度看如何利用 Nginx 数据统计用户访问量。 Nginx 重要的两个概念 代理 首先要来解释一下什么是代理,正向代理和反向代理是什么意思?各自作用是什么?不少同学经常听到这…

C语言——操作符详解2

目录 0.过渡0.1 不创建临时变量,交换两数0.2 求整数转成二进制后1的总数 1.单目表达式2. 逗号表达式3. 下标访问[ ]、函数调用( )3.1 下标访问[ ]3.2 函数调用( ) 4. 结构体成员访问操作符4.1 结构体4.1.1 结构体的申明4.1.2 结构体变量的定义和初始化 4.2 结构体成…

【Web】小白也能做的RWCTF体验赛baby题部分wp

遇到不会的题,怎么办!有的师傅告诉你完了,废了,寄了!只有Z3告诉你,稳辣!稳辣!都稳辣! 这种CVE复现的题型,不可能要求选手从0到1进行0day挖掘,其实…

Go语言安装及开发环境配置

目录 官网 国内 Linux(CentOS & Ubuntu)安装 环境变量设置 命令行下开发 开发模式执行 编译 IDE下开发 插件安装 安装依赖工具 运行 常见问题 1、dial tcp 172.217.160.113:443: i/o timeout 2、VS Code不能完美显示zsh问题 官网 访问Golang官网的下载链接&a…