RedHat9 | Mariadb数据库的配置与管理

news2025/6/26 7:32:07

一、实验环境

1、Mariadb数据库介绍

MariaDB数据库管理系统是一个开源的关系型数据库管理系统,与MySQL高度兼容,并提供了更多的功能和性能优化。

起源和背景

  • MariaDB是MySQL的一个分支,主要由开源社区维护。
  • 由MySQL的创始人Michael Widenius主导开发,名称来源于其女儿Maria的名字。
  • 在MySQL被甲骨文收购后,为了保持开源和社区特性,MariaDB应运而生。

特点和优势

  • 开源性:MariaDB是开源的,允许用户免费使用和修改代码。
  • 兼容性:与MySQL高度兼容,可以无缝迁移MySQL数据库到MariaDB。
  • 性能优化:对MySQL进行了优化,提供更好的性能和扩展性。
  • 支持多种存储引擎:包括InnoDB、MyISAM、Aria等。
  • 可扩展性:支持水平扩展和垂直扩展,根据需求灵活扩展数据库的性能和容量。

2、Mariadb数据库主要信息

  • 服务器软件包:mariadb-server.x86_64
  • 客户端软件包
  • 数据库配置文件:/etc/my.cnf
  • 服务名:mariadb.server
  • 端口号:TCP/3306

3、实验拓扑

标识Mariadb服务器Linux客户端
IP地址192.168.110.1/24192.168.110.10/24
软件包mariadb-server.x86_64
账号信息root@Serverroot@Client

在这里插入图片描述

二、Mariadb数据库配置与管理

1、安装Mariadb数据库

搜索Mariadb软件包

dnf search mariadb

在这里插入图片描述

安装Mariadb数据库

dnf -y install mariadb-server.x86_64

2、Mariadb数据库配置文件

cat /etc/my.cnf
2.1 主要用途
  1. 服务器设置:定义MySQL服务器的行为,如监听哪个端口(默认为3306)、是否允许网络访问、使用的套接字文件路径等。
  2. 存储引擎配置:对于不同的存储引擎(如InnoDB、MyISAM、Memory等),你可以在此文件中设置特定的参数,以优化其性能或行为。
  3. 内存使用:配置MySQL如何使用系统内存,包括InnoDB缓冲池的大小、查询缓存的大小等。这些设置对于确保服务器性能至关重要。
  4. 日志记录:定义MySQL应如何记录其活动,包括错误日志、慢查询日志、二进制日志等。这些日志对于调试问题、审计和复制非常有用。
  5. 字符集和排序规则:设置MySQL服务器使用的默认字符集和排序规则,以确保正确地存储和检索数据。
  6. 复制和安全设置:如果你正在运行MySQL复制,或者需要额外的安全措施,你可以在此文件中配置相关设置,如复制用户权限、SSL加密等。
  7. 性能调优:通过调整各种参数和设置,你可以优化MySQL的性能,以满足你的特定需求和工作负载。
2.2 可选配置
  • bind-address:设置侦听的网络接口地址,可以是主机名、IPv4、IPv6地址
  • skip-network:值为1则代表仅侦听本地客户端,通过套接字的方式侦听
  • port:侦听的TCP端口,默认为3306

在这里插入图片描述

3、增强Mariadb服务器安全性脚本

在第一次安装完Mariadb数据库后,需要提前运行增强Mariadb服务器安全性脚本,用于设置数据库管理员root的密码,删除root从本机以外访问及管理数据库的权限,删除匿名账号,删除test数据库等。

启动Mariadb服务

systemctl enable --now mariadb.service

调整防火墙策略

firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload

运行安全性脚本

mysql_secure_installation

脚本执行过程

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
# 为了登录MariaDB以确保其安全,我们需要当前root用户的密码。如果您刚刚安装了MariaDB,并且还没有设置root密码,只需在此处按enter即可。

# 输入root用户的当前密码
Enter current password for root (enter for none):  `Enter,初始为空`
OK, successfully used password, moving on...

# 设置根密码或使用unix_socket可以确保没有人可以在没有适当授权的情况下登录MariaDB根用户。
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] `Enter`
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n]  `Enter`
New password:  `输入密码`
Re-enter new password:  `再次输入`
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]  `Enter`
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
# 通常情况下,只允许root在本地登录,这里我们回车默认是 禁止root远程访问
Disallow root login remotely? [Y/n]  `Enter`
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]  `Enter`
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]  `Enter`
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

在这里插入图片描述

因为我们在安全性脚本中禁止了root远程访问,这里我们可以测试一下

mysql -u root -h 192.168.110.1 -p

在这里插入图片描述

4、登录与退出Mariadb数据库

mysql常用命令

参数作用
-e执行MySQL内部命令
-h指定连接的服务器域名或IP地址
-p指定连接的密码,选项p和密码之间不要存在空格,如:-p123
-u指定连接用户名

连接数据库,不推荐直接使用-p参数后接密码的方式连接,因为可能会在你的历史记录或进程列表中留下密码,照成风险。推荐使用-p参数,然后在交互中输入密码。

mysql -h localhost -u root -p
> 输入root密码
  • -h localhost:本地连接数据库
  • -u root:使用root管理员连接数据库
  • -predhat:root管理员的密码为redhat

在这里插入图片描述

5、账户管理

用户账户设置示例

账户描述
‘user’@‘localhost’用户user只能从本地主机连接
‘user’@‘192.168.110.1’用户user只能从主机192.168.110.1连接
‘user’@‘192.168.110.%’用户可以从属于192.168.110.0网段的主机连接
‘user’@‘%’用户user可以从任何主机进行连接
‘user’@‘2001::1’用户user可以通过主机2001::1连接
5.1 新建普通用户

创建用户需要登录账户具备CREATE权限,以下均使用root权限。

创建普通用户,用户名为dbuser,密码为redhat,主机名为192.168.110.1

create user 'dbuser'@'192.168.110.1' identified by 'redhat';
# identified by:指定用户登录密码

在这里插入图片描述

创建普通用户dbuser1,在创建用户时候如果不指定登录主机,则默认为允许所有主机

create user 'dbuser1' identified by 'redhat';

在这里插入图片描述

在上述操作中,都是指定明文密码,如果不希望使用明文密码,可以通过散列值来指定

获取散列值,创建普通用户dbuser2,密码为redhat,主机名为192.168.110.1

select password('redhat');			# 获取密码redhat对应的散列值
create user 'dbuser2'@'192.168.110.1' identified by password '*84BB5DF4823DA319BBF86C99624479A198E6EEE9';

在这里插入图片描述

查看当前数据库中所有用户和主机

mysql -u root
> select User,Host from mysql.user;

在这里插入图片描述

测试dbuser用户通过本地主机登录

mysql -u dbuser -h localhost -predhat

在这里插入图片描述

测试dbuser用户通过远程登录

mysql -u dbuser -h 192.168.110.1 -predhat

在这里插入图片描述

删除普通用户user1

drop user 'user1'@'192.168.110.2';

在这里插入图片描述

5.2 修改用户登录主机

用户dbuser绑定了登录主机为192.168.110.1,那么如何修改dbuser的登录主机为任何主机

mysql -u root -p			# 使用管理员登录
> use mysql;				# 连接mysql数据库
> rename user 'dbuser'@'192.168.110.1' to 'dbuser'@'%';		# 更新对应的值
> flush privileges;			# 刷新权限

在这里插入图片描述

6、权限管理

用户权限信息被存储在Mariadb数据库的user、db、host、tables_priv、columns_priv、procs_priv表中。在数据库启动时,服务器会将这些表中的权限信息读入内存。

GRANT和REVOKE语句中的常用权限

连接的用户必须具有GRANT OPTION特权及将要撤销的特权,才能撤销其他用户的特权。

权限user表中的对应列权限范围权限说明
createCreate_priv数据库、表或索引创建新数据库、表
dropDrop_priv数据库、表或索引删除数据库、表、用户
create userCreate user priv服务器管理创建用户
grant optionGrant oriv数据库、表或存储过程允许授权给其它用户
referencesReferences priv数据库或表创建约束
alertAlterrpriv修改表结构、视图和其他数据库对象
deleteDeletepriv删除数据库对象
indexIndex priv创建或删除索引
insertInsert priv插入数据
selectSelect priv表或列查询数据
updateUpdate priv表或列更新数据
6.1 给特定用户授权

授权就是为某个用户授予权限。授予权限可以分为三个层级。

① 全局层级

全局权限适用于服务器上的所有数据库,权限存储在 mysql.user 表中。授予或撤销特权后,要重新加载特权表中的特权

grant SELECT on *.* to 'dbuser'@'192.168.110.1';		# 为用户dbuser授予查询权限,作用范围为.(所有数据库)
revoke SELECT on *.* to 'dbuser'@'192.168.110.1';		# 移除用户dbuser的查询权限
flush privileges;		# 刷新权限

② 数据库层级
数据库权限仅适用于服务器上的特定数据库,权限存储在 mysql.db mysql.host 表中。

grant SELECT on dbname to 'dbuser'@'192.168.110.1';		# 为用户dbuser授予查询权限,作用范围为dbname数据库
revoke SELECT on dbuser to 'dbuser'@'192.168.110.1';	# 移除用户dbuser在dbname数据库上的查询权限
flush privileges;		# 刷新权限

③ 表层级
表权限仅适用于服务器上的特定表,权限存储在 mysql.tables_priv表中。

# 为用户dbuser授予查询权限,作用范围为dbname数据库中的table表
grant SELECT on dbname.table to 'dbuser'@'192.168.110.1';
# 移除用户dbuser在dbname数据库中的tables表的查询权限
revoke SELECT on dbname.table to 'dbuser'@'192.168.110.1';
flush privileges;		# 刷新权限

也可以创建用户的同时给用户授权

grant SELECT,INSERT on *.* to 'dbuser3'@'redhat' identified by 'redhat';
flush privileges;		# 刷新权限

在这里插入图片描述

6.2 查看权限

我们先给dbuser用户授予SELECT、UPDATE权限,作用域范围为所有数据库

grant select,insert on *.* to 'dbuser'@'192.168.110.1';
flush privileges;		# 刷新权限

查看指定用户的权限信息

show grants for 'dbuser'@'192.168.110.1';

在这里插入图片描述

7、数据库的备份与恢复

Mariadb数据库一共有两种备份的方式

  • 逻辑备份:使用SQL语言备份数据库表结构及内容

优点:兼容性高、可移植性高、可以在线备份

缺点:速度慢、备份不包含日志文件及配置文件

  • 物理备份:直接备份数据库物理文件

优点:备份速度快、备份文件精简、包含日志文件和配置文件

缺点:兼容性低、不同数据库版本可能会出问题、只能在数据库停止的情况下备份

我们先新建一个数据库IT,随后新建员工表tb_emp1并插入数据,tb_emp1表结构如下:

字段名称数据类型说明
idINT(11)员工编号
nameVARCHAR(25)员工名称
salaryFLOAT工资
create database IT;
use IT;
create table tb_emp1 (
	id int(11),
	name varchar(25),
	salary float
);

在这里插入图片描述

插入下列数据

idnamesalary
1Mike10000
2Jack12000
3Mary11000
insert into tb_emp1 values (1,'Mike',10000),(2,'Jack',12000),(3,'Mary',11000);

在这里插入图片描述

7.1 逻辑备份特定表

mysqldump命令用于将Mariadb、MySQL数据库中的数据库有以标准的SQL语言方式导出,并保存到文件中。

mysqldump -u [用户名] -p[密码] [数据库名] [表1] [表2] > [备份文件名].sql
参数说明
–add-locks在备份数据库时锁定数据库表
–lock-tables备份前,锁定所有数据库表
–all-databases备份Mysql服务器上的所有数据库
–comments添加注释消息
–databases指定要备份的数据库
–default-character-set指定默认字符集
–host指定要备份数据库的服务器
–password连接数据库的密码
–port数据库的端口号
–user连接数据库的用户名

备份数据库中的指定表

mysqldump -u root IT tb_emp1 > tb_emp1.sql

在这里插入图片描述

登录数据库,删除tb_emp1表

mysql -u root
> drop table if exists tb_emp1;

在这里插入图片描述

通过刚刚备份的文件,恢复tb_emp1表

mysql -u root IT < tb_emp1.sql				# 指定恢复到IT数据库中,备份文件为tb_emp1.sql
mysql -u root -e "use IT;show tables;"		# 查询IT数据库中的所有表

在这里插入图片描述

7.2 逻辑备份特定数据库

备份指定数据库,只会备份数据库内的所有表,并不包含创建数据库的SQL语句。

mysqldump -u root IT > IT.sql

在这里插入图片描述

删除数据库

mysql -u root -e "drop database IT;show databases;"

在这里插入图片描述

恢复数据库备份

mysql -u root -e "create database IT;"		# 需要先创建数据库
mysql -u root IT < IT.sql					# 还原数据库
mysql -u root -e "show databases;"

在这里插入图片描述

7.3 物理备份

可以使用不同的工具来进行物理备份

  • ibbackup
  • cp
  • mysqlhotcopy
  • lvm

mariadb数据库可以使用LVM快照的优势:速度快,来进行物理备份,说短数据库的停机时间。

验证Mariadb文件的存储位置

mysqladmin variables | grep datadir

在这里插入图片描述

物理备份

  • 可以直接将/var/lib/mysql文件另存为
  • 如果/var/lib/mysql文件是存储在逻辑卷上的,则可以使用逻辑卷自带的快照功能

以下使用另存为的方式备份

mysql -u root -e "flush tables with read lock;"		# 锁定所有打开的表
mkdir /mariadb_bak
cp -a /var/lib/mysql/* /mariadb_bak					# 备份数据文件
mysql -u root -e "unlock tables;"					# 解锁表

在这里插入图片描述

恢复备份

mysqladmin variables | grep datadir				# 验证Mariadb数据库文件存储位置
systemctl stop mariadb.service					# 暂停Mariadb数据库服务
rm -rf /var/lib/mysql/*							# 删除实际内容
cp -a /mariadb_bak/* /var/lib/mysql				# 恢复备份
systemctl start mariadb.service					# 启动Mariadb数据库服务

查看Mariadb数据库服务状态

systemctl status mariadb.service

在这里插入图片描述

测试查询

mysql -u root -e "use IT;select * from tb_emp1;"

在这里插入图片描述

三、综合练习

新建用户

用户密码权限运行登陆主机
marrymarry_password查询所有
legacylegacy_password查询、插入、更新和删除192.168.110.1
reportreport_password查询所有

新建数据库Sales,并新建表customers,表结构如下

字段名数据类型主键外键非空唯一自增说明
idINT(11)序号
nameVARCHAR(20)名称
phone_numberVARCHAR(20)电话
cityVARCHAR(50)城市

在customers中插入以下信息:

idnamephone_numbercity
1kito+1 (432) 754-3129Tokyo, Japan
2chero+1 (431) 219-4989Los Angeles, USA
3mango+1 (327) 647-7684Kingston, Jamaica

登陆Mariadb数据库

mysql -u root

新建用户并授予权限

grant select on *.* to 'marry'@'%' identified by 'marry_password'; 
grant select,insert,update,delete on *.* to 'legacy'@'192.168.110.1' identified by 'legacy_password';
grant select on *.* to 'report'@'%' identified by 'report_password';
flush privileges;

在这里插入图片描述

新建Sales数据库和customers表

create database Sales;
use Sales;
create table customers(
	id int(11) primary key not null auto_increment,
    name varchar(20) not null,
    phone_number varchar(20) not null,
    city varchar(50) not null
);

在这里插入图片描述

使用刚刚新创建的legacy用户,测试是否可以插入数据

mysql -u legacy -h 192.168.110.1 -p
> legacy_password

在这里插入图片描述

use Sales;
insert into customers(name,phone_number,city) 
values  ('kito','+1 (432) 754-3129','Tokyo, Japan'),
		('chero','+1 (431) 219-4989','Los Angeles, USA'),
		('mango','+1 (327) 647-7684','Kingston, Jamaica');

在这里插入图片描述

测试剩余用户的查询权限

mysql -u marry -pmarry_password -e "select * from Sales.customers;"
mysql -u report -preport_password -e "select * from Sales.customers;"

在这里插入图片描述

四、报错信息汇总

1、使用UPDATE USER SET host=‘%’ ;语句报错

原先使用的SQL语句

UPDATE USER SET host='%' WHERE user='dbuser';

报错信息

ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

解决办法

rename user 'dbuser'@'192.168.110.1' to 'dbuser'@'%';

在这里插入图片描述

出现原因

在Mariadb-10.4以上的版本中,mysql.user 类型更改为视图,不再是表。
在这里插入图片描述

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

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

相关文章

百度OCR初探-python

百度OCR使用&#x1f680; 在项目中需要对一些资料首先进行OCR识别&#xff0c;然后对OCR之后得到的结果进行结构化分析&#xff0c;各家的都打算简单尝试一下&#xff0c;首先尝试一下百度的OCR&#xff0c;首先找到百度的OCR的官方&#xff0c;开始自己搜索然后尝试。 OCR&am…

浅谈数据管理架构 Data Fabric(数据编织)及其关键特征、落地应用

伴随着企业从数字化转型迈向更先进的数智化运营新阶段&#xff0c;对看数、用数的依赖越来越强&#xff0c;但数据的海量增长给数据管理带来一系列难题&#xff0c;如数据类型和加工链路日益复杂&#xff0c;数据存储和计算引擎更加分散&#xff0c;数据需求响应与数据质量、数…

【电机控制】FOC算法验证步骤——PWM、ADC

【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…

kubespray离线安装k8s

kubespray离线安装k8s 系统环境 OS: Static hostname: test Icon name: computer-vm Chassis: vm Machine ID: 22349ac6f9ba406293d0541bcba7c05d Boot ID: 83bb7e5dbf27453c94ff9f1fe88d5f02 Virtualization: vmware Operating System: Ubuntu 22.04.4 LTS Kernel: Linux 5.…

哪个牌子的开放式耳机性价比高呢?五大口碑销量双佳产品汇总!

​喜欢户外活动的朋友们&#xff0c;你们都是懂得享受生活的达人吧&#xff01;想象一下&#xff0c;在户外活动时&#xff0c;如果能有一副既适合场景又提供超棒音乐体验的耳机&#xff0c;那该多完美啊&#xff01;这时候&#xff0c;开放式耳机就闪亮登场了&#xff01;它的…

JAVAEE值之网络原理(1)_用户数据报协议(UDP)、概念、特点、结构、代码实例

前言 在前两节中我们介绍了UDP数据报套接字编程&#xff0c;但是并没有对UDP进行详细介绍&#xff0c;本节中我们将会详细介绍传输层中的UDP协议。 一、什么是UDP&#xff1f; UDP工作在传输层&#xff0c;用于程序之间传输数据的。数据一般包含&#xff1a;文件类型&#xff0…

SpringCloud2023 - 学习笔记

文章目录 1. 简介1.1 基础知识1.2 组件更替与升级 2. 微服务基础项目构建2.1 创建项目2.2 Mapper4生成代码2.3 支付模块编码2.4 项目完善2.5 订单模块编码2.6 工程重构 3. consul服务注册与发现3.1 consul简介3.2 consul下载安装3.3 微服务入驻3.4 order订单微服务入驻3.5 其他…

美摄科技匿名化处理解决方案,包含模糊、同色、马赛克、效果遮挡等各种形式

信息安全已成为企业发展中不可忽视的重要一环&#xff0c;随着信息安全法规的日益严格和公众对个人隐私保护意识的不断提高&#xff0c;企业如何在保障业务顺畅进行的同时&#xff0c;满足信息安全和隐私保护的要求&#xff0c;成为了亟待解决的问题。美摄科技凭借其强大的技术…

手把手搭建 Nginx + VIP + Keepalived 高可用集群

文章目录 1、前置讲解1.1、常用方案1.2、实现流程 2、集群搭建2.1、环境准备2.2、关于 Nginx2.2.1、安装 Nginx2.2.2、调整 Nginx 首页 2.3、关于 Keepalived2.3.1、安装 Keepalived2.3.2、编写 Shell2.3.3、调整 KeepAlived 配置 1、前置讲解 其实阿里云ECS本身不支持使用服务…

Kubernetes集群持久化部署实践

WordPress 网站持久化部署 要持久化MariaDB 可以把 Deployment 改成了 StatefulSet&#xff0c;修改 YAML添加“serviceName”“volumeClaimTemplates”这两个字段&#xff0c;定义网络标识和 NFS 动态存储卷&#xff0c;然后在容器部分用“volumeMounts”挂载到容器里的数据目…

一文搞懂阻塞赋值和非阻塞赋值

目录 2.非阻塞赋值举例3.阻塞赋值举例4.总结 微信公众号获取更多FPGA相关源码&#xff1a; # 1.阻塞赋值和非阻塞赋值的区别&#xff1a; (1)阻塞赋值""&#xff0c;必须是阻塞赋值完成后&#xff0c;才进行下一条语句的执行&#xff1b;赋值一旦完成&#xff0c;等号…

docker环境中配置phpstorm php xdebug调试工具

本文介绍通过docker compose的使用方式 第一步&#xff1a;在php镜像中安装phpxdebug扩展&#xff0c;比如php7.4对应的是xdebug3.1.6 第二步&#xff1a;设置项目中的docker-compose.yml docker-compose 增加开启xdebug的环境变量,host.docker.internal是宿主机的地址&#…

MBTI:探索你的性格类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

4.音视频 AAC SSAASS

目录 AAC 1.什么是ADIF和ADTS&#xff1f; 2.ADTS的数据结构是怎样的&#xff1f; SSA/ASS 1.SSA/ASS的基本结构 AAC AAC(Advanced Audio Coding&#xff0c;高级音频编码)是一种声音数据的文件压缩格式。AAC分为ADIF和ADTS两种文件格式。 1.什么是ADIF和ADTS&#xff…

Day01 C语言嵌入式

目录 1、嵌入式知识体系 2、计算机的组成原理 3、计算机之父 4、C语言标准 5、关键字 6、字符编码 7、字符集 1、嵌入式知识体系 备注&#xff1a;图片来源于网络&#xff0c;为嵌入式知识体系思维导图&#xff0c;分为软件、硬件和理论知识三个部分&#xff0c;仅供各位…

【LeetCode】4,寻找两个正序数组中的中位数

题目地址 B站那个官方解答视频实在看不懂&#xff0c;我就根据他那个代码和自己的理解写一篇文章 1. 基本思路 在只有一个有序数组的时候&#xff0c;中位数把数组分割成两个部分。中位数的定义&#xff1a;中位数&#xff0c;又称中点数&#xff0c;中值。中位数是按顺序排列…

全志摄像头屏幕预览、录制(H264)

一、录像 使用dvr_test录制视频 运行dvr_test demo出现space not enought问题&#xff0c;修改/etc/dvrconfig.ini文件下对应的camera节点下cur_filedir属性无效 修改以下内容解决; 录制时出现摄像头画面异常&#xff0c;如下 摄像头型号与打印信息匹配&#xff1a; 但是出现画…

整蛊软件/插件使用方法与配置步骤~

今天出一期整蛊软件的使用方法与配置步骤 很多人在使用整蛊软件的时候 想自己添加更多的玩法内容 但是还不知道如何去配置 这期给大家出一下图文教程步骤 基本上也是软件的功能介绍使用方式~ 案例可扫码查看 第一步&#xff1a;打开软件输入卡密登录&#xff1a; 卡密费用&…

最好用的邮箱管理软件推荐,邮箱管理软件哪个好?(干货篇)

在快节奏的工作与生活中&#xff0c;有效管理电子邮件成为提升个人与团队效率的关键。 面对海量信息流&#xff0c;一款好的邮箱管理软件不仅能够帮助我们高效地整理收件箱&#xff0c;还能确保重要邮件不会错过&#xff0c;同时提升通讯的便捷性和安全性。 本文将为您推荐几款…

AUTOSAR平台中的信息安全标准模块

面向MCU端的AUTOSAR CP平台加密组件——Crypto ECU中所有的软件单元都遭受到信息安全攻击的可能。AUTOSAR为保障ECU信息和数据安全&#xff0c;定义了CRYPTO 组件,包含 SecOC、KeyM、IdsM、Csm、CryIf 和Crypto Driver 等标准模块。CRYPTO组件提供各种加解密算法以及密钥管理功…