【KWDB 创作者计划】架构设计与AIoT场景实践
产品定位与核心价值主张
架构设计与技术实现
分布式架构设计
多模存储引擎实现
云边端协同机制
核心技术创新解析
就地计算技术
自适应时序引擎
混合事务处理
性能优化技术体系
高效存储机制
查询加速策略
资源管理与隔离
行业解决方案与典型应用
工业物联网平台
数字能源系统
智慧交通管理
社区运营现状
KWDB作为浪潮KaiwuDB推出的开源分布式多模数据库,凭借其创新的"就地计算"技术和云边端协同能力,已成为工业物联网和数字能源等场景的数据管理基座。本文将从技术架构、核心引擎、性能优化、行业落地等维度进行全面剖析,揭示其如何通过多模融合架构解决AIoT时代的数据管理挑战。
产品定位与核心价值主张
KWDB(KaiwuDB Community Edition)是浪潮KaiwuDB 2.0的社区版本,于2024年8月开源并于同年9月捐赠给开放原子开源基金会孵化
作为一款面向AIoT场景的分布式多模数据库,KWDB定位于解决工业物联网、数字能源、车联网等领域中的多源异构数据管理难题,其核心价值体现在三个维度:
技术架构层面,KWDB创新性地实现了"时序库+关系库"的统一实例管理,通过自适应时序引擎与事务处理引擎的协同,支持在同一实例中同时建立并融合处理时序数据和关系型数据,这种多模架构将传统需要"多库"部署的场景简化为"多模"部署,大幅降低了系统复杂度和运维成本。
性能指标层面,KWDB具备千万级设备接入、百万级数据秒级写入和亿级数据秒级读取的能力基准测试显示,其单机版可完成1秒20亿记录的数据探索,10秒完成500万记录15层下钻分析,而分布式版本通过"就地计算"专利技术实现百万点每秒的高性能读写。
经济效益层面,KWDB通过多种压缩算法可实现90%的存储空间节省,配合数据生命周期管理和分级存储策略,显著降低TCO。在山东某大型工业集团的实际应用中,帮助厂区设备故障率降低65%、利用率提升20%、加工效率提升20%,同时减少10%的投入成本。
从社区生态看,KWDB已成为中国开源数据库的代表性项目,截至2024年末已获得1300+ Gitee Star、1200+Fork,60+活跃贡献者,并入选"2024全球新势力项目OpenRank Top10",是当年唯一上榜的中国开源项目。
架构设计与技术实现
KWDB的整体架构体现了"分布式+多模+云边端协同"三位一体的设计哲学,通过分层解耦实现功能模块的高内聚低耦合。其架构演进从最初的集中式时序数据库发展为当前支持混合负载的分布式多模架构,反映了对AIoT场景需求的深刻理解。
分布式架构设计
KWDB采用典型的共享无状态计算层+分布式存储层架构,计算节点与存储节点分离,支持独立扩缩容。在存储层,数据通过一致性哈希算法进行分片,每个分片默认采用3副本机制确保高可用,并支持跨机房部署。
与传统的分布式数据库不同,KWDB创新性地实现了动态弹性伸缩能力,可在业务不中断的情况下完成节点增减,其核心在于:
- 数据再平衡算法:基于Raft协议实现数据迁移的原子性,迁移过程中自动处理"分裂键"边界冲突,确保查询一致性
- 资源隔离机制:通过cgroup和namespace实现CPU、内存的细粒度隔离,防止资源争抢导致的性能抖动
- 元数据分片:将全局元数据划分为多个分片,避免单点瓶颈,元数据变更通过两阶段提交保证ACID
网络层面采用多通道通信设计,区分控制流(如心跳检测、元数据同步)和数据流(如批量数据传输),并支持RDMA高速网络协议。实测表明,在10Gbps网络环境下,跨节点查询延迟可控制在50ms以内。
多模存储引擎实现
KWDB的核心创新在于其多模融合存储引擎,通过统一的SQL接口封装多种数据处理能力。存储引擎采用模块化设计,主要包括:
时序引擎:针对时间序列数据优化的列式存储结构,采用Delta-of-Delta压缩算法处理时间戳,Gorilla压缩算法处理浮点数值。每个时间线(Time Series)独立编码,支持按时间范围快速切片。引擎内置降采样功能,支持自动将原始数据聚合成不同精度的汇总数据。
事务引擎:基于MVCC实现的事务处理引擎,支持SSI(可串行化快照隔离)级别的事务隔离。通过**混合日志结构合并树(Hybrid LSM)**平衡读写性能,写密集型负载下仍能保持稳定的吞吐量。与纯时序引擎不同,事务引擎采用行存储格式,优化点查询和范围扫描。
分析引擎:向量化执行的列式分析引擎,支持SIMD指令加速聚合计算。通过"预测执行"机制提前启动可能需要的计算任务,利用冗余计算换取低延迟。引擎内置近似计算算法(如HyperLogLog、T-Digest),支持快速获取近似结果。
多模引擎的协同通过统一目录服务实现,系统自动根据SQL特征路由到最优引擎。例如,WHERE time > NOW() - INTERVAL '1 hour'
会优先使用时序引擎,而复杂JOIN操作则交由分析引擎处理
。这种自动路由机制使得开发者无需关心底层存储细节,简化了应用开发。
云边端协同机制
KWDB的云边端协同架构是其适应工业物联网场景的关键。在边缘侧,轻量级KWDB节点(约50MB内存占用)可部署在西门子工业边缘设备等资源受限环境中,实现以下功能:
- 本地预处理:通过SQL定义的流式窗口聚合,减少上传数据量
- 断网续传:采用WAL(预写日志)和本地队列保证数据完整性,网络恢复后自动同步
- 规则引擎:支持类Flink SQL的连续查询,实时检测异常条件
云端则提供全局数据视图,通过"时间对齐合并"算法解决边缘数据时钟漂移问题。KWDB的分布式协调服务基于改进的Paxos协议,优化了多地域部署下的共识效率,使跨区域事务延迟降低40%以上。
核心技术创新解析
KWDB的技术优势不仅体现在宏观架构上,更蕴含于多项突破性的核心技术设计中。这些创新使KWDB在AIoT场景的基准测试中展现出显著优于传统解决方案的性能表现。
就地计算技术
"就地计算(In-Situ Computing)"是KWDB的专利技术,其核心思想是将计算推近数据存储位置,避免不必要的数据移动。具体实现包括三个层面:
存储层计算:在数据文件内部嵌入轻量级计算逻辑,如直接在时序数据块上执行过滤、聚合操作。测试显示,对1亿条时序数据的avg/max/min聚合,就地计算比传统ETL后再计算快8倍。技术实现上,KWDB为每种运算定义了一套"计算描述符",序列化后与查询一起下推到存储节点。
设备端计算:在边缘网关层实现SQL语句的部分执行,如对工业传感器数据先做初步聚合再上传。某汽车工厂案例中,该技术使网络传输量减少76%。KWDB提供"计算下推规则"语法,允许开发者明确指定哪些计算应在边缘执行。
智能预计算:根据查询模式自动物化热点视图,如对频繁查询的1分钟粒度指标预先聚合。系统通过强化学习动态调整物化策略,在存储开销和查询加速间取得平衡。内部测试表明,该技术使典型监控查询的P99延迟从120ms降至15ms
自适应时序引擎
KWDB的时序引擎采用"自适应列组(Adaptive Column Group)"存储模型,根据数据特征动态调整编码方案:
- 对高基数时间线(如设备指标),采用独立编码压缩,每组时间线对应一个列存储文件
- 对低基数枚举值(如状态码),使用字典编码+位图索引组合
- 对稀疏指标,采用行程长度编码(RLE)减少存储占用
引擎内置自学习缓存机制,通过Query Feedback分析访问模式,智能预取可能需要的时序块。某能源集团部署显示,该技术使磁盘I/O减少60%。
针对工业场景常见的乱序数据,KWDB设计了"时间戳重排序缓冲区",在内存中对乱序数据按时间排序后再写入存储,避免了传统方案的查询性能下降。缓冲区大小可根据工作负载动态调整,默认配置下可处理5%以内的乱序数据。
混合事务处理
KWDB的混合事务模型同时支持短事务和长运行分析,关键技术包括:
乐观并发控制:对只读事务采用乐观并发控制,通过事务时间戳快照避免锁竞争。系统维护多个版本的数据快照,根据隔离级别需求提供相应的一致性视图。
分层锁管理:写事务采用分层锁协议,细分为表级、分区级、行级锁,支持意向锁提升并发度。死锁检测使用图搜索算法,每100ms扫描一次等待图。
分布式事务:基于改进的Saga模式,通过补偿事务保证最终一致性。关键优化包括并行提交子事务和异步日志持久化,使跨节点事务吞吐量达到15,000 TPS。
在山东某离散制造企业的TPC-C测试中,KWDB集群(3节点)达到82,000 TPM,同时运行分析查询对事务性能影响小于10%,验证了其混合负载处理能力。
性能优化技术体系
KWDB的性能优势不仅源于架构创新,更依靠一套完整的优化技术体系。从存储效率到查询加速,多层优化策略共同支撑了其卓越的运行时表现。
高效存储机制
KWDB的存储子系统采用多项创新技术实现空间节省和IO效率提升:
跨模压缩:针对多模数据特点设计的"Delta-Zip"压缩算法,对时序数据采用Delta编码,对关系表采用字典编码,再统一用ZSTD压缩。实测显示,该方案比单独压缩节省15%空间。压缩块大小动态调整,默认256KB平衡压缩率与随机访问效率。
分层存储:基于访问热度实现自动冷热分层。热数据保存在高速SSD,温数据在普通HDD,冷数据可归档到对象存储。系统通过访问计数器和时间衰减模型预测数据热度,准确率达85%以上。
智能索引:除传统的B+树索引外,KWDB支持:
- 布隆过滤器:快速判断数据不存在,减少不必要的IO
- 倒排索引:优化多维度过滤,如
WHERE dev_type='A' AND status=1
- 位图索引:高效处理枚举字段的等值查询
在济南韩家峪村储能项目中,这些技术使存储需求降低70%,查询性能提升3倍。
查询加速策略
KWDB的查询优化器采用基于代价的多阶段优化框架,关键优化包括:
自适应执行计划:运行时根据数据特征动态调整计划,如发现过滤条件实际选择率高于预估时,自动切换为索引扫描。系统维护历史执行统计,通过指数加权平均预测未来负载。
向量化执行:分析算子全面向量化,利用AVX-512指令集并行处理数据。针对时序聚合开发的"时间向量聚合"算法,单核可处理2亿条/秒的简单聚合。
近似计算:对不要求精确结果的场景,提供:
- HyperLogLog:基数估计误差率<1%
- T-Digest:分位数计算比精确算法快100倍
- Count-Min Sketch:高频项检测内存占用减少90%
某智慧城市项目中,近似计算使交通流量分析查询从分钟级降至秒级。
资源管理与隔离
KWDB的多租户资源隔离通过三层机制实现:
- 资源组:将CPU核、内存带宽划分给不同业务,如事务组和分析组
- 弹性配额:根据负载动态调整资源分配,如分析查询夜间可获得更多资源
- 熔断机制:当查询消耗资源超过阈值时自动中止,防止系统过载
资源管理器采用强化学习动态调整策略,某金融客户测试显示,该技术使混合负载吞吐量提升35%。
行业解决方案与典型应用
KWDB的技术特性使其在多个行业形成标准化解决方案,通过与行业知识的深度融合,创造了显著的业务价值。以下是三个最具代表性的应用场景。
工业物联网平台
在工业物联网领域,KWDB作为设备数据中枢,与西门子工业边缘、联想IoT平台等形成完整解决方案。某重工集团的数字化转型案例中,KWDB实现了以下功能架构:
设备连接层:通过OPC UA、Modbus等协议接入2000+台设备,每秒处理50万数据点。KWDB的"协议插件框架"支持快速适配新设备类型,新增一种协议适配仅需2人。
数据处理层:运行200+个流式计算规则,如:
-- 设备振动异常检测
CREATE CONTINUOUS VIEW v_vibration_alert AS
SELECT device_id,stddev(vibration) OVER (PARTITION BY device_id ORDER BY time ROWS 50 PRECEDING) as vibration_std
FROM device_metrics
WHERE vibration_std > 3.0 AND time > NOW() - INTERVAL '5 minutes'
该规则帮助提前30分钟预测到75%的设备故障。
应用服务层:提供统一数据接口,支持:
- 数字孪生:1:1映射物理设备状态
- 能效分析:识别20%的高耗能设备
- 预测维护:基于机器学习模型预测剩余使用寿命
该项目使设备综合效率(OEE)提升18%,维护成本降低25%。
数字能源系统
在能源领域,KWDB的高并发时序处理能力特别适合电网监测场景。济南韩家峪村"光储充"一体化项目中:
数据采集:对接3000个智能电表、200个光伏逆变器,每秒处理10万读数。KWDB的"批量点写入"接口支持单次插入百万级数据点,比逐条插入快100倍。
实时分析:关键查询包括:
-- 台区负载平衡分析
SELECT feeder_id,avg(voltage) as avg_voltage,sum(current) as total_current
FROM meter_readings
WHERE time > NOW() - INTERVAL '5 minutes'
GROUP BY feeder_id
HAVING avg_voltage < 210 OR avg_voltage > 250
云端协同:边缘节点运行本地分析,如电压越限检测;云端聚合全村数据,指导配电调度KWDB的"分层聚合"功能自动计算不同时间粒度的汇总,如1分钟、5分钟、1小时等。该项目实现分布式光伏100%消纳,电压合格率100%,供电可靠性达99.999%。
智慧交通管理
某省会城市的智能交通系统中,KWDB管理着10万辆车的实时数据:
数据接入:处理2000路摄像头、500个地磁传感器的流数据,峰值每秒50万事件KWDB的"流表一体"设计允许同一张表同时用于流式写入和批量分析
典型查询:
-- 拥堵识别
WITH moving_cars AS (SELECT car_id,position,lag(position) OVER (PARTITION BY car_id ORDER BY time) as prev_posFROM vehicle_tracksWHERE time > NOW() - INTERVAL '5 minutes'
)
SELECT road_segment,count(*) as car_count,avg(speed) as avg_speed
FROM moving_cars JOIN road_networkON ST_Contains(road_network.geom, moving_cars.position)
WHERE ST_Distance(moving_cars.position, moving_cars.prev_pos) < 5
GROUP BY road_segment
HAVING avg_speed < 20 AND count(*) > 50
优化效果:该查询每30秒全城范围执行一次,P99延迟800ms,帮助交通部门将高峰拥堵时间缩短25%。
社区运营现状
贡献者体系:采用"核心开发者+领域专家+普通贡献者"的三层结构。核心团队来自浪潮KaiwuDB,负责架构设计;领域专家主导行业适配;普通贡献者通过"good first issue"入门。截至2024年末,社区拥有60+活跃贡献者。
协作工具链:
- 代码托管:Gitee主仓库+GitHub镜像
- CI/CD:基于Zadig的自动化测试流水线
- 文档中心:采用Wiki+Markdown,中英双语
- 沟通渠道:钉钉群(2000+成员)+邮件列表
相关文章:
【KWDB 创作者计划】架构设计与AIoT场景实践
产品定位与核心价值主张 架构设计与技术实现 分布式架构设计 多模存储引擎实现 云边端协同机制 核心技术创新解析 就地计算技术 自适应时序引擎 混合事务处理 性能优化技术体系 高效存储机制 查询加速策略 资源管理与隔离 行业解决方案与典型应用 工业物联网平台…...
DeepSeek底层揭秘——《推理时Scaling方法》技术对比浅析
4月初,DeepSeek 提交到 arXiv 上的最新论文正在 AI 社区逐渐升温。 笔者尝试对比了“关于推理时Scaling”与现有技术,粗浅分析如下: 与LoRA的对比 区别: 应用场景:LoRA是一种参数高效微调方法,主要用于在…...
Spring MVC与Spring Boot文件上传配置差异对比及文件上传关键类详细说明与对比
一、Spring MVC与Spring Boot文件上传配置差异对比 1. 配置方式差异 框架配置方式依赖管理自动配置Spring MVC需手动配置MultipartResolver(如StandardServletMultipartResolver)需自行引入commons-fileupload等依赖无,默认不启用文件上传支…...
Linux网络配置与测试
目录 一.与网络配置相关的命令 1.1ifconfig命令 1.1.1作用 1.1.2网络接口的信息 接口信息的组成 1.1.3显示所有网卡包括没有启动的网卡 1.1.4查看指定网络接口 1.1.5开启或关闭网卡 1.1.6设置临时虚拟网卡 1.1.7网络通讯情况 编辑 1.1.8临时修改网卡属性 1.2hos…...
游戏赛季和数据处理
问题 游戏从无赛季到赛季机制会涉及哪些问题: 如何改动,增加赛季机制,涉及要修改的代码量最少如何改动,账号、角色部分数据继承问题,涉及要修改的代码量最少账号下角色的永久服共享或是永久服独立,需要做…...
京东店铺托管7*16小时全时护航
内容概要 京东店铺托管服务的*716小时全时护航模式,相当于给商家配了个全年无休的"运营管家"。专业团队每天从早7点到晚11点实时盯着运营数据和商品排名,连半夜流量波动都能通过智能系统秒级预警。这种全天候服务可不是单纯拼人力——系统自动…...
HTTP的Keep-Alive是什么?TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?
HTTP的Keep-Alive: HTTP Keep-Alive 是一种机制,允许客户端和服务器在单个 TCP 连接 上发送多个 HTTP 请求 和 响应,而不是每次请求和响应后都关闭连接。它的主要目的是提高性能,减少连接的开销,优化通信效率。 工作…...
使用scoop一键下载jdk和实现版本切换
安装 在 PowerShell 中输入下面内容,保证允许本地脚本的执行: set-executionpolicy remotesigned -scope currentuser然后执行下面的命令安装 Scoop: iwr -useb get.scoop.sh | iex国内用户可以使用镜像源安装:powershell iwr -us…...
PPIO × UI-TARS:用自然语言操控电脑,AI Agent 的极致体验
Manus的爆火预示着AI 正在从单纯的文本生成和图像识别迈向更复杂的交互场景。字节跳动近期推出的开源项目 UI-TARS Desktop 为我们展示了一种全新的可能性:能够通过自然语言理解和处理来控制计算机界面。这款工具代表了人工智能与人机交互领域的重大突破,…...
PG:incorrect prev-link
目录 WAL日志中"incorrect prev-link"错误解决方案错误原因分析解决步骤典型修复案例 WAL日志中"incorrect prev-link"错误解决方案 错误原因分析 WAL日志的prev-link字段用于确保日志记录的连续性。当出现incorrect prev-link 2/754ECB0 at 2/8000028错…...
SQL Server 数据库邮件配置失败:SMTP 连接与权限问题
问题现象: 配置数据库邮件时,发送测试邮件失败,提示 “邮件无法发送到 SMTP 服务器,操作超时”(错误 14661)或 “服务器拒绝发件人地址”(错误 15009)。 快速诊断 检查数据库邮件配置…...
深入浅出动态规划:从基础到蓝桥杯实战(Java版)
引言:为什么你需要掌握动态规划? 动态规划(DP)是算法竞赛和面试中的常客,不仅能大幅提升解题效率(时间复杂度通常为O(n)或O(n))[4],更是解决复杂优化问题的利器。统计显示ÿ…...
获取cookie的chrome插件:Get cookies.txt LOCALLY
接上一篇,在下载视频的时候需要网站的cookie,下面介绍一款可以获取网站cookie的chrome插件 https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?utm_sourceitem-share-cb 备注需要科学上网 【使用方…...
opencv无法设置禁用RGB转换问题
树莓派连接摄像头,摄像头输出格式为YUYV(YUV422)。 通过执行 v4l2-ctl --list-formats --device/dev/video0 可以看的具体的摄像头的数据格式。 使用opencv获取视频流,通过cap.set(cv2.CAP_PROP_CONVERT_RGB, 0)设置禁用自动转换RGB格式,但是打印输出…...
Ansible:roles角色
文章目录 Roles角色Ansible Roles目录编排Roles各目录作用创建 roleplaybook调用角色调用角色方法1:调用角色方法2:调用角色方法3: roles 中 tags 使用实战案例 Roles角色 角色是ansible自1.2版本引入的新特性,用于层次性、结构化…...
SAP系统采购信息记录失效
问题:采购信息记录失效 现象:最初主数据导入完成之后,单元测试的时采购信息记录是有效的,中间经过配置的变化,集成测试初期发现采购信息记录全部失效。 原因: 单元测试时发现采购订单里面的条件类型…...
JavaWeb 课堂笔记 —— 04 Ajax
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
Pandas 库
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够…...
4.8学习总结
完成摆动序列的算法题(比较难,想不出方法) 学习了HashMap,TreeMap 的源码(看完一遍对其理解没有太清楚,还需再多刷几遍理解源码及其底层逻辑的概念) 学习了可变参数和Collections工具类...
C语言之九九乘法表
一、代码展示 二、运行结果 三、代码分析 首先->是外层循环是小于等于9的 然后->是内层循环是小于等于外层循环的 最后->就是\n让九九乘法表的格式更加美观(当然 电脑不同 有可能%2d 也有可能%3d) 四、与以下素数题目逻辑相似 五、运行结果...
【Linux操作系统】:信号
Linux操作系统下的信号 一、引言 首先我们可以简单理解一下信号的概念,信号,顾名思义,就是我们操作系统发送给进程的消息。举个简单的例子,我们在写C/C程序的时候,当执行a / 0类似的操作的时候,程序直接就挂…...
skynet.call使用详解
目录 skynet.call 详细解析1. 函数签名与参数2. 内部实现机制3. 会话ID与协程调度4. 超时与错误处理5. 返回值处理6. 协议类型的影响7. skynet.call vs skynet.send8. 示例代码分析9. 最佳实践10. 总结 skynet.call 详细解析 1. 函数签名与参数 函数签名: skynet…...
uniapp 打包 H5 向 打包的APP 使用 @dcloudio/uni-webview-js 传值
1.安装 dcloudio/uni-webview-js npm install dcloudio/uni-webview-js -save 这个模块的 uni. 会与H5的uniapp的 uni. 冲突,所以需要改下名称,一共需要改3处 2.引入并使用 import uniWeb from dcloudio/uni-webview-js;uniWeb.postMessage({data: {action: message,content…...
c语言 文件操作
c语言 文件操作 one 打开/usr/dev.txt文件,在第1行 覆盖写入 "MAC1q23456789" #include <fcntl.h> #include <unistd.h> #include <string.h> int main() { const char *line_1 "MAC1q23456789\n"; // 要写入的内容…...
企业电子招投标采购系统——功能模块功能描述+数字化采购管理 采购招投标
功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看…...
Python 序列构成的数组(序列的增量赋值)
序列的增量赋值 增量赋值运算符 和 * 的表现取决于它们的第一个操作对象。简单起 见,我们把讨论集中在增量加法()上,但是这些概念对 * 和其他 增量运算符来说都是一样的。 背后的特殊方法是 iadd (用于“就地加法”&…...
力扣hot100【链表】
160.相交链表 题目 我的思路:两个链表一长一短,先把长的提前遍历使两个链表的长度相等,然后同时遍历,如果遍历的节点相等时说明相交,否则不相交。 /*** Definition for singly-linked list.* struct ListNode {* …...
PyTorch 生态迎来新成员:SGLang 高效推理引擎解析
SGLang 现已正式融入 PyTorch 生态系统!此次集成确保了 SGLang 符合 PyTorch 的技术标准与最佳实践,为开发者提供了一个可靠且社区支持的框架,助力大规模语言模型(LLM)实现高效且灵活的推理。 如需深入了解 PyTorch…...
C++ Primer Plus 编程练习题 第六章 分支语句和逻辑运算符
1.大小写转换 使用cctype库里的函数进行大小写转换,但要注意使用toupper或tolower时要进行强制类型转换,否则会输出ASCII值 #include <iostream> #include<cctype> using namespace std;int main() {cout << "请输入字符串(大…...
一文详解OpenGL环境搭建:Windows使用CLion配置OpenGL开发环境
在计算机图形学的广阔领域中,OpenGL作为行业标准的图形库,为开发者提供了强大的工具集来创建从简单的2D图形到复杂的3D世界。然而,对于初学者和经验丰富的开发者而言,选择一个合适的开发环境是迈向成功的第一步。尤其是在Windows平台上,配置一个既支持现代C++编程实践又能…...
一次奇怪的enq: TX - row lock contention锁问题处理
某天上午客户告知数据库库有锁导致数据库卡死,需排查出问题的原因,从根本上解决问题。 按正常步骤,查询V$SESSION中BLOCKING_SESSION列不为空的,发现没有进程互相阻塞的情况;而查询ACTIVE会话,则有大量进程…...
STL常用容器整理
STL常用容器操作整理 STL常用容器操作整理(string/vector/set/map)一、string(字符串)构造函数元素访问修改操作容量操作子串与查找 二、vector(动态数组)构造函数元素访问修改操作容量操作 三、set&#x…...
深入 PostgreSQL 内部:5 个关键阶段拆解查询处理全流程
引言 当您向 PostgreSQL 发送查询时,后端会经历多个处理阶段。每个阶段承担着不同的职责,以确保您能在最短时间内获得准确响应。虽然这些阶段可能庞大而复杂,但理解它们在查询处理中的角色对 PostgreSQL 开发者至关重要。本文将概述每个查询…...
解析 LILIkoi 光纤力传感器:FBG 原理铸就耐高温抗干扰优势
LILIkoi光纤力传感器通过光纤光栅(FBG)技术实现高精度力测量。其核心原理基于光纤内光栅栅距的微小变化,用以感知外界施加的力。该传感器在高温、强辐射等恶劣环境中表现出色,能够有效抵抗电磁干扰和温度漂移。凭借卓越的性能&…...
SU-YOLO:基于脉冲神经网络的高效水下目标检测模型解析
论文地址:https://arxiv.org/pdf/2503.24389 目录 一、论文概述 二、创新点解析 1. 基于脉冲的水下图像去噪(SpikeDenoiser) 原理与结构 2. 分离批归一化(SeBN) 原理与结构 3. 优化的残差块(SU-Block) 原理与结构 三、代码复现指南 环境配置 模型训练 四、…...
有关eeprom以及pwm
a0 a1就是对应的 芯片的 写和读 0写 1读 使用操作 主函数读一次 然后信息里一直写入。 用level设置挡位 如 10个格子 设置2 3 这样占空比就有了...
JMeter教程|0到1学会接口性能压测第14课-JMeter接口性能测试全流程讲解
Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。 本文以百度搜索接口为例,全流程讲解JMeter接口性能测试。从JMeter下载安装到编写一个…...
系统思考:问题诊断
“做事不怕困难,怕的是不明白困难出在哪里。” —— 亨利福特 最近发现,有些领导者或者团队,常常急于给出解决方案,却忽视了最关键的一步——诊断问题的根源。团队甚至在集体心智模式的影响下,连问题本身都搞错了方向…...
有效压缩 Hyper-v linux Centos 的虚拟磁盘 VHDX
参考: http://www.360doc.com/content/22/0505/16/67252277_1029878535.shtml VHDX 有个不好的问题就是,如果在里面存放过文件再删除,那么已经使用过的空间不会压缩,导致空间一直被占用。那么就需要想办法压缩空间。 还有一点&a…...
使用 redis 实现消息队列
方案1: 使用list做消息队列问题1: 如何保证消息不丢失问题 2: 重复消费/幂等 方案 2: zset实现消息队列方案 3: 发布/订阅(pub/sub)问题1: 如何保证消息不丢失问题 2: 重复消费/幂等 方案 4: Stream 实现消息队列问题1: 如何保证消息不丢失问题 2: 重复消费/幂等 方案1: 使用li…...
2025 XYCTF Pwn-wp(含附件)
前言 总体来说Pwn方向题目难度属于中等,属于那种一眼看不出要咋做,但多试试又能做出来的那种,比赛的时候甚至有几只队伍AK了Pwn方向。感觉题目还是很不错的尽管比赛中有一些小意外像是有些题目附件给错了,但是XYCTF的师傅们都是无偿出题纯热爱向大伙分享自己的题目…...
verilog有符号数的乘法
1、单周期乘法器 对于低速要求的乘法器,可以简单的使用 * 实现。 module Mult(input wire [7:0] multiplicand ,input wire [7:0] multipliter ,output wire [7:0] product);assign product multiplicand * multipliter …...
【python3】关于等额本金和等额本息计算
【python3】关于等额本金和等额本息计算 1.背景2.计算3.总结4.推导 1.背景 在贷款买房的宝子们一定有了解等额本金和等额本息,年轻的时候只听销售在那里计算, 您可能听得云里雾里。 等额本金:每个月还的本金固定,利息逐渐减少。…...
git怎么删除远程分支
删除远程分支 引言删除远程分支查看远程分支查看远程分支详情删除远程分支 引言 本文旨在记录一下,git如何通过命令行删除远程分支。 删除远程分支 查看远程分支 使用指令: git branch -r查看远程分支详情 使用指令: git remote show …...
【C++】函数直接返回bool值和返回bool变量差异
函数直接返回bool值和返回bool变量差异 背景 在工作中遇到一个比较诡异的问题,场景是给业务方提供的SDK有一个获取状态的函数GetStatus,函数的返回值类型是bool,在测试过程中发现,SDK返回的是false,但是业务方拿到的…...
蓝桥杯-蓝桥幼儿园(并查集)
并查集的核心思想 并查集主要由两个操作构成: Find:查找某个元素所在集合的根节点。并查集的特点是,每个元素都指向它自己的父节点,根节点的父节点指向它自己。查找过程中可以通过路径压缩来加速后续的查找操作,即将路…...
Ensemble of differential evolution variants(EDEV)
差分进化变体的集成1 在这项研究中,一个基于多种群的框架(MPF)被提议用于多个差分进化变体的集合。与PAP2不同,PAP通过时间预算分配策略和个体移民算子实现算法组合,MPF将整个种群划分为子种群,包括几个指…...
《AI开发工具和技能实战》第1集 Windows CMD 命令行操作指南:从基础到进阶
第1集 Windows CMD 命令行操作指南:从基础到进阶 在日常使用 Windows 系统时,命令提示符(Command Prompt,简称 CMD)是一个强大且灵活的工具。无论是文件管理、系统配置,还是网络诊断,CMD 都能提…...
实现一个拖拽排序组件:Vue 3 + TypeScript + Tailwind CSS
文章目录 一、项目背景与需求分析需求: 二、搭建基础项目1. 初始化 Vue 3 项目2. 安装 Tailwind CSS 三、设计拖拽排序组件1. 创建拖拽排序组件2. 说明: 四、完善样式与功能1. 样式调整2. 拖拽顺序更新 五、进一步优化与拓展1. 添加排序指示器2. 支持动态…...
哈希表(开散列)的实现
目录 引入 开散列的底层实现 哈希表的定义 哈希表的扩容 哈希表的插入 哈希表查找 哈希表的删除 引入 接上一篇,我们使用了闭散列的方法解决了哈希冲突,此篇文章将会使用开散列的方式解决哈希冲突,后面对unordered_set和unordered_map的…...