OceanBase创建租户

租户是集群之上的递进概念,OceanBase 数据库采用了多租户架构。

集群偏部署层面的物理概念,是 Zone 和节点的集合,租户则偏向于资源层面的逻辑概念,是在物理节点上划分的资源单元,可以指定其资源规格,包括 CPU、内存、日志盘空间、IOPS 等。

租户类似于传统数据库的数据库实例,租户通过资源池与资源关联,从而独占一定的资源配额,可以动态调整资源配额。在租户下可以创建 Database、表、用户等数据库对象。

OceanBase 数据库 V4.0 开始,有三种类型的租户:系统租户、用户租户以及每个用户租户对应的 Meta 租户。
在这里插入图片描述
用户租户可以被看作是一个数据库实例,它由系统租户根据业务需要所创建出来,用户租户:

  • 可以创建自己的用户
  • 可以创建数据库(database,仅 MySQL 兼容模式支持)、表(table)等所有客体对象
  • 有自己独立的系统表和系统视图
  • 有自己独立的系统变量
  • 数据库实例所具备的其他特性

创建用户租户需理解下面4张表的逻辑关系:

  • 资源规格:对应 DBA_OB_Unit_CONFIGS 表,定义了常见物理资源项的大小,包括 CPU、内存、磁盘空间、IOPS 等。创建资源池时指定其资源规格,从而根据定义创建资源单元
  • 资源单元Unit:对应 DBA_OB_UNITS 表,是资源调度的基本单位,具有节点、Zone、Region 等位置属性
  • 资源池:对应 DBA_OB_RESOURCE_POOLS 表,是资源分配的基本单位,创建资源池时会实际创建 Unit,如对应节点预留资源不够将会创建失败
  • 租户:对应 DBA_OB_TENANTS 表,创建租户需指定RESOURCE_POOL_LIST资源池,从而拥有指定资源池的 Unit

创建租户的依赖关系是:租户 -> 资源池 -> 资源规格,因此创建租户时需要反过来,先创建资源规格。
在这里插入图片描述
如上图,展示了一个由 6 个 Unit 组成的资源池 a_pool,该资源池具有如下重要属性:

  • ZONE_LIST:描述了该资源池中的 Unit 分布在哪些 Zone,图中为 ZONE_LIST='zone1,zone2,zone3'
  • Unit_NUM:描述了 ZONE_LIST 中每个 Zone 中的 Unit 个数,图中为 Unit_NUM=2
  • Unit_CONFIG_ID:描述了该资源池关联的资源规格,从而决定该资源池中每个 Unit 的物理资源大小,包括 CPU、内存、日志盘空间、IOPS 等。

通过 Unit 的概念,我们将 OceanBase 数据库的物理概念和逻辑概念进行了关联。每个租户有若干 Unit,分布于若干 Zone 的若干节点上。而每个节点上分布有若干个 Unit,这些 Unit 归属于不同租户。概括的讲:集群由节点组成,节点是 Unit 的容器。租户由 Unit 组成,Unit 是数据库对象的容器。

设置租户a 的 RESOURCE_POOL_LIST=('a_pool'),其部署图如下:
在这里插入图片描述

1.创建资源规格
1.使用 root 用户登录到集群的 sys 租户。
obclient -h192.18.113.161 -P2883 -uroot@sys#cluster -p**** -A

2.USE oceanbase;

3.查看资源规格信息:SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS;

4.创建一个名称为 S1_unit_config 的资源规格,其资源配置为 CPU 为 1 核,内存 5G,日志盘空间 20G:
 CREATE RESOURCE UNIT S1_unit_config MEMORY_SIZE = '5G', MAX_CPU = 1, MIN_CPU = 1, LOG_DISK_SIZE = '20G',  MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;
 
5.查询 DBA_OB_UNIT_CONFIGS 视图,确认资源规格创建成功
SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE NAME = 'S1_unit_config';

在这里插入图片描述
创建资源规格语法:CREATE RESOURCE UNIT unit_name MEMORY_SIZE [=] ‘size_value’, MAX_CPU [=] cpu_num, [LOG_DISK_SIZE [=] ‘size_value’,] [MAX_IOPS [=] iops_num,] [MIN_CPU [=] cpu_num,] [MIN_IOPS [=] iops_num];

创建资源规格时,MAX_CPU 和 MEMORY_SIZE 必选。

  • unit_name:资源规格名称。
  • MEMORY_SIZE:内存规格,其最小值由隐藏配置项 __min_full_resource_pool_memory 控制,默认为 5G,支持最小可以调整为 4G。OceanBase 数据库 V4.0 开始不支持内存超卖。
  • MAX_CPU:CPU 规格上限,MIN_CPU 是 CPU 规格下限,单位是核数。如果用户没有指定 MIN_CPU,默认等于 MAX_CPU 值。
  • MIN_CPU:最小的 CPU 规格,所有租户的 MIN_CPU 的总和不能超过该节点 CPU 总容量 CPU_CAPACITY
  • MAX_IOPSMIN_IOPS: 指定当前 Unit 可使用的 IOPS 资源的上限和下限,最小值均为 1024,并且要求 MAX_IOPS >= MIN_IOPS
  • LOG_DISK_SIZE:日志盘空间,OceanBase 数据库 V4.0 会按租户管理日志盘空间,系统为各个租户预留日志盘空间,实现按租户隔离。当用户没有指定时,LOG_DISK_SIZE 默认值是内存规格的 3 倍大小,最小为 2G。
  • OceanBase 数据库 V4.0 支持租户间 IOPS 隔离,通过 MAX_IOPSMIN_IOPSIOPS_WEIGHT 三个参数决定。IOPS 规格参数默认不需要指定,系统根据 CPU 规格自动计算。
2.创建资源池

创建资源规格后,可以在创建资源池时指定资源规格,从而使用相应大小的资源单元,并最终分配给相应的租户。

1.查看已有资源池:SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS;

2..创建名为mq_pool_01 的资源池,在zone1、zone2 里各创建1个 Unit,每个Unit的资源规格为S1_unit_config
CREATE RESOURCE POOL mq_pool_01  UNIT='S1_unit_config', UNIT_NUM=1, ZONE_LIST=('zone1','zone2'); 

3.查询资源池是否创建成功:SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'mq_pool_01';

在这里插入图片描述
ocp_express,会创建一个ocp租户,且使用ocp_unit资源单元,该资源规格使用16G内存,准备把ocp租户删除了再创建。

语法:CREATE RESOURCE POOL poolname UNIT [=] unitname, UNIT_NUM [=] unitnum, ZONE_LIST [=] (‘zone’ [, ‘zone’ …]);

参数说明:

  • UNIT:该资源池的资源规格,输入资源规格名称。
  • UNIT_NUM:该资源池在目标 Zone 的 Unit 个数,它的值要小于目标 Zone 的节点个数,且每个节点上最多只能分布同一个租户的一个 Unit。
  • ZONE_LIST:资源池的 Zone 分布。OceanBase 数据库会在 ZONE_LIST 描述的每个 Zone 里面创建 UNIT_NUM 个 Unit,每个 Unit 的资源规格为 UNIT 参数设置的值。
3.创建租户

OceanBase 数据库支持两种类型的租户,MySQL 兼容模式和 Oracle 兼容模式。创建租户时,需要指定租户的类型。租户创建后,租户类型无法修改(社区版只能是MySQL模式)

1.查看所有的租户信息:SELECT * FROM oceanbase.DBA_OB_TENANTS;

2.创建一个名为 mq_t1 的租户(默认为 MySQL 模式租户),副本数为3,资源池指定为 mq_pool_01,Primary Zone 为 zone1,zone2,zone3,允许所有 IP 连接数据库。

CREATE TENANT IF NOT EXISTS mq_t1  PRIMARY_ZONE='zone1,zone2,zone3', RESOURCE_POOL_LIST=('mq_pool_01') set OB_TCP_INVITED_NODES='%';

3.查询确认租户创建成功:SELECT * FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';

4.租户创建成功后,可以尝试登录 mq_t1 租户,默认管理员用户(MySQL 模式为 root,Oracle 模式为 sys)的密码为空,需要及时修改管理员用户的密码
 4.1.登录:obclient -h192.168.113.161 -P2883 -uroot@mq_t1#cluster  -A
 4.2.修改密码:ALTER USER root IDENTIFIED BY Admin123456@;
 4.3.修改密码成功后,重新登录租户:obclient -h192.168.113.161 -P2883 -uroot@mq_t1#cluster -p**** -A

语法:CREATE TENANT [IF NOT EXISTS] tenant_name
PRIMARY_ZONE [=] zone,
RESOURCE_POOL_LIST [=](poolname [, poolname…])
[ENABLE_ARBITRATION_SERVICE = {true | false}]
{SET | SET VARIABLES | VARIABLES} system_var_name = expr [,system_var_name = expr] …

参数说明:

  • IF NOT EXISTS:可选参数,如果要创建的租户名已存在,并且没有指定 IF NOT EXISTS,则会出现错误。

  • tenant_name:指定租户名称,最长 128 个字符,字符只能是大小写英文字母、数字和下划线,而且必须以字母或下划线开头。

  • PRIMARY_ZONE:指定租户的 Primary Zone,指定了租户提供读写服务的 Zone 的优先级。实际上是一个 Zone 的列表,列表中包含多个 Zone。当列表包含多个 Zone 时,使用分号(;)分隔的 Zone 具有从高到低的优先级,使用逗号(,)分隔的 Zone 具有相同优先级,表示流量打散在多个 Zone 上,这几个 Zone 同时提供服务。

    例如,primary_zone ='zone1;zone2,zone3' 表示该租户优先由 zone1 提供读写服务,zone1 比 zone2、zone3 的优先级高,zone2 和 zone3 是同一优先级。在指定 PRIMARY_ZONE 时,其值可以设置为 RANDOM(必须大写),表示随机选择最高优先级内的任意一个 Zone 作为 Primary Zone

  • RESOURCE_POOL_LIST:指定分配给租户的资源池列表,必填。如果有多个资源池,要求多个资源池的 UNIT_NUM 个数一致。

    租户的副本分布的 Zone List 继承于 RESOURCE_POOL_LISTZONE_LIST 属性,租户的副本个数继承于 RESOURCE_POOL_LISTZONE_LIST 属性的个数,租户在每个 Zone 的 Unit 个数继承于 RESOURCE_POOL_LISTUNIT_NUM 属性、租户的 Unit 的资源规格继承于 RESOURCE_POOL_LIST 的 Unit 属性。

  • ENABLE_ARBITRATION_SERVICE:指定租户是否开启仲裁服务,如果不显示指定,默认创建的租户其仲裁服务为关闭状态。如果创建租户的时候未开启仲裁服务,可以在创建租户后再开启仲裁服务,详细操作请参见 为租户开启仲裁服务。该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持仲裁服务功能。

  • system_var_name:指定系统变量或配置项。

    • OB_TCP_INVITED_NODES:用于指定租户连接的白名单,即允许哪些客户端 IP 连接该租户。示例中 % 表示所有客户端都可登录,如果不指定 OB_TCP_INVITED_NODES 的值,则默认租户的连接方式为只允许本机的 IP 登录该租户。白名单配置的详细介绍,参见 查看和设置白名单。
    • OB_COMPATIBILITY_MODE:用于指定租户的兼容模式,可选择 MySQL 或 Oracle 兼容模式,并且只能在创建时指定。如果不指定 OB_COMPATIBILITY_MODE,则默认兼容模式为 MySQL 模式。
4.查看租户和资源信息
1.查看所有资源规格信息
SELECT * FROM DBA_OB_UNIT_CONFIGS;

2.查看所有资源池信息
SELECT * FROM DBA_OB_RESOURCE_POOLS;

3.查看所有的租户信息,其LOCALITY字段为租户副本分布
SELECT * FROM DBA_OB_TENANTS;

4.关联查询租户资源配置信息
SELECT c.TENANT_ID, e.TENANT_NAME, concat(c.NAME, ': ', d.NAME) `pool:conf`,concat(c.UNIT_COUNT, ' unit: ', d.min_cpu, 'C/', ROUND(d.MEMORY_SIZE/1024/1024/1024,0), "G") unit_info FROM DBA_OB_RESOURCE_POOLS c, DBA_OB_UNIT_CONFIGS d, DBA_OB_TENANTS e  WHERE c.UNIT_CONFIG_ID=d.UNIT_CONFIG_ID AND c.TENANT_ID=e.TENANT_ID AND c.TENANT_ID>1000 ORDER BY c.TENANT_ID;

5.查看租户的资源单元部署位置
SELECT a.TENANT_NAME,a.TENANT_ID,b.SVR_IP FROM DBA_OB_TENANTS a,GV$OB_UNITS b WHERE a.TENANT_ID=b.TENANT_ID;

6.查看节点的 Unit 信息
SELECT * FROM GV$OB_UNITS;

7.查看 OBServer 的信息
SELECT * FROM GV$OB_SERVERS;
5.查看和设置租户白名单

通过租户白名单功能可以设置允许哪些客户端访问当前租户,通过租户系统变量 ob_tcp_invited_nodes 的值来确定。系统支持以下多种租户白名单格式:

  • IP 地址的形式:10.10.10.10,10.10.10.11
  • 子网/掩码的形式:10.10.10.0/24
  • 模糊匹配的形式:10.10.10.% 或者 10.10.10._
  • 多种格式混合的形式:10.10.10.10,10.10.10.11,10.10.10.%,10.10.10._,10.10.10.0/24
1.系统租户管理员和用户租户管理员都可登录数据库,去修改白名单
obclient -h192.168.113.161 -P2883 -uroot@mq_t1#cluster  -A

2.查看租户白名单
SHOW VARIABLES LIKE 'ob_tcp_invited_nodes';

3.修改租户的白名单配置
ALTER TENANT mq_t1 VARIABLES ob_tcp_invited_nodes = '192.168.113.%';

6.租户扩缩容

租户扩/缩容可以提升/降低计算能力和存储容量,OceanBase 数据库提供了提高/降低资源规格、增加/减少服务节点两种途径来实现扩缩容:

  • 提高单节点的服务能力:调大租户的资源规格(Unit Config),从而达到单节点的服务能力提升。

    详细信息,参见 通过调整资源规格实现租户扩缩容。

  • 增加服务节点:通过增加 Unit Number 和增加 Primary Zone,从而增加服务节点,达到租户总服务能力的提升。这里的扩容操作可以抽象为:将 N 个服务单元扩容为 M 个服务单元,其中,M > N。

    • Unit Number 由 N 变为 M 时,表示每个 Primary Zone 上,需要新增 M - N 个日志流,分布在 M - N 个新增的 Unit Group 上。

      详细信息,参见 通过调整 Unit Number 实现租户扩缩容。

    • Primary Zone 个数由 N 变为 M 时,表示每个 Unit Group 内,需要新增 M - N 个日志流,其 Leader 分布在 M - N 个新增的 Primary Zone 上。

      详细信息,参见 通过调整 Primary Zone 实现租户扩缩容。

缩容是扩容的反操作,本质上是降低租户的服务能力,包括计算能力和存储容量。可以是调小资源规格,从而降低单节点的服务能力;也可以是通过减少服务节点,包括减少 Primary Zone 个数和减少 Unit Number,从而降低租户的总服务能力。

7.修改资源池属性

修改资源池属性,即是调整资源池配置的 UNITUNIT_NUMZONE_LIST 等参数信息,是实现租户扩容或缩容的另一种方式,如,调大 UNIT_NUM 可以增加每个 Zone 中节点数量达到扩容的目的。

1.查看资源池
SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'mq_pool_01';

2.资源池未被分配给租户,使用ALTER RESOURCE POOL语句
 2.1.修改资源池 mq_pool_01 的资源规格为 'S2_unit_config',资源单元个数为 3,ZONE_LIST 为 'zone1','zone2','zone3'。
 2.2.ALTER RESOURCE POOL mq_pool_01 UNIT='S2_unit_config';
 2.3.ALTER RESOURCE POOL mq_pool_01 UNIT_NUM=2;
 2.4.ALTER RESOURCE POOL mq_pool_01 ZONE_LIST=('zone1','zone2','zone3');

3.资源池已被分配给租户,使用ALTER RESOURCE TENANT语句
 3.1.修改资源池 mq_pool_01 的资源规格为 'S2_unit_config',资源单元个数为 3,ZONE_LIST 为 'zone1','zone2','zone3'。
 3.2.ALTER RESOURCE POOL mq_pool_01 UNIT='S2_unit_config';
 3.3.tips:ALTER RESOURCE TENANT mq_t1 UNIT_NUM=3;
 3.4.ALTER RESOURCE POOL mq_pool_01 ZONE_LIST=('zone1','zone2','zone3');

语法:ALTER RESOURCE POOL pool_name UNIT [=] unit_name, UNIT_NUM [=] unit_num, ZONE_LIST [=] (‘zone’ [, ‘zone’ …]);

参数说明:

  • pool_name:资源池名称。
  • UNIT:该资源池的资源规格。
  • UNIT_NUM:资源单元个数。增加 Unit 数量时,UNIT_NUM 的值不能大于每个 Zone 内 OBServer 的个数。
  • ZONE_LIST:资源池的 Zone 分布。
8.修改租户属性

修改租户的副本数、Zone 列表、主 Zone 以及系统变量值等

租户属性修改的常见场景:

  • 修改租户的 Primary Zone:Primary Zone 描述了 Leader 副本的偏好位置,而 Leader 副本承载了业务的强一致读写流量,即 Primary Zone 决定了 OceanBase 数据库的流量分布。通过修改 Primary Zone 属性可以切换业务流量,或者是从一个机房切换到另一个机房,或者是从一个城市切换到另一个城市,适用于容灾场景、扩缩容等场景。
  • 修改租户的 Locality:Locality 描述了数据的多个副本的类型及分布策略。通过修改 Locality 属性可以调整租户的部署架构,适用于机房搬迁、调整容灾级别等场景。
1.登录系统租户
obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -A

2.进入 oceanbase 数据库:USE oceanbase;

3.查看租户的配置信息:SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';

4.通过 ALTER TENANT 语句,修改租户属性

5.修改租户 mq_t1 的 Primary Zone 为 "zone1,zone2",Locality 为 "F@sa128_obv4_1,F@sa128_obv4_2,F@sa128_obv4_3"
 5.1.ALTER TENANT mq_t1 PRIMARY_ZONE='zone1,zone2';
 5.2.ALTER TENANT mq_t1 LOCALITY="F@zone1,F@zone2,F@zone3";

语法:ALTER TENANT {tenant_name | all } [SET] [tenant_option_list] [opt_global_sys_vars_set]

参数说明:

  • {tenant_name | all }:指定待修改的租户,all 表示所有租户。
  • PRIMARY_ZONE:指定租户的 Primary Zone。
  • RESOURCE_POOL_LIST:指定资源池列表。每次仅支持添加或删除一个资源池。
  • LOCALITY:描述副本在 Zone 间的分布情况,如:F@zone1,F@zone2,F@zone3 表示 zone1zone2zone3 为全功能副本。该参数增加 Zone 配置时需要租户资源池的 ZONE_LIST 包含该 Zone。
9.删除租户和恢复租户

OceanBase 数据库支持通过 DROP TENANT 语句删除租户,删除租户后,租户下的数据库和表也同时被删除。但是租户使用的资源池不会被删除。资源池可以继续给其他租户使用。

  • 当系统租户开启回收站功能时,DROP TENANT 操作表示删除的租户会进入回收站。对于回收站中的租户,后续系统租户可以通过租户级回收站功能进一步删除或恢复该租户,回收站相关操作参见 回收站概述。
  • 当系统租户关闭回收站功能时,DROP TENANT 操作会直接删除租户,租户下的数据库和表也同时被删除。
1.查看租户
SELECT * FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';

2.查看当前系统租户中的回收站对象,OceanBase默认开启回收站功能
SHOW RECYCLEBIN;

3.删除租户: DROP TENANT mq_t1;

4.恢复回收站中的租户:FLASHBACK TENANT mq_t1 TO BEFORE DROP;

根据业务情况创建的租户就可以给使用方了,如果要扩容、调整部署分布可以根据上面的文档进行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345229.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据平台红蓝对抗 - 磨利刃,淬精兵!

背景 目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复杂&a…

滚动条样式修改

对于 Chrome 和 Safari 用户 如果正在使用基于 WebKit 的浏览器,如 Chrome 或 Safari,可以使用以下代码来自定义滚动条样式。将此代码加入到你的 CSS 文件中: /* 设置滚动条的宽度 */ ::-webkit-scrollbar {width: 6px; }/* 设置滚动条轨道…

C++设计模式之迭代器模式

【声明】本题目来源于卡码网(https://kamacoder.com/) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是迭代器模式(第19种设计模式) 迭代器模式是⼀种行为设计模…

蓝桥杯---三羊献瑞

观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 答案 代码 public class _03三羊献瑞 {public static void main(String[] args) {//c 生 b 瑞 g 献 d 辉…

算法练习-螺旋矩阵(思路+流程图+代码)

难度参考 难度:中等 分类:数组 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。 题目 给定一个正整数n,生成一个包含1到 n^2 所有元…

BACnet网关BL121BN 实现稳定可靠、低成本、简单的楼宇自控协议BACnet转OPC UA解决方案

随着楼宇自控系统的迅猛发展,人们深刻认识到在楼宇暖通行业中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的楼宇暖通数据传输解决方案——协议转换网关应运而生,广泛应用于楼宇自控和暖通空调系统应用中。 钡铼技术…

【数据结构】 循环队列的基本操作 (C语言版)

目录 一、顺序队列 1、顺序队列的定义: 2、顺序队列的优缺点: 二、循环队列 1、循环队列的定义: 2、循环队列的优缺点: 三、循环队列的基本操作算法(C语言) 1、宏定义 2、创建结构体 3、循环队…

PPO学习

openai用tf实现的真的看不懂,大佬的世界… PPO的详细细节 1. 奖励模型和策略的价值头将 query 和 response 的连接作为输入 奖励模型和策略的价值头 不 仅仅查看响应。相反,它将 query 和 response 连接在一起,作为 query_response def ge…

如何群发邮件outlook?外贸邮件群发教程?

outlook怎么设置邮件群发?outlook邮箱群发邮件方法? 在日常生活中,我们经常需要给多个人发送相同的邮件。这时候,群发邮件就显得尤为重要。Outlook作为一款常用的办公软件,提供了强大的邮件群发功能。蜂邮EDM就教大家…

Linux 文件:IO接口详解及实操

一、C语言中的文件IO读写操作 在c语言文件中&#xff0c;创建、打开、读、写操作可以通过如下的代码进行&#xff1a; 1.1写文件 通过w指令对文件进行写入操作时&#xff0c;编译器会先将文件内容清空然后重新写入。 #include <stdio.h> #include <string.h> i…

前端上传大文件使用分片上传

前提:分片上传针对于一些大的文件、普通大小的文件使用element中的上传组件可以实现效果,例如几G的文件就会比较卡,所以这时候就需要用到分片上传~ 前端及后端分片上传笔记 效果:(上传进度展示) 效果:(上传成功的效果展示) 1、 新建一个上传组件 2、使用vue-simple-…

ATF(TF-A)安全通告TF-V11——恶意的SDEI SMC可能导致越界内存读取(CVE-2023-49100)

目录 一、ATF(TF-A)安全通告TFV-11 (CVE-2023-49100) 二、透过事务看本质SDEI是干啥的呢&#xff1f; 三、CVE-2023-49100 1、GICv2 systems 2、GICv3 systems 四、漏洞修复 一、ATF(TF-A)安全通告TFV-11 (CVE-2023-49100) Title 恶意的SDEI SMC可能导致越界内存读取&am…

java数据结构与算法刷题-----LeetCode667. 优美的排列 II

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 题目要求我们返回一个数组长度为n的数组&#xff0c;必须含有1~n…

ZK高可用架构涉及常用功能整理

ZK高可用架构涉及常用功能整理 1. zk的高可用系统架构和相关组件1.1 Quorum机制1.2 ZAB协议 2. zk的核心参数2.1 常规配置2.2 特殊优化配置 3. zk常用命令3.1 常用基础命令3.2 常用运维命令 4. 事务性4.1 数据写流程4.2 数据读流程 5. 疑问和思考5.1 zk不擅长处理哪些场景&…

详解一次一密

目录 一. 介绍 二. 一次一密方案 三. 正确性分析 四. 证明一次一密方案是完美安全 五. 一次一密的应用 六. 小结 一. 介绍 一次一密&#xff0c;英语写做one time pad。 在1917年&#xff0c;Vernam提出了一个完美安全的加密方案&#xff0c;后世将其称之为一次一密。在…

Element中的el-input-number+SpringBoot+mysql

1、编写模板 <el-form ref"form" label-width"100px"><el-form-item label"商品id&#xff1a;"><el-input v-model"id" disabled></el-input></el-form-item><el-form-item label"商品名称&a…

选择国产压测工具应注意什么?

随着互联网和信息技术的飞速发展&#xff0c;压力测试成为了确保软件系统稳定性和性能的不可或缺的环节。在压测工具的选择上&#xff0c;近年来国产压测工具逐渐崭露头角&#xff0c;但在使用时仍需谨慎。本文将探讨在选择国产压测工具时需要注意的关键因素。 功能完备性&…

离线编译 onnxruntime-with-tensortRT

记录为centos7的4090开发机离线编译onnxruntime的过程&#xff0c;因为在离线的环境&#xff0c;所以踩了很多坑。 https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境&#xff0c;所以很…

中国大模型迎来“95后” 百度奖学金发掘百位“未来AI技术领袖”

在人工智能掀起的科技革命和产业变革浪潮下&#xff0c;大模型成为最受关注的研究领域。1月22日&#xff0c;第十一届百度奖学金颁奖典礼在北京举行&#xff0c;来自全球顶尖高校及科研机构的10位“未来AI技术领袖”脱颖而出&#xff0c;他们平均年龄仅27岁&#xff0c;其中8人…

关于Redis的最常见的十道面试题-分布式锁和布隆过滤器

面试题一&#xff1a;有序集合在日常工作中的使用场景有哪些&#xff1f; 有序集合在工作中的应用场景有很多&#xff0c;例如“ 排行榜&#xff1a;可以将用户的得分作为有序集合的分支&#xff0c;用户的ID作为成员&#xff0c;通过有序集合的排名功能可以得到用户的排名信…