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

kafka服务端之日志存储

文章目录

  • 日志布局
  • 日志索引
  • 日志清理
    • 日志删除
      • 基于时间
      • 基千日志大小
      • 基于日志起始偏移量
    • 日志压缩
    • 总结

日志布局

Ka饮a 中的消息是以主题为基本单位进行归类的, 各个主题在逻辑
上相互独立。 每个主题又可以分为一个或多个分区, 分区的数量可以在主题创建的时候指定,也可以在之后修改。 每条消息在发送的时候会根据分区规则被追加到指定的分区中, 分区中的每条消息都会被分配一个唯 一的序列号, 也就是通常所说的偏移量(offset )。

如果分区规则设置得合理, 那么所有的消息可以均匀地分布到不同的分区中, 这样就可以实现水平扩展。 不考虑多副本的情况, 一个分区对应一个日志(Log)。 为了防止Log过大,Ka住a又引入了日志分段(LogSegment)的概念,将Log切分为多个LogSegment, 相当于 一个巨型文件被平均分配为多个相对较小的文件, 这样也便于消息的维护和清理。 事实上, Log 和LogSegnient也不是纯粹物理意义上的概念, Log在物理上只以文件夹的形式存储, 而每个LogSegment对应于磁盘上的 一个日志文件 和两个索引文件, 以及可能的其他文件(比如以" . txnindex"为后缀的事务索引文件)。如下图简单描绘了日志存储结构。
在这里插入图片描述

向Log中追加 消息时是顺序写入的,只有最后 一 个LogSegment才能执行写入操作, 在此之 前所有的LogSegment都 不能写入数据。 为了方便描述, 我们将最后 一 个LogSegment称为"activeSegment" , 即表示当前活跃的日志分段。 随着消息的不断写入 , 当activeSegment满足一 定 的条件 时 , 就需要创建新的activeSegment, 之后追加的消息将写入新的activeSegment。

为了便于消息的检索, 每个LogSegment中的日志文件 (以 " .log"为文件后缀)都有对应的两个索引文件:偏移量 索引文件(以".index"为文件后缀)和时间戳索引文件(以".timeindex"为文件后缀) 。 每个LogSegment都有 一 个基准偏移量baseOffset, 用来表示当前LogSegment中第 一 条消息的offset。 偏移量是一 个64位的长整型数, 日志文件和两个索引文件都是根据 基准偏移量(baseOffset)命名 的, 名称固定为20 位数字, 没有达到的位数则用0填充。 比如第一 个LogSegment的基准偏移量为O, 对应的日志文件为00000000000000000000.log。

日志索引

每个日志分段文件对应了两个索引文件,主要用来提高查找消息的效率偏移量索引文件用来建立消息偏移量( offset )到物理地址之间的映射关系,方便快速定位消息所在的物理文件位置;时间戳索引文件则根据指定的时间戳( timestamp )来查找对应的偏移量信息

Kafka 中的索引文件以稀疏索引( sparse index )的方式构造消息的索引,它并不保证每个消息在索引文件中都有对应的索引 I页 。 每当写入一定量(由 broker 端参数 log.index.interval.bytes 指定,默认值为 4096 ,即 4KB )的消息时,偏移量索引文件和时间戳索引文件分别增加一个偏移量索引项和时间戳索引项,增大或减小 log.index . interval.bytes的值,对应地可以增加或缩小索引项的密度。

稀疏索引通过 MappedByteBuffer 将索引文件映射到内存中,以加快索引的查询速度。偏移量索引文件中的偏移量是单调递增的,查询指定偏移量时,使用二分查找法来快速定位偏移量的位置,如果指定的偏移量不在索引文件中,则会返回小于指定偏移量的最大偏移量 。 时间戳索引文件中的时间戳也保持严格的单调递增,查询指定时间戳时,也根据二分查找法来查找不大于该时间戳的最大偏移量,至于要找到对应的物理文件位置还需要根据偏移量索引文件来进行再次定位。稀疏索引的方式是在磁盘空间、内存空间、查找时间等多方面之间的一个折中。

对非当前活跃的日志分段而言,其对应的索引文件内容己经固定而不需要再写入索引项,所以会被设定为只读 。 而对当前活跃的日志分段 C activeSegment )而言,索引文件还会追加更多的索引项,所以被设定为可读写。在索引文件切分的时候, Kafka 会关闭当前正在写入的索引文件并置为只读模式,同时以可读写的模式创建新的索引文件,索引文件的大小由 broker 端参数 log . index.size . max.bytes 配置。 Kafka 在创建索引文件的时候会为其预分配log.index . size .m ax . bytes 大小的空间,注意这一点与日志分段文件不同,只有当索引文件进行切分的时候, Kafka 才会把该索引文件裁剪到实际的数据大小 。 也就是说,与当前活跃的日志分段对应的索引文件的大小固定为 log . index.s 工 ze.max.bytes ,而其余日志分段对应的索引文件的大小为实际的占用空间

日志清理

Kafka 将 消息存储在磁盘中,为了 控制磁盘占用空间的不断增加就需要对消息做一 定的清理操作。 Kafka 中 每 一个分区副本都对应 一个 Log, 而Log又可以分为多个日志分段, 这样也便于日志的清理操作。 Kafka提供了两种日志清理策略。

  • (1)日志删除(LogRetention): 按照 一 定的保留策略直接删除不符合条件的日志分段。
  • (2)日志压缩 (Log Compaction): 针对每个消息的key进行整合, 对千有相同 key的不 同value 值, 只保留最后 一个版本。

我们可以通过broker端参数log.cleanup.police 来设置 日志清理策略,此参数的默认
值为"delete " , 即采用日志删除的清理策略。 如果要采用日志压缩的清理策略, 就需要将log.cleanup.police 设置为"compact" , 并且还需要将log.cleaner.enable (默认值
为true )设定为true。 通过将log.cleanup.police 参数 设置为"del ete,compact" , 还可以
同时支持日志删除和日志压缩两种策略
。 日志清理的粒度可以控制到主题级别, 比如与log.cleanup.police 对应的主题级别的参数为cleanup.police。

日志删除

在Kafka 的日志管理器中会有一个专门的日志删除任务来周期性地检测和删除不符合 保留条件的日志分段文件,这个周期可以通过broker端参数log.retention.check.interval.ms来配置 ,默认值为300000, 即5分钟。 当前日志分段的保留策略有3 种:基于时间 的保留策略、基于日志大小的保留策略 和基于日志起始偏移量的保留策略 。实际应用中这些策略只要命中一个就可以触发日志删除

基于时间

日志删除任务会检查当前日志文件中是否有保留时间超过设定的阙值(retentionMs)来寻找可删除的日志分段文件集合(deletableSegments)。etentionMs可以通过broker
端参数log.retention.hours、log.retention.minutes和log.retention.ms来配
置 , 其 中 log.retention.ms 的优先级最高, log.retention.minutes 次之,
log.retention.hours最低。 默认情况下只配置 了log.retention.hours参数, 其值为
168, 故默认情况下日志分段文件的保留时间为7天。

查找过期的日志分段文件,并不是简单地根据日志分段的最近修改时间lastModifiedTime来计算的, 而是根据日志分段中最大的时间戳largestTimeStamp来计算的。 因为日志分段的lastModifiedTime可以被有意或无意地修改, 比如执行了touch操作 , 或者分区副本进行了重新分配,lastModifiedTime并不能真实地反映出日志分段在磁盘的保留时间。要获取日志分段中的最大时间戳largestTimeStamp的值, 首先要查询该日志分段所对应的时间戳索引文件,查找 时间戳索引文件中最后 一条索引项, 若最后 一 条索引项的时间戳字段值 大于O,则取其值, 否则才设置为最近修改时间 lastModifedTime 。

若待删除的日志分段的总数等千该日志文件中所有的日志分段的数量, 那么说明所有的日志分段都已过期, 但该日志文件中还要有一个日志分段用千接收消息的写入, 即必须要 保证有一个活跃的日志分段activeSegment, 在此种情况下, 会先切分出一个新的日志分段作为activeSegment, 然后执行删除操作。

删除日志分段时,首先会从Log对象中所维护日志分段的跳跃表中移除待删除的日志分段,以保证没有线程对这些日志分段进行读取操作。 然后将日志分段所对应的所有文件添加上".deleted"的后缀(当然也包括对应的索引文件)。 最后交由 一个以"delete-fi le"命名的延迟任务来删 除这些 以 ".deleted "为 后 缀的 文 件 , 这个 任务的 延 迟执 行 时 间可 以 通 过file.delete.delay.ms参数来调配, 此参数的默认值为60000, 即1 分钟。

基千日志大小

日志删除任务会检查当前日志的大小是否超过设定的阀值 (retentionSize)来寻找可删除的日志分段的文件集合(deletableSegments), 如图所示。retentionSize可以通过broker端参数log.retention.bytes来配置 ,默认值为-1 , 表示无穷大。注意log.retention.bytes
配置的是Log中所有日志文件的总大小, 而不是单个日志分段(确切地说应该为log 日志文件)的大小。 单个日志分段的大小由broker 端参数log.segment.bytes 来限制, 默认值为1073741824, 即1GB。

在这里插入图片描述

基于日志大小的保留策略与基于时间的保留策略类似, 首先计算日志文件的总大小 size 和retentionSize的差值 diff, 即计算需要删除的日志总大小, 然后从日志文件中的第 一个日志分段开始进行查找可删除的日志分段的文件集合deletableSegments。 查找出deletableSegments之后就执行删除操作, 这个删除操作和基千时间的保留策略的删除操作相同, 这里不再赘述。

基于日志起始偏移量

一般情况下, 日志文件的起始偏移量 logStartOffset 等于第 一个日志分段的baseOffset , 但这并不 是绝对的, logStartOffset 的值 可 以 通 过DeleteRecordsRequest请求、 日志的清理和截断等操作 进行修改。

基于日志起始偏移量的保留策略的判断依据是某日志分段的下一个日志分段的起始偏移量baseOffset 是否小于等于logStartOffset, 若是, 则可以删除此日志分段 。 如图所示, 假设logStartOffset等于25, 日志分段 l 的起始偏移量为O, 日志分段2的起始偏移量为11, 日志分段 3的起始偏移量为23, 通过如下动作收集可删除的日志分段的文件集合deletableSegments:

  • (1 )从头开始遍历每个日志分段 , 日志分段 l 的下一个日志分段的起始偏移量为11, 小 于logStartOffset的大小,将日志分段 l加入deletableSegments。
  • (2)日志分段2的下 一个日志偏移量的起始偏移量为23 , 也小于logStartOffset的大小,将日志分段2页加入deletableSegments。
  • (3)日志分段3的下 一个日志偏移量在logStartOffset的右侧, 故从日志分段3开始的所有日志分段都不会加入deletableSegments。

在这里插入图片描述
收集完可删除的日志分段的文件集合之后的删除操作同基于日志大小的保留策略和基千时间的保留策略相同, 这里不再赘述。

日志压缩

Kafa中的Log Compaction是指在默认的日志删除(Log Retention)规则之外提供的 一种
清理过时数据的方式。 如图所示, Log Compaction对于有相同key的不同value值, 只保留最后 一个版本。如果应用只关心key对应的最新value值,则可以开启Kafka的日志清理功能,Kafa会定期将相同key的消息进行合并, 只保留最新的value值。
在这里插入图片描述

Log Compaction执行前后, 日志分段中的每条消息的偏移量和写入时的偏移量保待 一致。Log Compaction 会生成新的日志分段 文件, 日志分段中每条消息的物理位置会重新按照新文件来组织。 Log Compaction执行过后的偏移量不再是连续的, 不过这并不影响日志的查询。

Log Compaction会保留key相应的最新value值 ,那么当需要删除 一个key时怎么办? Kafka提供了 一个墓碑消息(tombstone)的概念, 如果 一 条消息的key不为null, 但是其value为null,那么此消息就是墓碑消息 。 日志清理线程发现墓碑消息时会先进行常规的清理, 并保留墓碑消息 一 段 时间。

Log Compaction执行过后的日志分段的大小会比原先的日志分段的要小, 为了防止出现太多的小 文件, Kafa在实际清理过程 中并不对单个的日志分段进行单独清理,而是将日志文件中offset从0至frstUncleanableOffset的所有日志分段进行分组,每个日志分段只属于一 组,分组策略为:按照日志分段的顺序遍历, 每 组中日志分段的占用空间大小之和不超过segmentSize(可以通过broker端参数log.segment.bytes设置, 默认值为1GB) , 且对应的索引文件占用大小之和不超过maxindexSize(可以通过broker端参数log.index.interval.bytes设置, 默认值为10MB) 。 同 一个组的多个日志分段清理过后, 只会生成 一个新的日志分段 。

总结

注意将 日志压缩和日志删除区分开, 日志删除是指清除整个日志分段, 而日志压缩是针对相同key的消息的合并清理

相关文章:

kafka服务端之日志存储

文章目录 日志布局日志索引日志清理日志删除基于时间基千日志大小基于日志起始偏移量 日志压缩总结 日志布局 Ka饮a 中的消息是以主题为基本单位进行归类的, 各个主题在逻辑 上相互独立。 每个主题又可以分为一个或多个分区, 分区的数量可以在主题创建的…...

【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据

利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…...

正则表达式进阶(二)——零宽断言详解:\b \B \K \z \A

在正则表达式中,零宽断言是一种非常强大的工具,能够在不消费字符的情况下对匹配位置进行约束。除了环视(lookahead 和 lookbehind)以外,还有一些常用的零宽断言,它们用于处理边界、字符串的开头和结尾等特殊…...

java poi Excel 文件导入导出常见错误及解决方案

在使用 Apache POI 进行 Excel 文件的导入导出操作时,可能会遇到各种问题。以下是一些常见的错误及其解决方案: 一、文件格式相关问题 1. 文件格式不兼容 问题描述:尝试使用 HSSFWorkbook 读取 .xlsx 文件,或者使用 XSSFWorkbo…...

批量提取word表格数据到一个excel

新建一个excel到word同级目录altf11打开vba窗口并新建模块粘贴下方代码(修改一些必要参数)回到excel表格界面,altf8选择执行该宏注意要在信任中心开启运行vba宏 Sub 批量提取word表格数据到excel()Dim wdApp As Object, wdDoc As ObjectDim …...

快速建立私有化知识库(私有化训练DeepSeek,通过ollama方式)

简介 什么?!老是有人问你需求,不同版本的需求你记不清还得去扒拉过程文档、设计文档? 什么?!领导会询问功能使用情况、用户相关数据,你每次还得手动查询反馈? 什么?&…...

python 一句话打印行号

在C语言中,打印行号可以直接用预定义的宏__LINE__,打印当前行号,方便调试。 printf("%d", __LINE__); // C语言打印当前行号 python中没有这样的预定义宏。 但可以用这种方式,实现一句话打印行号: impor…...

设计模式-生产者消费者模型

阻塞队列: 在介绍生产消费者模型之前,我们先认识一下阻塞队列。 阻塞队列是一种支持阻塞操作的队列,常用于生产者消费者模型,它提供了线程安全的队列操作,并且在队列为空或满时,能够阻塞等待,…...

Kubernetes是什么?为什么它是云原生的基石

从“手工时代”到“自动化工厂” 想象一下,你正在经营一家工厂。在传统模式下,每个工人(服务器)需要手动组装产品(应用),效率低下且容易出错。而Kubernetes(k8s)就像一个…...

全国计算机等级考试(NCRE)四级计算机网络考试大纲(2025年版)

文章目录 基本要求1. 理解计算机网络的基本概念。2. 掌握局域网的基本工作原理。局域网(LAN)基本工作原理 3. 掌握TCP/IP及其相关协议。 TCP/IP协议及其相关协议1. TCP/IP协议的分层结构2. 主要协议详解(1)IP协议(2&am…...

扩展知识--缓存和分时复用cpu

在多核CPU中,缓存和分时复用CPU是两个重要的概念,它们分别涉及硬件架构和资源管理策略。以下将从缓存的层次结构、工作原理以及分时复用CPU的概念进行详细解释。 一、多核CPU中的缓存 缓存的定义与作用 缓存(Cache)是位于CPU与主…...

6.Centos7上部署flask+SQLAlchemy+python+达梦数据库

情况说明 前面已经介绍了window上使用pycharm工具开发项目时,window版的python连接达梦数据库需要的第三方包。 这篇文章讲述,centos7上的python版本连接达梦数据库需要的第三方包。 之前是在windows上安装达梦数据库的客户端,将驱动包安装到windows版本的python中。(开…...

如何将3DMAX中的3D文件转换为AutoCAD中的2D图形?

大家好,今天我们来探讨一下如何将3DMAX中的3D文件转换为AutoCAD中的2D图形。无论是出于设计交流、施工准备还是其他实际需求,这种转换在工程设计领域都是一项非常实用的技能。接下来,我将为大家详细介绍几种实现这一转换的方法,帮助大家轻松跨越3D与2D设计之间的鸿沟。让我…...

使用LLaMA Factory踩坑记录

前置条件:电脑显卡RTX 4080 问题:LLaMA-Factory在运行的时候,弹出未检测到CUDA的报错信息 结论:出现了以上的报错,主要可以归结于以下两个方面: 1、没有安装GPU版本的pytorch,下载的是CPU版本…...

四柱预测学

图表 后天八卦 十二地支不仅代表了时间,还代表了方位。具体来说: ‌子‌:代表正北方‌丑寅‌:合起来代表东北方‌卯‌:代表正东方‌辰巳‌:合起来代表东南方‌午‌:代表正南方‌未申‌:合起来代表西南方‌酉‌:代表正西方‌戌亥‌:合起来代表西北方‌四季-五行-六神…...

使用 JFreeChart 创建动态图表:从入门到实战

文章目录 前言一、JFreeChart 简介二、环境准备三、 创建第一个折线图四、自定义图表样式4.1 设置背景色4.2 设置折线颜色4.3 设置字体(解决中文乱码)4.4 设置横坐标的标签宽度和方向 五、导出图表六、实战:动态生成日报图表总结 前言 在数据…...

【自学笔记】文言一心的基础知识点总览-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文心一言知识点总览一、文心一言简介二、文心一言的核心功能三、文心一言的技术特点四、文心一言的应用场景五、文心一言的使用技巧六、文心一言的未来发展 总结 文…...

解锁AI语音魅力——yoyo鹿鸣在线语音合成器,让创意声音即刻绽放!

yoyo鹿鸣-在线语音合成 人工智能语音克隆生成,二次元~ AI工具 | AI探金 可以在AI探金社区来找我~ yoyo鹿鸣 - 在线语音生成器 需求人群: 有语音合成需求的用户。 使用场景示例: 合成yoyo鹿鸣语音 等等 产品特色&a…...

【无标题】堆

[TOC](优先级队列(堆)) 【本节目标】 1. 掌握堆的概念及实现 2. 掌握 PriorityQueue 的使用 # 1. 优先级队列 ## 1.1 概念 前面介绍过队列,**队列是一种先进先出(FIFO)的数据结构**,但有些情况下,**操作的数据可…...

【工具变量】上市公司企业绿色新闻数据(2013-2023年)

测算方式: 参考《中国工业经济》周泽将(2023)老师的做法,首先通过网络爬虫的方法检索并爬取上市公司相关新闻,并辅以人工检索补充校对;新闻文本清理,并通过公司相关性判定以及主题模型识别该新闻是否为上市公司环保主…...

【vue】高德地图AMap.Polyline动态更新画折线,逐步绘制

可以使用 setTimeout 或 setInterval 来逐个点绘制折线,确保每次添加新的点到 path 并更新 Polyline,如下所示: localPolyline(path) {console.log(逐点绘制 polyline...);let drawnPath []; // 用于存储当前绘制的点let index 0;let poly…...

Lecture8 | LPV VXGI SSAO SSDO

Review: Lecture 7 | Lecture 8 LPV (Light Propagation Volumes) Light Propagation Volumes(LPV)-孤岛惊魂CryEngine引进的技术 LPV做GI快|好 大体步骤: Step1.Generation of Radiance Point Set Scene Representation 生成辐射点集的场景表示:辐射…...

三种Excel文本连接方法!

大家好,我是小鱼。 在处理Excel表格数据时,有时需要对表格某些单元格中的文本进行连接组合。今天就跟大家分享3种Excel文本连接方法!学会后遇到Excel文本连接问题也不求人! 方法一、使用&符号连接 使用&符号连接文本的话…...

ubuntu 本地部署deepseek r1 蒸馏模型

本文中的文件路径或网络代理需要根据自身环境自行删改 一、交互式chat页面 1.1 open-webui 交互窗口部署:基于docker安装,且支持联网搜索 Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线操作。它支持各种 LLM…...

如何删除本地大模型

随着Deepseep模型的爆火,越来越多的用户尝试在本地安装并体验这一强大的AI工具。然而,许多人在安装过程中发现,模型默认会安装在C盘,而C盘的空间通常有限,尤其是对于那些系统盘容量较小的用户来说,这无疑是…...

【共享文件夹】使用Samba服务可在Ubuntu和Windows系统之间共享一个实际的文件夹

目标:在Ubuntu和Windows系统之间共享一个实际的文件夹,并能够共同编辑其中的文件 安装Samba创建共享文件夹配置Samba设置Samba密码重启Samba服务以应用更改:在Windows中访问共享文件夹如果客户机无法访问 Samba 服务器,解决方法①…...

用Llama Factory单机多卡微调Qwen2.5时报torch.OutOfMemoryError: CUDA out of memory的解决办法

接着上一篇博客:在Ubuntu上用Llama Factory命令行微调Qwen2.5的简单过程_llamafactory 微调qwen 2.5-CSDN博客 如果需要微调比较大的模型,例如Qwen2.5-32B,那么在两个3090上可能不够用,这里我用A60004的服务器。但如果仿照上篇博…...

第 26 场 蓝桥入门赛

3.电子舞龙【算法赛】 - 蓝桥云课 问题描述 话说这年头,连舞龙都得电子化!这不,蓝桥村的老程序员王大爷突发奇想,用LED灯带和一堆传感器鼓捣出了一条“电子舞龙”,它能根据程序指令在村里的广场上“翩翩起舞”。 广…...

文华财经期货支撑压力多空K线变色期货指标,博易大师指标公式大全

低线:25,DOT; 中线:55,DOT; 高线:85,DOT; LOWV:LLV(LOW,9); HIGHV:HHV(HIGH,9); RSV:EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,3); K:EMA(RSV,3); 趋势线:MA(K,3); DBA:K-趋势线; STICKLINE(DBA>0,(K-DBA*0.1),(K-DBA*0.75),2,0),COLORRED; STICKLINE(DBA<0,(趋势线DBA*0.1),…...

基于大模型的围术期脆弱性评估系统研究报告

一、引言 1.1 研究背景与意义 围术期是指从患者决定接受手术治疗开始,到手术治疗直至基本康复的全过程,包括术前、术中和术后三个阶段。围术期管理对于保障患者安全、提高治疗效果具有至关重要的意义。在术前阶段,全面准确的评估患者身体状况能够帮助医生提前发现潜在风险…...

星网锐捷 视频话机设备pwdsetting管理密码信息泄漏

星网锐捷 视频话机设备pwdsetting管理密码信息泄漏 漏洞描述 星网锐捷视频话机设备 泄露管理员密码&#xff0c;攻击者可利用密码直接进入后台配置页面&#xff0c;执行恶意操作&#xff0c;进行一步攻击。 威胁等级: 高危 漏洞分类: 信息泄露 涉及厂商及产品&#xff1a;…...

深入理解小波变换:信号处理的强大工具

引言 在科学与工程领域&#xff0c;信号处理一直是关键环节&#xff0c;傅里叶变换与小波变换作为重要的分析工具&#xff0c;在其中发挥着重要作用。本文将深入探讨小波变换&#xff0c;阐述其原理、优势以及与傅里叶变换的对比&#xff0c;并通过具体案例展示其应用价值。 一…...

Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)

一、协程 1.1、协程 协程&#xff0c;Coroutines&#xff0c;也叫作纤程(Fiber) 协程&#xff0c;全称是“协同程序”&#xff0c;用来实现任务协作。是一种在线程中&#xff0c;比线程更加轻量级的存在&#xff0c;由程序员自己写程序来管理。 当出现IO阻塞时&#xff0c;…...

神经网络(Neural Network)

引言 神经网络,作为人工智能和机器学习领域的核心组成部分,近年来在诸多领域取得了显著的进展。受生物神经系统的启发,神经网络通过模拟人脑神经元的工作机制,能够从大量数据中学习复杂的模式和关系。其强大的非线性建模能力使其在图像识别、自然语言处理、语音识别和预测…...

AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…...

A股level2高频数据分析20250205

A股level2高频数据分析20250205 通过Level2的逐笔成交与委托记录&#xff0c;这种高精度的毫秒级数据能够洞察诸多重要信息&#xff0c;包括庄家目的、误导性行为&#xff0c;使所有交易操作透明化。这对于分析高手的交易策略极为有益&#xff0c;对机器学习的研究也极具价值&…...

【Pytorch实战教程】PyTorch中的Dataset用法详解

PyTorch中的Dataset用法详解 在深度学习中,数据是模型训练的基石。PyTorch作为一个强大的深度学习框架,提供了丰富的工具来处理和加载数据。其中,Dataset类是PyTorch中用于处理数据的重要工具之一。本文将详细介绍Dataset的用法,帮助你更好地理解和使用它。 1. 什么是Dat…...

UIAbility 生命周期方法

生命周期流程图 UIAbility的生命周期官方文档地址https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/uiability-lifecycle-V13 1. onCreate(want: Want, launchParam: LaunchParam) 触发时机&#xff1a;Ability首次创建时 作用&#xff1a;初始化核心资源…...

UML学习

定义&#xff1a;UML是一种用于软件系统分析和设计的标准化建模语言。 作用&#xff1a;用于描述系统的结构、行为、交互等。共定义了10种,并分为4类 ①用例图 user case diagram : 从外部用户的角度描述系统的功能,并指出功能的执行者. 静态图(②类图 class diagram ③,对象…...

DeepSeek-R1 32B Windows+docker本地部署

最近国产大模型DeepSeek兴起&#xff0c;本地部署了一套deepseek同时集成Open WebUI界面,给大家出一期教程。 软件&#xff1a;Ollama、docker、Open WebUI 一、用Ollama下载模型 首先我们需要安装Ollama&#xff0c;它可以在本地运行和管理大模型。 到Ollama官网 https://ol…...

界址点成果表批量生成(新增.docx格式)-附工具下载链接

界址点编号工具20250208更新&#xff08;成果表新增.docx格式&#xff09;。 【工具简介】工具可根据面图层&#xff0c;西北角顺时针批量生成界址点&#xff0c;可以设置角度、距离参数&#xff0c;来减少生成界址点的数量&#xff08;不用全部节点生成界址点&#xff09;。生…...

计算机组成原理(3)

计算机组成原理&#xff08;3&#xff09; 存储器层次结构存储器概述存储器分类存储器性能指标 半导体随机存储SRAM和DRAM 存储器层次结构 主存-辅存&#xff1a;实现了虚拟存储系统&#xff0c;解决了主存容量不足的问题&#xff1b; Cache-主存&#xff1a;解决了主存于CPU速…...

【新书速荐】《Information-Theoretic Radar Signal Processing(信息论雷达信号处理)》

引言 最近&#xff0c;由Yujie Gu 博士和 Yimin D. Zhang 教授主编的新书 Information-Theoretic Radar Signal Processing由 Wiley-IEEE Press 正式出版。 这是信息论雷达信号处理领域的首部专著&#xff0c;全书共分 14 章&#xff0c;汇集了来自学术界、工业界和政府机构的…...

ES冷热数据分离配置

冷热数据是根据索引创建时间来进行迁移的。一旦迁移到冷数据节点&#xff0c;则无法再恢复成热数据&#xff0c;因为热数据节点中该索引已经没有分片存在了。 基于Docker搭建ES集群,并设置冷热数据节点 配置冷热数据迁移策略 PUT https://192.168.x.xx:19200/_ilm/policy/my…...

Docker 构建镜像并搭建私人镜像仓库教程

构建镜像教程 步骤 1&#xff1a;安装 Docker #在安装 Docker 之前&#xff0c;建议先更新系统软件包。 sudo yum update -y # 移除旧的Docker版本和Podman、runc软件包及其相关依赖。 yum remove -y docker docker-client docker-client-latest docker-ce-cli docker-commo…...

蓝牙耳机降噪进化:从物理阻隔到声波抵消的跨越

目录 一、降噪技术的核心分类&#xff08;一&#xff09;被动降噪&#xff1a;物理屏障的“静音盾”&#xff08;二&#xff09;主动降噪&#xff1a;声波抵消的“黑科技”&#xff08;三&#xff09;混合降噪&#xff1a;双重技术的“强强联合” 二、细分技术及应用场景&#…...

23.PPT:校摄影社团-摄影比赛作品【5】

目录 NO12345​ NO6 NO7/8/9/10​ 单元格背景填充表格背景填充文本框背景填充幻灯片背景格式设置添加考生文件夹下的版式 NO12345 插入幻灯片和放入图片☞快速&#xff1a;插入→相册→新建相册→文件→图片版式→相框形状→调整边框宽度左下角背景图片&#xff1a;视图→…...

systemverilog的program和module的区别

1. 设计目的 module 硬件建模&#xff1a;用于描述数字电路的结构和行为&#xff08;如组合逻辑、时序逻辑、连线等&#xff09;。 层次化设计&#xff1a;支持模块化设计&#xff0c;可嵌套其他模块或接口&#xff08;interface&#xff09;。 仿真周期内持续存在&#xff1…...

AI大模型零基础学习(2):提示词工程进阶——让AI听懂你的“弦外之音“

从“基础对话”到“精准操控”的思维跃迁 一、为什么你的提问总被AI“误解”&#xff1f; 1.1 大模型的“思维盲区” 知识边界&#xff1a;ChatGPT等模型的训练数据截止于特定时间&#xff08;如2023年1月&#xff09;&#xff0c;无法主动获取最新资讯 文化差异&#xff1a;…...

如今物联网的快速发展对hmi的更新有哪些积极影响

一、功能更加丰富 物联网的快速发展使得 HMI&#xff08;人机界面&#xff09;能够连接更多的设备和系统&#xff0c;从而实现更加丰富的功能。例如&#xff0c;通过与传感器网络的连接&#xff0c;HMI 可以实时显示设备的运行状态、环境参数等信息&#xff0c;为用户提供更加…...