mongodb和clickhouse比较
好问题——MongoDB 也能处理这种高写入 + 定期删除的时间序列场景,尤其从 MongoDB 5.0 开始支持了专门的 Time Series Collections(时间序列集合),对你的需求其实挺对口的。
不过它有些优点和局限,需要具体分析下你场景适不适合 MongoDB👇
✅ MongoDB 的优势(用于时间序列 + 定时删除)
1. Time Series Collections(专门为你这种场景设计)
MongoDB 5.0 起提供 timeSeries
集合,优化了时间戳字段的数据存储、压缩和查询速度。
db.createCollection("stream_rate_log_ext", {timeseries: {timeField: "time",metaField: "meta", // 可选,放 device_id 等分类字段granularity: "seconds" // 可以是 seconds / minutes / hours},expireAfterSeconds: 7200 // 2小时自动删除,等价于 TTL
})
✅ 就这一个设置,你就实现了:高速写入 + 自动删除 2 小时前的数据
2. 支持高并发写入
- MongoDB 写性能不错,特别是文档结构简单、没有复杂事务时;
- 适合水平扩展(使用 Sharding 时写入可以分散到多个节点);
- Oplog 和 WiredTiger 存储引擎支持高并发写入。
3. 自动 TTL(Time-To-Live)支持
- MongoDB 原生支持 TTL 索引;
- 在 time-series collection 中,
expireAfterSeconds
自动对时间字段进行定期清理; - 不需要你手动写
DELETE
脚本。
4. 适合灵活文档结构
如果你的数据结构不是固定字段(比如有时多一些附加字段),MongoDB 比 SQL 更宽容。
⚠️ MongoDB 的限制点(可能的瓶颈)
1. 单节点写入性能瓶颈
- 每秒 5~10 万写入没问题,但如果是每小时千万(≈每秒 3,000+),单节点压力会变大;
- 可以通过 Sharding + Bulk insert 缓解,但运维复杂度会上升。
2. 聚合性能不如 ClickHouse
- MongoDB 适合简单聚合(按小时、天统计),但如果要做大范围扫描、JOIN、窗口函数等复杂分析,性能会逊色。
3. 存储成本偏高
- MongoDB 写入压缩比和 ClickHouse 等专门分析型数据库相比低;
- 数据量大时磁盘成本较高,尤其没有很好归档压缩策略。
✅ 适合用 MongoDB 的场景:
适配程度 | 场景 |
---|---|
✅✅✅✅ | 中高频写入(每秒几千到几万)+ 自动删除 + 简单查询 |
✅✅✅ | 日志、指标、事件记录,字段结构不固定 |
✅✅ | 高频复杂聚合分析或长周期 OLAP 场景(不太适合) |
🔚 总结:MongoDB 是否适合你?
特性 | 表现 |
---|---|
写入能力 | ✅ 高(适中写入量即可) |
自动删除 | ✅✅✅✅ 超强(TTL) |
查询性能 | ✅(适合时间范围 + 聚合) |
压缩效率 | 一般(不如 ClickHouse) |
运维复杂度 | 中(Sharding + Index 要规划好) |
👉 如果你写入量不是疯狂极限(比如每秒几万~十几万以内)且主要是查询近几小时数据,MongoDB 是非常合适的,而且开发和运维门槛比 ClickHouse/Druid 更低。
你这个补充信息非常关键!——你不依赖 TTL 自动清理,而是“备份完成后主动删除”,这会直接影响 MongoDB 和 ClickHouse 的适配性比较。
下面我详细对比一下,从你现在的需求出发:
✅ 场景核心需求(更新后)
特性 | 描述 |
---|---|
写入量 | 每小时千万级插入(约 3K/s 或更高) |
删除方式 | 主动批量删除 2 小时前数据(非 TTL) |
查询模式 | 最近时间段内的数据(假设分析/查询为主) |
存储管理 | 数据先备份后手动清理 |
数据更新 | 插入为主,不更新、少更新 |
🥊 MongoDB vs ClickHouse 对比(基于你新的需求)
特性 | MongoDB | ClickHouse |
---|---|---|
写入性能 | ✅ 高(单机10w+/秒并发写入可通过优化实现) | ✅✅✅ 极高(默认优化为批量列式写) |
主动删除效率 | ❌ 差(delete 旧数据代价高,容易碎片) | ✅✅✅ 强(MergeTree + 分区设计,直接 DROP 快如闪电) |
存储压缩 | 一般 | 🔥 极强(比 MongoDB 节省 3~10 倍空间) |
查询性能 | ✅ 中高 | 🔥🔥 超高(特别是范围查询 / 聚合分析) |
支持复杂分析 | 一般(聚合支持,但不是强项) | ✅✅✅ 非常强(适合时序聚合、分析) |
易用性 | ✅ 高(灵活结构、开发快) | 中(写入/查询接口偏分析型,需习惯) |
更新/事务 | ✅ 好(支持事务/更新) | ❌ 差(不适合 UPDATE,偏写一次读多次) |
删除粒度 | 行级删除(慢) | 分区/批量删除(非常快) |
✅ MongoDB 的删除问题(关键点)
MongoDB 删除不是立即物理清理数据,而是标记删除,碎片回收靠后台 compaction。如果你每小时手动批量删几百万行:
- 会 阻塞 IO / 引发写入抖动
- 删除后空间不会立即释放,表膨胀问题明显
- 后期需要执行
compact
或手动重建集合来回收空间
除非你真的很在意文档灵活性或用 MongoDB 已有集群,不然大规模定时删除场景它不是最佳选项。
✅ ClickHouse 的主动删除(非常适合你)
ClickHouse 设计了一整套机制用于“高效地清理大批数据”:
-
分区删除(推荐):你可以按小时/day 分区建表,比如
PARTITION BY toYYYYMMDDhh(time)
,然后直接:ALTER TABLE stream_rate_log_ext DROP PARTITION '2025040812';
🚀 删除整个小时数据,一瞬间完成,释放空间无负担。
-
条件删除(谨慎):
ALTER TABLE stream_rate_log_ext DELETE WHERE time < now() - INTERVAL 2 HOUR;
虽然也能做条件删除,但仍推荐用 分区 + DROP PARTITION,性能和存储管理极佳。
🧠 总结:主动删除场景谁更适合?
结论 | 推荐数据库 |
---|---|
如果你需要 超高写入性能 + 快速批量删除历史数据 + 数据压缩比高 + 偏分析场景 | ✅✅✅ ClickHouse(非常适合) |
如果你更看重灵活字段结构、事务、多种业务混合,删除不频繁或数据量没那么大 | ✅ MongoDB(适合轻量场景) |
🎯 推荐你选用:
✅ ClickHouse:你是“高频写入 + 定时备份后主动清理”的典型 use case,ClickHouse 的 MergeTree + 分区 DROP 完美适配,MongoDB 会在删除方面吃力。
是的,ClickHouse 在存储数据时默认就会进行列式压缩,这是它高性能和低存储占用的核心优势之一。
✅ ClickHouse 压缩机制简介
📦 数据压缩特点:
-
列式存储 + 列式压缩
- 每一列单独压缩,压缩效果比传统行式存储好很多;
- 同一列通常数据类型一致(例如很多重复值或相近数字),压缩率极高。
-
压缩算法(默认)
- 默认使用 LZ4:快速压缩/解压,适合在线高并发读写。
- 支持更高压缩率的算法如 ZSTD(zstd(1~22)),你可以手动配置:
SET compression = 'zstd';
-
分块 + 分区存储
- 数据写入以 block 为单位,块级压缩,存储和解压都非常高效;
- 压缩粒度大,进一步提高压缩比。
📊 ClickHouse 实测压缩率(vs ZIP)
下面是一些实际场景中的压缩效果:
数据类型 | 原始数据 | ClickHouse(默认 LZ4) | ZIP (大约) | ZSTD(可选) |
---|---|---|---|---|
日志类数据(文本重复多) | 10 GB | 1.5~2.5 GB (压缩率约 75~85%) | 2~3 GB | <1.5 GB(更优) |
数值指标(比如监控数据) | 10 GB | 500 MB~2 GB | 3~5 GB | 更小 |
混合结构(JSON-like) | 10 GB | 3~5 GB | 5~6 GB | 略优于 ZIP |
✅ 总体上 ClickHouse 的压缩率可达 3~10 倍(即 70%~90% 节省空间),比 ZIP 整体还要更高,而且它是原生实时压缩存储,查询不需要提前解压,非常高效。
💬 举个例子:
假如你每小时写入 1 千万条记录,每条记录 300 字节:
- 原始数据体积 ≈ 3 GB/h
- 存入 ClickHouse 后:压缩后可能只有 300~600 MB/h
- 一天数据量:72 GB(原始) ➜ 约 7~15 GB(压缩后)
⚙️ 想进一步压缩?可选优化方式:
-
改用更强压缩算法(zstd)
SET compression = 'zstd';
-
使用更精简的数据类型(比如 UInt8/DateTime32 代替更长类型)
-
合并引擎参数(
index_granularity
、merge_max_size
)调优块大小,有利压缩
🧠 总结
项目 | ClickHouse |
---|---|
是否压缩 | ✅ 默认开启,列级压缩 |
默认压缩算法 | LZ4(快速) |
最大压缩率 | 3~10 倍,远优于 ZIP,解压也更快 |
更高压缩选项 | 支持 ZSTD,自定义压缩级别 |
是否推荐 | ✅✅✅ 非常适合大数据存储场景 |
相关文章:
mongodb和clickhouse比较
好问题——MongoDB 也能处理这种高写入 定期删除的时间序列场景,尤其从 MongoDB 5.0 开始支持了专门的 Time Series Collections(时间序列集合),对你的需求其实挺对口的。 不过它有些优点和局限,需要具体分析下你场景…...
C#容器源码分析 --- List
List是一个非常常用的泛型集合类,它位于 System.Collections.Generic 命名空间下,本质上是一个动态数组,它提供了一系列方便的方法来管理和操作元素,例如添加、删除、查找等。与传统的数组相比,List可以根据需要动态调…...
以太坊区块大小的决定因素:深入解析区块 Gas 限制及其影响
以太坊(Ethereum)作为全球领先的区块链平台,其区块大小并非固定的物理尺寸,而是由区块 Gas 限制(Block Gas Limit)所决定。理解区块 Gas 限制及其影响因素,对于深入掌握以太坊网络的运行机制至…...
利用DeepFlow解决APISIX故障诊断中的方向偏差问题
概要:随着APISIX作为IT应用系统入口的普及,其故障定位能力的不足导致了在业务故障诊断中,APISIX常常成为首要的“嫌疑对象”。这不仅导致了“兴师动众”式的资源投入,还可能使诊断方向“背道而驰”,从而导致业务故障“…...
智慧养老实训基地建设方案:如何以科技赋能养老实操培训
在人口老龄化加剧的当下,智慧养老产业蓬勃发展,对专业技能型人才的需求愈发迫切。智慧养老实训基地建设意义非凡,它为培育具备实操能力与创新思维的养老人才搭建关键平台,有助于填补行业人才缺口,推动养老服务从传统模…...
基于AI的Web应用防火墙(AppWall)实战:漏洞拦截与威胁情报集成
摘要:针对Web应用面临的OWASP、CVE等漏洞攻击,本文结合群联AI云防护系统的AppWall模块,详解AI规则双引擎的防御原理,并提供漏洞拦截配置与威胁情报集成代码示例。 一、Web应用安全挑战与AppWall优势 传统WAF依赖规则库更新滞后&a…...
什么是采购管理?如何做好采购管理的持续优化?
你是不是也遇到过这种情况: 公司采购部刚换了新供应商,结果原材料质量忽高忽低,生产线上三天两头出状况;行政采购的办公用品,月初买回来月底就堆在仓库吃灰;财务部天天追着问采购成本怎么又超支了... 这些…...
Unity 设置弹窗Tips位置
根据鼠标位于屏幕的区域,设置弹窗锚点以及位置 public static void TipsPos(Transform tf) {//获取ui相机var uiCamera GetUICamera();var popup tf.GetComponent<RectTransform>();//获取鼠标位置Vector2 mousePos Input.mousePosition;float screenWidt…...
区块链知识点5-Solidity编程基础
1. 全局变量名 具体描述 msg.sender 返回当前调用函数的调用者的地址 msg.value 当前消息所附带的以太币,单位为wei 2.变量的用法 默认存储位置修饰符 函数的返回值 memory 函数内部的局…...
OLAP与OLTP架构设计原理对比
OLAP与OLTP架构设计原理对比 一、核心区别 维度OLTPOLAP设计目标支持高并发、低延迟的事务操作(增删改查)支持复杂分析查询(聚合、多维度统计)数据模型规范化模型(3NF),减少冗余维度模型&…...
ubuntu20.04在mid360部署direct_lidar_odometry(DLO)
editor:1034Robotics-yy time:2025.4.10 1.下载DLO,mid360需要的一些...: 1.1 在工作空间/src下 下载DLO: git clone https://github.com/vectr-ucla/direct_lidar_odometry 1.2 在工作空间/src下 下载livox_ros_driver2&…...
检索增强生成(RAG)架构深度解析:突破大模型边界的工程实践
一、RAG技术架构设计哲学 1.1 范式演进:从静态模型到动态知识系统 graph LR A[传统LLM架构] -->|问题| B[依赖预训练参数] B --> C[知识固化风险] C --> D[领域适配困难]A -->|解决方案| E[RAG增强架构] E --> F[实时知识检索] F --> G[动态上下…...
线代第四课:行列式的性质
行列式性质 转置行列式 把行列式的第一行转置成第一列,使用表示 如果在转置一下: 性质一: 行列地位相同,对行性质,对列性质 性质二: 交换D的两行(列),D值变符号 性…...
【语音识别】vLLM 部署 Whisper 语音识别模型指南
目录 1. 模型下载 2. 环境安装 3. 部署脚本 4. 服务测试 语音识别技术在现代人工智能应用中扮演着重要角色,OpenAI开源的Whisper模型以其出色的识别准确率和多语言支持能力成为当前最先进的语音识别解决方案之一。本文将详细介绍如何使用vLLM(一个高…...
Python | kelvin波的水平空间结构
写在前面 简单记录一下之前想画的一个图: 思路 整体比较简单,两个子图,本质上就是一个带有投影,一个不带投影,通常用在EOF的空间模态和时间序列的绘制中,可以看看之前的几个详细的画法。 Python | El Ni…...
什么叫行列式
《行列式:数学中的重要概念及其应用》 行列式是数学中的一个重要概念,主要用于描述线性方程组、向量空间等方面的性质。以下是关于它的详细介绍: 定义 行列式是由排成正方形的一组数(称为元素)按照特定的规则计算得…...
构建高可用大数据平台:Hadoop与Spark分布式集群搭建指南
想象一下,你手握海量数据,却因为测试环境不稳定,频频遭遇宕机和数据丢失的噩梦。Hadoop和Spark作为大数据处理的“黄金搭档”,如何在分布式高可用(HA)环境下稳如磐石地运行?答案就在于一个精心构…...
[leetcode]211. 添加与搜索单词(Trie+DFS)
题目链接 题意 实现词典类 WordDictionary : WordDictionary() 初始化词典对象void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true ;否则…...
AI | 字节跳动 AI 中文IDE编辑器 Trae 初体验
Trae 简介与安装 🔦 什么是 Trae Trae 是大厂字节跳动出品的国内首个 AI IDE,深度理解中文开发场景。AI 高度集成于 IDE 环境之中,为你带来比 AI 插件更加流畅、准确、优质的开发体验。说是能够不用写代码,全靠一张嘴跟 AI 聊天…...
【开发经验】结合实际问题解决详述HTTPS通信过程
最近的开发调试过程中涉及到了HTTPS发送与接收,遇到实际问题才发现对这部分尚属于一知半解。结合实际问题的解决过程来详细整理以下HTTPS通信过程。 需要调试的功能为BMC作为客户端向搭建好的Web服务器发送HTTPS请求,Web服务器负责接收处理发送过来的HT…...
灵霄破茧:仙途启幕 - 灵霄门新篇-(4)
重建之路,风云再起 灵霄门内一片萧瑟,残垣断壁间弥漫着悲伤与凝重。弟子们忙碌地清理着战场,救治伤员,每个人的脸上都带着劫后余生的疲惫。陈霄日夜守在玄风真人的榻前,眼中满是自责与担忧。玄风真人的伤势极重&#…...
微信小程序事件绑定基本语法
微信小程序使用 bind 或 catch 前缀绑定事件,语法如下: <组件 bind事件名"处理函数" catch事件名"处理函数"></组件> bind:事件绑定,允许事件冒泡(向父组件传递)。 catc…...
vscode 连不上 Ubuntu 18 server 的解决方案
下载 vscode 历史版本 18.5(windows请装在 系统盘 C 盘) 打开 vdcode,将 自动更新 设置为 None (很关键,否则容易前功尽弃) 重命名(删除) 服务器上的 .vscode-server 文件夹 重新…...
OSPF接口的网络类型和不规则区域
网络类型(数据链路层所使用的协议所构建的二层网络类型) 1、MA --- 多点接入网络 BMA --- 支持广播的多点接入网络 NBMA --- 不支持广播的多点接入网络 2、P2P --- 点到点网络 以太网 --- 以太网最主要的特点是需要基于MAC地址进行物理寻址,主要是因为以太网接口所连…...
基于Flask的勒索病毒应急响应平台架构设计与实践
基于Flask的勒索病毒应急响应平台架构设计与实践 序言:安全工程师的防御视角 作为从业十年的网络安全工程师,我深刻理解勒索病毒防御的黄金时间法则——应急响应速度每提升1分钟,数据恢复成功率将提高17%。本文介绍的应急响应平台ÿ…...
0410 | 软考高项笔记:项目管理概述
以下是不同组织结构中项目经理的角色、工作特点以及快速记忆的方法: 不同组织结构中项目经理的角色和工作特点 组织结构项目经理的角色工作特点职能型组织项目协调者、辅助管理者权力有限,主要负责协调部门间的工作,项目成员向部门经理汇报…...
基于 Qt 的图片处理工具开发(一):拖拽加载与基础图像处理功能实现
一、引言 在桌面应用开发中,图片处理工具的核心挑战在于用户交互的流畅性和异常处理的健壮性。本文以 Qt为框架,深度解析如何实现一个支持拖拽加载、亮度调节、角度旋转的图片处理工具。通过严谨的文件格式校验、分层的架构设计和用户友好的交互逻辑&am…...
2025年4月通信科技领域周报(3.31-4.06):6G技术加速落地与全连接生态构建
2025年4月通信科技领域周报(3.31-4.06):6G技术加速落地与全连接生态构建 目录 一、本周热点回顾二、技术进展深度解析三、产业动态全景扫描四、行业生态与政策风向五、专业术语解释六、免责声明 一、本周热点回顾 1. 华为发布6G全场景技术…...
Codeforces-CF816B-Karen and Coffee(差分/前缀和)
题目翻译: Karen 喜欢咖啡。 她有 n 本食谱,第 i 本食谱包含两个数 li,ri,表示这本食谱推荐用 [li,ri] 之间的温度(包含 li.ri)来煮咖啡。 Karen 认为一个温度 a 是可接受的当且仅当有 ≥k 本食谱推荐用 …...
4.DJI-PSDK云台x-port控制:
DJI-PSDK云台x-port控制: X-Port 功能控制,即控制 X-Port 云台,头文件为 dji_xport.h 使用PSDK 的“云台控制”功能,开发者需要先设计负载设备的云台并开发出控制云台的程序,将云台的控制函数注册到PSDK 指定的接口后…...
大语言模型中的幻觉现象深度解析
一、幻觉的定义及出现的原因 1. 基本定义 幻觉(Hallucination) 指大语言模型在自然语言处理过程中产生的与客观事实或既定输入相悖的响应,主要表现为信息失准与逻辑矛盾。 2. 幻觉类型与机制 2.1 事实性幻觉 定义:生成内容与可验证…...
衣橱管理助手系统(衣服推荐系统)(springboot+ssm+vue+mysql)含运行文档
衣橱管理助手系统(衣服推荐系统)(springbootssmvuemysql)含运行文档 该系统名为衣橱管理助手,是一个衣物搭配管理系统,主要功能包括衣物档案管理、衣物搭配推荐、搭配收藏以及套装智能推荐。用户可以通过系统进行衣物的搭配和收藏管理,系统提…...
视觉对象 - 数据可视化解读
Power BI 提供了丰富的视觉对象(Visuals),帮助用户以直观的方式呈现和分析数据。以下是 32 个常用视觉对象的解读及案例分享,涵盖核心功能、适用场景和注意事项。内容基于实际应用场景整理,便于快速理解。 一、数据比较类视觉对象 这类视觉对象主要用于比较不同类别、组别…...
使用物联网卡的烟感(NB-IoT/4G烟感)详解
基于物联网卡(NB-IoT/4G)的智能烟感是一种无线联网型火灾报警设备,相比传统烟感,它能够实时上报火警信息,适用于无人值守场所、智慧消防、远程监控等场景。 1. 物联网卡烟感的核心功能 功能说明实时报警探测到烟雾后&…...
(2)网络学习之堡垒机
堡垒机和防火墙的区别: 1.功能定位 防火墙主要负责抵御外部攻击,就像一道坚固的城墙,防止黑客进入内部网络。堡垒机则专注于内部管理,监控和记录运维人员的操作行为,确保内部网络的安全。 2.部署位置与作用范围 防…...
FlinkSQL的常用语言
FlinkSQL 常用语言指南 FlinkSQL 是 Apache Flink 提供的 SQL 接口,允许用户使用标准 SQL 或扩展的 SQL 语法来处理流式和批式数据。以下是 FlinkSQL 的常用语言元素和操作: 基本查询 -- 选择查询 SELECT * FROM table_name;-- 带条件的查询 SELECT c…...
Go语言编写一个进销存Web软件的demo
Go语言编写一个进销存Web软件的demo 用户现在要求用。之前他们已经讨论了用Django实现的方案,现在突然切换到Go,可能有几个原因。首先,用户可能对Go语言感兴趣,或者他们公司的技术栈转向了Go。其次,用户可能希望比较不…...
架构设计之Redisson分布式锁-可重入同步锁(一)
架构设计之Redisson分布式锁-可重入同步锁(一) Redisson分布式锁官方博客地址 1、Redisson是什么 Redisson 是一个基于 Redis 的 Java 分布式工具库,它提供了 分布式锁、集合、队列、缓存、Map、限流、任务调度 等高级数据结构和功能,极大地简化了 Ja…...
使用libcurl编写爬虫程序指南
用户想知道用Curl库编写的爬虫程序是什么样的。首先,我需要明确Curl本身是一个命令行工具和库,用于传输数据,支持多种协议。而用户提到的“Curl库”可能指的是libcurl,这是一个客户端URL传输库,可以用在C、C等编程语言…...
【数据结构】排序算法(下篇·终结)·解析数据难点
前引:归并排序作为一种高效排序方法,掌握起来还是有点困难的,何况需要先接受递归的熏陶,这正是编程的浪漫之处,我们不断探索出新的可能,如果给你一串数据让其变得有序?是选择简单的冒泡、插入排…...
Django 使用 Celery 完成异步任务或定时任务
1 介绍 Celery是一个分布式任务队列,由三个主要组件组成:Celery worker、Celery beat 和消息代理(例如 Redis 或 RabbitMQ)。这些组件一起协作,让开发者能够轻松地执行异步任务和定时任务。 Celery worker࿱…...
Excel 自动执行全局宏
Excel 自动执行全局宏 25.04.09 步骤 1:创建个人宏工作簿(Personal.xlsb) 生成Personal.xlsb (如尚未存在): 打开Excel → 开发工具 → 录制宏 → 选择“保存到个人宏工作簿” → 停止录制。按 Alt F11 进…...
【前缀和】矩阵区域和(medium)
矩阵区域和(medium) 题⽬描述:解法:代码Java 算法代码:C 算法代码: 题⽬描述: 题⽬链接:1314. 矩阵区域和 给你⼀个 m x n 的矩阵 mat 和⼀个整数 k ,请你返回⼀个矩阵 …...
Android ViewStub显示VISIBLE与消失GONE,Kotlin
Android ViewStub显示VISIBLE与消失GONE,Kotlin import android.os.Bundle import android.util.Log import android.view.View import android.view.ViewStub import android.widget.Button import androidx.appcompat.app.AppCompatActivity import androidx.trac…...
【愚公系列】《高效使用DeepSeek》063-海关数据获取和管理
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
探索 OSPF 协议:构建高效网络的基石
文章目录 目录 文章目录 前言 一.OSPF协议概述 二.OSPF相关概念 🕤 2.1 基本思想 🕤 2.2 SPF算法 🕤 2.3 区域划分编辑 三.OSPF工作原理 编辑 🕤 3.1 DR/BDR选举 四.OSPF网络类型 🕤4.1 BMA 🕤4.2 P2P …...
深入剖析C++单例模式的八种实现演进与工程实践
深入剖析C单例模式的八种实现演进与工程实践 一、从基础到工业级:单例模式的演进图谱 1.1 基础实现的致命缺陷分析 // 初级版(非线程安全) class NaiveSingleton { public:static NaiveSingleton* getInstance() {if (!instance) {instanc…...
手游防DDoS攻击SDK接入
在手游中集成防DDoS攻击SDK是抵御流量型和应用层攻击的核心手段之一。以下从SDK选型、接入流程、防护策略优化三个维度提供完整指南,并附关键代码示例: 一、SDK选型与核心能力对比 服务商优势劣势适用场景…...
【C++进阶】关联容器:multimap类型
目录 一、multimap 基础概念与底层实现 1.1 定义与核心特性 1.2 底层数据结构 1.3 类模板定义 1.4 与其他容器的对比 二、multimap 核心操作详解 2.1 定义与初始化 2.2 插入元素 2.3 查找元素 2.4 删除元素 2.5 遍历元素 三、性能分析与适用场景 3.1 时间复杂度分…...
学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.EffectComposer 后期…...