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

OceanBase 的系统变量、配置项和用户变量有何差异

在继续阅读本文之前,大家不妨先思考一下,数据库中“系统变量”、“用户变量”以及“配置项”这三者之间有何不同。如果感到有些模糊,那么本文将是您理清这些概念的好帮手。

很多用户在使用OceanBase数据库中的“配置项”和“系统变量”,但可能未能完全理解它们之间的区别。在社区论坛里,也看到一个帖子,该帖子询问“系统变量”与“用户变量”有何不同,还提及了“用户变量”。

1728720645

下面有不少热心用户积极回复,但感觉完全讲清楚两者区别的并不多,有一些同学还把 “配置项” 也掺进来一起讨论。所以想趁机搞明白这三者之间的区别,在这里分享给大家。为了解释的更清楚,在下面的标题中,我会把 “系统变量” 称为 “租户系统变量”,把 “用户变量” 成为 “用户自定义变量”。

租户系统变量和配置项

OceanBase 数据库提供了 “系统变量” 和 “配置项” 两种不同的参数来对数据库的行为进行配置,使之能够符合业务的要求。

有很多用户可能还不了解系统变量和配置项的影响范围,例如某个参数的设置,是会影响整个集群,还是影响当前租户,亦或是只影响当前 session。所以先抛开用户变量,先说说这两个更常见和常用的东西。

租户系统变量

OceanBase 的系统变量都是组户级的,也就是只对当前的租户生效。所以系统变量又可以被称作:租户系统变量。

设置系统变量时,又可以通过增加 Global 关键字或者 Session 关键字,来设置对应系统变量为全局级别或者会话级别,以调整系统变量在租户内的生效范围:

  • 全局变量:表示 Global 级别的修改,数据库同一租户内的不同用户共享一个全局变量。全局变量的修改不会随会话的退出而失效。此外,全局变量修改后,对当前已打开的 Session 不生效,需要重新建立 Session 才能生效。
  • 会话变量:表示 Session 级别的修改,Session 变量的修改仅对当前 Session 生效。当新的客户端连接到数据库后,数据库会复制全局变量来自动生成对应连接上的 Session 变量。
-- 执行 show variables; 可以看到全量系统变量
obclient [test]> show variables like 'ob_query_timeout';
+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| ob_query_timeout | 10000000 |
+------------------+----------+
1 row in set (0.004 sec)-- 修改 global 级别的系统变量
obclient [test]> set global ob_query_timeout = 20000000;
Query OK, 0 rows affected (0.004 sec)-- 全局变量修改后,对当前已打开的 session 不生效,需要重新建立 session 才能生效。
obclient [test]> show variables like 'ob_query_timeout';
+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| ob_query_timeout | 10000000 |
+------------------+----------+
1 row in set (0.003 sec)-- 不加 global 或者 session 关键字,默认修改的是 session 级别的系统变量
obclient [test]> set ob_query_timeout = 20000000;
Query OK, 0 rows affected (0.001 sec)obclient [test]> show variables like 'ob_query_timeout';
+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| ob_query_timeout | 20000000 |
+------------------+----------+
1 row in set (0.001 sec)

配置项

OceanBase 数据库的配置项分为集群级配置项和租户级配置项。

  • 集群级配置项:指适用于整个 OceanBase 数据库集群的配置选项,它们具有全局性质,用于配置整个集群的基本信息、性能参数、安全选项等等。这些配置项通常包括数据备份和恢复、负载均衡等方面的配置选项。集群级配置项通常是在集群启动时进行配置,配置后不轻易修改。
  • 租户级配置项:指适用于租户级别的配置选项,它们是针对单个租户或多个租户的配置选项。用于对单个租户或多个租户进行特定的配置和优化。这些配置项通常包括存储引擎参数、SQL 执行策略、访问控制等方面的配置选项。租户级配置项通常可以在租户创建和管理时进行配置,可以随时根据需要进行修改。

查询某个配置项为集群级别还是租户级别的方法如下:

obclient [test]> SHOW PARAMETERS; -- 展示所有配置项obclient [test]> SHOW PARAMETERS like 'cpu_quota_concurrency'\G
*************************** 1. row ***************************zone: zone1svr_type: observersvr_ip: 11.158.31.20svr_port: 22602name: cpu_quota_concurrencydata_type: NULLvalue: 4info: max allowed concurrency for 1 CPU quota. Range: [1,20]section: TENANTscope: TENANTsource: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
1 row in set (0.004 sec)obclient [test]> SHOW PARAMETERS like 'max_string_print_length'\G
*************************** 1. row ***************************zone: zone1svr_type: observersvr_ip: 11.158.31.20svr_port: 22602name: max_string_print_lengthdata_type: NULLvalue: 500info: truncate very long string when printing to log file. Range:[0,]section: OBSERVERscope: CLUSTERsource: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
1 row in set (0.005 sec)

scope 列对应的值为 CLUSTER 表示该配置项的生效范围为整个集群;如果 scope 列对应的值为 TENANT,则表示该配置项的生效范围为当前租户。

edit_level 列对应的值为 DYNAMIC_EFFECTIVE 时表示修改后立即生效,为 STATIC_EFFECTIVE 时则表示需要在重启 OBServer 节点后生效。

注意:

上述的查询结果中有一个比较容易和 scope 混淆的 section 列,值可能为:LOAD_BALANCE、DAILY_MERGE、RPC、TRANS、LOCATION_CACHE 等等,甚至可能为 TENANT 或者 OBSERVER(上面的示例就专门展示了这种情况)。这个 section 仅仅是一个 tag,只有标签性质,表示这个配置项和哪个模块相关,不代表配置项的生效范围,大家切记要将 scope 和 section 列的含义区分开!

尤其是要注意类似于 TENANT 或者 OBSERVER 这种 tag,估计研发同学在写标签的时候实在不知道相应的配置项该归为哪个模块更合适了,就直接偷懒把标签打成了 TENANT 或者 OBSERVER,但这个标签并不代表对当前 tenant 或者当前 session 直连的某个 OBServer 生效。

最后附上一个配置项与系统变量的对比:

对比项配置项系统变量
生效范围分为集群、Zone、机器和租户。分为租户的 Global 或 Session 级别。
生效方式动态生效:edit_level 为 dynamic_effective 重启生效:edit_level 为 static_effective设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。 设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。
修改方式支持通过 SQL 语句修改,示例: Alter SYSTEM SET schema_history_expire_time='1h';支持通过启动参数修改,示例: cd /home/admin/oceanbase && ./bin/observer -o "schema_history_expire_time='1h'";仅支持通过 SQL 语句修改,示例如下:MySQL 模式 SET ob_query_timeout = 20000000; SET GLOBAL ob_query_timeout = 20000000;
查询方式可以使用 SHOW PARAMETERS 语句查询。示例:SHOW PARAMETERS LIKE 'schema_history_expire_time';可以使用 SHOW [GLOBAL] VARIABLES 语句查询。示例如下:SHOW VARIABLES LIKE 'ob_query_timeout'; SHOW GLOBAL VARIABLES LIKE 'ob_query_timeout';
持久化持久化到内部表与配置文件,可以在 /home/admin/oceanbase/etc/observer.config.bin 与 /home/admin/oceanbase/etc/observer.config.bin.history 文件中查询该配置项。仅 Global 级别的变量会持久化,Session 级别的变量不会进行持久化。
生命周期长,从进程启动到退出。短,需要租户的 Schema 创建成功以后才生效。

用户自定义变量

发帖者提问中的 “用户变量” 其实就是“用户自定义变量”,一般会出现在 PL 的存储过程和匿名块之类的地方。

obclient [test]> SET @v3 = 789;
Query OK, 0 rows affected (0.002 sec)obclient [test]> SHOW PROXYSESSION VARIABLES;
+-----------------------------------+--------------+-----------------+--------------------+--------------------------------------------+
| variable_name                     | value        | info            | modified_type      | sys_variable_flag                          |
+-----------------------------------+--------------+-----------------+--------------------+--------------------------------------------+
| ob_proxy_global_variables_version | 0            | changed sys var | cold modified vars |  && invisible && session_scope && readonly |
| ob_proxy_user_privilege           | 133009965054 | changed sys var | cold modified vars |  && invisible && session_scope && readonly |
| ob_capability_flag                | 916295       | changed sys var | cold modified vars |  && invisible && session_scope && readonly |
| ob_enable_transmission_checksum   | 1            | changed sys var | cold modified vars |  && global_scope && session_scope          |
| _min_cluster_version              | '4.2.1.2'    | user var        | cold modified vars |                                            |
| v3                                | 789          | user var        | cold modified vars |                                            |
+-----------------------------------+--------------+-----------------+--------------------+--------------------------------------------+
6 rows in set (0.001 sec)obclient [test]> select concat('abc', @v3);
+--------------------+
| concat('abc', @v3) |
+--------------------+
| abc789             |
+--------------------+
1 row in set (0.002 sec)obclient [test]> select power(@v3, 2);
+---------------+
| power(@v3, 2) |
+---------------+
|        622521 |
+---------------+
1 row in set (0.002 sec)

帖子中的链接里说的执行 SHOW PROXYSESSION VARIABLES 可以展示出来的用户变量,就是上面例子中用户自定义的 @v3 了。用户自定义变量在一般情况下的使用频率不会太高,所以就偷懒贴一个 官方文档的链接 供大家学习参考啦~

参考文档

OceanBase 官网的文档中心日渐完善,最后也在这里推荐大家自主在官网搜索和解决各类问题~

文档中心 - 配置项和系统变量概述

文档中心 - 用户自定义变量


OceanBase 云数据库现已支持免费试用,现在申请,体验分布式数据库带来全新体验吧 ~

相关文章:

OceanBase 的系统变量、配置项和用户变量有何差异

在继续阅读本文之前,大家不妨先思考一下,数据库中“系统变量”、“用户变量”以及“配置项”这三者之间有何不同。如果感到有些模糊,那么本文将是您理清这些概念的好帮手。 很多用户在使用OceanBase数据库中的“配置项”和“系统变量”&#…...

ReinboT:通过强化学习增强机器人视觉-语言操控能力

25年5月来自浙大和西湖大学的论文“ReinboT: Amplifying Robot Visual-Language Manipulation with Reinforcement Learning”。 视觉-语言-动作 (VLA) 模型通过模仿学习在一般机器人决策任务中展现出巨大潜力。然而,训练数据的质量参差不齐通常会限制这些模型的性…...

MySQL联表查询:多表关联与嵌套查询指南

引言 各位数据库爱好者们好!今天我们要挑战MySQL查询技能的高阶关卡——复杂查询 🚀。在真实业务场景中,数据往往分散在多个表中,就像拼图的各个碎片,只有掌握了多表查询的"拼图技巧",才能将它们…...

QBasic 一款古老的编程语言在现代学习中的价值(附程序)

QBasic(Quick Beginner’s All-purpose Symbolic Instruction Code)是微软公司于 1991 年推出的一款简单易学的编程语言,作为BASIC语言的变种,它曾广泛应用于教育领域和初学者编程入门。尽管在当今Python、Java等现代编程语言主导…...

基于Backtrader库的均线策略实现与回测

本文将通过Python语言和强大的Backtrader库,详细介绍如何实现一个基于均线的简单交易策略,并进行历史数据的回测。将一步步构建这个策略,从数据获取、策略定义到回测结果分析,帮助你深入理解并掌握这一过程。 一、环境配置与库安装 1.1 安装必要的Python库 确保你已经安…...

Elasticsearch 分词与字段类型(keyword vs. text)面试题

Elasticsearch 分词与字段类型(keyword vs. text)面试题 🔍 目录 基础概念底层存储查询影响多字段聚合与排序分词器实战排查总结基础概念 💡 问题1:Elasticsearch 中的 keyword 和 text 类型有什么区别? 👉 查看参考答案 对比项keywordtext分词(Analysis)❌ 不进…...

Java 后端给前端传Long值,精度丢失的问题与解决

为什么后端 Long 类型 ID 要转为 String? 在前后端分离的开发中,Java 后端通常使用 Long 类型作为主键 ID(如雪花算法生成的 ID)。但如果直接将 Long 返回给前端,可能会导致前端精度丢失的问题,特别是在 J…...

【C++】 —— 笔试刷题day_29

一、排序子序列 题目解析 一个数组的连续子序列,如果这个子序列是非递增或者非递减的;这个连续的子序列就是排序子序列。 现在给定一个数组,然后然我们判断这个子序列可以划分成多少个排序子序列。 例如:1 2 3 2 2 1 可以划分成 …...

高光谱遥感图像处理之数据分类的fcm算法

基于模糊C均值聚类(FCM)的高光谱遥感图像分类MATLAB实现示例 %% FCM高光谱图像分类示例 clc; clear; close all;%% 数据加载与预处理 % 加载示例数据(此处使用公开数据集Indian Pines的简化版) load(indian_pines.mat); % 包含变…...

衡量 5G 和未来网络的安全性

大家读完觉得有帮助记得关注和点赞!!! 抽象 在当今日益互联和快节奏的数字生态系统中,移动网络(如 5G)和未来几代(如 6G)发挥着关键作用,必须被视为关键基础设施。确保其…...

【Vite】前端开发服务器的配置

定义一些开发服务器的行为和代理规则 服务器的基本配置 server: {host: true, // 监听所有网络地址port: 8081, // 使用8081端口open: true, // 启动时自动打开浏览器cors: true // 启用CORS跨域支持 } 代理配置 proxy: {/api: {target: https://…...

文章记单词 | 第85篇(六级)

一,单词释义 verb /vɜːrb/- n. 动词wave /weɪv/- v. 挥手;波动;挥舞 /n. 波浪;波;挥手add /d/- v. 增加;添加;补充说liberal /ˈlɪbərəl/- adj. 自由的;开明的;慷…...

通过实例讲解螺旋模型

目录 一、螺旋模型的核心概念 二、螺旋模型在电子商城系统开发中的应用示例 第 1 次螺旋:项目启动与风险初探...

(面试)Android各版本新特性

Android 6.0 (Marshmallow, API 23) 运行时权限管理:用户可在应用运行时动态授予或拒绝权限,取代安装时统一授权4。Doze模式与应用待机:优化后台耗电,延长设备续航5。指纹识别支持:原生API支持指纹身份验证。 Android…...

如何有效的开展接口自动化测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、简介 接口自动化测试是指使用自动化测试工具和脚本对软件系统中的接口进行测试的过程。其目的是在软件开发过程中,通过对接口的自动化测试来提高测…...

当 PyIceberg 和 DuckDB 遇见 AWS S3 Tables:打造 Serverless 数据湖“开源梦幻组合”

引言 在一些大数据分析场景比如电商大数据营销中,我们需要快速分析存储海量用户行为数据(如浏览、加购、下单),以进行用户行为分析,优化营销策略。传统方法依赖 Spark/Presto 集群或 Redshift 查询 S3 上的 Parquet/O…...

泰迪杯特等奖案例深度解析:基于MSER-CNN的商品图片字符检测与识别系统设计

(第四届泰迪杯数据挖掘挑战赛特等奖案例全流程拆解) 一、案例背景与核心挑战 1.1 行业痛点与场景需求 在电商平台中,商品图片常包含促销文字(如“3折起”“限时秒杀”),但部分商家采用隐蔽文字误导消费者(如“起”字极小或位于边角)。传统人工审核效率低(日均处理量…...

开发工具指南

后端运维场用工具 工具文档简介1panel安装指南运维管理面板网盘功能介绍网盘jenkins可以通过1panel 进行安装jpom辅助安装文档后端项目发布工具...

将 Element UI 表格元素导出为 Excel 文件(处理了多级表头和固定列导出的问题)

import { saveAs } from file-saver import XLSX from xlsx /*** 将 Element UI 表格元素导出为 Excel 文件* param {HTMLElement} el - 要导出的 Element UI 表格的 DOM 元素* param {string} filename - 导出的 Excel 文件的文件名(不包含扩展名)*/ ex…...

图像对比度调整(局域拉普拉斯滤波)

一、背景介绍 之前刷对比度相关调整算法,找到效果不错,使用局域拉普拉斯做图像对比度调整,尝试复现和整理了下相关代码。 二、实现流程 1、基本原理 对输入图像进行高斯金字塔拆分,对每层的每个像素都针对性处理,生产…...

【控制波形如何COPY并无痛使用】

控制波形如何COPY并无痛使用 波形分析思路概况记录波形 波形分析 通过逻辑分析仪可以解析到设备的控制波形,在一些对于电机控制类的设备上显得尤为重要。通过分析不同波形,将PWM的波形存储到程序中得以实现,并建立合理的数据结构。 思路概…...

CSDN-2024《AGP-Net: Adaptive Graph Prior Network for Image Denoising》

推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统&#xf…...

使用IDEA开发Spark Maven应用程序【超详细教程】

一、创建项目 创建maven项目 二、修改pom.xml文件 创建好项目后&#xff0c;在pom.xml中改为&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w…...

深入探索MCP通信:构建高效的MCP Client

在现代软件开发中&#xff0c;高效的通信机制是构建复杂系统的关键。MCP&#xff08;Model-Controller-Proxy&#xff09;架构作为一种新兴的开发模式&#xff0c;提供了强大的工具来实现客户端与服务器之间的高效通信。本文将通过实际代码示例&#xff0c;详细探讨如何使用MCP…...

【第76例】IPD流程实战:华为业务流程架构BPA进化的4个阶段

目录 简介 第一个阶段,业务流程架构BPA1.0 第二个阶段,业务流程架构BPA2.0 BPA3.0、4.0 作者简介 简介 不管业务是复杂还是简单,企业内外的所有事情、所有业务都最终会归于流程。 甚至是大家经常说的所谓的各种方法论,具体的落脚点还是在流程上。 比如把大象放进冰…...

25-05-16计算机网络学习笔记Day1

深入剖析计算机网络&#xff1a;今日学习笔记总结 本系列博客源自作者在大二期末复习计算机网络时所记录笔记&#xff0c;看的视频资料是B站湖科大教书匠的计算机网络微课堂&#xff0c;每篇博客结尾附书写笔记(字丑见谅哈哈) 视频链接地址 一、计算机网络基础概念 &#xf…...

车道线检测----CLRNet

继续更新本系列&#xff0c;本文CLRNet&#xff0c;文章主要目的是弄懂论文关键部分&#xff0c;希望对文章细节有一个深刻的理解&#xff0c;有帮助的话&#xff0c;请收藏支持。 CLRNet&#xff1a;用于车道检测的跨层精炼网络 摘要 车道在智能车辆的视觉导航系统中至关重要…...

maven和npm区别是什么

这是一个很容易搞糊涂新手的问题&#xff0c;反正我刚开始从课堂的知识转向项目网站开发时&#xff0c;被这些问题弄得晕头转向&#xff0c;摸不着头脑&#xff0c;学的糊里糊涂&#xff0c;所以&#xff0c;写了这么久代码&#xff0c;也总结一下&#xff0c;为后来者传授下经…...

【SpringBoot】从零开始全面解析SpringMVC (二)

本篇博客给大家带来的是SpringBoot的知识点, 本篇是SpringBoot入门, 介绍SpringMVC相关知识. &#x1f40e;文章专栏: JavaEE进阶 &#x1f680;若有问题 评论区见 &#x1f449;gitee链接: 薯条不要番茄酱 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条…...

Python连接redis

第一步安装redis Releases microsoftarchive/redis 安装时勾上所有能勾上的选项下一步即可 在CMD中pip install redis 安装redis pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple 配置redis 在redis安装目录下找到 修改 line 57 bind 0.0.0.0 line…...

Unity3D Overdraw性能优化详解

前端 在 Unity3D 开发中&#xff0c;Overdraw&#xff08;过度绘制&#xff09; 是一个常见的性能问题&#xff0c;尤其在移动端设备上可能导致严重的帧率下降。以下是关于 Overdraw 的详细解析和优化方法&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0…...

uni-app 中适配 App 平台

文章目录 前言✅ 1. App 使用的 Runtime 架构&#xff1a;**WebView 原生容器&#xff08;plus runtime&#xff09;**&#x1f4cc; 技术栈核心&#xff1a; ✅ 2. WebView Native 的通信机制详解&#xff08;JSBridge&#xff09;&#x1f4e4; Web → Native 调用&#xf…...

[CSS3]属性增强1

字体图标 使用字体图标可以实现简洁的图标效果, 字体图标展示的是图标, 本质是字体, 适合简单, 颜色单一的图标 优势 灵活性: 灵活的修改样式, 比如尺寸, 颜色等轻量级: 体积小, 渲染快, 降低服务器请求次数兼容性: 几乎兼容所有主流浏览器使用方便: 下载字体包使用字体图标…...

【Python+flask+mysql】网易云数据可视化分析(全网首发)

网易云数据可视化分析 项目概述 网易云数据可视化分析系统是一个基于Flask框架开发的Web应用&#xff0c;旨在对网易云音乐平台的用户、歌曲、专辑、歌单等数据进行全面的可视化分析。该系统通过直观的图表、表格和词云等形式&#xff0c;展示网易云音乐的数据分布特征&#…...

项目版本管理和Git分支管理方案

文章目录 一、团队协作1.项目团队与职责2.项目时间线与里程碑3.风险评估与应对措施4.跨团队同步会议&#xff08;定期&#xff09;跨团队同步会议&#xff08;双周) 5.版本升级决策树6.边界明确与路标制定a.功能边界划分b.项目路标制定b1、项目路标制定核心要素b2. 路标表格模板…...

Java 21 + Spring Boot 3.5:AI驱动的高性能框架实战

简介 在微服务架构日益普及的今天,如何构建一个既高性能又具备AI驱动能力的后端系统成为开发者关注的焦点。本篇文章将深入探讨Java 21与Spring Boot 3.5的结合,展示如何通过Vector API和JIT优化实现单线程性能提升30%,并利用飞算JavaAI生成智能重试机制和超时控制代码,解…...

【MySQL】索引太多会怎样?

在 MySQL 中&#xff0c;虽然索引可以显著提高查询效率&#xff0c;但过多的索引&#xff08;如超过 5-6 个&#xff09;会带来以下弊端&#xff1a; 1. 存储空间占用增加 每个索引都需要额外的磁盘空间存储索引树&#xff08;BTree&#xff09;。对于大表来说&#xff0c;多个…...

Flask 是否使用类似 Spring Boot 的核心注解机制

Flask 和 Spring Boot 架构风格不同:Spring Boot 是“注解驱动的全家桶框架”,而 Flask 是“微核心 + 显式扩展的 Python 微框架”。因此: ❌ Flask 没有类似 Spring Boot 的“核心注解机制”(如 @SpringBootApplication),而是使用函数装饰器(decorator)作为核心语法特…...

学习threejs,使用Physijs物理引擎,各种constraint约束限制

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...

城市排水管网流量监测系统解决方案

一、方案背景 随着工业的不断发展和城市人口的急剧增加&#xff0c;工业废水和城市污水的排放量也大量增加。目前&#xff0c;我国已成为世界上污水排放量大、增加速度快的国家之一。然而&#xff0c;总体而言污水处理能力较低&#xff0c;有相当部分未经处理的污水直接或间接排…...

redis数据结构-11(了解 Redis 持久性选项:RDB 和 AOF)

了解 Redis 持久性选项&#xff1a;RDB 和 AOF Redis 提供了多个持久性选项&#xff0c;以确保数据持久性并防止在服务器发生故障或重启时丢失数据。了解这些选项对于为您的特定使用案例选择正确的策略、平衡性能和数据安全至关重要。本章节将深入探讨 Redis 中的两种主要持久…...

掌握 Kotlin Android 单元测试:MockK 框架深度实践指南

掌握 Kotlin Android 单元测试&#xff1a;MockK 框架深度实践指南 在 Android 开发中&#xff0c;单元测试是保障代码质量的核心手段。但面对复杂的依赖关系和 Kotlin 语言特性&#xff0c;传统 Mock 框架常显得力不从心。本文将带你深入 MockK —— 一款专为 Kotlin 设计的 …...

2025/5/16

第一题 A. 例题4.1.2 潜水 题目描述 在马其顿王国的ohide湖里举行了一次潜水比赛。 其中一个项目是从高山上跳下水&#xff0c;再潜水达到终点。 这是一个团体项目&#xff0c;一支队伍由n人组成。在潜水时必须使用氧气瓶&#xff0c;但是每只队伍只有一个氧气瓶。 最多两…...

Detected for tasks ‘compileDebugJavaWithJavac‘ (17) and ‘kspDebugKotlin‘ (21).

1.报错 在导入Android源码的时候出现以下错误&#xff1a;Inconsistent JVM-target compatibility detected for tasks compileDebugJavaWithJavac (17) and kspDebugKotlin (21).。 Execution failed for task :feature-repository:kspDebugKotlin. > Inconsistent JVM-ta…...

嵌入式单片机中STM32F1演示寄存器控制方法

该文以STM32F103C8T6为示例,演示如何使用操作寄存器的方法点亮(关闭LED灯),并讲解了如何调试,以及使用宏定义。 第一:操作寄存器点亮LED灯。 (1)首先我们的目的是操作板子上的LED2灯,对其实现点亮和关闭操作。打开STM32F103C8T6的原理图,找到LED2的位置。 可以看到…...

【带文档】网上点餐系统 springboot + vue 全栈项目实战(源码+数据库+万字说明文档)

&#x1f4cc; 一、项目概括 本系统共包含三个角色&#xff1a; 管理员&#xff1a;系统运营管理者 用户&#xff1a;点餐消费用户 美食店&#xff1a;上传菜品与处理订单的店铺账号 通过对这三类角色的权限与业务分工设计&#xff0c;系统实现了点餐流程的全链路数字化&a…...

Spring Cloud:Gateway(统一服务入口)

Api 网关 也是一种服务&#xff0c;就是通往后端的唯一入口&#xff0c;类似于整个微服务架构的门面&#xff0c;所有的外部客户端进行访问&#xff0c;都需要经过它来进行过滤和调度&#xff0c;类似于公司的前台 而Spring Cloud Gateway就是Api网关的一种具体实现 网关的核心…...

Perl测试起步:从零到精通的完整指南

阅读原文 5.2 为什么你的Perl代码总是出问题&#xff1f;因为你还没开始测试&#xff01; "我的代码昨天还能运行&#xff0c;今天就莫名其妙报错了&#xff01;"、"我只是改了一个小功能&#xff0c;结果整个系统都崩溃了"、"这段代码不是我写的&am…...

【前端优化】vue2 webpack4项目升级webpack5,大大提升运行速度

记录一下过程 手里有个老项目&#xff0c;vue2webpack4 项目很大&#xff0c;每次运行、运行都要将近10分钟 现在又要往里面写很多东西&#xff0c;再不优化&#xff0c;开发着会更难受&#xff0c;所以决定先将它升级至webpack5 最初失败的尝试 直接在项目里安装了webpack5 但…...

【蓝桥杯省赛真题50】python字母比较 第十五届蓝桥杯青少组Python编程省赛真题解析

python字母比较 第十五届蓝桥杯青少年组python比赛省赛真题详细解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...