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

如何理解 Apache Iceberg 与湖仓一体(Lakehouse)?

一、什么是湖仓一体(Lakehouse)?

湖仓一体是一种融合了数据湖的灵活存储能力与数据仓库的高效分析功能的现代数据架构。它通过整合两者的优势,解决了传统架构的局限性,为企业数据处理提供了更全面的解决方案。

  • 数据湖的开放性:支持多格式数据存储(如 Parquet、ORC),兼容开放生态(如 Hive、Iceberg),存储成本低。
  • 数据仓库的高性能:提供 ACID 事务、高效查询和实时分析能力,适用于 BI 报表、交互式分析等场景。

Lakehouse 的核心目标是实现 “One Data, All Analytics” ,即通过统一存储(如对象存储)和计算引擎(如 ​​​​​​​StarRocks),避免数据冗余和口径不一致,满足批处理、流计算、实时分析等多样化需求。

其核心能力包括:

  • 支持 ACID 事务,解决了传统数据湖的一致性痛点
  • 同时处理结构化和半结构化数据,提供更大的灵活性
  • 可直接对接 BI 工具(如 Tableau)与机器学习框架,简化数据使用流程
  • 采用存储计算分离架构,显著降低运营成本

二、Apache Iceberg:高效的数据湖管理工具

Apache Iceberg 是一种专为大规模数据湖设计的开源表格式,旨在解决传统数据湖在事务一致性、数据更新和查询性能上的瓶颈。它位于计算引擎(如 Spark、Flink、StarRocks)和存储层(如 HDFS、S3)之间,通过统一的表语义实现跨平台的数据管理。其核心特性包括:

  1. ACID 事务与数据一致性:支持并发写入和快照隔离,确保数据操作的原子性和一致性。
  2. Schema 与分区演化:无需重写数据即可修改表结构或分区策略,历史数据仍可被查询。
  3. 支持存算分离:实现存储与计算的解耦,兼容多种计算引擎(如 Spark、Flink 和 StarRocks)。
  4. 多版本控制(MVCC) :通过快照跟踪数据变化,支持时间旅行查询和历史回溯。
  5. 隐藏分区:自动管理分区路径,简化数据组织逻辑。

三、Iceberg 如何支撑 Lakehouse 架构?

解决传统数据湖的四大痛点

传统数据湖问题

Iceberg 解决方案

1

写入冲突导致数据损坏

通过 ACID 事务保证原子性提交

2

元数据查询性能低下

采用分层元数据设计(快照/清单/数据文件)

3

模式变更导致 ETL 中断

提供无锁模式演化(Schema Evolution)

4

分区策略变更需重导数据

实现隐藏分区(Hidden Partitioning)

典型应用场景

Apache Iceberg 作为 Lakehouse 的核心表格式,与计算引擎(如 StarRocks)结合,显著提升了数据湖的实时性和查询效率:

  1. 实时数据链路:Iceberg 支持分钟级数据刷新,结合 StarRocks 的物化视图和增量写入技术,实现近实时分析。例如,微信将数据写入 Iceberg 后,通过 StarRocks 直接查询,数据时效性从小时级缩短至分钟级。
  2. 查询性能优化:StarRocks 通过元数据缓存、I/O 合并、数据本地化缓存(Data Cache)等技术,减少远程存储访问开销,使湖上查询性能接近数仓水平。
  3. 冷热数据分层:热数据优先导入 StarRocks 进行高速查询,冷数据自动降冷至 Iceberg 湖中,通过统一 Catalog 管理实现无缝查询融合。

Iceberg 与 StarRocks 集成优势

StarRocks 作为高性能分析型数据库,其高性能查询加速能力(特别是联邦查询),能够有效解决湖上数据分析的瓶颈,与 Iceberg 的结合可以实现“存算分离”架构的最大价值:StarRocks 外表功能可直接查询 Iceberg 表,无需数据搬迁,通过向量化执行引擎,加速 Iceberg 数据的分析查询性能,结合物化视图技术,为 Iceberg 数据提供更低延迟的分析体验。

四、企业实选型建议与实践案例

1. 技术选型对比

维度

Iceberg

Delta Lake

Hudi

StarRocks+Iceberg

事务支持

强一致性

强一致性

最终一致性

强一致性

流批统一

通过 Flink 实现

原生支持

原生支持

支持实时与批量分析

生态兼容性

适配多计算引擎

深度绑定 Spark

侧重 Spark 生态

高性能 MPP 分析

云原生支持

全主流云平台

Databricks 生态为主

逐步扩展中

全面支持云原生部署

查询性能

一般

一般

一般

高(MPP 加速)

实时分析能力

依赖查询引擎

中等

中等

亚秒级 OLAP 性能

部署复杂度

中等

中等

较高

低(一体化解决方案)

企业在选型时应结合自身技术栈和业务需求进行综合考量:

对于已具备数据湖基础,且需要更强 ACID 保障与多引擎协作能力的企业,Iceberg 是构建湖仓一体架构的最优选择。而对于重度依赖 Databricks 生态的场景,可优先评估 Delta Lake 方案。

对于既需要湖仓一体架构又要兼顾实时分析性能的企业,可考虑 Iceberg+StarRocks 组合方案:用 Iceberg 构建数据湖基础,通过 StarRocks 提供高性能分析能力,实现低成本和高性能的最佳平衡。

2. 最佳实践案例

2.1 微信视频号直播:从数据孤岛到统一分析

业务痛点

微信视频号直播业务早期采用传统 Hadoop 架构,面临以下问题:

  • 数据孤岛:直播实时数据(如弹幕、互动)与离线数据(如用户画像)分散存储,分析链路割裂。
  • 高延迟:实时数据需数小时才能同步到离线数仓,影响运营决策时效性。
  • 存储冗余:多份数据副本(HDFS、Hive、Kafka)导致存储成本攀升。
解决方案

微信团队基于 Lakehouse 架构重构数据平台:

1. 统一存储层

  • 所有原始数据通过 Iceberg 表格式写入对象存储(如腾讯云 COS),支持 ACID 事务和多版本管理。
  • 数据按冷热分层:热数据(近 7 天)缓存至 StarRocks,冷数据保留在 Iceberg 湖中。

2. 实时链路优化

  • 直播互动数据通过 Flink 实时写入 Iceberg,并通过 StarRocks 的增量写入接口(如 Flink CDC)同步至查询引擎,实现分钟级延迟。

3. 统一元数据管理

  • 通过 StarRocks Catalog 直接访问 Iceberg 表,无需数据迁移或格式转换,减少数据冗余。
实际成效

微信团队数据开发任务数减少 50%,存储成本方,存储冗余率降低 65%,时效性方面,离线任务产出时间从 4 小时缩短至 2 小时,实时分析延迟降至 1 分钟以内

2.2 芒果 TV:从传统数仓到高性能湖仓

业务痛点

芒果 TV 原有 Hadoop+Hive 架构存在明显瓶颈:

  • 查询性能差:复杂报表查询耗时数十分钟,无法满足广告投放、用户行为分析等实时需求。
  • 扩展性不足:数据量年增 200%(来源:芒果 TV 技术团队公开数据),传统架构难以弹性扩容。
  • 多引擎协同复杂:Hive、Spark、Presto 等多引擎混用,运维成本高。
解决方案

芒果 TV 采用 StarRocks Lakehouse 架构,核心改进包括:

  1. Iceberg 表格式整合:历史数据从 Hive 迁移至 Iceberg,保留分区和元数据兼容性,降低迁移成本。新增数据直接写入 Iceberg,通过 StarRocks 的联邦查询能力实现跨引擎分析。
  2. 查询加速技术:利用 StarRocks 的向量化引擎和 CBO 优化器,复杂查询性能提升 10 倍。热数据自动缓存至本地 SSD,减少远程读取延迟。
  3. 存算分离与弹性扩缩容:存储层(Iceberg)与计算层(StarRocks)解耦,计算节点按需扩容,资源利用率提升 30%
实际成效
  • 性能突破:广告投放报表查询时间从 10 分钟缩短至 1 分钟,支持高并发实时分析。
  • 成本优化:存储成本降低 40%(通过对象存储替代 HDFS),运维人力投入减少 50%
  • 业务扩展:支持日均 PB 级 数据处理,覆盖用户画像、推荐算法、广告归因等场景。

结语

据 Forrester 2023 年数据架构报告,采用 Lakehouse 的企业平均查询性能提升 3-5 倍,存储成本降低 50% 以上。Iceberg 的开放性和兼容性(如支持 Hive 元数据迁移)是传统企业平滑过渡到 Lakehouse 的关键,凭借其开放性和技术优势,有望成为主流数据湖格式。

Apache Iceberg 通过高效的数据管理能力,解决了传统数据湖的碎片化问题,为企业提供了低成本、高时效、易扩展的数据分析方案,成为应对大数据挑战的新范式。随着技术演进,Lakehouse 将加速向“One Data, All Analytics”的目标迈进,推动数据驱动决策的深度落地。

相关文章:

如何理解 Apache Iceberg 与湖仓一体(Lakehouse)?

一、什么是湖仓一体(Lakehouse)? 湖仓一体是一种融合了数据湖的灵活存储能力与数据仓库的高效分析功能的现代数据架构。它通过整合两者的优势,解决了传统架构的局限性,为企业数据处理提供了更全面的解决方案。 数据湖…...

若依框架二次开发——若依集成 JSEncrypt 实现密码加密传输方式

文章目录 一、问题场景二、相关技术介绍1. RSA 加密算法2. JSEncrypt三、实现步骤1. 前端加密处理2. 后端解密处理3. 登录逻辑处理四、测试流程1. 前端测试2. 后端测试3. 运行效果五、总结一、问题场景 在 RuoYi 系统中,默认情况下,用户在登录时会将明文密码直接传输到服务器…...

Rust Web 开发新选择:探索 Hyperlane 轻量级 HTTP 服务器框架

Rust Web 开发新选择:探索 Hyperlane 轻量级 HTTP 服务器框架 在 Web 开发领域,Rust 以其高性能和内存安全性逐渐受到关注。而在众多 Web 框架中,hyperlane 作为一款轻量级、高性能的 HTTP 服务器框架,正悄然成为 Rust 生态中的明…...

初识 模版 和 STL

前言 今天简单和大家分享一下C重要的两个内容&#xff0c;经过之前的学习我们已经了解了C的大致语法&#xff0c;接下来就是C相关的库和一些操作了&#xff0c;他们能极大地缩小我们C语言阶段的代码量&#xff0c;让写代码变得轻松起来。 1.关于模版 <1>泛型编程 我们学…...

加新题了,MySQL 8.0 OCP 认证考试 题库更新

MySQL 8.0 OCP 认证考试 题库更新 MySQL 8.0 Database Administrator 考试科目&#xff1a;1Z0-908 近期发现&#xff0c;MySQL OCP认证考试题库发生变化&#xff0c;出现了很多新题&#xff0c;对此&#xff0c;CUUG专门收集整理了最新版本的MySQL考试原题&#xff0c;并会给…...

26考研——树与二叉树_树、森林(5)

408答疑 文章目录 二、树、森林树的基本概念树的定义和特性树的定义树的特性 基本术语树的基本术语和概念祖先、子孙、双亲、孩子、兄弟和堂兄弟结点的层次、度、深度和高度树的度和高度分支结点和叶结点有序树和无序树路径和路径长度 森林的基本术语和概念森林的定义森林与树的…...

26考研——图_图的基本概念(6)

408答疑 文章目录 一、图的基本概念图的定义非空性非线性结构 顶点和边的表示顶点边 有向图 & 无向图有向图有向图 G 1 G_1 G1​ 的表示 无向图无向图 G 2 G_2 G2​ 的表示 简单图 & 多重图简单图多重图 顶点的度、入度和出度顶点的度有向图的度 路径、路径长度和回路…...

笔试面试01 c/c++

基础知识 什么是数据结构&#xff1f;请简要描述常见的数据结构类型。 数据结构是组织和存储数据的方式&#xff0c;以便于高效访问和修改。常见的数据结构包括&#xff1a; 数组&#xff1a;固定大小的线性数据结构&#xff0c;支持随机访问。 链表&#xff1a;由节点组成的线…...

2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip

一、资料列表 第一课&#xff1a;Deepseek基础入门 第二课&#xff1a;DeepSeek赋能职场 第三课&#xff1a;普通人如何抓住DeepSeek红利 第四课&#xff1a;让科研像聊天一样简单 第五课&#xff1a;DeepSeek与AI幻觉 第六课&#xff1a;基于DeepSeek的AI音乐词曲的创造法 第…...

消息队列(Kafka及RocketMQ等对比联系)

目录 消息队列 一、为什么使用消息队列&#xff1f;消息队列有什么优点/缺点&#xff1f;介绍下Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优点缺点&#xff0c;如何取舍&#xff1f; 1.公司业务场景是什么&#xff0c;这个业务场景有什么挑战&#xff0c;如果不用MQ有什么麻…...

Go 语言 fmt 模块的完整方法详解及示例

以下是 Go 语言 fmt 模块的完整方法详解及示例&#xff0c;涵盖所有核心功能&#xff1a; 一、输出函数 将数据写入标准输出、文件或字符串。 1. Print / Println / Printf 功能 Print: 写入标准输出&#xff0c;不换行。Println: 写入标准输出并换行。Printf: 格式化写入标…...

Centos 7 安装VNC服务

Centos 7 安装VNC服务 1. 安装 TigerVNC2. 设置 VNC 密码3. 创建并配置 x0vncserver 服务4. 启用并启动服务5. 检查服务状态6. 配置防火墙7. 连接 VNC问题1:出现无法安装可能是镜像源导致的。手动配置镜像源清除 YUM 缓存并重新加载 1. 安装 TigerVNC 确保已安装 TigerVNC 服务…...

3.25-3 request断言

一.request断言 if断言 案例&#xff1a; import requests srequests.Session() url1"http://49.233.201.254:8080/cms/manage/loginJump.do" data1{userAccount:admin,loginPwd:123456} h1{"Content-Type":"application/x-www-form-urlencoded&…...

cmakelist中添加opencv

版本选择 qt的msvc&#xff0c;版本2019 opencv版本 4.5.3 配置了环境变量 x64下的v14中的bin 配置头文件 {"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}","d:\\QT\\6.5.3\\msvc20…...

【003安卓开发方案调研】之ReactNative技术开发安卓

基于2025年最新行业动态和搜索资料&#xff0c;以下是针对国内使用React Native&#xff08;RN&#xff09;开发安卓应用的深度分析&#xff1a; 一、技术成熟度评估 1. 核心架构升级 新架构全面普及&#xff1a;2024年起&#xff0c;React Native的 新架构&#xff08;Fabri…...

面试中如何回答性能优化的问题

性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志(文中的应用指分布式服务下的单个节点)即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。 对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用…...

使用cursor开发java案例——springboot整合elasticsearch

安装elasticsearch 打开cursor&#xff0c;输入如下提示词 使用springboot整合elasticsearch。其中elasticsearch服务器ip&#xff1a;192.168.236.134 管理员用户名elastic 管理员密码 PdQy_xfR2yLhpok*MK_ 监听端口9200点Accept all 使用idea打开生成的项目 &#xff0…...

CCF-CSP认证题目练习及其题解(4

【问题描述】 涛涛最近要负责图书馆的管理工作&#xff0c;需要记录下每天读者的到访情况。每位读者有一个编号&#xff0c;每条记录用读者的编号来表示。给出读者的来访记录&#xff0c;请问每一条记录中的读者是第几次出现。 【输入形式】 输入的第一行包含一个整数n&#x…...

Chrome 134 版本开发者工具(DevTools)更新内容

Chrome 134 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、隐私与安全面板 旧的 Security 面板已演变为隐私与安全面板&#xff0c;并新增了一个专注于隐私的部分。在该部分中&#xff0c;可以&#xff1a; 在 DevTools 打开时&#xff0c;临时限制第三方 Co…...

12届蓝桥杯—货物摆放

货物摆放 题目描述 小蓝有一个超大的仓库&#xff0c;可以摆放很多货物。 现在&#xff0c;小蓝有 nn 箱货物要摆放在仓库&#xff0c;每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向&#xff0c;每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所…...

oracle查询归档日志使用量

1.统计最近30天的数据 SELECT TRUNC(first_time, DD) "日期", SUM(blocks * block_size) / 1024 / 1024 / 1024 "大小(GB)" FROM v$archived_log WHERE first_time > SYSDATE - 30 -- 统计最近30天的数据 GROUP BY TRUNC(first_time, DD) ORDER BY 1 D…...

Redis 发布订阅

Redis 发布订阅 概述 Redis 发布订阅(Pub/Sub)是一种消息传递模式,允许应用在多个客户端之间进行通信。在Redis中,发布订阅允许客户端订阅一个或多个频道,并在这些频道上发布消息。其他订阅了相同频道的客户端会接收到这些消息。 核心概念 频道(Channels) 频道是发…...

歌曲缓存相关功能

1. 核心组件 MusicCacheManager (音乐缓存管理器) 单例模式&#xff1a;确保全局只有一个实例&#xff0c;方便管理。 private static var instance: MusicCacheManager?static func shared() -> MusicCacheManager {if instance nil {instance MusicCacheManager()}ret…...

MySQL学习之用户管理

MySQL学习之用户管理 一、用户1、用户信息2、创建用户3、修改用户密码4、删除用户 二、数据库权限1、MySQL中的权限2、给用户授权3、回收权限 一、用户 1、用户信息 MySQL用户管理&#xff1a; ①、与Linux操作系统类似&#xff0c;MySQL中也有超级用户和普通用户之分。 ②、如…...

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程(持续更新)

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路&#xff08;持续更新&#xff09; 写在前面&#xff1a; 1、A题、C题将会持续更新&#xff0c;陆续更新发布文章 2、赛题交流咨询Q群&#xff1a;1037590285 3、全家桶依旧包含&#xff1a; 代码、…...

算法训练营第二十三天 | 贪心算法(一)

文章目录 一、贪心算法理论基础二、Leetcode 455.分发饼干二、Leetcode 376. 摆动序列三、Leetcode 53. 最大子序和 一、贪心算法理论基础 贪心算法是一种在每一步选择中都采取当前状态下的最优决策&#xff0c;从而希望最终达到全局最优解的算法设计技术。 基本思想 贪心算…...

SpringCloud消息总线:Bus事件广播与配置动态刷新

文章目录 引言一、Spring Cloud Bus基本架构二、配置动态刷新实现2.1 基础配置2.2 刷新流程2.3 定向刷新 三、自定义事件广播3.1 定义自定义事件3.2 注册和监听事件3.3 发布事件 四、高级配置与优化4.1 消息持久化4.2 事件追踪4.3 安全控制 总结 引言 在微服务架构中&#xff…...

家庭网络结构之局域网通信

整个互联网非常复杂&#xff0c;涉及到很多知识&#xff0c;学习互联网不能一蹴而就&#xff0c;所以这里从最简单的家庭网络开始学习 家庭网络一般是通过Modem( 作用&#xff1a;进行数字信号和模拟信号的转换 ) 拨号上网&#xff0c;然后通过家庭路由器&#xff0c;将网络连接…...

突破反爬困境:SDK架构设计,为什么选择独立服务模式(四)

声明 本文所讨论的内容及技术均纯属学术交流与技术研究目的&#xff0c;旨在探讨和总结互联网数据流动、前后端技术架构及安全防御中的技术演进。文中提及的各类技术手段和策略均仅供技术人员在合法与合规的前提下进行研究、学习与防御测试之用。 作者不支持亦不鼓励任何未经授…...

java 设置操作系统编码、jvm平台编码和日志文件编码都为UTF-8的操作方式

以下是 Java中设置操作系统编码、JVM平台编码和日志文件编码为UTF-8 的详细步骤和代码示例&#xff1a; 一、设置操作系统编码为UTF-8 1. Windows系统 修改系统区域设置&#xff1a; 进入 控制面板 → 时钟和区域 → 区域。在“管理”选项卡中&#xff0c;点击“更改系统区域…...

SpringBoot:几种常用的接口日期格式化方法

全局时间格式化 通过在配置文件中设置可以实现全局时间格式化。在 Spring Boot 的配置文件 application.properties&#xff08;或 application.yml&#xff09;中添加以下两行配置&#xff1a; #?格式化全局时间字段 spring.jackson.date-formatyyyy-MM-dd?HH:mm:ss #?指…...

解题思路:LeetCode 2711. 对角线上不同值的数量差

解题思路&#xff1a;LeetCode 2711. 对角线上不同值的数量差 在LeetCode的题目2711中&#xff0c;我们需要计算一个矩阵中每个单元格的左上角对角线和右下角对角线上不同值的数量差。这个问题可以通过暴力法解决&#xff0c;但效率较低。本文将介绍一种更高效的解决方案&…...

Jackson实现JSON数据的合并

JSON数据的操作&#xff0c;系列文章&#xff1a; 《Jackson的核心类与API方法&#xff1a;ObjectMapper、JsonNode、ObjectNode、ArrayNode》 《Jackson的使用与创建Jackson工具类》 《Jackson使用ObjectNode对象实现JSON对象数据&#xff08;一&#xff09;&#xff1a;增、删…...

Elasticsearch 倒排索引 和 正排索引

一、倒排索引 倒排索引是 Elasticsearch 实现高效全文搜索的核心技术。它通过将词项与文档 ID 关联&#xff0c;支持快速检索、短语查询、布尔查询和相关性评分。尽管倒排索引在存储和更新方面有一定的开销&#xff0c;但通过词典优化、倒排列表压缩、分片和缓存等技术&#x…...

Cocos Creator Shader入门实战(五):材质的了解、使用和动态构建

引擎&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 前面的几篇文章&#xff0c;讲述的主要是Cocos引擎对Shader使用的一些固定规则&#xff0c;这里汇总下&#xff1a; 一、Shader实现基础是OpenGL ES可编程渲染管线&#xff0c;开发者只需关注顶点着色器和…...

【Python】pillow库学习笔记1-Image类

《Python语言程序设计基础 》第3版&#xff0c;嵩天 黄天羽 杨雅婷著&#xff0c;P293 1.pillow库概述 Pillow 库是Python图像处理重要的第三方库。 Pillow库是PIL (Python image library) 库的一个扩展&#xff0c;需要通过pip工具安装。安装PIL库需要注意&#xff0c;安装…...

解决 MySQL 的 sql_mode 中包含 only_full_group_by模式导致group by SQL报错

sql 报错&#xff1a; Cause: java.sql.SQLSyntaxErrorException: Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column ev_data_transmission.p.push_type which is not functionally dependent on columns in GROUP BY clause; this…...

【微服务架构】本地负载均衡的实现(基于随机算法)

前言 负载均衡 概念&#xff1a;一种将网络流量或业务请求均匀分配到多个服务器或服务实例上的技术&#xff0c;旨在提高系统的可用性、性能和可伸缩性。作用&#xff1a; 提高性能&#xff1a;通过将请求分散到多个实例上&#xff0c;避免单个实例因请求过多而过载&#xff…...

记一次线上SQL死锁事故

一、 引言 SQL死锁是一个常见且复杂的并发控制问题。当多个事务在数据库中互相等待对方释放锁时&#xff0c;就会形成死锁&#xff0c;从而导致事务无法继续执行&#xff0c;影响系统的性能和可用性。死锁不仅会导致数据库操作的阻塞&#xff0c;增加延迟&#xff0c;还可能对…...

电机控制常见面试问题(十八)

文章目录 一.电机控制高级拓扑结构1.LLC 二.谈谈电压器饱和后果三.电压器绕组连接方式的影响四.有源逆变的条件 一.电机控制高级拓扑结构 1.LLC LLC是什么&#xff1f;—— 一个会"变魔术"的电源盒子 想象你有一个魔法盒子&#xff0c;能把电池的电压变大或变小&…...

数据结构之双链表

目录 1 简介 2 双链表的基本概念 2.1 节点结构 2.2 头插法和尾插法 3 代码实现 4 代码解析&#xff08;部分&#xff09; 4.1 初始化双链表 4.2 添加节点 4.3 删除节点 4.4 获取节点 4.5 插入节点 4.6 反转链表 4.7 打印链表 4.8 核心操作分析 5 总结 1 简介 …...

dell 台式机 电脑 纽扣电池 如何取下?

dell 台式机 电脑 纽扣电池 如何取下&#xff1f; 戴尔-optiplex-3060-塔式机-服务手册...

JSON二次序列化问题分析

正常的JSON应该是: json Apply to VectorServic... { "id": "d471c19c-70eb-4f29-8604-b8284e8a9400", "text": "人为干预, 降低生产成本...", "metadata": { "chunkIndex": 2, …...

WebSocket 传输大量数据好不好?稳定不稳定

使用 WebSocket 传输大量数据 是可行的&#xff0c;但在实际应用中需要注意一些限制和优化策略。以下是关于 WebSocket 传输大量数据的详细分析&#xff1a; 1. WebSocket 传输大量数据的可行性 优点 实时性&#xff1a;WebSocket 是全双工通信协议&#xff0c;适合实时传输数…...

代码随想录刷题day52|(二叉树篇)106.从中序与后序遍历序列构造二叉树(▲

目录 一、二叉树理论知识 二、构造二叉树思路 2.1 构造二叉树流程&#xff08;给定中序后序 2.2 整体步骤 2.3 递归思路 2.4 给定前序和后序 三、相关算法题目 四、易错点 一、二叉树理论知识 详见&#xff1a;代码随想录刷题day34|&#xff08;二叉树篇&#xff09;二…...

无人设备遥控器之调度自动化技术篇

一、技术原理 信息采集与处理&#xff1a; 通过传感器、仪表等设备采集无人设备的各种数据&#xff0c;如位置、速度、状态等。 将采集到的数据传输到调度自动化系统中进行处理和分析&#xff0c;以获取设备的实时状态。 系统建模与优化&#xff1a; 调度自动化系统会根据…...

红宝书第十五讲:详解JavaScript迭代器与生成器:Symbol.iterator与yield

红宝书第十五讲&#xff1a;详解JavaScript迭代器与生成器&#xff1a;Symbol.iterator与yield 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、迭代器&#xff08;Iterator&#xff09;的“传送带”模式 迭代…...

【AI】NLP

不定期更新&#xff0c;建议关注收藏点赞。 目录 transformer大语言模型Google Gemma疫情网民情绪识别 整体框架 baseline构建 模型调参、模型优化、其他模型 数据trick、指标优化、magic feature 数据增强、伪标签、迁移学习 模型融合sklearn中TFIDF参数详解 频率阈值可以去掉…...

ENSP学习day10

NAT地址转换技术&#xff08;一&#xff09; NAT&#xff08;Network Address Translation&#xff09;地址转换技术是一种在计算机网络中常用的技术&#xff0c;在数据包从一个网络传输到另一个网络时&#xff0c;会对数据包中的源IP地址和目的IP地址进行修改的过程。这种技术…...

文件上传绕过的小点总结(4)

9.末尾点删除处理缺陷 给出源码&#xff1a; $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA,…...