GaussDB使用指南
目录
1. GaussDB 概述
1.1 GaussDB 简介
1.2 核心技术架构
1.3 适用场景与行业案例
2. GaussDB 安装与部署
2.1 环境准备与依赖检查
2.2 单机版安装(Linux)
2.3 分布式集群部署
3. GaussDB 基础操作与语法
3.1 数据库连接与用户管理
3.2 DDL 语句示例
3.3 DML 语句
3.4 复杂查询
3.5 事务控制
4. GaussDB 运维管理
4.1 性能监控
4.2 备份与恢复
5. GaussDB 高级功能
5.1 分布式事务
5.2 高可用方案
6. 实战案例:电商高并发场景
7. 常见问题与解决方案
7.1 连接数不足
7.2 查询性能下降
附录
1. GaussDB 概述
1.1 GaussDB 简介
GaussDB 是华为基于开源 PostgreSQL 开发的企业级分布式数据库,支持 OLTP(在线事务处理)和 OLAP(在线分析处理)混合负载。其核心特性包括:
-
高可用性:多副本自动切换,RPO=0,RTO<10秒。
-
弹性扩展:支持在线动态扩缩容,数据自动重分布。
-
安全合规:支持国密算法、数据脱敏、审计日志。
1.2 核心技术架构
1.2.1 分布式存储引擎
-
数据分片(Sharding):通过哈希、范围、列表等方式将数据分布到多个节点。
-- 创建分片表(HASH分片) CREATE TABLE user_orders (order_id BIGINT PRIMARY KEY,user_id INT,amount DECIMAL(10,2) ) DISTRIBUTE BY HASH(user_id);
-
多副本机制:每个分片默认3副本,通过 RAFT 协议保证一致性。
1.2.2 HTAP 混合引擎
-
行存储:适用于高并发事务(如订单处理)。
-
列存储:适用于分析查询(如报表统计)。
-
内存引擎:支持实时数据处理(如风控系统)。
1.2.3 AI 增强优化器
-
基于历史查询统计自动优化执行计划。
-
支持 SQL 性能自动调优(如索引推荐)。
1.3 适用场景与行业案例
案例 1:某银行核心交易系统
-
需求:日均交易量 1 亿笔,要求 7x24 小时高可用。
-
方案:
-
使用分布式行存表处理实时交易。
-
列存表用于每日对账分析。
-
两地三中心部署,跨城同步延迟 <2 秒。
-
案例 2:某智慧城市物联网平台
-
需求:管理 1000 万+ 设备,存储 5 年历史数据。
-
方案:
-
使用时序表(Timeseries Engine)存储设备数据。
-
数据按时间分片(每日一个分片)。
-
压缩率高达 10:1,节省存储成本。
-
2. GaussDB 安装与部署
2.1 环境准备与依赖检查
硬件要求:
组件 | 最低配置 | 推荐配置 |
---|---|---|
CPU | 4 核(x86_64) | 16 核(鲲鹏 920) |
内存 | 16GB | 64GB |
磁盘 | 200GB HDD | 1TB SSD(RAID 10) |
软件依赖:
# CentOS 7.6+ 示例
sudo yum install -y libaio-devel openssl-devel python3
sudo systemctl disable firewalld # 关闭防火墙
2.2 单机版安装(Linux)
步骤 1:下载安装包
从 华为开源镜像站 获取安装包:
wget https://mirrors.huaweicloud.com/gaussdb/5.0.1/GaussDB-5.0.1-Linux-x86_64.tar.gz
步骤 2:解压与初始化
tar -xzf GaussDB-5.0.1-Linux-x86_64.tar.gz
cd GaussDB/bin
./gs_initdb -D /data/gaussdb --nodename=primary --encoding=UTF-8
关键参数说明:
-
-D
:数据目录路径。 -
--nodename
:节点名称(单机版默认为 primary)。
步骤 3:启动服务
./gs_ctl start -D /data/gaussdb -l /var/log/gaussdb/start.log
日志验证:
tail -f /var/log/gaussdb/start.log # 查看 "database system is ready" 表示启动成功
2.3 分布式集群部署
配置文件 cluster_config.xml
:
<ROOT><CLUSTER><PARAM name="clusterName" value="gauss_cluster"/><PARAM name="nodeNames" value="node1,node2,node3"/><PARAM name="backIp1s" value="192.168.1.101,192.168.1.102,192.168.1.103"/><PARAM name="gaussdbAppPath" value="/opt/gaussdb"/><PARAM name="gaussdbLogPath" value="/var/log/gaussdb"/></CLUSTER>
</ROOT>
部署命令:
./gs_om -t install --cluster-config cluster_config.xml
验证集群状态:
./gs_om -t status # 输出所有节点状态为 "Normal"
3. GaussDB 基础操作与语法
3.1 数据库连接与用户管理
连接数据库:
gsql -d postgres -U gaussdb -W -h 127.0.0.1 -p 5432
参数说明:
-
-d
:数据库名(默认 postgres)。 -
-U
:用户名(安装时创建的初始用户)。
创建只读用户:
CREATE USER analyst WITH PASSWORD 'Analyst@123';
GRANT CONNECT ON DATABASE postgres TO analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst;
3.2 DDL 语句示例
创建分区表:
CREATE TABLE sensor_data (sensor_id INT,log_time TIMESTAMP,temperature FLOAT
) PARTITION BY RANGE (log_time)
(PARTITION p2023_01 VALUES LESS THAN ('2023-02-01'),PARTITION p2023_02 VALUES LESS THAN ('2023-03-01')
);
参数优化示例:
ALTER TABLE sensor_data SET (fillfactor=70); -- 减少页分裂
3.3 DML 语句
批量插入数据:
INSERT INTO user_orders
VALUES
(1, 1001, 99.99),
(2, 1002, 199.99)
DISTRIBUTE BY HASH(user_id); -- 显式指定分片键
更新带条件的数据:
UPDATE user_orders
SET amount = amount * 0.9
WHERE user_id IN (SELECT user_id FROM vip_users);
3.4 复杂查询
窗口函数示例:
SELECT user_id,order_date,amount,SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date) AS cumulative_sum
FROM user_orders;
3.5 事务控制
显式事务示例:
BEGIN;
SAVEPOINT sp1;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
-- 若后续操作失败可回滚到保存点
ROLLBACK TO sp1;
COMMIT;
4. GaussDB 运维管理
4.1 性能监控
查看实时会话:
SELECT * FROM pg_stat_activity WHERE state = 'active';
监控工具 gs_checkperf
:
gs_checkperf -i PMK -U gaussdb # 检查 CPU/内存/磁盘/网络
4.2 备份与恢复
逻辑备份:
gs_dump -U gaussdb -d mydb -F c -f mydb.dmp # 自定义格式
物理备份:
gs_basebackup -D /backup/gaussdb -h 192.168.1.101 -p 5432 -U replica
5. GaussDB 高级功能
5.1 分布式事务
两阶段提交(2PC)流程:
-
Prepare 阶段:协调者询问所有节点是否可以提交。
-
Commit 阶段:所有节点确认后提交。
代码示例:
-- 自动启用 2PC(默认配置)
BEGIN;
INSERT INTO node1_table VALUES (1);
INSERT INTO node2_table VALUES (2);
COMMIT; -- 若任一节点失败则自动回滚
5.2 高可用方案
同城双活架构:
-
主备节点:数据实时同步,故障切换时间 <10 秒。
-
仲裁节点:防止脑裂,需至少 3 个节点。
配置流复制:
ALTER SYSTEM SET synchronous_commit = on;
SELECT pg_reload_conf();
6. 实战案例:电商高并发场景
场景需求:
-
支持秒杀活动,峰值 QPS 50,000。
-
订单数据分库分表,避免单点瓶颈。
GaussDB 方案:
-
分片设计:
CREATE TABLE orders (order_id BIGINT PRIMARY KEY,user_id INT,item_id INT ) DISTRIBUTE BY HASH(user_id); -- 按用户 ID 分片
-
缓存加速:
CREATE EXTENSION redis_fdw; -- 使用 Redis 缓存热点数据
-
限流策略:
ALTER USER app_user SET max_connections = 100; -- 限制用户连接数
7. 常见问题与解决方案
7.1 连接数不足
报错信息:
FATAL: remaining connection slots are reserved for non-replication superuser connections
解决方案:
-- 临时增加连接数
ALTER SYSTEM SET max_connections = 500;
SELECT pg_reload_conf();-- 长期优化:使用连接池(如 pgBouncer)
7.2 查询性能下降
分析步骤:
-
检查慢查询日志:
ALTER SYSTEM SET log_min_duration_statement = '1000ms';
-
使用
EXPLAIN ANALYZE
分析执行计划:EXPLAIN ANALYZE SELECT * FROM large_table WHERE create_date > '2023-01-01';
-
添加索引优化:
CREATE INDEX idx_create_date ON large_table(create_date);
附录
-
官方文档:成长地图_云数据库 GaussDB_华为云
-
学习资源:
-
《GaussDB 性能调优指南》
-
《分布式数据库原理与实践》
-
-
工具包下载:
-
数据库监控脚本:
gaussdb_monitor_toolkit.zip
-
压力测试工具:
benchmark_kit.tar.gz
-
相关文章:
GaussDB使用指南
目录 1. GaussDB 概述 1.1 GaussDB 简介 1.2 核心技术架构 1.3 适用场景与行业案例 2. GaussDB 安装与部署 2.1 环境准备与依赖检查 2.2 单机版安装(Linux) 2.3 分布式集群部署 3. GaussDB 基础操作与语法 3.1 数据库连接与用户管理 3.2 DDL …...
算法训练之动态规划(一)
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
dubbo配置中心
配置中心 简介 配置中心(config-center)在dubbo中可承担两类职责: 外部化配置:启动配置的集中式存储。流量治理规则存储。 Dubbo动态配置中心定义了两个不同层次的隔离选项,分别是namespace和group。 namespace&a…...
移动端六大语言速记:第11部分 - 内存管理
移动端六大语言速记:第11部分 - 内存管理 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在内存管理方面的特性,帮助开发者理解和掌握各语言的内存管理机制。 11. 内存管理 11.1 垃圾回收机制对比 各语言垃圾回收…...
对象的创建方式有哪些?在虚拟机中具体的创建过程是怎样的?
在Java中,对象的创建方式及其在虚拟机中的具体过程如下: 一、对象的创建方式 使用 new 关键字 最常见的对象创建方式,直接调用类的构造方法。 MyClass obj new MyClass();反射(Reflection) 通过 Class 或 Constructor…...
openwrt软路由配置3
1.启用sftp文件连接 使用ssh连接openwrt时,我发现无法打开sftp windows进行上传和下载文件,提示 sftp channel closed by server: stderr:ash /usr/libexec/sftp-server:not found 原因是系统刚刚装好后,没有安装openssh-sftp-server包 opk…...
C语言for循环嵌套if相关题目
一、题目引入 以下代码程序运行结果是多少? 二、思路解析 进入一个for循环 a<100 进入第一个if b1不大于20为假 进入第二个if b4 a这时a自增为2 当b4时,满足第二个if条件 1.b4,a2 当b7时,满足第二个if条件 2.bb37,a3 当b10时,满足第二个if条件 …...
Redis与Mysql双写一致性如何保证?
我们在面试的时候redis与mysql双写一致性是一个常考的问题,今天我们就一起探讨一下吧 所谓的一致性就是数据的一致性,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性: 这种一致性级别是最符合用户直觉的&…...
STM32 CRC校验与芯片ID应用全解析:从原理到实践 | 零基础入门STM32第九十七步
主题内容教学目的/扩展视频CRC与芯片ID原理实现CRC校验和读取芯片ID为单片机应用提供数据验证和身份识别的功能。 师从洋桃电子,杜洋老师 📑文章目录 一、CRC校验功能解析1.1 CRC基本原理1.2 核心功能对比 二、CRC校验应用实战2.1 典型应用场景2.2 程序实…...
《微服务与事件驱动架构》读书分享
《微服务与事件驱动架构》读书分享 Building Event-Driver Microservices 英文原版由 OReilly Media, Inc. 出版,2020 作者:[加] 亚当 • 贝勒马尔 译者:温正东 作者简介: 这本书由亚当贝勒马尔(Adam Bellemare…...
⼤模型(LLMs)基础
⼤模型(LLMs)基础 ⽬前 主流的开源模型体系 有哪些?prefix Decoder 和 causal Decoder 和 Encoder-Decoder 区别是什么?⼤模型LLM的 训练⽬标 是什么?涌现能⼒是啥原因?为何现在的⼤模型⼤部分是Decoder o…...
IDEA :物联网ThingsBoard-gateway配置,运行Python版本,连接thingsboard,接入 MQTT 设备
准备阶段(教程只针对本地操作,未涉及虚拟机环境) Thingsboard源码编译并运行 没有操作过的小伙伴,可以看我上一篇文章 物联网ThingsBoard源码本地编译篇,超详细教程,小白看过来!_thingsboard…...
面向大模型的开发框架LangChain
这篇文章会带给你 如何使用 LangChain:一套在大模型能力上封装的工具框架如何用几行代码实现一个复杂的 AI 应用面向大模型的流程开发的过程抽象 文章目录 这篇文章会带给你写在前面LangChain 的核心组件文档(以 Python 版为例)模型 I/O 封装…...
每日算法:洛谷U535992 J-C 小梦的宝石收集(双指针、二分)
题目描述 小梦有 n 颗能量宝石,其中第 i 颗的能量为 ai,但这些能量宝石十分不稳定,随时有可能发生崩坏,导致他们全部消失! 小梦想要留住宝石们,不希望他们发生崩坏,同时他发现:如…...
写给新人的深度学习扫盲贴:ReLu和梯度
一、ReLU(Rectified Linear Unit,修正线性单元) 梯度是深度学习中最常用的激活函数之一,因其简单、高效且能有效缓解梯度消失问题而被广泛使用。 1. 数学定义 函数表达式: $$ \text{ReLU}(x) \max(0, x) \begin{…...
Spring 框架的核心基础:IoC 和 AOP
一、IoC(Inversion of Control,控制反转) 定义: IoC(Inversion of Control,控制反转),就是把对象创建和依赖关系的管理交给 Spring 容器,而不是由程序员手动去创建对象…...
JavaScript逆向工程实战:如何精准定位加密参数生成位置
前言:一个令人困惑的调试案例 最近在进行某网站的JavaScript逆向分析时,我遇到了一个有趣的现象:当我尝试定位一个名为m的加密参数(值为MTIwMTE3NDQxODk1NTY1NjkA这样的Base64字符串)时,调试器却带我来到了…...
SSM智能停车场管理系统
🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 SS…...
[定位器]晶艺LA1823,4.5V~100V, 3.5A,替换MP9487,MP9486A,启烨科技
Features 4.5V to 100V Wide Input Range 3.5A Typical Peak Current Limit Integrated 500mΩ low resistance high side power MOS. Constant On Time Control with Constant Switching Frequency. 180μA Low Quiescent Current 150kHz/240kHz/420kHz Swi…...
天元证券|A股大反攻!北证50涨超10%!芯片股大爆发
今日,A股全线走强。 科技成长股领涨,北证50指数飙升逾10%,科创50也大涨超4%,深证成指、上证指数午后也稳步拉升涨逾1%。值得注意的是,上证50指数临近收盘集合竞价的时候直线拉升。近4600只个股上涨,成交稳步…...
利用python从零实现Byte Pair Encoding(BPE):NLP 中的“变形金刚”
BPE:NLP 界的“变形金刚”,从零开始的奇幻之旅 在自然语言处理(NLP)的世界里,有一个古老而神秘的传说,讲述着一种强大的魔法——Byte Pair Encoding(BPE)。它能够将普通的文本“变形…...
最新Web系统全面测试指南
你有没有遇到过这样的情况: 系统上线当天,用户频频报错,运维一脸懵逼,开发说“我本地没问题”? 你明明写了几十个测试用例,结果却还是有 Bug 漏网? Web 系统测试,不只是点点点&#…...
OpenBMC:BmcWeb 处理http请求6 调用路由处理函数
OpenBMC:BmcWeb 处理http请求5 检查权限-CSDN博客 检查完权限后,调用了rule.handle(*req, asyncResp, params); template <typename... Args> class TaggedRule :public BaseRule,public RuleParameterTraits<TaggedRule<Args...>> {void handle(const Req…...
售货机管理系统:智慧零售时代的运营新引擎
一、引言 在快节奏的都市生活中,自动售货机已成为便捷消费的重要场景。然而,传统售货机依赖人工补货、手工对账,常面临库存失衡、设备故障发现滞后、数据孤岛等痛点。如何突破效率瓶颈?本文将深入剖析榕壹云售货机管理系统的项目背景、客户定位、技术与核心功能、系统优势…...
Python基础全解析:从输入输出到字符编码的深度探索
一、Python程序交互的基石:Print函数详解 1.1 基础输出功能 # 输出数字 print(20.5) # 输出浮点数:20.5 print(0b0010) # 输出二进制数:10# 输出字符串 print(Hello World!) # 经典输出示例# 表达式计算 print(4 4 * (2-1)…...
Python第八章02:数据可视化Pyecharts包无法使用
PS:本节纯属个人在学习过程中遇到问题、解决问题的经验分享,对学习进度没影响,没有遇到该问题的小伙伴可跳过。 首先,在学习数据图形化过程中,通过命令提示符安装了Pyecharts包,在命令提示符中验证安装成功。 在PyChar…...
【人工智能】如何通过精准提示工程实现完美的珠宝首饰展示
AI艺术创作指南:如何通过精准提示工程实现完美的珠宝首饰展示 引言:认知边界的突破 在AI艺术创作的漫长探索中,许多创作者面临着相似的困扰:当他们看到别人能够通过算法编织出如同文艺复兴时期细腻油画般的奢华珠宝展示图&#…...
Redis学习总结(持续更新)
Redis 目前在学习redis,遇到的一些问题会放在这里,加深自己的印象。 1. Redis缓存相较于传统Session存储的特点 Session的存储方式: 通常,传统的Session是存储在应用服务器的内存中,比如Tomcat的Session管理器。用户…...
RabbitMQ从入门到实战-3(高可靠性)
文章目录 发送者可靠性发送者重连发送者确认(一般不会开启)指定returncallback和confrimfallbacktips MQ可靠性数据持久化LazyQueue(默认模式且不可更改) 消费者的可靠性消费者确认机制消费者失败重试业务幂等性唯一消息id业务判断…...
RTK 实时动态定位概述
01 引言 RTK(实时动态定位,Real-Time Kinematic)是一种高精度的卫星导航定位技术,通过差分校正方法,将GNSS(全球导航卫星系统)的定位精度从米级提升至厘米级(通常1-3厘米),广泛应用于测绘、无人机、自动驾驶、精准农业等领域。 02 概述 1. RTK的基本原理 RTK的核…...
Conda 环境离线迁移实战:解决生产环境网络限制的高效方案20250409
Conda 环境离线迁移实战:解决生产环境网络限制的高效方案 在生产环境无法联网的前提下,如何高效、安全地部署 Python 虚拟环境,是许多企业在实际运维中必须面对的问题。特别是当前常见的开发环境基于 Miniconda,生产环境使用 Ana…...
dify使用知识库
注意 要用向量模型 导入文件 选择向量模型 要下载好后,才可以导入模型, 这个模型没法在ollama中run 聊天工具添加知识库 效果...
HTTP:一.概述
http是干嘛的? 超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统…...
Appium工作原理及环境的搭建(1)
1、Appium的介绍: 一、什么是Appium Desktop? Appium Desktop是Appium项目的桌面版GUI工具,提供了一个友好的界面,用于启动Appium服务器、查看设备日志、与设备交互、调试自动化脚本等。相比于命令行工具,Appium Des…...
Interactron: Embodied Adaptive Object Detection(训练时进行更新参数) 还没看懂
Interactron: Embodied Adaptive Object Detection 创新点 这些方法通常存在两个主要的共同假设。第一,模型在固定的训练集上进行训练,并在预先录制的测试集上进行评估。第二,模型在训练阶段结束后保持冻结状态,即训练完成后不再…...
【Pandas】pandas DataFrame copy
Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型DataFrame.infer_objects([copy])用于尝试…...
Redis基础指令(Windows)
1.cmd命令行启动redis 直接cmd打开整个文件 1.1.启动server 输入指令: redis-server.exe redis.windows.conf 会进入serve端 1.2.启动客户端 !!重新打开一个cmd,方法和上面一样!! 之后输入 redis-…...
MV-DLS600P激光振镜立体相机(MV-DLS600P)重要参数解析
功能特性 采用激光振镜技术,亚毫米级图像采集精度 高能效激光模块配合精准曝光同步,性能更稳定 支持多帧融合,无惧金属工件表面反光干扰 支持RGB、深度图同步对齐输出,便于二次开发 配备窄带滤光片,抗干扰能力更强&…...
C语言【输出字符串中的大写字母】
题目 输出字符串中的大写字母 思路(注意事项) 纯代码 #include<stdio.h> #include<string.h>int main(){char str[20], ans[20];fgets(str, sizeof(str), stdin);str[strcspn(str, "\n")] \0;for (int i 0, j 0; i < strl…...
UniApp基于xe-upload实现文件上传组件
xe-upload地址:文件选择、文件上传组件(图片,视频,文件等) - DCloud 插件市场 致敬开发者!!! 感觉好用的话,给xe-upload的作者一个好评 背景:开发中经常会有…...
deque容器
1.定义 也叫双端数组,可以对头部进行插入和删除。 2.与vector区别 3.内部工作原理 他是把整个地址划分成多块小地址(缓冲区),然后有一个中控区去记录这些地址,然后访问的时候先通过中控区然后再转到相应的缓冲区&am…...
git 总结遇到的问题
git Push 报错 Push failed send-pack: unexpected disconnect while reading sideband packet Total 2269 (delta 418), reused 0 (delta 0), pack-reused 0 the remote end hung up unexpectedly 解决方案:增加 Git 的缓冲区,有时由于数据量大或网络…...
python基础语法11-文件读写
在 Python 中,文件操作是日常编程中的常见任务之一。Python 提供了简单且强大的工具来读取和写入文件。通过使用内置的 open() 函数、read()、readline()、write() 等方法,我们可以轻松实现对文件的操作。此外,Python 的 with 语句可以帮助我…...
Webstorm 使用搜不到node_modules下的JS内容 TS项目按Ctrl无法跳转到函数实现
将node_modules标记为不排除,此时要把内存改大,不然webstorm中途建立索引时,会因为内存不足,导致索引中途停止,造成后续搜索不出来 更改使用内存设置 内存调为4096 若出现搜不出来js内容时,请直接重启下该项…...
转行嵌入式,需要自学多久?
作为一个本硕都学机械,却阴差阳错进入嵌入式行业的老兵,这个问题我能聊一整天。十几年前我还在工厂车间穿着工装和机床打交道,偶然接触到单片机后就一发不可收拾。 转行这条路我走得异常艰辛,踩过的坑比写过的代码还多。去年我终…...
BLE 协议栈事件驱动机制详解
在 BlueNRG-LP 等 BLE 系统中,事件驱动是控制状态转移、数据交互和外设协作的基础。本文将深入讲解 BLE 协议栈中事件的来源、分发流程、处理结构与实际工程实践策略,帮助你构建稳定、可维护的 BLE 系统。 📦 一、BLE 事件的来源分类 BLE 协议栈中的事件严格来自协议栈本身…...
AI开发学习路线(闯关升级版)
以下是一份轻松版AI开发学习路线,用「闯关升级」的方式帮你从零开始变身AI开发者,每个阶段都配有有趣的任务和实用资源,保证不枯燥、可落地!👇 目录 🔰 新手村:打基础(1-2个月&…...
突破,未观测地区罕见极端降雨的估计
文章中文总结(重点为方法细节) 一、研究背景与目的 在无测站或短观测记录地区,传统极值理论(如GEV)难以估计稀有极端降雨事件;本文提出一种新的区域化极值估计方法:区域化 Metastatistical Ex…...
zk源码—4.会话的实现原理一
大纲 1.创建会话 (1)客户端的会话状态 (2)服务端的会话创建 (3)会话ID的初始化实现 (4)设置的会话超时时间没生效的原因 2.分桶策略和会话管理 (1)分桶策略和过期队列 (2)会话激活 (3)会话超时检查 (4)会话清理 1.创建会话 (1)客户端的会话状态 (2)服务端的会话创建…...
快排算法 (分治实现)
本算法采用将整个数组划分成三个部分 <key key >key 在数组全是同一个数字时,也能达到NlogN的时间复杂度 下面的板书中i为遍历数组的下标 left为<key的最右边的下标 right为>key的最左边的下标 例题1:912. 排序数组 - 力扣࿰…...