国产数据库OceanBase从入门到放弃教程

1. 介绍

是由蚂蚁集团(Ant Group,原蚂蚁金服)自主研发的分布式关系型数据库。它旨在解决海量数据存储和高并发访问的问题,特别适合金融级应用场景,如支付宝等对数据一致性、可靠性和性能有极高要求的服务。以下是关于 OceanBase 数据库的一些关键特点和优势:

1.1 核心特性

1. 分布式架构
  • 水平扩展:OceanBase 支持通过增加服务器节点来线性扩展系统容量,从而应对不断增长的数据量和用户请求。
  • 多副本机制:为了保证数据的高可用性和容灾能力,OceanBase 实现了多副本策略,确保即使部分节点故障也不会影响整个系统的正常运行。
2. 高性能
  • SQL 引擎优化:针对 SQL 查询进行了深度优化,支持复杂的事务处理和分析查询,能够在保证 ACID 特性的前提下提供高效的读写性能。
  • 全局一致性:利用 Paxos 协议实现分布式事务的一致性管理,确保跨多个数据中心的数据同步和一致性。
3. 高可用性
  • 自动故障转移:当主副本发生故障时,能够快速切换到备用副本继续服务,减少了业务中断时间。
  • 异地多活:支持跨地域部署,使得不同地区的用户可以就近访问数据,降低了网络延迟,并增强了灾难恢复的能力。
4. 兼容 MySQL/Oracle
  • MySQL 兼容性:提供了良好的 MySQL 协议兼容性,使得从传统 MySQL 数据库迁移到 OceanBase 变得更加容易。
  • Oracle 兼容性:部分版本也增加了对 Oracle 数据库语法的支持,方便企业平滑迁移。
5. 低成本
  • 硬件成本低:由于采用了普通的 X86 架构服务器作为集群节点,相比专用硬件设备大大降低了采购成本。
  • 运维成本低:简化了管理和维护流程,减少了人工干预的需求,提高了自动化程度。

1.2 应用场景

OceanBase 广泛应用于支付清算、电子钱包、转账汇款、信贷风控等领域,尤其是在需要处理大量交易且对响应速度和数据安全有严格要求的地方表现优异。此外,随着云服务的发展,OceanBase 也开始向云端延伸,为更多中小企业提供灵活可靠的数据库解决方案。

1.3 社区与生态

OceanBase 不仅是一个商业产品,也有活跃的开源社区版(OceanBase Community Edition),鼓励开发者和技术爱好者参与到项目的开发和完善中来。同时,围绕 OceanBase 形成了丰富的工具链和服务体系,包括但不限于监控报警、备份恢复、性能调优等工具,以及专业的技术支持团队。

2. 安装

安装要求:需要6G内存,14G磁盘空间。

2.1 镜像下载

下载oceanbase-ce镜像,这里只体验社区兼容MySQL版本的,兼容Oracle版本是企业版,商用,一般接触不到。如果企业要用,也是由厂商技术支持直接安装,一般接触不到这个镜像源。

# 下载oceanbase-ce镜像
docker pull oceanbase/oceanbase-ce

2.2 启动容器

docker run -p 2881:2881 \--name oceanbase \--restart=always \-e MODE=MINI \-e OB_TENANT_PASSWORD=123456 \-d oceanbase/oceanbase-ce

2.3 安装监测

启动后可实时观察日志是否成功安装

docker logs -f oceanbase

2.4 连接数据库

oceanbase-ce 镜像安装了OceanBase数据库客户端obclient,所以可以使用obclient客户端或其他方式。

# 1. 进入容器
docker exec -it oceanbase bash# 无密码方式
obclient -uroot@sys -h127.0.0.1 -P2881# 有密码方式
obclient -uroot@sys -h127.1 -P2881 -p123456

在这里插入图片描述

3. SQL语句

SQL的英文是Structured Query Language,简称SQL,是一种操作关系型数据库的结构化查询语言。操作数据库,最经常使用就是查询操作。

1、OceanBase数据库也兼容Oracle语法,这个社区版不支持;

2、OceanBase数据库的SQL语句不区分大小写,关键字建议使用大写;

3、SQL语句可以使用单行或多行书写,以分号结尾

4、注释

单行注释

- 单行注释# 单行注释

多行注释

/*
多行注释
多行注释
*/

4. SQL分类

分类说明作用备注
DDL数据定义语言用来对数据库、表、列的定义data definition language
DML数据操作语言用来对数据库中表的数据进行增、删、改操作data manipulation language
DQL数据查询语言用来对数据库中表的数据进行查询data query language
DCL数据控制语言用来对数据库的控制(用户创建、权限控制)data control language

5. DDL

5.1 库的DDL

一个功能,一般都是四个动作,增删改查。

展示所有的数据库

show databases;

创建数据库

create database 数据库名称 charset=utf8;
create database if not exists 数据库名称 charset=utf8; # 使得SQL语句更加强健、健壮。

示例:

create database db1 charset=utf8;
create database if not exists db1 charset=utf8;

删除数据库

drop database 数据库名称;
drop database if exists 数据库名称;

示例:

drop database test;
drop database if exists test;

使用数据库

use 数据库名称;

查询正在使用的数据库

select database();

小结:

命令作用示例
show databases;查看所有数据库show databases;
create database if not exists 数据库名 charset=utf8;创建数据库create database if not exists db1 charset=utf8;
use 数据库名;使用数据库use db1;
select database();查看当前使用的数据库select database();
drop database if exists 数据库名;删除数据库drop database if exists db1;

5.2 表、列的DDL

列的内容可以是数字、字符串、时间等,由数据类型约束

在满足业务需求的请求下,数据类型范围选择越小的。

数值数据类型

数据类型字节数有符号无符号
tinyint1个字节-128~1270~255
smallint2个字节-32768~327670~65535
mediumint3个字节-8388608~83886070~16777215
int4个字节-2147483648~21474836470~4294967295
bigint8个字节-263~263-10~2^64-1
float单精度,4个字节-231~231-10~2^32-1
double双精度,8个字节
decimal[M, D]双精度,8个字节

decimal(5,2),表示共5位数字,其中2位是小数,比如:888.88

字符串数据类型

数据类型长度用途
char(size)最大255个字符数据是定长,如md5的密码,邮编,手机号,身份证号等
varchar(size)最大65535个字节存放一般内容长度
tinytext最大255个字节
text最大65535个字节
mediumtext最大16777215个字节大段文本时,如新闻、文章、论文等
longtext最大4294967295个字节大段文本时,如新闻、文章、论文等

1、VARCHAR(size):0~65535字节 可变长度字符串,最大65532字节,1-3个字节用于记录大小【utf8编码size最大21844字符,gbk编码最大32766字符 】

2、查询速度:char > varchar

3、text与char、varchar不同的是,text不可以有默认值,能用varchar的地方不用text

日期+时间数据类型

数据类型格式
date年-月-日,如:2024-4-8
datetime年-月-日 时:分:秒,如:2024-4-8 16:17:40
timestamp年-月-日 时:分:秒,如:2024-4-8 16:17:40
time时:分:秒,如:16:17:40
year年,如:2024

datetime保存时间的范围: 1000-01-01 00:00:009999-12-31 23:59:59

timestamp保存时间的范围: 1970-01-01 00:00:012038-01-19 03:14:07

展示当前数据库所有表

show tables;

描述表结构

desc 表名;

查看表的创建语句

show create table 表名;show create table user;

创建表

create table 表名(字段名1 数据类型,字段名2 数据类型,...字段名n 数据类型  # 最后一个不需要逗号(,)
);示例:
create table if not exists user(id tinyint,username varchar(32),age tinyint
);

删除表

drop table 表名称;
drop table if exists 表名称;

修改表、列

# 修改表名
alter table 原来的表名 rename to 新的表名;示例:
alter table user rename to users;# 增加一列
alter table 表名 add 列名 数据类型;示例:
alter table users add height float;# 修改列数据类型
alter table 表名 modify 列名 新数据类型;示例:
alter table users modify id int;# 修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型;示例:
alter table users change id no tinyint;# 删除列
alter table 表名 drop 列名;示例:
alter table users drop height;

小结:

命令作用
show tables;查看当前数据库中所有表
desc 表名;查看表结构
show create table 表名;查看表的创建语句
alter table 表名 rename to 新的表名;修改表名
alter table 表名 add 列名 类型;添加字段
alter table 表名 modify 列名 类型及约束;修改字段数据类型
alter table 表名 change 原名 新名 类型及约束;修改字段名和数据类型
alter table 表名 drop 列名;删除字段
drop table 表名;删除表

6. DML

6.1 添加数据

添加指定列数据

insert into 表名(列名1,列名2...) values(1,2...);

添加全部列数据

insert into 表名 values(1,2...);示例:
insert into users values(1, 'zhangsan', 18);

批量添加指定列数据

insert into 表名(列名1,列名2...) values(1,2...),(1,2...)...;

批量添加全部列数据

insert into 表名 values(1,2...),(1,2...)...;示例:
insert into users values(1, 'lisi', 18),(1, 'wanger', 19);

6.2 修改数据

修改表数据

update 表名 set 列名1=1 列名2=2...[where条件];示例:
update users set no=2 where username='lisi';

注:如果不加where条件,就是对该表所有行内容进行修改

6.3 删除数据

删除表数据

delete from 表名 [where条件]示例:
delete from users where username='wanger';

注:如果不加where条件,就是对该表所有行内容进行删除

7. DQL

完整语法

SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段
HAVING分组后条件
ORDER BY排序字段
LIMIT分页限定
- 创建数据库
create database if not exists db1- 创建数据库表
use db1;create table if not exists stu(id int(11),username varchar(32),sex tinyint(1),age tinyint(3),math tinyint(3),chinese tinyint(3)
);- 添加数据
insert into stu values(1,'小张',1,16,75,86),(2,'小李',1,16,76,86),(3,'小王',0,17,76,87),(4,'小胡',0,17,77,87),(5,'小丘',0,18,77,88),(6,'小刘',0,18,80,90);

7.1 基础查询

- 查询指定字段
select id,username from stu;- 查询表所有字段
select * from stu;- 去除重复记录
select distinct sex from stu;- 字段取别名
select id,sex as gender,math shuxue from stu;

7.2 条件查询

select 字段列表 from 表名 where条件

where后面支持多种运算符

运算符功能描述
比较运算符=、>、>=、<、<=、!=、<>
逻辑运算符and、&&、or、||、not
模糊查询like
范围查询between…and…、in(…)
空判断is null、is not null

模糊查询使用like关键字,可以使用通配符进行占位

_:代表单个任意字符

%:代表任意个字符

正则表达式

select * from stu where class_id REGEXP '1|7';

7.3 排序查询

select 字段列表 from 表名 order by 排序字段名1 [,排序字段2]...;

注:排序方式有上序ASC,降序DESC,默认情况下是升序ASC

select * from stu order by math desc,chinese desc;

7.4 聚合函数

在进行查询操作时,往往需要对一整列进行运算,例如成绩的平均分

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值
select 聚合函数 from 表名;

注:NULL值不参与聚合函数运算

7.5 分组查询

select 字段列表 from 表名 [where分组前的条件限定] group by 分组字段名 [having 分组后的条件过滤];

注:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

select sex,max(math),max(chinese) from stu group by sex;

7.6 分页查询

select 字段列表 from 表名 limit 查询起始索引,查询条目数

注:limit关键字中,查询起始索引是从0开始的

8. 约束

约束是作用于数据库表中列上的规则,用于限制添加数据的行为。从而保证数据库中数据的正确性、有效性和完整性。

8.1 约束分类

约束类型关键字功能
非空约束NOT NULL保证列中所有数据不能有NULL值
唯一约束UNIQUE保证列中所有数据各不相同
主键约束PRIMARY KEY主键是一行数据的唯一标识,要求非空且唯一
默认约束DEFAULT保存数据时,未指定值则采用默认值
外键约束FOREIGN KEY外键用来让两个表数据建立关联,保证数据的一致性和完整性
检查约束CHECK保证列中的值满足某一条件
create table if not exists stu(id int(11) unsigned auto_increment primary key not null,username varchar(32) not null unique,sex tinyint(1) default 1 not null,age tinyint(3) not null,math tinyint(3) default 0 not null,chinese tinyint(3) default 0 not null
);

9. 多表查询

一次性从多张表中查询需要的数据

create table class(class_id int(11) unsigned auto_increment primary key not null,class_name varchar(32) not null unique
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;create table stu(stu_id int(11) unsigned auto_increment primary key not null,class_id int(11) not null,stu_name varchar(32) not null unique
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;insert into class(class_name) values('一班'),('二班');insert into stu(class_id,stu_name) values(1,'小张'),(1,'小李'),(2,'小孙'),(2,'小杨');

在MySQL中多表查询分为连接查询和子查询,连接查询又分为内连接和外连接,内连接又分为隐式内连接和显示内连接,外连接又分为左外连接和右外连接。

9.1 内连接查询

- 隐式内连接查询
select 字段列表 from1,2... where 条件;- 显式内连接查询
select 字段列表 from1 [inner] join2 on 条件;

示例

- 隐式内连接查询
select * from class,stu where class.class_id=stu.class_id;- 显式内连接查询
select * from class inner join stu on class.class_id=stu.class_id;

9.2 外连接查询

左外连接查询:相当于查询A表所有数据和交集部分数据

右外连接查询:相当于查询B表所有数据和交集部分数据

- 左外连接查询
select 字段列表 from1 left [outer] join2 on 条件;- 右外连接查询
select 字段列表 from1 right [outer] join2 on 条件;

示例

select * from stu left outer join class on stu.class_id=class.class_id;select * from stu right outer join class on stu.class_id=class.class_id;

9.3 子查询

指查询中嵌套有查询

子查询语句结果是单行单列,子查询语句作为条件值,使用>、>=、<、<=、=、!=等进行条件判断。

# class_id 大于 1班的class_id的学生
select * from stu where class_id > (select class_id from class where class_name='一班');

子查询语句结果是多行单列,子查询语句作为条件值,使用in等关键字进行条件判断

# 查询存在班级的学生
select * from stu where class_id in (select class_id from class);

子查询语句结果是多行多列,子查询语句作为虚拟表

select * from stu,(select * from class) c where stu.class_id=c.class_id;

10. 事务

使用场景:转账、下单扣库存

语法:

# 开启事务
start transaction;begin;-- 执行各种操作# 回滚事务
rollback;# 提交事务
commit;

事务特征:

1、原子性,事务是不可分割最小操作单位,要么同时成功,要么同时失败

2、一致性,事务完成时,必须使所有数据都保持一致状态

3、隔离性,多个事务之间,操作可见性

4、持久性,事务一旦提交或回滚,它对数据库中数据的改变是永久的

10.1 隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。在事务的并发操作中可能会出现脏读,不可重复读,幻读。

读未提交(Read uncommitted):

解释:

一个事务读到了另一个事务还没有提交的数据。

例如:

A给B转账,
A转给B,10万,点转账,但未点确认
B查账户看到10万
A及时发现,点撤回,修改为1万,再点转账,再点确认

分析:

A给B最终转账是1万,但是在过程中,B能看到过程数据。这就是脏读。

读已提交(Read committed):
解释:

一个事务要等另一个事务提交后才能读取数据。

例如:

父亲的银行卡有10万
儿子拿着这个银行卡去买单,同时父亲准备转款(开启事务)。此时儿子看到银行卡里有10万
等儿子看完有10万后,钱被父亲转走,并提交
收费系统准备在这个银行卡扣款,再次检测,发现卡里没有钱了

分析:

这就是读已提交,若有事务对数据进行更新操作时,读操作事务要等待这个更新操作事务提交后才能读取数据,可以解决脏读问题。
这个例子中,有读两次卡里的钱,一次是10万,一次是没有钱了,这就是不可重复读。

可重复读(Repeatable read):
解释:

同一事务下,事务在执行期间,多次读取同一数据时,能够保证读取到的数据是一致的。

例如:

父亲的银行卡有10万
儿子拿着这个银行卡去买单,此时儿子看到银行卡里有10万,这个时候父亲想转账,发现转不了
等儿子买完单,父亲才能够实行转账行为

分析:

读数据的时候,不允许该数据有写数据的事务。因为写数据会改变数据。这样子就解决了不可重复读的问题。但是可能还会有幻读问题。因为幻读问题对应的是插入INSERT操作,而不是UPDATE操作。

什么时候会出现幻读?

解释:

一个事务读取到了另一个事务新增的数据

例如:

儿子某一天去消费,花了8千元,然后他的父亲去查看他今天的消费记录(全表扫描,儿子事务开启),看到确实是花了8千元,就在这个时候,儿子花了1万买了一部电脑,即新增INSERT了一条消费记录,并提交。当父亲打印儿子的消费记录清单时(儿子事务提交),发现花了1.8万元,似乎出现了幻觉,这就是幻读。

串行化(Serializable):

解释:

它是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率最低,比较耗费数据库性能,一般不推荐使用。

小结:

隔离级别脏读不可重复读幻读
读未提交可能出现可能出现可能出现
读已提交不会出现可能出现可能出现
可重复读不会出现不会出现可能出现
串行化不会出现不会出现不会出现

隔离级别查询

-- MySQL8以前
SELECT @@GLOBAL.tx_isolation, @@tx_isolation;-- MySQL8开始
SELECT @@GLOBAL.transaction_isolation, @@transaction_isolation;

修改隔离级别

-- 建议开发者在修改时,仅修改当前session隔离级别即可
-- REPEATABLE-READ,MySQL默认级别
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE-READ

11. 函数

11.1 数学函数

函数含义
abs(x)返回x的绝对值
rand()返回0到1的随机数
mod(x,y)返回x除以y以后的余数
power(x,y)返回x的y次方
round(x)返回离x最近的整数
round(x,y)保留x的y位小数四舍五入后的值
sqrt(x)返回x的平方根
truncate(x,y)返回数字 x 截断为 y 位小数的值
ceil(x)返回大于或等于 x 的最小整数
floor(x)返回小于或等于 x 的最大整数
greatest(x1,x2…)返回返回集合中最大的值
least(x1,x2…)返回返回集合中最小的值

11.2 字符串函数

函数含义
trim()返回去除指定格式的值
concat(x,y)将提供的参数 x 和 y 拼接成一个字符串
substr(x,y)获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z)获取从字符串 x 中的第 y 个位置开始长度为z 的字符串
length(x)返回字符串 x 的长度
replace(x,y,z)将字符串 z 替代字符串 x 中的字符串 y
upper(x)将字符串 x 的所有字母变成大写字母
lower(x)将字符串 x 的所有字母变成小写字母
left(x,y)返回字符串 x 的前 y 个字符
right(x,y)返回字符串 x 的后 y 个字符
repeat(x,y)将字符串 x 重复 y 次
space(x)返回 x 个空格
strcmp(x,y)比较 x 和 y,返回的值可以为-1,0,1
reverse(x)将字符串 x 反转

11.3 日期函数

函数含义
current_date()当前日期
current_time()当前时间
current_timestamp()当前时间戳

12. DCL

12.1 用户管理

创建用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 实例:
CREATE USER 'java'@'%' IDENTIFIED BY 'asd123crl';

删除用户

drop user 用户名@IP;
-- 实例:
drop user 'java'@'%';

修改密码

UPDATE `user` SET `Password` = PASSWORD('新密码') WHERE `User` = '用户名';
-- 实例:
UPDATE `user` SET `Password` = PASSWORD('asd123') WHERE `User` = 'java';

12.2 权限管理

常用权限:

  • 表数据: select, update, delete, insert
  • 表结构: create, alert, drop
  • 外键: references
  • 创建临时表: create temporary tables
  • 操作索引: index
  • 视图: create view, show view
  • 存储过程: create routine, alert routine, execute
  • 所有权限: all

查看用户权限命令

SHOW GRANTS FOR '用户名'@'主机名';
-- 实例:
SHOW GRANTS FOR 'root'@'%';

给用户授予权限

在MySQL中使用GRANT命令给用户授权,如果用户不存在,GRANT会自动创建用户,并进行授权。

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';  -- 权限列表中如果有多个权限则用逗号,隔开-- 授权所有库的所有表的所有权限
GRANT ALL ON *.* TO '用户名'@'主机名';  
-- 示例:给张三赋予db_test数据库students表的查询权限
GRANT SELECT ON db_test.students TO 'zhangsan'@'localhost';
-- 刷新权限
flush privileges

撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
-- 示例:撤销张三在db_test.students表的查询权限
REVOKE SELECT ON db_test.students FROM 'zhangsan'@'localhost';
-- 刷新权限
flush privileges

13. 备份与还原

备份语法:

mysqldump -h 服务器 -u 用户名 -p -B 数据库名1 数据库2 数据库n > 备份文件.sql

示例:

mysqldump -u root -p -B test > /backup/123.sql

还原语法:

mysqldump -h 服务器 -u 用户名 -p密码 --databases 数据库名 < 备份文件.sql# 进入数据库后
source 备份文件.sql;

示例:

mysqldump -u root -p --databases test < /backup/123.sql

一般系统推荐的字符集和排序规则

# 字符集
utf8mb4# 排序规则,不区分大小写
utf8mb4_general_cli

字符集(Character Set):utf8mb4

排序规则 | 字符序(Collate):utf8mb4_general_cli 或 utf8mb4_bin

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接Milvus

连接到Milvus 验证Milvus服务器正在侦听哪个本地端口。将容器名称替换为您自己的名称。 docker port milvus-standalone 19530/tcp docker port milvus-standalone 2379/tcp docker port milvus-standalone 192.168.1.242:9091/api/v1/health 使用浏览器访问连接地址htt…

安卓入门二 Kotlin基础

Kotlin Kotlin的历史 Kotlin由Jet Brains公司开发设计&#xff0c;2011年公布第一版&#xff0c;2012年开源。 2016年发布1.0正式版&#xff0c;并且Jet Brains在IDEA加入对Kotlin的支持&#xff0c;安卓自此又有新的选择。 2019年谷歌宣布Kotlin成为安卓第一开发语言&#x…

淺談Cocos2djs逆向

前言 簡單聊一下cocos2djs手遊的逆向&#xff0c;有任何相關想法歡迎和我討論^^ 一些概念 列出一些個人認為比較有用的概念&#xff1a; Cocos遊戲的兩大開發工具分別是CocosCreator和CocosStudio&#xff0c;區別是前者是cocos2djs專用的開發工具&#xff0c;後者則是coco…

STM32驱动NRF24L01

一、NRF24L01的相关介绍 1.2 引脚的介绍 关于SPI的引脚就不再说了&#xff0c;这里介绍其余的两个引脚&#xff1a; CE 模块控制引脚&#xff1a;芯片开启信号&#xff0c;激活RX或TX模式 IRQ 模块中断信号输出引脚&#xff1a;其低电平有效&#xff0c;也就是中断时变为低电平…

线性代数期末复习 [基础篇]

关于第六点: AXB 在期末考试中一般A都是可逆的 我们可以先把A的逆求出来,X A − 1 B A^-1B A−1B,或者 (A,B) -> r (E, A − 1 B A^-1B A−1B) 如果A矩阵不可逆,转变为方程组求解问题,假设都是二维矩阵 A(x1,x2) (b1,b2) Ax1 b1,Ax2 b2 XAB 如果A可逆,直接XB A − 1 A^-…

Kali 自动化换源脚本编写与使用

1. 背景与需求 在使用 Kali Linux 的过程中&#xff0c;软件源的配置对系统的更新与软件安装速度至关重要。 Kali 的默认官方源提供了安全且最新的软件包&#xff0c;但有时由于网络条件或地理位置的限制&#xff0c;使用官方源可能会出现速度较慢的问题。 为了解决这一问题&a…

【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor

IJob&#xff1a;开启单个线程进行计算&#xff0c;线程内不允许对同一个数据进行操作&#xff0c;也就是如果你想用多个IJob分别计算&#xff0c;将其结果存储到同一个NativeArray<int>数组是不允许的&#xff0c;所以不要这样做&#xff0c;如下例子就是反面教材&#…

InfoNCE Loss详解(上)

引言 InfoNCE对比学习损失是学习句嵌入绕不开的知识点&#xff0c;本文就从头开始来探讨一下它是怎么来的。 先验知识 数学期望与大数定律 期望(expectation&#xff0c;expected value&#xff0c;数学期望&#xff0c;mathematical expectation)是随机变量的平均值&#…

.Net加密与Java互通

.Net加密与Java互通 文章目录 .Net加密与Java互通前言RSA生成私钥和公钥.net加密出数据传给Java端采用java方给出的公钥进行加密采用java方给出的私钥进行解密 .net 解密来自Java端的数据 AES带有向量的AES加密带有向量的AES解密无向量AES加密无向量AES解密 SM2(国密)SM2加密Sm…

工作中常用Vim的命令

Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 0. ctags -R 1.认识 Vim的几种工作模式 2.高频使用命令 2.1 修改文件 2.2 关于行号 2.3 删除多行&#xff0c;删除部分 2.4 复制粘贴 2.5 光标移动 2.…

什么是 Azure OpenAI ?了解微软 Azure OpenAI 和 OpenAI 的关系

一、什么是Azure OpenAI &#xff1f; 微软已与 OpenAI 合作以实现三个主要目标&#xff1a; ⦿利用 Azure 的基础结构&#xff08;包括安全性、合规性和区域可用性&#xff09;&#xff0c;帮助用户构建企业级应用程序。 ⦿在微软产品&#xff08;包括 Azure AI 产品以及以外…

Linux day 1129

家人们今天继续学习Linux&#xff0c;ok话不多说一起去看看吧 三.Linux常用命令 3.1 Linux命令体验 3.1.1 常用命令演示 在这一部分中&#xff0c;我们主要介绍几个常用的命令&#xff0c;让大家快速感 受以下 Linux 指令的操作方式。主要包含以下几个指令&#xff1a; ls命…

SAP HCM 标准报表与前台操作的增强差异逻辑分析(rhgrenz4)

导读 增强差异:SAP的HCM模块组织和人事增强都有标准的增强点&#xff0c;不管你调用标准的函数还是前台操作都会触发对应的增强。所以很多业务不需要考虑那么多分散点&#xff0c;只要找到一个合适的增强点&#xff0c;就能解决很多和外围系统集成的业务逻辑&#xff0c;今天遇…

EZ-USB™ FX3 USB 5 Gbps 外设控制器

EZ-USB™ FX3 USB 5 Gbps 外设控制器 EZ-USB™ FX3 提供 USB 5Gbps 至 32 位数据总线&#xff0c;并配备 ARM9&#xff0c;可为任何系统添加 USB 3.0 连接 英飞凌的 EZ-USB™ FX3 是业界用途最广泛的 USB 外围设备控制器&#xff0c;可以为几乎任何系统添加 USB 5Gbps 连接。 …

【数据仓库】spark大数据处理框架

文章目录 概述架构spark 架构角色下载安装启动pyspark启动spark-sehll启动spark-sqlspark-submit经验 概述 Spark是一个性能优异的集群计算框架&#xff0c;广泛应用于大数据领域。类似Hadoop&#xff0c;但对Hadoop做了优化&#xff0c;计算任务的中间结果可以存储在内存中&a…

数据库容灾备份的意义+分类+执行工具!

数据库容灾解决方案的背景 数据库容灾&#xff08;Disaster Recovery&#xff0c;DR&#xff09;解决方案的背景主要源于企业对数据安全性、业务连续性和系统高可用性的需求。随着数字化转型的加速&#xff0c;企业的数据量迅猛增长&#xff0c;数据库已成为支撑核心业务的关键…

PDF怎么压缩得又小又清晰?5种PDF压缩方法

PDF 文件在日常办公与学习中使用极为频繁&#xff0c;可想要把它压缩得又小又清晰却困难重重。一方面&#xff0c;PDF 格式本身具有高度兼容性&#xff0c;集成了文字、图像、矢量图等多样元素&#xff0c;压缩时难以兼顾不同元素特性&#xff0c;稍不注意&#xff0c;文字就会…

GoldenDB组件及对应的用户和进程

1. GoldenDB组件及对应的用户和进程 GoldenDB数据库由管理节点、全局事务节点GTM、计算节点CN、数据节点DN等组成。 1.1. 管理节点 管理节点分为集群管理、Insight运维管理平台&#xff08;InsightServer、RDB、ZK&#xff09;。 1.1.1. 集群管理 1. 集群管理包括Metadatas…

OpenStack系列第四篇:云平台基础功能与操作(Dashboard)

文章目录 1. 镜像&#xff08;Image&#xff09;添加镜像查看镜像删除镜像 2. 卷&#xff08;Volume&#xff09;创建卷查看卷删除卷 3. 网络&#xff08;虚拟网络&#xff09;创建网络查看网络删除网络 4. 实例类型创建实例类型查看实例类型删除实例类型 4. 密钥对&#xff08…

CSDN编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…