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

OceanBase 初探学习历程之——安装部署

一、介绍

        OceanBase 数据库是一个原生的分布式关系数据库,它是完全由阿里巴巴和蚂蚁集团自主研发 的项目。OceanBase 数据库构建在通用服务器集群上,基于 Paxos 协议和分布式架构,提供 金融级高可用和线性伸缩能力,不依赖特定硬件架构,具备高可用、线性扩展、高性能、低成 本等核心技术优势。

        OceanBase 数据库具有如下特点:

  1. 高可用 单服务器故障能够自愈,支持跨城多机房容灾,数据零丢失,可满足金融行业 6 级容灾标 准(RPO=0,RTO
  2. 在线性扩展 透明扩展,自动负载均衡,应用透明的水平扩展,集群规模可超过 1500 节点,数据量可达 PB 级,单表记录万亿行。
  3. MySQL/Oracle 高度兼容 社区版兼容 MySQL 协议、语法和使用习惯,MySQL 客户端工具可以直接访问 OceanBase 数据库。 企业版兼容 MySQL、Oracle 协议,需要使用 OceanBase 自己的驱动才可以访问 OceanB ase 数据库的 Oracle 租户。

    说明:MySQL 从 5.6 开始兼容,Oracle 从 Oracle 11g 开始兼容

  4. 高性能 准内存级数据变更操作、独创的编码压缩技术,结合线性水平扩展,TPC-C 测试达到 7.07 亿 tpmC。
  5. 低成本 使用 PC 服务器和低端 SSD,高存储压缩率降低存储成本,高性能降低计算成本,多租户 充分利用系统资源。
  6. 多租户 原生支持多租户架构,同一套数据库集群可以为多个独立业务提供服务,租户间数据隔离, 降低部署和运维成本。

二、安装部署

2.1 安装前准备

        OceanBase 数据库是一个分布式集群产品,在生产环境中至少要求三台机器,学习环境可以部 署单机版本。OceanBase 数据库的部署跟传统数据库的部署相比,存在很多共同的地方,对操 作系统硬件、软件设置、文件系统等会有一些最佳实践建议,这些是 OceanBase 数据库发挥 高性能稳定运行的基础。社区版提供了一些工具保证 OceanBase 数据库可以实现一定程度的自动化。

软件包下载地址如下:

  • 官网下载:https://open.oceanbase.com/softwareCenter/community
  • GitHub 下载:https://github.com/oceanbase/oceanbase/releases/
  • 阿里云 Yum 源:https://mirrors.aliyun.com/oceanbase/OceanBase.repo

2.2 安装部署资源要求

        OceanBase 数据库运行时会对主机资源有一些要求,主要是 CPU、内存和磁盘空间。安装 OceanBase 数据库的目的不同,对资源的要求也不同。

注意:这里性能测试环境和生产环境的资源要求只是建议。在社区版后续版本,会进一步降低对内 存的要求。

OceanBase 数据库对操作系统也有一些要求,目前仅支持以下系统:

  •  Redhat / CentOS 7.x/8.x
  •  SUSE / OpenSUSE 15.x
  •  Anlios 7.x/8.x
  • Debian 9.x
  • Ubuntu 20.x
  • 当然实践其他操作系统机遇以上内核高版本也支持。

2.3 安装过程

2.3.1、时间同步

sudo yum install ntp ntpdate -y
sudo crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

2.3.2 设置limit

sudo vim /etc/security/limits.conf
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited

2.3.3 设置sysctl系统参数

sudo vim /etc/sysctl.conf
## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000 
net.core.rmem_default = 16777216 
net.core.wmem_default = 16777216 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216net.ipv4.ip_local_port_range = 3500 65535 
net.ipv4.ip_forward = 0 
net.ipv4.conf.default.rp_filter = 1 
net.ipv4.conf.default.accept_source_route = 0 
net.ipv4.tcp_syncookies = 0 
net.ipv4.tcp_rmem = 4096 87380 16777216 
net.ipv4.tcp_wmem = 4096 65536 16777216 
net.ipv4.tcp_max_syn_backlog = 16384 
net.ipv4.tcp_fin_timeout = 15 
net.ipv4.tcp_max_syn_backlog = 16384 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_slow_start_after_idle=0vm.swappiness = 0
vm.min_free_kbytes = 2097152# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /ob_data/core-%e-%p-%t

2.3.4 关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

2.3.5 创建普通用户并设置密码

sudo useradd admin
sudo passwd admin
admin

2.3.6 硬盘规划

#ods环境配置,本地环境200G
/ob_data    1.2T                 #数据盘
/ob_redo    200G                 #存放 redo 日志
/home/admin/oceanbase    500G    #存放 OceanBase 数据库的二进制文件和运行日志

2.4 部署模式

2.4.1 规划

其中一台作为ODP
采用三副本部署模式,使用三台机器部署OceantBase集群

2.4.2 使用yum安装OBD

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y ob-deploy

2.4.3 安装oblibs

sudo yum install -y oceanbase-ce-libs

2.4.4 安装obclient

sudo yum install -y libobclient
sudo yum install -y obclient

2.4.5 创建目录并赋权

sudo mkdir -p  /home/admin/oceanbase /ob_redo   /ob_data /ob/obproxy
sudo chown -R admin.admin /home/admin/oceanbase /ob/obproxy  /ob_data /ob_redo

2.4.6 修改初始化集群文件:#在主节点上执行

obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml 

下载配置文件并修改:

https://github.com/oceanbase/obdeploy/blob/master/example/autodeploy/distributed-with-obproxy-example.yaml

user:username: adminpassword: admin
oceanbase-ce:servers:- name: server1ip: 172.16.79.57- name: server2ip: 172.16.79.58- name: server3ip: 172.16.79.59global:home_path: /home/admin/oceanbase data_dir: /ob_dataredo_dir: /ob_redoappname: obtestroot_password: cl8q!a#jrkYgMBHuproxyro_password: proxy@123server1:zone: zone1server2:zone: zone2server3:zone: zone3
obproxy:depends:- oceanbase-ceservers:- 172.16.79.136global:home_path: /ob/obproxycluster_name: obtestobproxy_sys_password: proxy@sys123observer_sys_password: proxy@123

2.4.7 初始化集群并查看

obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml 
obd cluster list

2.4.8 配置优化

obclient -h 172.16.79.136 -u root@sys -P 2883 -p'密码'

2.4.9 查询及参数优化

#查询系统保留内存,用于程序运行
SHOW PARAMETERS LIKE 'system_memory'\G;
#查询ob内存分配限制百分比
SHOW PARAMETERS LIKE 'memstore_limit_percentage'\G;
#查询ob预设可用最大内存
SHOW PARAMETERS LIKE 'memory_limit'\G;
#查看资源分配情况,切换到oceanbase
SELECT * FROM gv$unit\G;
#并行查询相关参数:
SHOW VARIABLES LIKE '%paral%';
#查看压缩情况:
SHOW PARAMETERS LIKE 'default_compress'\G;
#sys租户下查看资源单元配置,切换到oceanbase
SELECT * FROM __all_unit_config\G;

优化

 #设置系统保留内存ALTER system set system_memory='4G';#修改observer可以使用最大内存ALTER system set memory_limit='28G';#sys租户下修改资源单元配置:cpu/内存/硬盘等根据自己实际资源调整ALTER RESOURCE UNIT sys_unit_config MAX_CPU 1, MAX_MEMORY '2G', MAX_IOPS 10000,max_disk_size '20G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=1, MIN_MEMORY='2G', MIN_IOPS=5000;#并行查询参数优化:SET GLOBAL parallel_max_servers = 32;SET GLOBAL ob_max_parallel_degree = 128;SET GLOBAL parallel_servers_target=540;#修改内存分配限制百分比ALTER SYSTEM SET memstore_limit_percentage = '80';#慢查询执行时间阈值ALTER SYSTEM SET trace_log_slow_query_watermark = '1s';#cpu并发调度调整ALTER SYSTEM SET cpu_quota_concurrency = '4';ALTER SYSTEM SET resource_soft_limit = '100';#转储合并相关优化ALTER SYSTEM SET minor_freeze_times = 50;ALTER SYSTEM SET freeze_trigger_percentage = '60';ALTER SYSTEM SET data_copy_concurrency = 100;ALTER SYSTEM SET server_data_copy_out_concurrency = 10;ALTER SYSTEM SET server_data_copy_in_concurrency = 10;ALTER SYSTEM SET minor_warm_up_duration_time = '0s';ALTER SYSTEM SET memory_chunk_cache_size = 0;ALTER SYSTEM SET max_kept_major_version_number = '1';#事务相关优化ALTER SYSTEM SET clog_sync_time_warn_threshold = '1s';ALTER SYSTEM SET enable_one_phase_commit='False';#分区迁移速度控制ALTER SYSTEM SET data_copy_concurrency=40;ALTER SYSTEM SET server_data_copy_out_concurrency=20;ALTER SYSTEM SET server_data_copy_in_concurrency=20;#缓存刷新ALTER SYSTEM SET autoinc_cache_refresh_interval = '43200s';#系统相关,observer异常临时下线时间ALTER SYSTEM SET server_permanent_offline_time = '7200s';#关闭回收站以及truncate回滚参数SET GLOBAL recyclebin = 0;SET GLOBAL ob_enable_truncate_flashback = 0;#设置ob查询超时时间:默认10sset global ob_query_timeout = 20000000;#请求锁等待时间:为-1与ob查询超时时间相同SHOW VARIABLES LIKE 'ob_trx_lock_timeout';#事物超时时间:默认100s,保持默认SHOW VARIABLES LIKE 'ob_trx_timeout';#事物空闲超时时间:默认120s,保持默认SHOW VARIABLES LIKE 'ob_trx_idle_timeout';#设置查询时间阈值ALTER SYSTEM SET large_query_threshold = '10s';#设置弱一致性读版本号的刷新周期,表示不再刷新弱一致性读版本号,不提供单调读功能ALTER SYSTEM SET weak_read_version_refresh_interval = '0';#设置系统日志所能占用的磁盘 IO 带宽上限,超过丢掉ALTER SYSTEM SET syslog_io_bandwidth_limit = "10m";#设置系统日志级别ALTER SYSTEM SET syslog_level = "PERF";#用于设置每日合并工作的线程数ALTER SYSTEM SET merge_thread_count = "64";#用于设置数据坏块自检周期,为0表示不检测ALTER SYSTEM SET builtin_db_data_verify_cycle = "0";#设置合并时候数据列统计信息的采样率ALTER SYSTEM SET merge_stat_sampling_ratio = "1";#设置合并时宏块的校验级别,0表示不校验ALTER SYSTEM SET micro_block_merge_verify_level = "0";#设置触发全局冻结的租户使用内存阈值ALTER SYSTEM SET freeze_trigger_percentage = "50";#设置小合并时的并发线程数,期望提高转储的速度ALTER SYSTEM SET minor_merge_concurrency = 32;#增大 mini_merge 的线程数,期望提高 mini_merge 的速度(默认值为 3)。调大为 8 以后,发现会导致压测中 CPU 使用率有时飙升至 90%,对性能有影响。ALTER SYSTEM SET _mini_merge_concurrency = 8; #OceanBase 占系统总内存的比例,提高 OceanBase 可用的内存量ALTER SYSTEM SET memory_limit_percentage = 90;  #obproxy优化#判断是否开启 PL 路由SHOW PROXYCONFIG LIKE 'enable_partition_table_route';ALTER PROXYCONFIG SET enable_partition_table_route = False;#判断是否开启 partition table 路由SHOW PROXYCONFIG LIKE 'enable_pl_route';ALTER PROXYCONFIG SET enable_pl_route = False;#OBProxy 所能接受的客户端最大连接数SHOW PROXYCONFIG LIKE 'client_max_connections';ALTER PROXYCONFIG SET client_max_connections = 20000;

2.4.10 创建使用租户

 创建资源单元:unit1

CREATE RESOURCE UNIT unit1 MAX_CPU 8, MAX_MEMORY '12G', MAX_IOPS 10000,max_disk_size '80G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=6, MIN_MEMORY='12G', MIN_IOPS=5000; #查看资源单元 SELECT * FROM oceanbase.__all_unit_config;

创建资源池:

CREATE RESOURCE POOL pool1 UNIT='unit1',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3');
#查询资源池
select * from __all_resource_pool\G;

创建租户:

CREATE TENANT IF NOT EXISTS test charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1');
#查询租户:
SELECT * FROM oceanbase.gv$tenant;
授权:
ALTER TENANT test SET VARIABLES ob_tcp_invited_nodes='%';

在test租户下,使用root登录,初始化的oceanbase的root密码为空:

obclient -h 172.16.79.136 -u root@test -P 2883 -p
#修改密码:
ALTER USER root IDENTIFIED BY '密码';

在test租户下创建用户并授权:

create user if not exists test@'%' identified by 'test';
grant all on *.* to test@'%';

使用test用户登录:

obclient -h 192.168.10.10 -P2883 -utest@test -ptest

        到此位置基本完成基础安装部署,后续需要安装部署ocp监控 进行集群查看及监控,后续继续分享。

(若重要,处处都是办法;若不重要,比比皆是理由。)

相关文章:

OceanBase 初探学习历程之——安装部署

一、介绍 OceanBase 数据库是一个原生的分布式关系数据库,它是完全由阿里巴巴和蚂蚁集团自主研发 的项目。OceanBase 数据库构建在通用服务器集群上,基于 Paxos 协议和分布式架构,提供 金融级高可用和线性伸缩能力,不依赖特定硬件…...

Windows 下免费开源的多格式文件差异对比工具

软件介绍 有这样一款诞生于 2000 年、专为 Windows 系统打造的开源免费工具,截至 2025 年 1 月已更新至 2.16.46 版本,它就是文件与文件夹比较的得力助手。 其支持文本文件、Word、Excel、PPT 网页、图像等多种格式对比,利用高亮显示行内差…...

Vue3+element UI:使用el-dialog时,对话框不出现解决方案

​​​​ 解决方案&#xff1a;在<el-dialog>标签中&#xff0c;添加:append-to-body“true”*&#xff0c;对话框即可弹出。*...

postman调用ollama的api

按照如下设置&#xff0c;不需要设置key 保持长会话的方法 # 首次请求 curl http://localhost:11434/api/generate -d {"model": "deepseek-r1:32b","prompt": "请永久记住&#xff1a;110&#xff0c;1-12&#xff0c;之后所有数学计算必…...

PyTorch的dataloader制作自定义数据集

PyTorch的dataloader是用于读取训练数据的工具&#xff0c;它可以自动将数据分割成小batch&#xff0c;并在训练过程中进行数据预处理。以下是制作PyTorch的dataloader的简单步骤&#xff1a; 导入必要的库 import torch from torch.utils.data import DataLoader, Dataset定…...

如何调用 DeepSeek API:详细教程与示例

目录 一、准备工作 二、DeepSeek API 调用步骤 1. 选择 API 端点 2. 构建 API 请求 3. 发送请求并处理响应 三、Python 示例&#xff1a;调用 DeepSeek API 1. 安装依赖 2. 编写代码 3. 运行代码 四、常见问题及解决方法 1. API 调用返回 401 错误 2. API 调用返回…...

Hadoop-HA集群部署

集群的服务器规划&#xff1a; 配置免密登陆&#xff1a;&#xff08;这里示范的是第一台服务器&#xff0c;其余的操作一样&#xff09;&#xff0c;免密登陆是为了执行脚本统一操作&#xff0c;启动&#xff0c;如&#xff08;hdfs集群&#xff1a;1上启动2.5.6.7&#xff09…...

三、linux字符驱动详解

在上一节完成NFS开发环境的搭建后&#xff0c;本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分&#xff0c;主要负责管理与字符设备&#xff08;如串口、键盘等&#xff09;的交互&#xff0c;并为用户空间程序提供统一的读写操作接口。 驱动代码…...

【Research Proposal】基于提示词方法的智能体工具调用研究——研究问题

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;研究问题1. 如何优化提示词方法以提高智能体的工具调用能力&#xff1f;2. 如何解决提示词方法在多模态任务中的挑战&#xff1f;3. 如何通过提示词优化智能体…...

【从0做项目】Java文档搜索引擎(9)烧脑终章!

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 文章导读 零&#xff1a;项目结果展示 一&#xff1a;导入 二&#xff1a;问题引入 1&#xff1a;情…...

python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04

mysql sql script: create table School 表 (SchoolId char(5) NOT NULL comment主鍵primary key&#xff0c;學校編號,SchoolName nvarchar(500) NOT NULL DEFAULT comment 學校名稱,SchoolTelNo varchar(8) NULL DEFAULT comment電話號碼,PRIMARY KEY (SchoolId) #主…...

如何为自己的 PDF 文件添加密码?在线加密 PDF 文件其实更简单

随着信息泄露和数据安全问题的日益突出&#xff0c;保护敏感信息变得尤为重要。加密 PDF 文件是一种有效的手段&#xff0c;可以确保只有授权用户才能访问或修改文档内容。本文将详细介绍如何使用 CleverPDF 在线工具为你的 PDF 文件添加密码保护&#xff0c;确保其安全性。 为…...

echarts 折线图动态基准线设置超出基准线标红

基准线属性&#xff1a;markLine 线条标红关键属性&#xff1a;visualMap 小于&#xff1a; lt (less than) 大于&#xff1a;gt (greater than) 小于等于&#xff1a;lte (Less than or equal to) 大于等于&#xff1a;gte (Greater than or equal to) 1、基础应用——2条基准…...

Part 3 第十二章 单元测试 Unit Testing

概述 第十二章围绕单元测试展开&#xff0c;阐述了单元测试的实践与重要性&#xff0c;通过对比其他测试类型&#xff0c;突出其特点&#xff0c;还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容&#xff0c;为编写高质量单元测试提供指导。 章节概要 1…...

C++与Python:两种编程语言的区别

C和Python都是当今编程领域广泛使用的语言&#xff0c;它们各有特色&#xff0c;适用于不同的开发场景。本文将从语言特性、性能、学习难度、应用领域等多个方面探讨C与Python之间的区别。 一、语言特性 类型系统&#xff1a; C&#xff1a;是一种静态类型语言&#xf…...

Springboot 高频面试题

以下是Spring Boot的高频面试题及答案和底层原理解释&#xff1a; 基础概念 什么是Spring Boot&#xff0c;其主要特点是什么&#xff1f; 答案&#xff1a; Spring Boot本质上是一个建立在Spring框架之上的快速应用开发框架。其主要特点包括&#xff1a; 启动器&#xff1a;一…...

常用电脑,护眼软件推荐 f.lux 3400K | 撰写论文 paper

常用电脑&#xff1f;平均每天用 5 个小时&#xff1f;你就要考虑用一个护眼软件了&#xff0c;对皮肤也好。因为电脑屏幕有辐射&#xff0c;比如蓝光。 f.lux 作为一款专业护眼软件&#xff0c;值得使用。之前用了三年的 Iris Pro&#xff0c;现在 f.lux 做的更好了。 使用…...

MacOS下使用Ollama本地构建DeepSeek并使用本地Dify构建AI应用

目录 1 大白话说一下文章内容2 作者的电脑配置3 DeepSeek的本地部署3.1 Ollamal的下载和安装3.2 选择合适的deepseek模型3.3 安转deepseek 4 DifyDeepSeek构建Al应用4.1 Dify的安装4.1.1 前置条件4.1.2 拉取代码4.1.3 启动Dify 4.2 Dify控制页面4.3 使用Dify实现个“文章标题生…...

如何有效利用MYSQL的连接数

连接数配置2500~3000 依然发现连接不够用&#xff1f; -- 查看当前最大连接数 SHOW VARIABLES LIKE MAX_CONNECTIONS; -- 查看当前总链接数 SHOW STATUS LIKE Threads_connected; -- 查看当前进程明细 SHOW PROCESSLIST; 合理设置以下参数&#xff1a; 1. MySQL 的参数设置 …...

调用click.getchar()时Windows PyCharm无法模拟键盘输入

文章目录 问题描述解决方案参考文献 问题描述 调用 click.getchar() 时&#xff0c;Windows PyCharm 无法模拟键盘输入 解决方案 Run → Edit Configurations… → Modify options → Emulate terminal in output console 参考文献 Terminal emulator | PyCharm Documentati…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...