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

时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库

小T导读:胜软科技在石油石化行业中选择使用 TDengine 处理时序数据,不仅显著降低了运维数据库的成本,也大幅减少了存储空间的占用,实现了从原有的 40 多套 Oracle 数据库向仅 9 套 TDengine集群的精简替换。在迁移过程中,原有表结构几乎无需调整即可平滑移植至 TDengine。早在 TDengine 2.x 版本阶段,胜软科技便已开始部署使用,并在 TDengine 3.0 发布后完成升级,受益于 3.x 版本在功能和性能方面的诸多优化,尤其是数据订阅、企业版工具 taosX 等新功能,为实际应用带来了显著便利。本文将分享其在迁移与落地过程中的实践经验。

1. 背景概述

石油石化行业的时序数据广泛应用于能源生产、运输、加工和销售等环节,大量设备、传感器和监控系统持续生成时时序数据,用于支撑生产监控、调度优化和故障预警。早年时序数据库尚不成熟,我们曾采用 Oracle 存储某大型油田的时序数据,但随着业务数据量快速增长,各油田系统在数据处理和查询性能上逐渐暴露出瓶颈。

1.1 没有万能的数据库,只有合适的数据库

Oracle 作为传统关系型数据库的佼佼者,其稳定性和性能毋庸置疑。但用于存储海量时序数据并不合适,效率低、成本高的问题日益突出。要从根本上解决瓶颈,唯一的办法就是替换 Oracle。近年来,时序数据库快速发展,引起了我们的关注,针对时序数据的特性,选用专业的时序数据库已成为必然选择。

1.2 降低管理维护成本,简化运维

随着业务系统不断扩展,Oracle 数据库数量已增长至数十套,管理和维护成本居高不下,存储成本也持续攀升。而时序数据库在处理海量时序数据方面具备天然优势,超高压缩比大幅降低了存储开销。其分布式架构不仅支持灵活扩展计算资源以应对新增业务,还可便捷扩容节点存储空间,满足持续增长的数据需求。

1.3 软件国产化趋势下的重新选择

在石油石化行业,推进数据库软件国产化替代已成为信息化建设的重要趋势,旨在提升数据安全性、减少对国外厂商的依赖,并响应国家信创政策的要求。同时,数据库选型还需综合考虑其社区活跃度、发展前景,以及替换 Oracle 所需的改造成本等关键因素。

选型过程中,我们发现 TDengine 正是国产时序数据库中的重要一员:

  • 将核心代码进行完全开源 https://github.com/taosdata/TDengine

  • 支持集群、多副本等重要功能,集群环境下有更高的高可用性

  • TDengine 也已经支持众多的国产操作系统、CPU 平台

  • “一个设备一张表”与“超级表”的概念,设计了创新的存储引擎,让数据的写入、查询和存储效率都得到极大的提升,与我们当前业务匹配度很高

  • 社区活跃度高,版本发布时间相对稳定,新功能在不断丰富

  • 支持 SQL 语法,应用代码改动量小

经过前期充分的测试与验证,我们最终决定选用时序数据库 TDengine 来存储时序数据。

2. Oracle 切换至 TDengine

在我们的实时数据业务中,涉及实时类的设备和井等超过 70 种类型。过去在 Oracle 中,每类设备对应一张大表,所有同类设备的数据集中存储,字段类型多为 NUMBER、DATE、VARCHAR2 等。迁移至 TDengine 后,我们将字段类型调整为 TIMESTAMP、INT、DOUBLE、FLOAT、VARCHAR、NCHAR,并为每类设备建立一个超级表。

TDengine 要求超级表必须设置 tag 列,我们将设备编码作为首个 tag,用于标识每个具体设备或井。每个超级表下可创建多个子表,结构与超级表一致。这种设计方式与我们的业务场景高度契合,在后续的数据写入和查询性能上也带来了显著提升。

总体来看,从 Oracle 切换到 TDengine 比较顺利。

Oracle 库中的某表

TDengine 中的对应表

3. TDengine 大版本升级

早在 2022 年,我们就开始使用 TDengine 2.4 和 2.6 企业版。2023 年,在涛思数据企业版团队的支持下,我们顺利完成了向 3.0 的升级。由于 2.x 无法直接本地升级至 3.x,我们采用搭建临时集群的方式,制定了完整的升级与历史数据迁移方案,有效规避了业务中断风险。升级过程中,借助 taosX 工具,我们在不影响系统运行的前提下完成了历史数据迁移。以某单位为例,单副本 6T 数据在一周内全部迁移完成,最终成功切换至 3.0 版本。

TDengine 3.0 在使用方式上与 2.x 保持高度一致,写入、查询等核心功能无需大幅改动,仅需将 taos-jdbcdriver 升级至对应版本即可。

我们选择升级的另一个重要原因,是 3.0 提供了更强大、灵活的数据订阅能力。相比 2.x 中相对简单的订阅功能,3.0 支持按 SELECT、超级表、数据库等多级别进行订阅,既可将实时数据分发至其他系统,也能高效实现集群间数据同步,显著提升了业务集成与扩展能力。

4. 落地效果

TDengine 上线后,系统运行始终保持稳定,在性能、存储效率和运维管理等方面都取得了显著成效。在使用与集成过程中,涛思数据的售后团队通过多种沟通渠道及时响应,持续提供专业支持,为项目的顺利推进提供了有力保障。

4.1 性能提升

应用 TDengine 后写入、查询方面都有很大提升,以下是早期的部分模拟测试场景:

测试内容

概要总结

数据写入

50000 井、2,000,000,000 条数据的写入 用时:2355.37 s 写入平均速度:849121.05 条/秒,140,954,094.3 点/秒 平均写入频率:208.25ms 最大写入间隔:3000.03ms 最小写入间隔:11.64ms

单设备表 1 天数据查询

50000 设备、2,000,000,000 条数据 选择 1 个设备表,该设备 3 天数据中查询 1 天数据,输出到 CSV 文件 平均查询时间:2.64s

全量表中 TAG 过滤单表查询

50000 设备、2,000,000,000 条数据中,在超级表中,有 5w 子表,使用 tag 过滤,在该子表增加 1 天时间限制,进行查询 平均用时:0.29s

单设备表 1 条聚合查询

50000 设备、2,000,000,000 条数据中,在超级表中,有 5w 子表,使用 tag 过滤,进行 1 天时间段的聚合查询( count(*),max(wd), min(yy),avg(gl_sz))的查询 平均用时:1.41ms

全量表按标签聚合

50000 设备、2,000,000,000 条数据中,在超级表中,有 5w 子表,查询所有测点在某个时间段内测点采集值的 count,max,min,avg 和 tag 分组查询 按照 tag 分组平均用时:2.29s

全量表中按标签和时间段聚合

50000 设备、2,000,000,000 条数据中,在超级表中,有 5w 子表,按照 1 小时、1 天的时间窗口进行分组后的 count,max,min,avg 聚合结果。 1 小时聚合:9.76ms 1 天聚合:8.72ms

全量数据时间最新数据查询

50000 设备、2,000,000,000 条数据中 全量数据中,查询该测点在所有数据中时间戳最大的一条记录。 平均用时:0.311s

业务应用查询实时数据展示:

4.2 压缩比高,存储、运维成本降低

TDengine 具备出色的压缩能力,我们原先几张大表在迁移后,存储空间大幅减少,压缩率(见下图中的 Compression_Ratio)已降至个位数。

过去使用 40 多套 Oracle 数据库,如今各单位仅需部署 1 套 TDengine 集群即可满足业务需求,显著降低了运维成本。TDengine 支持多级存储,有效提升写入性能;我们目前采用 0 级挂载多个目录的方式,也提升了 I/O 吞吐能力。后续无论是为单台服务器扩容磁盘,还是增加节点扩展集群,操作都相对便捷。

4.3 数据订阅的使用

TDengine 提供了类似消息队列的数据订阅与消费接口,用户可在系统中定义 topic,与 Kafka 的使用方式相似。在许多场景下,借助 TDengine 构建时序大数据平台,我们无需再额外集成消息队列产品,极大简化了系统架构,也降低了运维成本。

在数据质量监测应用中,我们利用 TDengine 的订阅功能判断数据点的上报值是否处于合理范围,实现了实时的数据校验与告警。

我们不仅在业务系统中使用了数据订阅功能,在多个集群之间进行实时数据同步时,也同样依赖这一机制。通过 taosX 提供的 TMQ 数据订阅接口方式,我们实现了将数据实时同步至另一套集群,实现读写分离,进一步提升了生产环境的稳定性。

此外,数据订阅还有一个重要用途:辅助校验数据写入的准确性。通过订阅可以发现是否存在重复或乱序数据。由于 TDengine 默认以第一列为主键,同一子表中相同时间的数据仅保留一条,后写入的数据会覆盖先前的。借助这一机制,我们排查并解决了数据重复与乱序写入的问题,优化调整后,系统在读写性能与存储效率方面都实现了进一步提升。

5. 使用 TDengine 的心得

时序数据库与关系型数据库在数据存储量上存在显著差异,通常前者需要处理更大规模的数据。在查询时,需特别注意 SQL 的编写方式,重点聚焦时间范围内的数据,而非全表扫描,以避免不必要的资源消耗。

建议如下:

  1. 查询超级表时,务必添加第一列的时间戳范围过滤,精准限定查询时间段;

  2. 优先使用 tag 列进行过滤,而非普通列,可显著提升查询效率;

  3. 充分利用数据库的缓存机制,数据可直接从内存中获取,查询速度更快,比如获取每个设备的最新一条记录等场景。

6. 结语

石油石化是胜软科技重点服务的行业之一,而涛思数据也在该领域积累了丰富的实践经验。未来,我们将继续与涛思数据深入合作,持续探索更多业务场景的应用可能,充分发挥时序数据库在大规模时序数据管理方面的优势,并进一步推动与其他系统组件的集成,共同打造更高效、智能的数据平台。

关于胜软科技:

山东胜软科技股份有限公司成立于 2002 年,是国家高新技术企业,新三板挂牌企业,依托国家级双跨工业互联网平台“胜软云帆”构建一体化软件生产生态体系,打造以业务、技术为双擎的核心驱动力。面向智慧能源、智慧城市、智能制造三航道,提供战略规划、方案设计、软件开发实施、系统集成运维服务,目前已发展成为国内油气领域规模最大的民营软件服务商。采用北京+东营“双总部”运营模式,设有济南研发中心,在北京、成都、郑州、乌鲁木齐、青岛设有分公司,此外拥有 9 家子公司,1 家海外公司,客户遍布全国 24 个省市自治区和海外 8 个国家与地区。

作者:研发经理王强、孙东超

相关文章:

时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库

小T导读:胜软科技在石油石化行业中选择使用 TDengine 处理时序数据,不仅显著降低了运维数据库的成本,也大幅减少了存储空间的占用,实现了从原有的 40 多套 Oracle 数据库向仅 9 套 TDengine集群的精简替换。在迁移过程中&#xff…...

【问题解决】本机navicat连接云服务器mysql

一般情况下,当你使用navicat等工具连接云服务器会因为mysql的安全机制,导致无法连接root用户,但是在测试环境中,不考虑安全性的前提条件下,可以通过修改MySQL的配置文件来连接云服务器mysql的root用户。 选择数据库&am…...

STM32F407 的通用定时器与串口配置深度解析

在 STM32F407 芯片的开发过程中,通用定时器和串口的配置与使用是极为关键的技能点。本文将结合提供的代码示例,深入剖析这两个模块的配置流程、工作原理以及实际应用,助力开发者更好地掌握相关技术。 一、通用定时器 (一&#x…...

深入探究Linux项目自动化构建工具:make与Makefile

目录 引言 一、make与Makefile概述 1.1 背景 1.2 理解 二、make工作原理 2.1 查找Makefile 2.2 确定目标文件 2.3 处理文件依赖 三、Makefile实例分析 3.1 简单C程序示例 3.2 项目清理机制 四、结合行缓冲区概念的有趣现象 五、结语 引言 在Linux软件开发的世界里…...

【Hive入门】Hive基础操作与SQL语法:DDL操作全面指南

目录 1 Hive DDL操作概述 2 数据库操作全流程 2.1 创建数据库 2.2 查看数据库 2.3 使用数据库 2.4 修改数据库 2.5 删除数据库 3 表操作全流程 3.1 创建表 3.2 查看表信息 3.3 修改表 3.4 删除表 4 分区与分桶操作 4.1 分区操作流程 4.2 分桶操作 5 最佳实践与…...

STM32F103 “BluePill” 上的 DMA 原理与实践

摘要:本文深入浅出地介绍什么是 DMA(直接存储器访问),它的核心原理、硬件架构,以及在 STM32F103(BluePill)上常见的几种使用场景(ADC、UART、内存拷贝等)。通过对比 CPU 轮询、中断、DMA 三种方式的数据搬运效率,结合寄存器级和 HAL 库示例代码,并附带性能测试与优化…...

软考软件设计师30天备考指南

文章目录 一、考情分析(一)综合知识(二)案例分析 二、30天学习规划(一)第1 - 5天:基础夯实(二)第6 - 10天:核心知识突破(三)第11 - 15…...

比较:AWS VPC peering与 AWS Transit Gateway

简述: VPC 对等连接和 Transit Gateway 用于连接多个 VPC。VPC 对等连接提供全网状架构,而 Transit Gateway 提供中心辐射型架构。Transit Gateway 提供大规模 VPC 连接,并简化了 VPC 间通信管理,相比 VPC 对等连接,支持大量 VPC 的 VPC 间通信管理。 VPC 对等连接 AWS V…...

【AI大模型】MCP:AI应用的“超级扩展坞”

一、什么是MCP MCP(Model Context Protocol,模型上下文协议)是一种新兴的开放协议,于2024年11月由Anthropic公司(Claude的开发者)开源。它的核心目标是建立一个类似USB-C的标准化协议,统一AI模…...

线程封装

目录 makefile Thread.hpp main.cc 以面向对象的方式造轮子 #ifndef _THREAD_HPP__ // 如果没有定义过 _THREAD_HPP__ #define _THREAD_HPP__ // 则定义 _THREAD_HPP__// 这里是头文件的实际内容(类、函数声明等)#endif // 结束条件…...

【Java后端】MyBatis 与 MyBatis-Plus 如何防止 SQL 注入?从原理到实战

在日常开发中,SQL 注入是一种常见但危害巨大的安全漏洞。如果你正在使用 MyBatis 或 MyBatis-Plus 进行数据库操作,这篇文章将带你系统了解:这两个框架是如何防止 SQL 注入的,我们又该如何写出安全的代码。 什么是 SQL 注入&#…...

智能穿戴的终极形态会是AR眼镜吗?

清晨的地铁里,戴着普通眼镜的小张正通过镜片查看实时导航路线,眼前的虚拟箭头精准指引换乘方向;手术室里,主刀医生透过镜片看到患者血管的3D投影,如同获得透视眼般精准避开危险区域;装修现场,设…...

ubantu18.04(Hadoop3.1.3)Hive3.1.2安装指南

说明:本文图片较多,耐心等待加载。(建议用电脑) 注意所有打开的文件都要记得保存。本文的操作均在Master主机下进行 第一步:准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的,因此需要读者完成我之…...

Hive 多表查询案例

文章目录 前提条件Hive 多表查询案例JOIN案例JOIN查询数据准备1. 内连接(INNER JOIN)2. 左外连接(LEFT OUTER JOIN)3. 右外连接(RIGHT OUTER JOIN)4. 全外连接(FULL OUTER JOIN)5. 多…...

4.23刷题记录(栈与队列专题)

第一部分:基础知识 栈先进后出,队列先进先出栈用stack实现,主要函数有pop,push,top队列由queue或者deque实现,主要函数有front,back,push,pop,emplace&#…...

Python常用的第三方模块之【jieba库】支持三种分词模式:精确模式、全模式和搜索引擎模式(提高召回率)

Jieba 是一个流行的中文分词Python库,它提供了三种分词模式:精确模式、全模式和搜索引擎模式。精确模式尝试将句子最精确地切分,适合文本分析;全模式则扫描文本中所有可能的词语,速度快但存在冗余;搜索引擎…...

Redisson实战:分布式系统中的五大典型应用场景

引言 在分布式系统架构中,数据一致性、高并发控制和资源协调是开发者面临的核心挑战。Redisson作为基于Redis的Java客户端,不仅提供了丰富的分布式对象和服务,还简化了分布式场景下的编程模型。本文将通过实际代码示例,解析Redis…...

webrtc建立连接的过程

WebRTC 连接全过程:从零到视频通话的每一步 WebRTC 是个神奇的技术,让浏览器直接进行点对点(P2P)音视频通话或数据传输,不用每次都靠服务器中转。想知道 Alice 和 Bob 是怎么通过 WebRTC 建立视频通话的吗&#xff1f…...

system verilog 语句 耗时规则

在 SystemVerilog 中,确实有一类语句是**不消耗仿真时间(zero simulation time)**的,我们一般叫它们: ✅ 零延迟语句(Zero-Time Statements) 🔹1. 什么是“不费时间”的语句? 这些语句在仿真时…...

【Docker】在Ubuntu平台上的安装部署

写在前面 docker作为一种部署项目的辅助工具,真是太好用了需要魔法,不然无法正常运行笔者环境:ubuntu22.04 具体步骤 更新系统包索引 sudo apt update安装必要依赖包 sudo apt install -y apt-transport-https ca-certificates curl softwa…...

2025年阅读论文的常用工具推荐

在快速发展的学术界,阅读和整理论文的能力对于研究者和学生来说至关重要。随着科技的进步,各种工具应运而生,帮助我们更高效地处理文献。本文将为您推荐一些2025年最常用的阅读论文工具,让您的学术之路更加顺畅。 1. SumiNote S…...

pod内部共享命名空间与k8s命名空间是一个东西吗?

文章目录 小知识-命名空间**下面着重介绍一下刚刚提到的内部命名空间**IPC NamespaceNetwork Namespace 本文摘自于我的免费专栏《Kubernetes从0到1(持续更新)》请多关注 小知识-命名空间 注意,首先我要强调一点,Kubernetes命名空…...

Linux笔记---进程间通信:匿名管道

1. 管道通信 1.1 管道的概念与分类 管道(Pipe) 是进程间通信(IPC)的一种基础机制,主要用于在具有亲缘关系的进程(如父子进程、兄弟进程)之间传递数据,其核心特性是通过内核缓冲区实…...

JAVA设计模式——(三)桥接模式

JAVA设计模式——(三)桥接模式(Bridge Pattern) 介绍理解实现武器抽象类武器实现类涂装颜色的行为接口具体颜色的行为实现让行为影响武器修改武器抽象类修改实现类 测试 适用性 介绍 将抽象和实现解耦,使两者可以独立…...

设计模式--工厂模式详解

工厂模式 作用: 实现了创建者与调用者的分离 详细分类 简单工厂模式 工厂方法模式 抽象工厂模式 OOP七大原则: 开闭原则:一个软件的实体应该对拓展开发,对修改关闭 依赖反转原则:要针对接口编程,不…...

每天五分钟深度学习PyTorch:图像的处理的上采样和下采样

本文重点 在pytorch中封装了上采样和下采样的方法,我们可以使用封装好的方法可以很方便的完成采样任务,采样分为上采样和下采样。 上采样和下采样 下采样(缩小图像)的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。 下采样( 放大图像)的…...

前端面试场景题

目录 1.项目第一次加载太慢优化 / vue 首屏加载过慢如何优化 2.说说了解的es6-es10的东西有哪些 ES6(ES2015)之后,JavaScript 新增了许多实用的数组和对象方法,下面为你详细介绍: 3.常见前端安全性问题 XSS&#…...

国际化不生效

经过我的重重检查 最终发现是 版本问题。 原本下载默认next版本cnpm install vue-i18nnext 下载 国际化插件 cnpm install vue-i18n^9.14.3 删除掉node_models,再重新加载包:cnpm install 这时候就可以正常显示了 国际化操作: en.js zh…...

新一代人工智能驱动医疗数智化:范式变革、实践方向及路径选择

人工智能(AI)正以前所未有的速度重构医疗健康行业的底层逻辑,从数据获取、知识建模到临床决策支持,AI不仅是“辅助工具”,更日益成为医疗生产力体系的核心引擎。随着大模型、计算平台和数智基础设施的迅猛发展,医疗数智化正进入从“点状创新”走向“系统重构”的深水区。…...

OpenCV 图形API(55)颜色空间转换-----将图像从 RGB 色彩空间转换为 I420 格式函数RGB2I420()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从 RGB 色彩空间转换为 I420 色彩空间。 该函数将输入图像从 RGB 色彩空间转换为 I420。R、G 和 B 通道值的常规范围是 0 到 255。 输出图…...

大模型安全吗?数据泄露与AI伦理的黑暗面!

大模型安全吗?数据泄露与AI伦理的黑暗面! 随着人工智能技术的飞速发展,尤其是大型语言模型(如GPT-3、BERT等)的出现,AI的应用场景越来越广泛,从智能客服到内容生成,从医疗诊断到金融…...

穿越链路的旅程:深入理解计算机网络中的数据链路层

一、引言 在计算机网络的七层模型中,数据链路层(Data Link Layer) 是连接物理世界与逻辑网络世界的关键一环。它位于物理层之上,网络层之下,负责将物理层的“比特流”转换成具有结构的数据帧,并确保数据在…...

《AI大模型应知应会100篇》第35篇:Prompt链式调用:解决复杂问题的策略

第35篇:Prompt链式调用:解决复杂问题的策略 摘要 在大模型应用中,单次提示的能力往往受限于上下文长度和任务复杂度。为了解决这些问题,Prompt链式调用应运而生。本文将深入探讨如何通过分解任务、设计逻辑链路、传递中间结果&am…...

管理100个小程序-很难吗

20公里的徒步-真难 群里的伙伴发起了一场天目山20公里徒步的活动,想着14公里都轻松拿捏了,思考了30秒后,就借着春风带着老婆孩子就出发了。一开始溪流清澈见底,小桥流水没有人家;青山郁郁葱葱,枯藤老树没有…...

算法恢复训练-Part01-数组

注:参考的某算法训练营的计划 核心注意点 在 Golang(和大多数主流语言,如 C/C)中,二维数组按行访问的效率更高。因为它符合 Go 的内存连续存储结构,能提高 CPU Cache 命中率,减少内存跳跃带来…...

软件黑盒与白盒测试详解

黑盒测试与白盒测试的核心对比 一、定义与核心目标 黑盒测试 定义:将程序视为“黑盒”,仅通过输入和输出验证功能是否符合需求规格,不关注内部代码逻辑。目标:确保功能完整性、输入输出正确性及用户体验,例如验证购物车…...

本文通俗简介-优雅草星云物联网AI智控系统软件介绍-星云智控是做什么用途的??-优雅草卓伊凡

本文通俗简介-优雅草星云物联网AI智控系统软件介绍-星云智控是做什么用途的??-优雅草卓伊凡 星云智控:物联网设备实时监控的革新力量 一、引言 在科技飞速发展的当下,物联网技术的广泛应用使得各类设备的实时监控与管理变得愈发…...

达梦统计信息收集情况检查

查询达梦某个对象上是否有统计信息 select id,T_TOTAL,N_SMAPLE,N_DISTINCT,N_NULL,BLEVEL,N_LEAF_PAGES,N_LEAF_USED_PAGES,LAST_GATHERED from sysstats where id IN (select id from sysobjects where upper(name)upper(&objname));可能有系统对象,可以增加…...

【MQ篇】RabbitMQ之发布订阅模式!

目录 引言一、 回顾:简单模式与工作队列模式的局限 😔二、 发布/订阅模式详解:消息的“广播站” 📻三、 RabbitMQ 中的交换机类型:不同的“广播方式” 📻四、 Java (Spring Boot) 代码实战Fanout 模式的完整…...

如何批量为多张图片(JPG、PNG、BMP、WEBP 等格式)添加自定义水印保护

「鹰迅批量处理工具箱」提供了强大的批量水印添加功能,支持常见的图片格式,如 JPG、JPEG、PNG、BMP、GIF、WEBP 等。用户不仅可以选择添加文字水印或图片水印,还能自定义设置水印的样式、位置和透明度等参数,操作简单而高效&#…...

LeetCode每日一题4.23

题目 问题分析 计算每个数字的数位和:对于从 1 到 n 的每个整数,计算其十进制表示下的数位和。 分组:将数位和相等的数字放到同一个组中。 统计每个组的数字数目:统计每个组中有多少个数字。 找到并列最多的组:返回数…...

Kafka简介

简介 基本概念 Kafka是分布式发布 - 订阅消息系统,最初由LinkedIn开发,后成为Apache项目一部分,可类比为放鸡蛋的篮子,生产者产蛋放入,消费者从中取蛋 。 消息系统 优势:分布式系统,易扩展&am…...

大数据利器:Kafka与Spark的深度探索

在大数据领域,Kafka和Spark都是极为重要的工具。今天就来和大家分享一下我在学习和使用它们过程中的心得。 Kafka作为分布式消息系统,优势显著。它吞吐量高、延迟低,能每秒处理几十万条消息,延迟最低仅几毫秒;可扩展性…...

使用logrotate实现日志轮转

logrotate 是一个强大的 Linux 工具,用于自动化管理日志文件的轮转、压缩、删除和归档。它能有效防止日志文件无限增长,节省磁盘空间,同时保持日志的可追溯性。以下是详细讲解 logrotate 的用法,涵盖安装、配置、测试、自动化、常…...

第52讲:农业AI + 区块链——迈向可信、智能、透明的未来农业

目录 一、为什么农业需要“AI+区块链”? 二、核心应用场景解读 1. 农产品溯源系统 2. 农业信贷与保险精准评估 3. 农业碳足迹追踪与碳汇交易 三、案例实战分享:智能溯源 + 区块链合约 四、面临挑战与展望 五、总结 在数字农业时代,“AI” 和 “区块链” 是两股不容忽…...

视频智能分析平台EasyCVR无线监控:全流程安装指南与功能应用解析

在当今数字化安防时代,无线监控系统的安装与调试对于保障各类场所的安全至关重要。本文将结合EasyCVR视频监控的强大功能,为您详细阐述监控系统安装过程中的关键步骤和注意事项,帮助您打造一个高效、可靠的监控解决方案。 一、调试物资准备与…...

Spring Cloud Eureka 与 Nacos 深度解析:从架构到对比

一、Eureka:经典微服务注册中心 (一)核心定位与特性 Spring Cloud Eureka 是 Netflix 开源的服务注册与发现组件,在微服务架构中扮演 "大脑" 角色,负责服务的注册、发现与状态管理。其核心优势在于通过心跳…...

深入详解Java中的@PostConstruct注解:实现简洁而高效初始化操作

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...

【Unity笔记】Unity 编辑器扩展:一键查找场景中组件引用关系(含完整源码)(组件引用查找工具实现笔记)

摘要: 本文介绍了如何在 Unity 编辑器中开发一款实用的编辑器扩展工具 —— ComponentReferenceFinder,用于查找场景中对某个自定义组件的引用关系。该工具特别适用于大型项目、多人协作或引入外部插件后,快速定位组件间的耦合关系。 本文从需…...

实体店的小程序转型之路:拥抱新零售的密码-中小企实战运营和营销工作室博客

实体店的小程序转型之路:拥抱新零售的密码-中小企实战运营和营销工作室博客 在当今数字化浪潮的冲击下,实体店面临着前所未有的挑战,但小程序的出现为实体店转型新零售带来了新的曙光。先来看一组惊人的数据,据相关统计&#xff…...