Kafka--常见问题
1.为什么要使用 Kafka,起到什么作用
Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流
Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和高效率,非常适合大规模的数据流平台。因为 Kafka 具有极高的吞吐量,适用于需要即时响应的应用程序,如实时分析、监控、日志收集等。
Kafka 提供了生产者和消费者之间的解耦功能。生产者和消费者不直接通信,而是通过 Kafka 消息中间件进行数据交换,从而实现系统间的解耦。这种机制帮助简化了系统设计和开发,并提高了系统的可维护性。
Kafka 将数据持久化到磁盘中,即使在系统崩溃后,数据依然不会丢失。Kafka 还支持副本机制(Replication),通过将数据分布到多个节点来实现容错和高可用性。
缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。
2.Kafka 数据一致性怎么保证
1.副本机制 (Replication)
Kafka 通过副本机制来保证数据的持久性和一致性。每个 Kafka 分区都有多个副本,这些副本分布在不同的节点(Broker)上。副本的存在确保了即使某些节点发生故障,数据也不会丢失,且系统能够保证较高的可用性和一致性。
副本机制如何保证一致性:
Leader 和 Follower:每个分区都有一个主副本(Leader)和多个备份副本(Follower)。所有对分区的读写操作都由 Leader 进行,Follower 则跟随 Leader,复制其数据。
同步复制 (In-sync Replicas, ISR):Kafka 会维护一个“同步副本列表”(ISR),即在指定时间内,所有同步副本都会确保与 Leader 数据一致。只有在 ISR 列表中的副本才会被认为是“有效副本”。
数据一致性:写入操作必须同步到所有 ISR 中的副本后,才会被认为是成功的。这样即使某个副本发生故障,只要Leader 副本和 ISR 中的其他副本依然存在,数据不会丢失。
2.消息写入和确认机制
在 Kafka 中,生产者写入消息后,可以选择不同的确认级别(acks)来控制数据一致性:
acks=0:生产者不等待任何确认,意味着数据可能丢失。
acks=1:生产者等待 Leader 副本的确认。
acks=all(或 acks=-1):生产者等待所有 ISR 中的副本确认,确保所有副本的数据都一致,保证最高的数据一致性。
但是acks=1或acks=all(或 acks=-1)这种情况,数据可能会有重复写入。
3.事务支持 (Exactly Once Semantics, EOS)
Kafka 提供了事务支持,可以保证“精确一次语义”。即使在生产者重试发送消息或消费时发生故障,Kafka 也能确保消息的准确性,不会出现重复消费或丢失消息。通过事务机制实现对多个topic的多个partition的原子性写入,即处于一个事务内的所有消息,要么全部写成功,要么全部写失败。
4.消费者偏移管理 (Consumer Offset Management)
消费者在消费 Kafka 消息时,会记录每个消息的消费偏移量。Kafka 提供了两种方式来管理消费偏移量:
自动提交:消费者在消费消息后,自动提交偏移量,这种方式可能在故障恢复时导致消息丢失或重复消费。
手动提交:消费者自己控制何时提交偏移量,这样可以确保在处理完消息后,再提交偏移量,减少数据丢失或重复消费的风险。
Kafka 会将消费者的偏移量存储在一个特殊的主题中。消费者可以在故障恢复时,通过检查偏移量来确保消息的准确消费。Kafka 通过消费者组管理多个消费者的偏移量,确保每个消息只被一个消费者处理,保证了消息的处理顺序和一致性。
5.消息顺序性
Kafka保证消息在分区内按照写入顺序存储,消费者按照消息的偏移量offset顺序消费,确保数据的一致性。
3.大数据为什么非要使用 Kafka,不使用别的消息队列
高吞吐量。Kafka将来自生产者的数据分为不同分区进行存储,批量处理并顺序写入磁盘,能够处理大规模的数据量。
低延迟。Kafka能够提供相对较低的延迟,实时处理数据。
可扩展性。Kafka具有很好的扩展性,可以增加更多的Broker节点数,也可以增加主题的分区数,使得Kafka能够处理更多的数据。
高并发。Kafka支持多生产者和多消费者同时读写,使得数据的处理效率更高。
4.Flink 消费 Kafka 时,Source 的并行度和 Kafka 分区的关系
Source并行度和Kafka分区的关系,通常Source并行度不能超过Kafka主题的分区数,且分区数最好是Source并行度的倍数
首先是从分区分配策略来考虑,分区分配策略中的范围轮询策略在分区数不是Source并行度倍数时,较前面的并行度实例往往会消费过多的数据,容易产生数据倾斜,所以分区数最好是Source并行度的倍数
再来是从时间窗口触发条件来考虑,通常对于事件时间窗口,我们会设定水位线来触发下游算子的窗口计算,当上游最小的水位线达到下游时间窗口界限时,窗口计算才会触发,如果分区数少于Source并行度,上游最小水位线永远无法触发窗口计算
5.Kafka 中如何保证消息的顺序性?
Kafka保证顺序消费的方法主要有两种:全局有序和局部有序。
全局有序
全局有序是指一个Topic下的所有消息都按照生产顺序进行消费。要实现全局有序,可以将一个Topic设置为只有一个Partition,这样所有消息都会发送到这个Partition中,从而保证消息的顺序性。此外,消费者(Consumer)也需要使用单线程或保证顺序的线程模型来消费消息。
局部有序
局部有序是指一个Topic下的消息,只需要满足同一业务字段的消息按照生产顺序进行消费。例如,订单系统中同一个订单ID的消息需要按照顺序消费。要实现局部有序,可以在发送消息时指定Partition Key,Kafka会对其进行Hash计算,根据计算结果决定放入哪个Partition。这样相同Partition Key的消息会放在同一个Partition中,从而保证顺序性。
6.Kafka 是如何实现高吞吐率的
首先最重要的一点就是,顺序写入与顺序读取。操作系统和磁盘在顺序写入时的性能远高于随机写入,因为磁盘头移动的距离最短,IO操作效率最大;而按照顺序来读取消费数据,也保证了高效的数据访问速度。
分布式架构与分区机制。每个区的数据存储是独立的,可以充分利用多台机器的并行处理能力,提高数据的写入和读取速度;而每个分区的副本分布在不同的broker上,保证了高可用和负载均衡,同时也能在多个节点上并行处理数据。
kafka将消息存储在磁盘上,而不是内存中。kafka利用零拷贝技术将磁盘中的数据直接从磁盘传输到网络中,减少了不必要的数据拷贝操作,提高了数据传输效率降低系统负载。
页缓存是一种重要的高速磁盘缓存,是计算机随机存取器RAM中的一块区域,主要是负责用户空间与磁盘文件之间的高效读写。页缓存减少了连续读写磁盘文件的次数,操作系统自动控制文件块的缓存与回收生命周期,用访问RAM的缓存代替访问磁盘区域的机制,增强查询效率。
kafka支持批量数据传输,这种批量操作能够显著减少网络传输的开销,提高数据写入和读取的效率。
Kafka 支持对消息进行压缩,压缩可以减少网络带宽的消耗,并提高吞吐量。
7.Kafka 到底会不会丢失数据?
Kafka 在设计上具有非常高的可靠性和容错能力,但在某些情况下,它确实可能丢失数据。
kafka怎么保证数据不丢失
数据持久化。Kafka将消息持久化到磁盘,即使Broker宕机,消息也不会丢失副本机制。Kafka支持多副本机制,每个分区可以有多个副本,分布在不同的Broker上,Leader负责处理读写请求,Follower同步数据进行备份。
确认机制和Leader选举。生产者可以配置ACK机制为-1,生产数据时,所有ISR副本确认后才被认为发送成功;当Leader副本失效时,Kafka会从ISR副本集合中进行Leader选举但即使提供了多种机制,数据仍然可能丢失比如生产者将ACK配置为0,生产数据后不需要任何确认就被认为发送成功;比如Broker配置不当或ISR不足,Leader宕机时,无法进行Leader选举;再比如,对于生产者生产的数据,Kafka会以日志形式持久化,但日志并不会一直持有,需要清理,如果日志清理策略设置不当,消息可能过早被删除。
8.项目中 Kafka 主题的分区数是如何确定的
选择合适的分区数量可以达到高度并行读写和负载均衡的目的,在分区上达到负载均衡是实现吞吐量的关键。需要根据每个分区的生产者和消费者的期望吞吐量进行估计。
首先要从吞吐量和数据量进行预估,如果业务需要高吞吐量的数据处理,通常需要更多分区来进行并行处理数据,大的数据量需要处理也同样需要更多的分区来均衡负载。
还要从消费者组的角度考虑。每个分区只能被同一消费者组中的一个消费者消费,以及根据分区分配策略考量,分区数最好是消费者组消费者数量的倍数。
还要从系统资源角度考虑,每个分区都会占用一定的Broker资源,确保Broker有足够的资源来支持所需的分区数,同时要预留一定的分区扩展空间,Kafka允许分区数的增加,考虑未来的业务增长和数据量增加可能需要进行分区扩展的操作。
9.Kafka 分区数可以增加或减少吗?为什么?
分区数是可以增加的,Kafka支持直接增加主题的分区数。Kafka本身就具有可扩展性,增加分区数的操作可以提高吞吐量,提高集群的并行处理能力,但分区数增加后,消费者的数量也应该调整,避免资源的浪费。
分区数不可以减少,Kafka不支持直接减少主题的分区数,因为分区数的减少,减少分区数的数据或许会发生数据丢失,数据重新分配也会花费额外的开销,可能导致消息顺序被打乱,且会影响集群的性能。
如果需要减少分区数,可以创建新的主题,将现有主题的数据迁移到具有较少分区数的新主题,来确保数据的完整性。
10.Kafka 数据积压的解决方案
Kafka 数据积压的产生通常是由于生产者的消息写入速度过快、消费者的消费能力不足、Kafka 集群的资源瓶颈、消费者处理逻辑的复杂性、配置不匹配等多种因素综合作用的结果。
提高消费者的并行度是解决数据积压的直接方式之一
如果消费者的处理能力不足,导致消费速度较慢,可能会造成数据积压。
提升消费者的处理能力是解决积压的另一种方法
Kafka 分区的数量直接影响消费者的并行性。如果 Kafka 中的分区数较少,无法充分利用消费者的并行处理能力。增加 Kafka 分区数可以提高 Kafka 的吞吐量,从而减少积压
如果消息在 Kafka 中滞留太久,可能会导致积压并消耗不必要的存储资源。设置合理的消息过期和清理策略可以帮助控制数据积压
11.项目中监控了 Kafka 的哪些 Metrics(指标)?
集群中的Broker的数量、主题数量、分区数量等基本信息
实时的消息的生产速率和消费速率
各个Broker的CPU、内存使用情况
某个主题具体的分区数、副本数、ISR状态、每个分区的滞后情况等
=========================================================================
Kafka使用的过程中可能会遇到各种各样的问题,比如系统资源使用率高、集群节点宕机等,进而影响我们生产业务正常开展。为了不让消息队列失控,增加监控是非常有必要的。
1)首先是基础指标,这是监控系统常见的监控指标:
CPU、内存、硬盘、网络 I/O 等资源使用情况,Kafka 提供了 BytesIn/BytesOut 指标来监控带宽使用率;
TCP 连接数、文件描述符使用情况;
JVM 监控指标,Kafka 也是一个 JVM 进程,需要监控堆内存使用情况、FULL GC 频率和时长、JVM 线程数等;
网络延迟。
2)然后就是Broker指标:
UnderReplicatedPartitions
ISRShrink/ISRExpand 表示 ISR 收缩和扩容的频率。
ActiveControllerCount 表示当前 Broker 节点是否是 Controller 节点,集群健康的情况下,有且仅有一个 Broker 节点这个指标值是 1。
offlinePartitionCount 表示处于不可用状态的 Partition 的数量,也就是 Partition 没有活跃的 Leader节点的数量。
LeaderElectionRateAndTimeMs 表示选举新 Leader 的频率(每秒多少次)和集群中无 Leader 节点的时长。
UncleanLeaderElectionsPerSec 这个指标有数据时,代表可能有消息丢失。
TotalTimeMs
3)Producer指标:
request-latency-avg 平均请求时间,这个指标包括生产者发送消息到收到响应的延迟,这个指标会影响 Producer 端的吞吐量。
waiting-threads 发送缓存区中阻塞的用户线程数,如果这个指标变高,意味着生产者被阻塞的线程数变高,需要排查原因。
4)Consumer指标:
records-lag 消费者在当前分区上落后于生产者的数量,如果这个值变大,有可能当前这个分区的消息量突增,也可能消费者消费能力下降,需要关注。
相关文章:
Kafka--常见问题
1.为什么要使用 Kafka,起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和…...
maptalks图层交互 - 模拟 Tooltip
maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...
【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作
文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看! 一、Visual Studio Code下载 下载官网:https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...
datetime“陷阱”与救赎:扒“时间差值”证道
时间工具陷阱,其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建,本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…...
3DMAX曲线生成器插件CurveGenerator使用方法
1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…...
Apache漏洞再现
CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址,检测漏洞...
git,openpnp - 根据安装程序打包名称找到对应的源码版本
文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改,首先就得知道官方打包的安装程序对应的…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)
7.3. 查询计划相关操作符 98)Table Scan:该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词,则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...
编译原理——词法分析
文章目录 词法分析:从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段(用于说明的伪代码) 三、单词的形式化描述…...
Linux内核,内存分布
x86_64的物理地址范围为64bit,但是因为地址空间太大目前不可能完全用完,当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...
AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?
在生态环境保护日益受关注的今天,“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测,还是城市机场的鸟击风险预警,AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...
c++之set
一、set特性及用途? 唯一性:set 中的元素是唯一的,不会存在重复的元素。自动排序:set 中的元素会自动按照默认的升序规则进行排序。底层实现:set 通常基于红黑树实现,具有自平衡功能,因此插入、…...
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解
目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...
【操作系统】自旋锁和互斥锁
自旋锁和互斥锁是用于多线程同步的两种常见锁机制,主要区别在于等待锁的方式和适用场景。以下是它们的对比分析: 1. 等待机制 自旋锁(Spinlock)互斥锁(Mutex)线程通过 忙等待(Busy-Wait&#x…...
人工智能在医疗影像诊断中的应用与实践
引言 随着人工智能技术的飞速发展,其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面,人工智能技术凭借其强大的数据处理能力和模式识别能力,为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...
Java中synchronized 和 Lock
1. synchronized 关键字 工作原理 对象锁:在Java中,每个对象都有一个与之关联的监视器锁(monitor lock)。当一个线程尝试进入由 synchronized 保护的代码块或方法时,它必须首先获取该对象的监视器锁。如果锁已经被其…...
【C语言系列】数据在内存中存储
数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端?2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...
qt 对QObject::tr()函数进行重定向
在 Qt 中,QObject::tr() 函数用于国际化(i18n),它用于标记需要翻译的字符串。通常情况下,tr() 函数会从翻译文件(如 .qm 文件)中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...
C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为
开场白 各位程序猿/媛们,今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别?不不不,C#中的值类型和引用类型每天都在上演这场大戏! 而我们的string同学,表面是…...
自动驾驶背后的数学:多模态传感器融合的简单建模
上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...
如何设置sudo权限
打开终端:按 Ctrl Alt T 打开终端。 编辑 sudoers 文件: 使用 visudo 命令编辑 /etc/sudoers 文件(visudo 会检查语法,避免错误): sudo visudo 添加用户权限: 在文件中找到以下行࿱…...
Codeforces Round 1012 (Div. 2) 3.23
文章目录 2025.3.23 Div2B. Pushing Balls(暴力)代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls(暴力) 题意很好懂,每一行每一列从左…...
langfuse追踪Trace
介绍 🧠 Langfuse 是什么? Langfuse 是一个专门为 LLM 应用(如 OpenAI / LangChain / 自定义 Agent) 设计的 观测与追踪平台(Observability Platform)。 简单说,它就像是你为 AI 应用插上的 “…...
Java-模块二-2
整数类型 byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。 short:这种类型的大小是16位(2字节),允许的…...
使用VS2022编译CEF
前提 选择编译的版本 CEF自动编译,在这里可以看到最新的稳定版和Beta版。 从这里得出,最新的稳定版是134.0.6998.118,对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...
大模型RLHF训练-PPO算法详解:Proximal Policy Optimization Algorithms
一、TL;DR 提出了一种新的策略梯度方法家族,用于强化学习,这些方法交替进行与环境交互采样数据提出了一个新的目标函数,使得能够进行多个小批量更新的多轮训练这些新方法为近端策略优化(Proximal Policy Optimization…...
【STM32实物】基于STM32的扫地机器人/小车控制系统设计
基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...
【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)
目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分: push_back()的实现 代码部分: 代码部分: 1.4拷贝构造函数 代码部分: 1.5支持{}初始化的构造函数 代码部分: …...
AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型
定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式,它将复杂的问题或系统分解为若干个基本的组成部分,通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系,进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...
Keil5调试技巧
一、引言 Keil5作为一款广泛应用于嵌入式系统开发的集成开发环境(IDE),在微控制器编程领域占据着重要地位。它不仅提供了强大的代码编辑和编译功能,还具备丰富的调试工具,帮助开发者快速定位和解决代码中的问题。本文…...
Web PKI现行应用、标准
中国现行 Web PKI 标准 中国在 Web PKI(公钥基础设施)领域制定了多项国家标准,以确保网络安全和数字证书管理的规范性。以下是一些现行的重要标准: 1. GB/T 21053-2023《信息安全技术 公钥基础设施 PKI系统安全技术要求》 该标…...
ROS多机通信(四)——Ubuntu 网卡 Mesh 模式配置指南
引言 使用Ad-hoc加路由协议和直接Mesh模式配置网卡实现的网络结构是一样的,主要是看应用选择, Ad-Hoc模式 B.A.T.M.A.N. / OLSR 优点:灵活性高,适合移动性强或需要优化的复杂网络。 缺点:配置复杂,需手动…...
【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现
文章目录 引言系统要求1. 环境准备:安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速(访问国外资源)4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…...
STM32单片机uCOS-Ⅲ系统11 中断管理
目录 一、异常与中断的基本概念 1、中断的介绍 2、和中断相关的名词解释 二、中断的运作机制 三、中断延迟的概念 四、中断的应用场景 五、中断管理讲解 六、中断延迟发布 1、中断延迟发布的概念 2、中断队列控制块 3、中断延迟发布任务初始化 OS_IntQTaskInit() 4…...
CTF【WEB】学习笔记1号刊
Kali的小工具箱 curl www.xxx.com:查看服务器响应返回的信息 curl -I www.xxx.com:查看响应的文件头 一、cmd执行命令 ipconfig:ip地址配置等; 二、 Kali操作 1.sudo su; 2.msfconsole 3.search ms17_010 永恒之蓝ÿ…...
cpp-友元
理解 C 中的友元(Friend) 在 C 语言中,封装(Encapsulation) 是面向对象编程的重要特性之一。它允许类将数据隐藏在私有(private)或受保护(protected)成员中,…...
Spring AOP 核心概念与实践指南
第一章:AOP 核心概念与基础应用 1.1 AOP 核心思想 面向切面编程:通过横向抽取机制解决代码重复问题(如日志、事务、安全等)核心优势:不修改源代码增强功能,提高代码复用性和可维护性 1.2 基础环境搭…...
利用ffmpeg库实现音频Opus编解码
一、编译与环境配置 libopus库集成 需在编译FFmpeg时添加--enable-libopus参数,编译前需先安装libopus源码并配置动态库路径。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式。 多平台兼容性 Opus支持Windows/Linux/macOS平台࿰…...
深入理解指针(1)(C语言版)
文章目录 前言一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&2.2 指针变量和解引用操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针-整数3.3 voi…...
计算机网络——通信基础和传输介质
物理层任务:实现相邻节点之间比特(0或1)的传输 到了数据链路层之后,它会以帧为单位,把若干个比特交给物理层,物理层需要把这些比特信息转化成信号,在物理传输媒体上进行传输 通信基础基本概念 信…...
【橘子网络】关于网络分层以及协议的全局讲解
一、网络设备 1、硬件网络设备 1.1、主机(host) 主机的定义比较广泛,所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑,手机,服务器。在当今云服务大行其道的局面下,各种云设备也可以被称之为主机。 基于这个…...
macOS 使用 enca 识别 文件编码类型(比 file 命令准确)
文章目录 macOS 上安装 enca基本使用起因 - iconv关于 enca安装 Encaenca & enconv 其它用法 macOS 上安装 enca brew install enca基本使用 enca filepath.txt示例 $ enca 动态规划算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…...
MySQL 字符集
目录 字符集的基本概念 常见MySQL字符集 ascii(单字节字符集) latin1(单字节字符集) utf8(多字节字符集) utf8mb4(多字节字符集) MySQL默认字符集 MySQL字符集的层次级别 服务器级别 数据库级别 表级别 列级别 连接字符集 字符集是计算机科学中的一个重要概念&…...
Linux shell脚本3-if语句、case语句、for语句、while语句、until语句、break语句、continue语句,格式说明及程序验证
目录 1.if 控制语句 1.1 if 语句格式 1.2 程序验证 2.case语句 2.1case语句格式 2.2程序验证 2.2.1 终端先执行程序,在输入一个数 2.2.2 终端执行程序时同时输入一个预设变量 2.2.3 case带有按位或运算和通配符匹配 3.for语句 3.1for语句格式 3.2程序验…...
基于虚拟知识图谱的语义化决策引擎
在数字化转型浪潮中,企业数据资产的价值释放面临两大挑战:海量异构数据的整合困局与业务-技术语义鸿沟。本文解析飞速创软灵燕智能体平台的创新解决方案——通过构建业务语义驱动的虚拟知识图谱系统,实现企业数据的智能认知与决策赋能。 一、…...
Unity Shader 的编程流程和结构
Unity Shader 的编程流程和结构 Unity Shader 的编程主要由以下三个核心部分组成:Properties(属性)、SubShader(子着色器) 和 Fallback(回退)。下面是它们的具体作用和结构: 1. Pr…...
C++ 继承
目录 一、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 语法 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、C11 final 六、继承与友元 七、继承与静态成…...
XSS Game(DOM型) 靶场 通关
目录 靶场网址 Ma Spaghet! 分析 解题 Jefff 分析 解题 方法一 方法二 Ugandan Knuckles 分析 解题 Ricardo Milos 分析 解题 Ah Thats Hawt 分析 解题 方法一 方法二 Ligma 分析 解题 Mafia 分析 解题 方法一:构造函数 方法二…...
XSS基础靶场练习
目录 1. 准备靶场 2. PASS 1. Level 1:无过滤 源码: 2. level2:转HTML实体 htmlspecialchars简介: 源码 PASS 3. level3:转HTML深入 源码: PASS 4. level4:过滤<> 源码: PASS: 5. level5:过滤on 源码…...
leetcode-200.岛屿数量
首先,想要找岛,肯定是要逐个遍历的,否则肯定会漏岛。 其次,我怎么知道两个点是否属于一个岛?只有一个方法,我踏上一个岛的某个点时,我就分别往四周走,且把当前地块毁掉,就…...