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

ClickHouse简介

OLAP与ClickHouse的定位

OLAP的核心概念
  • OLTP:服务于高并发、低延迟的短事务操作(如银行转账、订单支付),强调数据的增删改查(CRUD)和事务一致性(ACID)。

  • OLAP:专注于大规模数据的复杂聚合分析(如统计报表多维分析),要求高吞吐/性能的批量查询,通常涉及全表扫描和多表关联。

  • OLAP的典型特征

    • 数据量大:TB/PB级数据存储。
    • 查询复杂:涉及GROUP BY、JOIN、窗口函数等聚合操作。
    • 读多写少:数据批量写入,极少单行更新。
    • 高吞吐低延迟:即使数据量极大,仍需快速响应分析请求。
ClickHouse的定位
  • 列式存储的极致优化

    • 列式存储:数据按列而非行存储,同一列的数据类型相同,天然适合高压缩率(如LZ4、ZSTD算法),减少I/O和内存占用。
    • 向量化查询:利用SIMD指令集(单指令多数据)对整列数据进行批量处理,大幅提升CPU利用率。
    • 数据预聚合:通过MergeTree引擎的预排序(Primary Key)、跳数索引(Skipping Index)和物化视图(Materialized View)加速聚合查询。
  • 分布式架构的天然支持

    • 分片与副本:数据可水平分片(Sharding)存储,副本(Replication)机制通过ZooKeeper协调实现高可用。
    • 分布式查询:支持跨节点并行执行查询,自动路由和合并结果,用户无需感知分片细节。
  • 实时分析能力

    • 高写入吞吐:通过类LSM-Tree(Log-Structured Merge-Tree)结构实现高效写入(如批量插入、后台合并)。
    • 准实时查询:数据写入后通常在毫秒到秒级即可查询,适合实时报表和监控场景。
  • 灵活性不足但性能优先

    • 牺牲事务支持:不支持ACID事务,不适合需要强一致性的OLTP场景。
    • 弱化单点更新:单行更新(UPDATE/DELETE)效率低,需通过ALTER TABLE实现批量更新。
    • 复杂JOIN的局限:大表JOIN性能较差,建议通过预计算或宽表规避。
ClickHouse与其他OLAP技术的对比
技术/产品核心优势局限性适用场景
ClickHouse极致查询性能、高压缩率、实时分析JOIN能力弱、事务支持差实时日志分析、用户行为分析
Apache Hive生态完善、兼容Hadoop延迟高(分钟级)、依赖MapReduce/Tez离线批处理、数据仓库
Apache Druid高并发低延迟、时间序列优化架构复杂、存储成本高实时监控、事件驱动分析
Elasticsearch全文检索、近实时查询聚合性能差、存储成本高日志检索、文本分析
Snowflake全托管、弹性扩展、多云支持成本高昂、定制化能力弱企业级云数仓
ClickHouse的诞生背景与核心优势
诞生背景
  • 初衷是为了解决其内部海量数据分析的瓶颈。
  • 核心业务(如搜索引擎、广告系统、用户行为分析)需要实时处理PB级数据。
  • 传统数据库(如MySQL)和Hadoop生态工具(如Hive)无法满足低延迟、高吞吐的分析需求。
核心优势
  • 列式存储与高效压缩:数据按列存储,同类型数据紧密排列,压缩率极高(节省存储和I/O),适合聚合查询(仅读取相关列)。
  • 向量化查询引擎:利用CPU的SIMD指令并行处理整列数据,大幅提升计算效率(相比逐行处理)。
  • 分布式架构:天然支持分片和副本,数据可水平扩展,查询自动并行化,轻松应对PB级数据。
  • 实时写入与查询:写入吞吐高(百万级/秒),数据写入后毫秒级可查,支持实时分析场景(如监控、日志)。
  • 高性能聚合计算:预排序、跳数索引、物化视图等机制,复杂聚合(GROUP BY、窗口函数)比传统数据库快10-100倍。
  • 易用性与SQL兼容:支持标准SQL语法,学习成本低,且提供丰富扩展函数(如近似计算、地理数据处理)。
  • 开源与社区生态:完全开源,社区活跃,支持与Kafka、Hadoop、Spark等工具无缝集成。

ClickHouse的适用场景与局限性

ClickHouse的适用场景
  • 实时日志分析:Nginx访问日志、应用错误日志的实时聚合统计(PV/UV、错误率)。
  • 用户行为分析:用户点击流分析、漏斗转化计算、留存率统计。
  • 时序数据存储与监控:物联网(IoT)设备指标、服务器性能监控(Prometheus长期存储替代)。
  • 大数据实时报表:电商实时销售额看板、广告点击效果分析(支持TB级数据秒级响应)。
  • 联机分析处理(OLAP) :复杂聚合查询(GROUP BY、窗口函数)、多维数据分析。
ClickHouse的局限性
  • 不适用于OLTP场景:不支持事务(ACID)、高并发单行更新/删除效率极低。
  • 不适合频繁单行更新/删除:数据更新需通过批量ALTER TABLE实现,延迟高。
  • JOIN性能较弱:大表JOIN容易成为性能瓶颈,建议预计算宽表或使用非规范化设计。
  • 高并发点查询支持有限:默认设计面向高吞吐分析查询,单点查询(如按主键查单行)性能不如MySQL/Redis。
  • 存储成本与数据冷热分离:全量数据存储成本较高,需自行管理冷热数据分层(如结合S3)。

数据类型与表引擎简介

数据类型
  • 基础类型

    类别类型示例描述
    整数Int8, UInt32有符号/无符号整数(位数可选8/16/32/64),如UInt32表示0~4294967295。
    浮点数Float32, Float64单精度(32位)和双精度(64位)浮点数。
    字符串String, FixedString(N)String存储任意长度文本,FixedString(N)定长字符串(适合枚举值,如国家代码)。
    日期时间Date, DateTimeDate精确到天(如2023-10-01),DateTime精确到秒(如2023-10-01 10:00:00)。
    布尔值Bool实际存储为UInt8(0或1),但支持true/false语法。
    枚举Enum8, Enum16预定义值的字符串映射(如Enum8('success' = 1, 'fail' = 2)),节省存储空间。
  • 复合类型

    类型描述
    Array(T)同类型元素数组(如Array(String)存储多个字符串)。
    Tuple(T1, T2)异构元素的元组(如Tuple(String, UInt32)存储名称和年龄)。
    Nested嵌套表结构(类似子表),需与Array结合使用(如Nested(tag String, value Float64))。
  • 特殊类型

    类型描述
    LowCardinality低基数优化类型(如重复值多的字符串字段),自动压缩存储(类似字典编码)。
    Decimal(P, S)高精度浮点数(如Decimal(18, 4)表示小数点后4位,适合金融金额)。
    UUID128位全局唯一标识符(如UUID类型存储设备ID)。
    IPv4/IPv6优化存储IP地址(IPv4UInt32IPv6FixedString(16))。
表引擎
  • 基础引擎

    引擎特点
    TinyLog无索引,数据不压缩,适用于小表或临时测试(写入后不可修改)。
    Log按列存储,支持并行查询,适合中等规模静态数据(写入后不可修改)。
    Memory数据仅存储在内存中,重启后丢失,适合高速缓存或中间结果暂存。
  • MergeTree引擎家族

    引擎特点
    MergeTree基础引擎,支持主键索引、数据分区(PARTITION BY)和后台合并(Merge)。
    ReplacingMergeTree在MergeTree基础上,自动去重相同排序键的数据(保留最后写入版本)。
    SummingMergeTree自动合并时对数值列求和(如统计相同维度的指标累加)。
    AggregatingMergeTree合并时预聚合数据,需配合AggregateFunction类型使用,适合实时OLAP。
    CollapsingMergeTree通过标记字段(sign)合并时折叠数据(如删除旧版本记录)。
    VersionedCollapsingMergeTree在折叠基础上支持版本控制(如按时间戳保留最新状态)。
  • 集成引擎

    引擎特点
    Kafka从Kafka主题消费数据(需指定Broker、Topic和格式),实时写入ClickHouse。
    MySQL映射MySQL表到ClickHouse(类似外部表),支持读写操作(但性能不如原生表)。
    HDFS直接读取HDFS文件(如Parquet/ORC格式),适合离线分析。
    JDBC/ODBC通过JDBC或ODBC协议连接外部数据库(如PostgreSQL)。
引擎选择
  • 默认选择:优先使用MergeTree系列引擎(90%场景适用)。
  • 实时聚合AggregatingMergeTree + 物化视图实现预计算。
  • 外部数据:临时分析使用MySQLHDFS引擎,长期存储建议导入本地表。
  • 日志场景:高吞吐写入选择MergeTree,小数据量测试用TinyLog

相关文章:

ClickHouse简介

OLAP与ClickHouse的定位 OLAP的核心概念 OLTP:服务于高并发、低延迟的短事务操作(如银行转账、订单支付),强调数据的增删改查(CRUD)和事务一致性(ACID)。 OLAP:专注于大…...

强制重装及验证onnxruntime-gpu是否正确工作

#工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后,无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…...

分布自定义shell脚本(详写)附带全代码

涉及知识全排列 常见指令 小知识点 操作系统 什么是进程 进程控制 步骤 1:项目准备 在开始编写代码之前,你需要创建一个新的项目文件夹,并在其中创建一个 .cpp 文件,例如 my_shell.cpp。同时,确保你已经安装了 C…...

windows拷贝文件脚本

1、新建脚本文件xxx.bat,名字任意,后缀未.bat即可,将以下内容拷贝进去,修改src和des为自己文件的目录即可。 echo off :: 设置字符集为UTF-8,命令窗口能正确显示中文字符。 chcp 65001 rem 读取当前目录并进入当前目…...

Arduino编译和烧录STM32——基于J-link SWD模式

一、安装Stm32 Arduino支持 在arduino中添加stm32的开发板地址:https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json 安装stm32开发板支持 二、安装STM32CubeProgrammer 从stm32网站中安装:https://ww…...

Java表达式2.0

1 .数据类型转换 自动类型转换的规则 自动类型转换遵循一定的规则,这些规则确保了转换的合理性和安全性。以下是自动类型转换的主要规则: 容量小的类型自动转换为容量大的类型 Java中,数据类型的容量从小到大依次为:byte → shor…...

【概率论,算法】排列的峰值期望

Surtr1 的珂学难题 题目链接:https://ac.nowcoder.com/acm/contest/107965/E 给定一个长度为 n n n 的排列 p p p,排列中任一位置如果满足以下条件,则称该位置为 峰值: 位置 1:若存在元素,满足 p [ 1 ] > p […...

清理C盘组合拳:最高释放空间80GB+

分享一套系统化的C盘清理方案,涵盖从基础清理到深度优化的8个关键步骤,结合安全性与效率,可快速释放5-50GB空间: 一、精准定位空间占用源(必备工具) 空间可视化分析 使用 TreeSize Free 或 WizTree 扫描C…...

容器中的对象切片问题

C 容器(如 std::vector、std::list 等) 通常存储对象的副本,而非指向对象的指针。因此,当与继承结合使用时,可能导致 切片(Object Slicing) 问题,即仅存储基类部分,丢失派…...

SpringBoot编写单元测试

pom.xml引入单元测试的坐标 <!--单元测试坐标--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>编写单元测试类 测试类…...

二、在springboot 中使用 AIService

在上一篇文章中&#xff0c;我们介绍了如何使用langchain4j实现简单的问答功能&#xff0c;本篇文章我们将介绍如何在springboot中使用AIService。 1.实现原理 先看下AiService注解所在的依赖langchain4j-spring-boot-starter中包含什么内容&#xff1a; 1.1 event.AiServi…...

拼多多面经,暑期实习Java一面

项目中的设计模式 mysql连接过程&#xff0c;索引&#xff0c;分库分表场景&#xff0c;路由策略 redis使用场景&#xff0c;分片集群怎么搭建与路由&#xff0c;数据一致性 分布式锁怎么用的&#xff0c;具体使用参数 线程池怎么用的&#xff0c;过程 sql having 分布式事务 如…...

Function calling LLMs 的 MCP:AI开发的双剑合璧

🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创AI未来! 🚀 在 MCPs 成为主流(或者像现在这样火得一塌糊涂)之前,大多数 AI …...

数字系统与编码

1. 数字系统&#xff08;Number Systems&#xff09; 1.1 常见数字系统 系统基数符号集示例应用场景二进制20, 11010计算机底层电路、数据存储八进制80-717Unix文件权限&#xff08;如chmod 755&#xff09;十进制100-942日常计算十六进制160-9, A-F0x1F内存地址、颜色编码&a…...

Pytorch实战

1、安装 安装 conda, Python工具大全&#xff0c;方便管理多个 Python 环境&#xff0c;必须选择跟自己环境配套的版本。 https://www.anaconda.com 网速慢的&#xff0c;可以参考国内源&#xff0c;也可以去这里看看&#xff1a; torch PyPI Index of /anaconda/miniconda…...

如何高效利用呼叫中心系统和AI语音机器人

要更好地使用呼叫中心系统和语音机器人&#xff0c;需要结合两者的优势&#xff0c;实现自动化、智能化、高效率的客户服务与业务运营。以下是优化策略和具体实践方法&#xff1a; 一、呼叫中心系统优化 1. 智能路由与IVR优化 智能ACD&#xff08;自动呼叫分配&#xff09; …...

LeetCode[232]用栈实现队列

思路&#xff1a; 一道很简单的题&#xff0c;就是栈是先进后出&#xff0c;队列是先进先出&#xff0c;用两个栈底相互对着&#xff0c;这样一个队列就产生了&#xff0c;右栈为空的情况&#xff0c;左栈栈底就是队首元素&#xff0c;所以我们需要将左栈全部压入右栈&#xff…...

using用法整理

using 的极简新手教程&#xff0c;用最直白的语言和代码解释&#xff1a; 美图美图 一、核心作用&#xff1a;给类型起别名 目的&#xff1a;让复杂类型名变短、变好记。 例子&#xff1a; // 原名&#xff1a;std::vector<std::string> // 起个别名就叫 StringList…...

《猎豹夕阳》

年少时很喜欢的一篇文章&#xff0c;曾和挚友一遍又一遍的记诵&#xff0c;今天又偶然遇到他&#xff0c;转载如下&#xff1a; 我第一次见到它&#xff0c;是在风雪的夜里。我不会抱怨这种天气&#xff0c;因为我是个优秀的登山探险者&#xff0c;我必须在这种天气下工作。我…...

【AI训练环境搭建】在Windows11上搭建WSL2+Ubuntu22.04+Tensorflow+GPU机器学习训练环境

一、安装Ubuntu 拿到该文件Ubuntu-22.04.tar 通过wsl导入该虚拟机镜像&#xff0c;然后查看wsl虚拟机列表。 wsl --import Ubuntu-22.04-tensorflow D:\wsl-data\Ubuntu-22.04-tensorflow D:\wsl-data\temp\Ubuntu-22.04.tarwsl -l 进入虚拟机 wsl -d Ubuntu-22.04-tensorfl…...

如何轻松实现用户充值系统的API自动化测试

在现代软件开发中&#xff0c;API&#xff08;应用程序编程接口&#xff09;作为连接不同系统和模块的关键组件&#xff0c;其重要性日益凸显。随着软件应用的互联性不断增强&#xff0c;API的数量和复杂度也在不断增加。传统的API测试方法面临着诸多挑战&#xff1a; 1.手动测…...

Python 一等函数( 高阶函数)

高阶函数 接受函数为参数&#xff0c;或者把函数作为结果返回的函数是高阶函数&#xff08;higherorder function&#xff09;。map 函数就是一例&#xff0c;如示例 5-2 所示。此外&#xff0c;内置函 数 sorted 也是&#xff1a;可选的 key 参数用于提供一个函数&#xff0c…...

用于手部康复设备的TinyML语音分类嵌入式人工智能模块

论文标题 英文标题&#xff1a;TinyML Speech Classification Embedded AI Module for Hand Rehabilitation Device 中文标题&#xff1a;用于手部康复设备的 TinyML 语音分类嵌入式人工智能模块 作者信息 Arkorn Numsomran&#xff1a;Triam Udom Suksa Pattanakarn Suvarna…...

【HarmonyOS 5】VisionKit人脸活体检测详解

【HarmonyOS 5】VisionKit人脸活体检测详解 一、VisionKit人脸活体检测是什么&#xff1f; VisionKit是HamronyOS提供的场景化视觉服务工具包。 华为将常见的解决方案&#xff0c;通常需要三方应用使用SDK进行集成。华为以Kit的形式集成在HarmoyOS系统中&#xff0c;方便三方…...

Linux操作系统--进程的创建和终止

目录 1.进程创建 1.1fork()函数初识 1.2写时拷贝 1. 提升系统效率 2. 隔离错误影响 3. 支持并行计算 2.进程终止&#xff1a; 2.1进程退出场景&#xff1a; 2.2进程常见退出方法&#xff1a; 2.3_exit()系统调用接口 2.4exit函数 2.5return退出 1.进程创建 1.1for…...

算法分析传输加密数据格式密文存储代码混淆逆向保护

代码混淆 一.基本概念java的bytecode很容易通过JAD等反编译工具还原出源代码。这样势必不满足安全的定义。如何一定程度上保护需要防止被反编译的源代码呢&#xff1f;混淆&#xff08;obfuscate&#xff09;技术注意&#xff1a;用obfuscate防盗版是根本不可能&#xff0c;连汇…...

从事计算机视觉需要掌握哪些知识

目录 基础数学知识 计算机科学基础 传统计算机视觉知识 机器学习与深度学习知识 其他知识 计算机视觉是一门让计算机从图像或视频中获取有意义信息的跨学科领域&#xff0c;从事该领域需要掌握多方面的知识&#xff0c;以下详细介绍&#xff1a; 基础数学知识 线性代数 &…...

Android Studio 中 Drawable 详细全解

文章目录 一、Drawable 概述二、Drawable 类型详解1. 位图 Drawable (BitmapDrawable)2. 矢量 Drawable (VectorDrawable)3. 形状 Drawable (ShapeDrawable)4. 图层 Drawable (LayerDrawable)5. 状态列表 Drawable (StateListDrawable)6. 级别列表 Drawable (LevelListDrawable…...

【实战中提升自己】内网安全部署之端口隔离与MAC地址认证

1 1拓扑 「模拟器、工具合集」复制整段内容 链接&#xff1a;https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil 1 端口隔离技术部署 [boss]port-group 1 [boss-port-group-1]port-isolate enable 说明&#xff1a;这里有几个地方不需要部署…...

Linux 420 find stat touch tree scp crontab

准备安装CentOSstream https://blog.csdn.net/s_alted/article/details/117739735 官网 CentOS 9 “Couldn’t open file /mnt/repodata/repomd.xml” deepseek 下载成功 树状 另一台虚拟机...

基于 Vue3 + ECharts + GeoJson 实现区域地图钻取功能详解

文章目录 前言一、实现步骤1. 项目初始化2. 准备GeoJson数据3. 创建地图组件4. 创建主页面组件5. 使用组件 二、功能亮点三、性能优化建议四、常见问题解决五、结语六、实战demo七、资源下载 前言 在数据可视化领域&#xff0c;地图展示是一种非常直观的表现形式。而地图钻取&…...

算法题(129):二维前缀和

审题&#xff1a; 本题需要我们将q组矩阵的和打印出来 思路&#xff1a; 方法一&#xff1a;二维前缀和 由于本题使用暴力的模拟方法运行次数高达1e11&#xff0c;会超时&#xff0c;所以我们采用运行次数在1e6的二维前缀和来解题 第一步&#xff1a;前缀和的求法 x i&#xf…...

NEAT 算法解决 Lunar Lander 问题:从理论到实践

NEAT 算法解决 Lunar Lander 问题:从理论到实践 0. 前言1. 定义环境2. 配置 NEAT3. 解决 Lunar lander 问题小结系列链接0. 前言 在使用 NEAT 解决强化学习问题一节所用的方法只适用于较简单的强化学习 (reinforcement learning, RL) 环境。在更复杂的环境中使用同样的进化解…...

Arduino示例代码讲解:Project 07 - Keyboard 键盘

Arduino示例代码讲解:Project 07 - Keyboard 键盘 Project 07 - Keyboard 键盘程序功能概述功能:硬件要求:输出:代码结构全局变量`setup()` 函数`loop()` 函数读取电位器值:打印电位器值:播放音调:运行过程注意事项Project 07 - Keyboard 键盘 /*Arduino Starter Kit e…...

4.凸包-Graham Scan

Graham Scan:Algorithm Preprocessing 根据角度进行排序 Graham Scan 例子 例2 Graham Scan:Correctness Left Turn/right Trun 下一个点出现的两种情况&#xff1a;非蓝即绿 Presorting 预排序很重要&#xff1a;否则所有的点都会满足 to-left-test BackTracks算法复杂度 …...

系统架构师2025年论文《论SOA技术的应用》

摘要&#xff1a; 本人于XXXX年XX月参加某市医院《预约挂号系统》的开发工作&#xff0c;在该项目中主要担任系统架构师&#xff0c;主要负责该系统架构和网络安全体系架构设计。经过多年的医院信息化建设&#xff0c;某市医院已经建立了一些应用系统&#xff0c;但是&#xf…...

React+TS编写轮播图

当前轮播图存在部分问题&#xff0c;一次循环结束&#xff0c;进入下一次需要点击两次&#xff08;所以动画效果上点击第二次才出现&#xff09; 轮播图&#xff1a;实现无限循环轮播图的关键在于"视觉欺骗"——我们在实际数据的前后各添加部分数据副本&#xff0c;当…...

山东大学创新项目实训开发日志(19)之前端知识深度学习

今天晚上在队长的带领下学习了一下前端vue的基础知识 reactive和ref函数 refreactive数据类型原始数据、对象对象操作js中需要添加.value&#xff0c;tamplate中则不用都不用添加.value computed和watch computed 写法 <script setup>const Factorial computed(() &g…...

【C++详解】C++入门(一)

文章目录 一、命名空间命名空间的基本特性命名空间的使用 二、C输入输出用法三、缺省参数(默认参数)定义用法 四、函数重载 一、命名空间 命名空间的基本特性 #include <stdio.h> #include <stdlib.h>int rand 10;int main() {// 编译报错&#xff1a;error C23…...

MAC-从es中抽取数据存入表中怎么实现

使用 Java 从 Elasticsearch 抽取数据并存入数据库表的完整实现方案: 1. Maven 依赖配置 <dependencies><!-- Elasticsearch --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-c…...

Android串口通信

最近因为需要在Android平台进行电子秤的开发&#xff0c;首先第一步就是需要解决Android串口通信获取电子秤的称重信息。 google官方给我们提供了现成的解决方案&#xff0c;里面有编译好的apk文件还有源代码可以直接参考使用。地址&#xff1a;http://code.google.com/p/andr…...

QT常见输入类控件及其属性

Line Edit QLineEdit用来表示单行输入框&#xff0c;可以输入一段文本&#xff0c;但是不能换行 核心属性&#xff1a; 核心信号 信号 说明 void cursorPositionChanged(int old,int new) 当鼠标移动时发出此型号&#xff0c;old为先前位置&#xff0c;new为新位置 void …...

RAG 与 MCP 如何以不同方式解决大模型的局限性

Claude 和 GPT-4o 等大型语言模型 (LLM) 功能强大&#xff0c;但也面临两个主要限制&#xff1a;它们包含的知识是时效性的&#xff08;更具体地说&#xff0c;是在训练时点固定的&#xff09;&#xff0c;并且决定它们一次可以处理多少信息的上下文窗口是有限的。 检索增强生…...

[Windows]_[VS2017]_[如何进行远程调试程序]

场景 在开发Windows程序时&#xff0c;有时候在测试机上测试出异常操作的情况&#xff0c;在开发机上就是出现不了。还比如在测试机上能测试到崩溃的情况&#xff0c;在开发机上也是重现不了&#xff0c;怎么办&#xff1f; 说明 这种情况可能是测试机上的系统版本&#xff0…...

Retinex系列图像/视频增强算法介绍

Retinex 系列原理基础 一、核心原理与理论 Retinex算法基于人类视觉系统特性,认为观测到的图像由光照分量(L)与反射分量( R )乘积构成,即: S ( x , y ) = L ( x , y...

游戏引擎学习第237天:使用 OpenGL 显示图像

win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我们正在处理一个新的开发阶段&#xff0c;目标是在使用 OpenGL 渲染的同时能正常通过 OBS 进行直播。昨天我们已经尝试了一整天来解决这个问题&#xff0c;希望能找到一种方式让 OBS 能正确地捕捉到 OpenGL 的窗口画面。虽然我们不确定…...

【C++基本算法】背包问题——完全背包

7. 背包问题——完全背包 文章目录 7. 背包问题——完全背包【模板】完全背包零钱兑换零钱兑换∥完全平方数问题解决注意事项 【模板】完全背包 题目链接&#xff1a; 【模板】完全背包 要点&#xff1a; 完全背包核心逻辑&#xff1a;物品无限次选择&#xff0c;状态转移方…...

Spring 01

今天是2025/0420 19:44 day 21 总路线请移步主页Java大纲相关文章 今天进行Spring 1,2,3 个模块的归纳 最近在忙毕设&#xff0c;更新有点慢&#xff0c;见谅 首先是Spring 的相关内容概括的思维导图 一、核心概念详解 1. IoC容器 1.1 工作原理 // 典型使用示例 Applica…...

小迪第10天http/s数据包

HTTP数据包 浏览器请求&请求头&响应头 浏览器访问流程 请求:用户–>web服务器 (Request) 响应:web服务器–> 用户(Response) 加代理后 请求:用户–>代理–>web服务器 (Request) 响应:web服务器–>代理–> 用户(Response) http GET请求头 http post…...

网络设备基础运维全攻略:华为/思科核心操作与巡检指南

一、设备登录与基础操作体系 1. 安全登录策略与环境准备 &#xff08;1&#xff09;登录方式深度解析 协议华为/H3C命令思科命令安全性应用场景Telnettelnet 192.168.1.1telnet 192.168.1.1明文传输本地测试&#xff08;禁止公网使用&#xff09;SSHssh -l admin 192.168.1.…...