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

中间件--ClickHouse-10--海量数据存储如何抉择ClickHouse和ES?

在Mysql数据存储或性能瓶颈时,采用冷热数据分离的方式通常是一种选择。ClickHouse和Elasticsearch(ES)是两个常用的组件,但具体使用哪种组件取决于冷数据的存储目的、查询模式和业务需求等方面。

1、核心对比

(1)、ClickHouse

  • 适用场景:
    • OLAP分析:适合需要快速处理大规模数据的聚合查询(如统计、分析历史数据)。
    • 结构化数据:适合高度结构化的数据(如日志、订单、交易记录等)。
    • 列式存储:列式存储设计使其在聚合查询(如SUM, COUNT, GROUP BY)中性能极佳。
    • 批量写入:适合批量导入冷数据(如定时任务迁移的批量数据)。
  • 优点:
    • 查询性能:在复杂分析场景中显著优于MySQL和ES。
    • 扩展性:支持水平扩展,适合处理PB级数据。
    • 成本:开源免费,硬件成本可控(但需优化配置)。
    • 高效的压缩率,减少存储成本。
  • 缺点:
    • 写入模式:不擅长高频率的小批量写入(适合批量导入冷数据)。
    • 事务支持:不支持传统事务,适合分析型场景。
    • 学习成本:SQL语法和生态相对复杂。
    • 数据更新操作(如删除、修改)效率较低。

(2)、Elasticsearch (ES)

  • 适用场景:
    • 全文搜索:适合需要快速全文检索的场景(如日志、文本内容搜索)。
    • 实时分析:适合半结构化数据(如日志、JSON文档)的实时查询和统计。
    • 高并发写入:支持高吞吐量的写入(如实时日志收集)。
  • 优点:
    • 全文检索:强大的全文搜索和模糊匹配能力。
    • 实时性:数据写入后可立即查询,适合近实时分析。
    • 灵活性:支持动态Schema,适合非结构化或半结构化数据。
    • 扩展性:分布式架构,易于水平扩展。
  • 缺点:
    • 聚合性能:复杂聚合查询(如多维度统计)可能不如ClickHouse高效。
    • 存储成本:存储成本较高(需较多资源存储倒排索引)。
    • 数据模型限制:不适合强事务和复杂关联查询。

2、冷数据存储的典型场景选择

(1)、选择ClickHouse的场景

  • 冷数据用途:
    需要频繁的聚合分析(如统计过去一年的用户行为、订单趋势、日志分析等)。
  • 数据类型:
    结构化数据(如订单表、日志表、交易记录等)。
  • 示例:
    • 将MySQL中超过6个月的订单数据迁移到ClickHouse,用于生成历史销售报告。
    • 将系统日志数据存入ClickHouse,用于分析用户行为趋势。

(2)、选择ES的场景

  • 冷数据用途:
    需要全文搜索或实时日志分析(如日志检索、文本内容分析)。
    • 例如:搜索过去一年中包含特定关键词的日志条目。
  • 数据类型:
    非结构化或半结构化数据(如日志、JSON文档、文本内容等)。
  • 示例:
    • 将MySQL中历史聊天记录迁移到ES,支持用户搜索历史对话中的关键词。
    • 将系统日志存入ES,用于快速定位错误日志。

(3)、混合使用场景

  • 冷数据同时需要分析和搜索:
    可将结构化数据(如订单金额、用户ID)存入ClickHouse,非结构化数据(如订单备注、日志内容)存入ES。
  • 分层存储:
    • 热数据:MySQL(实时事务处理)。
    • 冷数据:
      • ClickHouse(结构化数据(如:具体的数值,金额,年龄等)的分析)。
      • ES(非结构化数据(文档,文本,JSON)的搜索)。

3、冷数据迁移方案设计

(1)、定义冷数据规则:

  • 时间维度:如超过6个月未更新的数据。
  • 访问频率:如过去3个月未被查询的数据。

(2)、数据迁移工具:

  • ClickHouse:使用clickhouse-copier或自定义ETL工具批量导入。
  • ES:使用Logstash或Bulk API批量导入。

(3)、查询逻辑改造:

  • 业务查询时,优先查询MySQL(热数据),若未命中则查询冷数据源(ClickHouse/ES)。

4、具体场景示例

场景:电商平台订单数据

  • 热数据:
    MySQL存储最近3个月的订单数据,用于实时下单、支付等操作。
  • 冷数据:
    • ClickHouse:存储超过3个月的订单数据,用于生成销售报告(如按地区统计GMV)。
    • ES:存储订单备注中的文本内容,支持用户搜索历史订单中的关键词(如“红色T恤”)。

技术选型依据:

  • ClickHouse:
    订单金额、用户ID、时间戳等结构化数据的聚合分析(如SUM(order_amount))。
  • ES:
    订单备注、用户评价等文本内容的全文检索。

5、ClickHouse和ES建议对比

在这里插入图片描述

6、其他替代组件的推荐

(1)、对象存储(如AWS S3、阿里云OSS)

适用场景:

  • 归档类冷数据:长期存储(如1年以上)且极少访问的数据。
  • 低成本存储:通过Parquet、ORC 等列式格式存储,配合Spark/Flink进行批量分析。

优势:

  • 存储成本低,适合冷数据的长期归档。
  • 适合离线分析(如生成月报、年报)。

(2)、HBase或HDFS

适用场景:

  • 半结构化/非结构化数据:如日志、事件日志、需要高扩展性的冷数据。
  • 时序数据:通过时间戳分区存储,支持范围查询。

优势:

  • HBase支持高并发读写,适合部分冷数据仍需少量更新的场景。
  • HDFS适合离线批处理(如 Hadoop 分析)。

(3)、分布式数据库(如TiDB、CockroachDB)

适用场景:

  • 混合冷热数据:需要同时支持 OLTP(热数据)和 OLAP(冷数据)的场景。
  • 强一致性要求:冷数据仍需少量更新或跨库事务。

优势:

  • 自动水平扩展,支持 HTAP(混合事务与分析处理)。

(4)、时序数据库(如 InfluxDB、TimescaleDB)

适用场景:

  • 时间序列数据:如 IoT 设备数据、监控指标、传感器数据。
  • 按时间范围查询:支持自动过期(TTL)和压缩。

优势:

  • 针对时序数据优化,查询效率高,存储成本低。

7、其他组件对比

在这里插入图片描述

8、最佳实践建议

(1)、根据冷数据的用途选择组件

  • 仅需分析(如报表、趋势) → ClickHouse
  • 需要搜索或全文检索(如日志、评论) → ES
  • 长期归档且极少访问 → 对象存储(S3)
  • 时间序列数据(按时间查询) → InfluxDB

(2)、混合架构方案

  • 热数据:保留在 MySQL(或分库分表优化)。
  • 冷数据:
    • 分析需求 → ClickHouse(主) + 对象存储S3(归档)。
    • 搜索需求 → ES(主) + 对象存储S3(归档)。

(3)、数据迁移策略

  • 触发条件:
    • 时间维度(如3个月前)或状态维度(如订单已完结)。
    • 可通过定时任务或触发器迁移。
  • 迁移工具:
    • MySQL → ClickHouse:用INSERT SELECT或工具(如 Maxwell、Debezium)。
    • MySQL → ES:用Logstash、Flink 或自定义ETL。

(4)、成本优化

  • 存储分层:
    • 热数据 → SSD 存储(高性能 MySQL 实例)。
    • 冷数据 → HDD 存储(低成本 ClickHouse 集群或对象存储)。

逆风成长,Dare To Be!!!

相关文章:

中间件--ClickHouse-10--海量数据存储如何抉择ClickHouse和ES?

在Mysql数据存储或性能瓶颈时,采用冷热数据分离的方式通常是一种选择。ClickHouse和Elasticsearch(ES)是两个常用的组件,但具体使用哪种组件取决于冷数据的存储目的、查询模式和业务需求等方面。 1、核心对比 (1&…...

JESD204B标准及其在高速AD采集系统中的应用详解

一、JESD204B协议的本质与核心价值 JESD204B是由JEDEC制定的第三代高速串行接口标准(2011年发布),专为解决高速ADC/DAC与FPGA/ASIC间数据传输瓶颈而设计。其核心突破体现在: 速率革命性提升 支持每通道最高12.5Gbps(通…...

给予FLUX更好的控制:FLUX.1-dev-ControlNet-Union-Pro-2.0

Shakker Labs FLUX.1-dev-ControlNet-Union-Pro-2.0 一、模型概述 Shakker Labs发布的FLUX.1-dev-ControlNet-Union-Pro-2.0是一个统一的ControlNet模型,专为FLUX.1-dev模型设计。该模型在前一版本基础上进行了多项改进,包括移除模式嵌入以减小模型尺寸…...

Hadoop的三大结构及其作用?

Hadoop是一个分布式存储和计算框架,其三大核心组件是HDFS(Hadoop Distributed File System)、YARN(Yet Another Resource Negotiator)和MapReduce。它们各自有着重要的作用,共同构成了Hadoop生态系统的基础…...

langgraph框架之初识

1.什么是langgraph? LangGraph 是一个用于构建可控代理的底层编排框架。在AI中,代理也就是执行动作的智能体,也就是agent。使用这个框架可以构建一个可以自由控制的智能执行体,它可以帮我们做许多事情,如下&#xff1…...

3个实用的脚本

1. Linux 系统清理临时文件脚本 该脚本用于清理系统中 /tmp 目录下超过 7 天的临时文件。 #!/bin/bash# 清理 /tmp 目录下超过 7 天的文件 find /tmp -type f -atime 7 -exec rm -f {} \;# 清理 /var/tmp 目录下超过 7 天的文件 find /var/tmp -type f -atime 7 -exec rm -f {…...

Vue3 Composition API与十大组件开发案例详解

文章目录 一、Vue3核心API解析1.1 Composition API优势1.2 核心API 二、十大组件开发案例案例1:响应式表单组件案例2:动态模态框(Teleport应用)案例3:可复用列表组件案例4:全局状态通知组件案例5&#xff1…...

万用表判断MOS好坏

无论什么封装,D极一般在正面看的上面,或者焊盘面积最大的一面: 【零】烧个洞的那种,不用量了,一眼损坏 【一】万用表的二极管档位测量 检修:使用万用表的二极管档位,S极接红表笔,黑…...

算法驱动光场革命:SLM技术引领智能光学新时代

◀背景引入▶ 空间光调制器本质上是一种能够对光波的振幅、相位或偏振状态进行空间分布调制的动态光学器件,我司自主研发的SLM产品采用硅基液晶技术,通过电信号控制液晶分子的排列状态,实现对入射光波的精确调控。这种精确调控能力使得SLM成…...

webgl入门实例-11WebGL 视图矩阵 (View Matrix)基本概念

WebGL 视图矩阵 (View Matrix) 在WebGL中,视图矩阵(View Matrix)定义了观察者(相机)在世界空间中的位置和方向,它实现了从世界坐标系到相机坐标系的转换。 什么是视图矩阵? 视图矩阵是一个4x4的矩阵,用于: 将场景从…...

ESP32 搭建IDF+Vscode环境(详细教程)

1. IDF环境安装 1.1 ESP-IDF介绍​ ESP-IDF (Espressif IoT Development Framework) 是 Espressif( 乐鑫) 公司提供的面向ESP32 系列 的官方开源开发框架,用于开发物联网应用。ESP-IDF 的特点是高度的集成性和可移植性,提供了完整的 SDK,…...

精准计量+AI管控——安科瑞助力高校水电管理数字化转型

安科瑞顾强 传统管理痛点:效率低、隐患多、成本高 高校后勤水电管理长期面临多重挑战:人工抄表需宿管逐层逐户记录,耗时耗力且易出现漏抄、错抄,导致费用核算不公;老旧机械式电表误差率高达5%-10%,计量纠…...

PHP腾讯云人脸核身获取SIGN Ticket

参考腾讯云官方文档:人脸核身 获取 SIGN ticket_腾讯云 前提条件:已经获取了access_token。获取方法可参考: PHP腾讯云人脸核身获取Access Token-CSDN博客 public function getSignTicket(){$access_token file_get_contents(/data/confi…...

探索 Higress:下一代云原生 API 网关

引言 在云原生时代,API 网关作为连接客户端与后端服务的桥梁,扮演着至关重要的角色。Higress 是一款由阿里巴巴开发的先进云原生 API 网关,基于开源的 Istio 和 Envoy 构建。它通过将流量网关、微服务网关和安全网关三者高度集成&#xff0c…...

UE5编辑器静止状态下(非 Play 模式)睫毛和眼睛的渲染是正常的,而在 Play 模式下出现模糊

这通常指向以下几个 运行时(Runtime) 特有的原因: 抗锯齿 (Anti-Aliasing) 方法,特别是 Temporal Anti-Aliasing (TAA): 这是最可能的原因。 UE5 默认启用的 TAA 通过混合多帧信息来平滑边缘和减少闪烁,尤其是在运动中…...

ubuntu-24.04.2-live-server-arm64基于cloud-init实现分区自动扩容(LVM分区模式)

1. 环境 虚拟机镜像ISO:ubuntu-24.04.2-live-server-arm64.iso 2. 定制cloud-init镜像 2.1 安装OS 基于ubuntu-24.04.2-live-server-arm64.iso,通过virt-manager安装操作系统,语言建议选择英文,分区选择基于LVM的自动分区&…...

解决 Spring Boot 多数据源环境下事务管理器冲突问题(非Neo4j请求标记了 @Transactional 尝试启动Neo4j的事务管理器)

0. 写在前面 到底遇到了什么问题? 简洁版: 在 Oracle 与 Neo4j 共存的多数据源项目中,一个仅涉及 Oracle 操作的请求,却因为 Neo4j 连接失败而报错。根本原因是 Spring 的默认事务管理器错误地指向了 Neo4j,导致不相…...

直线轴承在自动化机械设备中的应用

直线轴承作为机械传动系统中的关键部件,凭借其高精度、低摩擦和稳定性能,被广泛应用于各类自动化设备中。以下是直线轴承在自动化领域的典型应用场景: CNC机床 在数控机床的进给系统中,直线轴承与精密导轨配合使用,为刀…...

生物化学笔记:医学免疫学原理22 肿瘤及肿瘤治疗

肿瘤及肿瘤治疗 免疫疗法 CAR-T细胞介绍...

6.数据手册解读—运算放大器(二)

目录 6、细节描述 6.1预览 6.2功能框图 6.3 特征描述 6.3.1输入保护 6.3.1 EMI抑制 6.3.3 温度保护 6.3.4 容性负载和稳定性 6.3.5 共模电压范围 6.3.6反相保护 6.3.7 电气过载 6.3.8 过载恢复 6.3.9 典型规格与分布 6.3.9 散热焊盘的封装 6.3.11 Shutdown 6.4…...

010数论——算法备赛

数论 模运算 一般求余都是对正整数的操作&#xff0c;如果对负数&#xff0c;不同编程语言结果可能不同。 C/javapythona>m,0<a%m<m-1 a<m,a%ma~5%32~-5%3 -21(-5)%(-3) -2~5%(-3)2-1正数&#xff1a;&#xff08;ab&#xff09;%m((a%m)(b%m))%m~正数&#xff…...

算法01-最小生成树prim算法

最小生成树prim算法 题源&#xff1a;代码随想录卡哥的题 链接&#xff1a;https://kamacoder.com/problempage.php?pid1053 时间&#xff1a;2025-04-18 难度&#xff1a;4⭐ 题目&#xff1a; 1. 题目描述&#xff1a; 在世界的某个区域&#xff0c;有一些分散的神秘岛屿&…...

轻量化高精度的视频语义分割

Video semantic segmentation (VSS)视频语义分割 Compact Models(紧凑模型) 在深度学习中,相对于传统模型具有更小尺寸和更少参数数量的模型。这些模型的设计旨在在保持合理性能的同时,减少模型的计算和存储成本。 紧凑模型的设计可以涉及以下一些技术: 深度剪枝(Deep…...

【AI飞】AutoIT入门七(实战):python操控autoit解决csf视频批量转换(有点难,AI都不会)

背景&#xff1a; 终极目标&#xff1a;通过python调用大模型&#xff0c;获得结果&#xff0c;然后根据返回信息&#xff0c;控制AutoIT操作电脑软件&#xff0c;执行具体工作。让AI更具有执行力。 已完成部分&#xff1a; 关于python调用大模型的&#xff0c;可以参考之前的…...

Android守护进程——Vold (Volume Daemon)

简介 介绍&#xff1a;Vold 是用来管理 android 系统的存储设备&#xff0c;如U盘、SD卡、磁盘等移动设备的热插拔、挂载、卸载、格式化 框架结构&#xff1a;Vold 在系统中以守护进程存在&#xff0c;是一个单独的进程。处于Kernel和Framework之间&#xff0c;是两个层级连接…...

【实体转换】mapstruct详解

大家好&#xff0c;我是jstart千语。今天来给大家讲讲在项目中经常可以使用得到的一个“工具”&#xff0c;就是mapstruct。 一、工具介绍 这个工具有些类似于spring提供的BeanUtils.copyProperties()用于对象转化。而mapstruct是通过生成高效的、类型安全的映射代码来帮助开发…...

部署路线Ubuntu_MySQL_Django_绑定域名

第 1 步&#xff1a;绑定域名&#xff08;DNS&#xff09; 在域名服务商后台&#xff08;例如阿里云 / 腾讯云 / Cloudflare&#xff09;中设置&#xff1a; A 记录 →域名 → 指向服务器公网 IP 可选&#xff1a;也加一个 www.域名 → 同样指向服务器 第 2 步&#xff1a;安…...

大屏设计与汇报:政务服务可视化实践

大屏设计与汇报:政务服务可视化实践 引言 在政务服务数字化转型浪潮中,大屏设计成为展现业务能力与数据价值的关键手段。本文围绕政务大屏设计,从设计要点、业务逻辑到汇报技巧展开深入探讨,为相关从业者提供全面参考。 一、大屏设计核心要点 (一)多维度考量 设计大…...

【MySQL】数据库和表的操作详解

目录 一、数据库&#xff1a; 1、查看数据库&#xff1a; 2、创建数据库&#xff1a; 3、删除数据库&#xff1a; 4、数据库的编码问题&#xff1a; 5、校验规则对数据库的影响&#xff1a; 6、修改数据库&#xff1a; 7、库的备份与恢复&#xff1a; 8、查看链接情况…...

从PDF到播客:MIT开发的超越NotebookLM的工具

NotebookLM是谷歌推出的更具创意的AI产品之一,几个月前刚刚推出。 许多人对它的能力感到惊叹——尤其是将长文本转化为两位播客主持人之间有趣对话的功能。 NotebookLM提供的不仅仅是这些,还包括聊天(问答)甚至生成思维导图。 如果你还没有尝试过NotebookLM,我强烈建议…...

ubuntu系统上基于RKE2部署K8S及Rancher

由于我们特殊的网络环境&#xff0c;所以只能使用国内资源来进行安装 - Rancher Releases Mirrors&#xff1a;https://mirror.rancher.cn/ - 阿里云镜像仓库&#xff1a;registry.cn-hangzhou.aliyuncs.com 1、配置资源仓库及token rootdemo-1:~# mkdir -p /etc/rancher/r…...

STM32单片机入门学习——第40节: [11-5] 硬件SPI读写W25Q64

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.18 STM32开发板学习——第一节&#xff1a; [1-1]课程简介第40节: [11-5] 硬件SPI读…...

vue3学习笔记之属性绑定

属性绑定 1. 基本语法 在 Vue 3 里&#xff0c;使用 : 或者 v-bind: 来进行属性绑定。这两种写法是等价的&#xff0c;: 是 v-bind: 的缩写形式。以下是示例代码&#xff1a; <template><!-- 使用缩写形式 --><img :src"imageUrl" alt"An exa…...

C++ 面向对象关键语法详解:override、虚函数、转发调用和数组引用传参-策略模式

int A(参数...) override { return 某个对象.A(参数...);} 一.目标 本文将用一个简单的“数学运算器”例子&#xff0c;从零解释以下 C 语法特性&#xff1a; virtual 虚函数 override 重写关键字 函数体内部的“转发调用” 数组引用作为函数参数 适合初学者和希望加深…...

Spring_MVC 快速入门指南

Spring_MVC 快速入门指南 一、Spring_MVC 简介 1. 什么是 Spring_MVC&#xff1f; Spring_MVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应用程序。它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将应用程序分为模型&#xff08;M…...

Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现

背景 最近在研究了一下 Starrocks的tablet的Rebalance的能力&#xff0c;这里进行记录一下 本文基于 StarRocks 3.3.5 结论 数据的rebalance 主要以两种模式来进行&#xff1a; 按照磁盘的使用率进行移动&#xff0c;如果每个BE的磁盘使用率不足tablet_sched_balance_load_…...

设计模式之工厂方法模式

1. 核心思想 工厂方法模式&#xff08;Factory Method Pattern&#xff09;将对象的创建过程延迟到子类。具体来说&#xff0c;定义一个创建对象的接口&#xff08;抽象工厂&#xff09;&#xff0c;但由子类决定实例化哪个具体类。这种方式解耦了对象的创建和使用&#xff0c…...

ubuntu学习day3

3 编译与调试 3.1 gcc/g编译器 当我们进行编译的时候&#xff0c;要使用一系列的工具&#xff0c;我们称之为工具链。SDK就是编译工具链的简写&#xff0c;我们所使用的是gcc系列编译工具链。使用-v参数来查看gcc的版本&#xff0c;从而确定某些语法特性是否可用&#xff0c;…...

【从零实现高并发内存池】申请、释放内存过程联调测试 与 大于256KB内存申请全攻略

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

element-plus添加暗黑模式

main.ts文件 //引入暗黑模式样式 import "element-plus/theme-chalk/dark/css-vars.css"; style.scss文件 // 设置默认主题色 :root {--base-menu-min-width: 80px;--el-color-primary-light-5: green !important;--route--view--background-color: #fff !import…...

第八周作业

1、使用Sqlmap工具完成对DVWA数据库的注入过程&#xff0c;要求按照库、表、列、内容的顺序进行注入 使用kali自带的sqlmap工具进行 (1)爆破库名 sqlmap -u "http://10.0.0.5:8080/vulnerabilities/sqli/?id1&SubmitSubmit#" -p id --cookie "PHPSESSID…...

工作督导 | 具有边缘型人格障碍倾向的高危来访者,咨询师如何应对?

一个学校心理中心&#xff0c;可能同时有几十位乃至数百位同学在接受咨询&#xff0c;其中大约10-20%是重点难点个案&#xff0c;一次督导如果只能督导1-2个个案&#xff0c;不足以保障所有危重难个案的有如何处理恰当、方向正确、快速解决、高效工作&#xff0c;是学校心理咨询…...

c++ map与unordered_map的比较

c map与unordered_map的比较 在c的STL库中&#xff0c;有map与unordered_map这两种名字十分相似的容器&#xff0c;但是他们的区别还是很大&#xff0c;下面我们从 底层实现、性能特性 和 适用场景进行逐一比较 底层实现 std::mapstd::unordered_map底层数据结构红黑树&…...

新手蓝桥杯冲击国一练习题单(四)

2025蓝桥杯省赛已结束&#xff0c;接下来是冲击国赛的时间 此题单为算法基础精选题单&#xff0c;包含蓝桥杯常考考点以及各种经典算法&#xff0c;可以帮助你打牢基础&#xff0c;查漏补缺。 本题单目标是冲击蓝桥杯省一国一&#xff0c;团体程序天梯赛个人国三、XCPC区域赛铜…...

PyTorch深度学习框架60天进阶学习计划 - 第45天:神经架构搜索(一)

PyTorch深度学习框架60天进阶学习计划 - 第45天&#xff1a;神经架构搜索&#xff08;一&#xff09; 第一部分&#xff1a;详解DARTS的可微分搜索空间 大家好&#xff01;欢迎来到我们PyTorch深度学习框架进阶学习计划的第45天。今天我们将深入探讨神经架构搜索(Neural Arch…...

【java 13天进阶Day04】常用API、正则表达式,泛型、Collection集合API

Math类的使用。 Math用于做数学运算。Math类中的方法全部是静态方法&#xff0c;直接用类名调用即可。方法&#xff1a; public static int abs(int a) 获取参数a的绝对值public static double ceil(double a) 向上取整public static double floor(double a) 向下取整public s…...

leetcode 309. Best Time to Buy and Sell Stock with Cooldown

目录 题目描述 第一步&#xff0c;明确并理解dp数组及下标的含义 第二步&#xff0c;分析并理解递推公式 1.求dp[i][0] 2.求dp[i][1] 3.求dp[i][2] 第三步&#xff0c;理解dp数组如何初始化 第四步&#xff0c;理解遍历顺序 代码 题目描述 这道题与第122题的区别就是卖…...

RAG 实战|用 StarRocks + DeepSeek 构建智能问答与企业知识库

文章作者&#xff1a; 石强&#xff0c;镜舟科技解决方案架构师 赵恒&#xff0c;StarRocks TSC Member &#x1f449; 加入 StarRocks x AI 技术讨论社区 https://mp.weixin.qq.com/s/61WKxjHiB-pIwdItbRPnPA RAG 和向量索引简介 RAG&#xff08;Retrieval-Augmented Gen…...

Java拼团项目

一些记录 环境配置 首先是把配置安装好&#xff0c;jdk1.8&#xff0c;maven3.8.8&#xff0c;docker&#xff0c;idea&#xff0c;脚手架 然后创建工程&#xff0c;通过小傅哥的脚手架从远程把一些包&#xff0c;依赖拉过来 然后在gitcode上边创建仓库&#xff0c;把代码提交…...

力扣每日打卡 2364. 统计坏数对的数目 (中等)

力扣 2364. 统计坏数对的数目 中等 前言一、题目内容二、解题方法1. 哈希函数12. 哈希函数22.官方题解2.1 方法一&#xff1a;使用 sqrt 函数 前言 这是刷算法题的第十四天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 2364. 统计坏数对的数目 (中等) 一、题目内容 给你…...