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

Linux——MySQL基础

基础知识

连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p
-h 指明登录部署了myqsl服务的主机
-P 指明访问的端口号
-u 指明用户
-p 指明登录密码(可以不填写)

什么是数据库

首先,数据库是分为服务端和客户端的:

mysql是客户端,mysqld是服务端。
mysql本质就是基于CS模式的网络服务。

也就是说,mysql是一套提供数据存储服务的网络程序。
数据库一般指的是在磁盘或者内存中存储的特定结构组织的数据——将来在磁盘中存储数据的一套特定方案。
数据库服务就是mysqld。
为什么有数据库
虽然一般文件确实提供了数据存储的功能,但是站在用户角度上,文件并没有提供非常好的数据管理能力。
数据库的本质:对数据内容存取的一套解决方案,你给我数据内容,我直接给你结果。

Linux下的数据库是什么样子的?

建立数据库,在本质就是在Linux下的一个目录。
在数据库内部建立表,本质就是在Linux下创建对应的文件即可。
上面两个工作是muqsld帮我们做的。
所以说,数据库本质也是文件,只不过这些文件不由程序员直接操作,而是数据库服务帮我们操作。
这样会降低程序员维护数据的成本,如果是文件是需要程序员维护的。

服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
在这里插入图片描述
数据逻辑存储
这是一张表。
在这里插入图片描述
MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
第一层是链接池,第二层是语法分析,第三层是存储引擎。

SQL分类

DDL【data definition language】 数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update(DML中又单独分了一个DQL,数据查询语言,代表指令: select)
DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit

存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎:

show engines;

操作库

创建与删除

创建数据库

create database + 数据库名;(本质是在/var/lib/mysql创建一个目录)
这里和查看数据库不同,查看数据库是show databases
在这里插入图片描述
在这里插入图片描述

如果当前的数据库已经存在,那么就不会执行这个语句取创建数据库。

删除数据库

drop database + 要删除数据库的名字;(删除目录)
在这里插入图片描述

执行删除之后的结果:
1.数据库内部看不到对应的数据库。
2.对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。
注意:不要随意删除数据库

字符集和校验规则

数据库创建的时候有两个编码集:

1.数据库编码集——数据库未来存储数据
2.数据库校验集——支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式

数据库无论对数据做任何操作,都必须保证操作和编码必须是一致的。
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。

查看系统默认字符集以及校验规则
字符集:

show variables like ‘character_set_database’;
在这里插入图片描述

校验集:

show variables like ‘collation_database’;
在这里插入图片描述

查看数据库支持的字符集

show charset;

创建一个使用utf8字符集的数据库

create database 名字 charset=utf8;
create database 名字 charset= set utf8;

创建一个使用utf字符集,并带校对规则的数据库

create database 名字 charset=utf8 collate utf8_general_ci;

校验规则对数据库的影响

不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci;

create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));
insert into person values(‘a’);
insert into person values(‘A’);
insert into person values(‘b’);
insert into person values(‘B’);

查询结果:

mysql> use test1;
mysql> select * from person where name=‘a’;
±-----+
| name |
±-----+
| a |
| A |
±-----+
2 rows in set (0.01 sec)

排序结果:

mysql> use test1;
mysql> select * from person order by name;
±-----+
| name |
±-----+
| a |
| A |
| b |
| B |
±-----+

区分大小写
校验规则使用utf8_ bin
创建插入步骤同上。
查询结果:

mysql> use test2;
mysql> select * from person where name=‘a’;
±-----+
| name |
±-----+
| a |
±-----+
2 rows in set (0.01 sec)

排序结果:

mysql> use test2;
mysql> select * from person order by name;
±-----+
| name |
±-----+
| A |
| B |
| a |
| b |
±-----+

操纵数据库

查看数据库

show databases;

修改数据库
对数据库的修改主要指的是修改数据库的字符集,校验规则。

alter database 名字 要更改的命令;

显示创建语句

show create database 数据库名;

示例:
在这里插入图片描述
说明:

MySQL 建议我们关键字使用大写,但是不是必须的。
数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
/*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。

备份和恢复

备份
注意,这个操作实在OS进行的,不是在mysql

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径;

在备份的目录下会生成.sql后缀的文件。

如果备份的不是整个数据库,而是其中的一张表,怎么做?

mysqldump -u root -p 数据库名 表名1 表名2 > 数据库备份存储的文件路径;

同时备份多个数据库

mysqldump -u root -p -B 数据库名1 数据库名2 … > 数据库存放路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
还原
这个操作要在musql中进行

source 对应路径的文件;

执行命令即可恢复成功。

表的操作

创建表

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

不同的存储引擎,创建表的文件不一样。
表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
.frm:表结构
.MYD:表数据
.MYI:表索引

查看表

desc 表名;

在这里插入图片描述
Field:字段名字
Type:字段类型
Null:是否允许为空
Key:索引类型
Default:默认值
Extra:扩充

表也可以查看创建时候表的内容。

show create table 表的名字 \G;
这里的\G是为了清楚表中没有用是数据,增加可读性。

在这里插入图片描述

修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

insert into 表名称 (想插入哪一列字段,不写默认插入所有字段)values 插入内容。

首先创建一个表。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在users表添加一个字段:

alter table users add assets varchar(100) comment ‘图片路径’ after birthday;

在这里插入图片描述
插入新字段后,对原来表中的数据没有影响:

修改name,将其长度改成60:

alter table users modify name varchar(60);

在这里插入图片描述
在这里插入图片描述
长度变成了60.

删除password列:
注意:删除字段一定要小心,删除字段及其对应的列数据都没了。

alter table users drop password;

在这里插入图片描述
修改表名为employee:

alter table users rename to employee;
to:可以省掉

在这里插入图片描述

将name列修改为xingming

alter table employee change name xingming varchar(60); --新字段需要完整定义

在这里插入图片描述

删除表

drop table 表的名字
和数据库一样,不要轻易的删除

数据类型

数据类型分类

分类数据类型说明
数值类型BIT(M)位类型。M指定位数,默认值1,范围1-64
TINYINT [UNSIGNED]带符号的范围-128~127,无符号范围0~255.默认有符号
BOOL使用0和1表示真和假
SMALLINT [UNSIGNED]]带符号是-2^15次方 到 2~15-1,无符号是2^16-1
INT [UNSIGNED]]带符号是-2~31次方到 2^31-1,无符号是2~32-1
BIGINT [UNSIGNED]]带符号是-2~63次方到 2^63-1,无符号是2~64-1
FLOATL [(M,D)] [UNSIGNED]M指定显示长度,d指定小数位数,占用4字节
DOUBLE [(M,D)][UNSIGNED]表示比float精度更大的小数,占用空间8字节
DECIMAL [(M.D)[UNSIGNED]定点数M指定长度,D表示小数点的位数
文本二进制类型CHAR(size)固定长度字符串,最大255
VARCHAR (SIZE)可变长度字符串,最大长度65535
BLOB二进制数据
TEXT大文本,不支持全文索引,不支持默认值
时间日期DATE/DATETIME/TIMESTAMP日期类型(yyyy-mm-dd)(yyyy-mm-dd hh:mm:ss)timestamp时间戳
String类型ENUM类型ENUI是一个字符串对象,其值来自表创建时在列规定中显示枚举的一列值
SET类型SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个set成员的se列值时各成员之间用逗号间隔开。这样set成员值本身不能包含逗号。

数值类型

类型字节最小值(带符号的/无符号的)最大值(带符号的/无符号的)
TINYINT1-128127
0255
SMALLINT2-3276832767
065535
MEDIUMINI3-83886088388607
016777215
INT4-21474836482147483647
04294967295
BIGINT8-92233720368547758089223372036854775807
018446744073709551615

tinyint类型

在这里插入图片描述
在语言层级,如果数据溢出,会进行数据截断,但是在MySQL当中就会直接报错,不会进行对应的操作。这也就说明,被插入的数据一定是合法的。
也就是说,在mysql当中,数据类型本身就是一种约束。
数据是可预期的(插入数据一定是在这个范围之内的),也是完整的。

在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
可以通过UNSIGNED来说明某个字段是无符号的。
例如:

insert into tt2 values(-1); – 无符号,范围是: 0 - 255

mysql建立表的方式是:
类型名 数据类型 有无符号。
注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不
下,与其如此,还不如设计时,将int类型提升为bigint类型。

bit类型

位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
在这里插入图片描述
bit字段在显示时,是按照ASCII码对应的值显示,所以上面没有显示内容。
在这里插入图片描述
进行特殊处理才可以看得到。
在这里插入图片描述

小数类型

float
float[(m, d)] [unsigned] : M指定显示长度(这个长度包含小数位数),d指定小数位数,占用空间4个字节。(精度大约是7位)
如果小数部分不够位数,那么会用0进行补全。
如果多带了一位,就会舍弃这一位进行四舍五入。(这里就不会直接拦截了)

如果定义成unsigned,那么取值范围就没有负数部分了,负数传输进去会直接报错。
decimal
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数。
decimal和float很像,但是有区别:
float和decimal表示的精度不一样,如果整数部分过大,小数点部分过长,float就会有精度损失。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,
默认是10。
建议:如果希望小数的精度高,推荐使用decimal。

字符串类型

char

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255。(这里的单位为字符和C语言的不同,一个汉字在mysql当中也只算一个字符)
比如:char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255。

varchar

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节。
关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字
节数是65532。(动态调整有效字符大小)
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占
用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符
占用2字节)。
UTF8绝对不能超过21844.
** char和varchar比较**
在这里插入图片描述
如何选择定长或变长字符串?

如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘空间比较节省,但是效率低。
定长的意义是,直接开辟好对应的空间
变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

日期和时间类型

常用的日期有如下三个:
date :日期 ‘yyyy-mm-dd’ ,占用三字节。
datetime 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999 ,占用八字节。(允许传入自己定义的时间)
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节。(添加数据时,时间戳自动补上当前时间)

enum和set

enum:枚举,“单选”类型;
enum(‘选项1’,‘选项2’,‘选项3’,…);
该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535个;当我们添加枚举值时,也可以添加对应的数字编号。(如果选择的内容错误会直接报错,不进行当前操作)
set:集合,“多选”类型;
set(‘选项值1’,‘选项值2’,‘选项值3’, …);
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字1,2,4,8,16,32,…最多64个,类似位图,每个选项都是其中一个位,输入的十进制数哪个位为1,就会选择哪个选项。(如果选择的内容错误会直接报错,不进行当前操作,选择多种用逗号作为分隔符)
注意:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。(例如设置枚举类型的时候是“男”“女”,插入枚举类型数据的时候可以通过1或2表示“男”或“女”)
注意:插入的数据有时会是NULL,这个是为空的意思,表示什么都没有,和空串是不一样的。
在这里插入图片描述
有如下数据,想查找所有喜欢登山的人:

±----------±--------------±-------+
| username | hobby | gender |
±----------±--------------±-------+
| 雷锋 | 登山,武术 | 男 |
| Juse | 登山,武术 | 女 |
| LiLei | 登山 | 男 |
| LiLei | 篮球 | 男 |
| HanMeiMei | 游泳 | 女 |
±----------±--------------±-------+

使用如下查询语句:

mysql> select * from votes where hobby=‘登山’;
±---------±-------±-------+
| username | hobby | gender |
±---------±-------±-------+
| LiLei | 登山 | 男 |
±---------±-------±-------+

不能查询出所有爱好为登山的人。
集合查询使用find_ in_ set函数:
find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0;str_list 用逗号分隔的字符串。
在这里插入图片描述
sub是要查找的内容,str_list是要查找的set数据类型表示列名。
查询爱好登山的人:

mysql> select * from votes where find_in_set(‘登山’, hobby);
±---------±--------------±-------+
| username | hobby | gender |
±---------±--------------±-------+
| 雷锋 | 登山,武术 | 男 |
| Juse | 登山,武术 | 女 |
| LiLei | 登山 | 男 |
±---------±--------------±-------+

如果想查询爱好登山和武术的人:

mysql> select * from votes where find_in_set(‘登山’, hobby) and find_in_set(‘武术’, hobby);
±---------±--------------±-------+
| username | hobby | gender |
±---------±--------------±-------+
| 雷锋 | 登山,武术 | 男 |
| Juse | 登山,武术 | 女 |
±---------±--------------±-------+

相关文章:

Linux——MySQL基础

基础知识 连接服务器 mysql -h 127.0.0.1 -P 3306 -u root -p -h 指明登录部署了myqsl服务的主机 -P 指明访问的端口号 -u 指明用户 -p 指明登录密码(可以不填写) 什么是数据库 首先,数据库是分为服务端和客户端的: mysql是客户…...

k8s监控方案实践(二):集成Alertmanager告警与钉钉Webhook通知

k8s监控方案实践(二): 集成Alertmanager告警与钉钉Webhook通知 文章目录 k8s监控方案实践(二): 集成Alertmanager告警与钉钉Webhook通知一、Alertmanager简介1. 什么是Alertmanager?2. Promethe…...

学习threejs,使用Physijs物理引擎

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...

UG471 之 SelectIO 逻辑资源

背景 《ug471》介绍了Xilinx 7 系列 SelectIO 的输入/输出特性及逻辑资源的相关内容。 第 1 章《SelectIO Resources》介绍了输出驱动器和输入接收器的电气特性,并通过大量实例解析了各类标准接口的实现。 第 2 章《SelectIO Logic Resources》介绍了输入输出数据…...

基于HISI3519dv500的yolov8-obb车位检测

1. 数据标注 标注软件&#xff1a;roLabelImg 安装方式&#xff1a;见 https://github.com/cgvict/roLabelImg.git 操作指南&#xff1a; 标注后的数据格式如下&#xff1a; <annotation verified"no"><folder>4800</folder><filename>fr…...

Prometheus生产实战全流程详解(存储/负载/调度篇)

一、存储架构实战&#xff08;TSDB深度优化&#xff09; 1. 存储拓扑设计 2. 关键参数调优 4. 性能压测对照表 二、负载治理实战&#xff08;百万级Series管控&#xff09; 三、调度优化实战&#xff08;精准采集控制&#xff09; 2. 优先级调度配置 3. 自适应抓取调整 4…...

Mac电脑远程连接window系统服务器

1.下载 首先需要下载Microsoft Remote Desktop软件&#xff0c;下载链接如下&#xff1a; https://go.microsoft.com/fwlink/?linkid868963 2、软件下载成功后&#xff0c;可按照引导程序进行安装&#xff0c;成功后进入软件&#xff0c;可看到如下界面&#xff1a;...

【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64

【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64 目录 【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64准备工作&#xff1a;&#xff08;必须&#xff09;第一步&#xff1a;第二步&#xff1a;第三步&#xff1a; 建议…...

【Qt】之【Bug】点击按钮(ui->pushButton)触发非本类设置的槽函数

解决 先说解决办法&#xff0c;按钮在ui为默认命名ui->pushButton,后面改了下按钮名为该按钮的功能相关&#xff0c;就不会随意触发其他槽函数了。 没想到是这个原因。。。 可能是之前默认的objectName与旧的槽函数自动连接了 记录一下&#xff0c;找了好久其他的原因。 以…...

buck和boost总结

目录 1. 基本概念与原理 2. 工作模式 3. 典型应用场景 4. Buck-Boost电路&#xff1a;升降压结合 5. 核心区别与选择 1. 基本概念与原理 Buck电路&#xff08;降压电路&#xff09; 通过开关器件&#xff08;如MOSFET&#xff09;周期性地导通和关断&#xff0c;控制电感充…...

rtsp,。。。。

下面是基于 FFmpeg H.264 RTSP GStreamer 的低延时视频传输方案的详细搭建指南。此方案可将延迟控制在 <100ms&#xff0c;适合远程驾驶、监控等实时性要求较高的应用场景。 &#x1f4e6; 方案架构 摄像头&#xff08;OpenCV&#xff09;→ FFmpeg&#xff08;H.264编码…...

微信小程序地图缩放scale隐性bug

bug1 在真机环境下通过this.mapCtx.getScale获取当前地图的缩放等级带小数&#xff0c; 当设置scale带小数时&#xff0c;地图会先执行到缩放到带小数的缩放等级&#xff0c;然后会再次缩放取整的缩放等级&#xff08;具体向上取整还是向下取整未知&#xff0c;两种情况都观察…...

Java中关于多态的总结

多态是面向对象编程的三大特性之一&#xff08;封装、继承、多态&#xff09;&#xff0c;它允许不同类的对象对同一消息做出不同的响应。 多态的基本概念 1、定义 多态(Polymorphism)指同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产生不同的执行结果…...

突破跨界传输瓶颈:Zynq OCM与DDR核间数据共享性能深度调优

一、当硬件加速遇上内存墙:Zynq数据共享的终极挑战 在某军工雷达信号处理项目中,工程师小王遇到了棘手难题——通过Zynq的ARM核与FPGA协同处理雷达回波数据时,系统吞吐量始终无法突破200MB/s的瓶颈。经过三天三夜的排查,发现问题的根源竟是OCM与DDR之间的数据传输效率不足…...

基于 Ubuntu 24.04 部署 WebDAV

无域名&#xff0c;HTTP 1. 简介 WebDAV&#xff08;Web Distributed Authoring and Versioning&#xff09;是一种基于 HTTP 的协议&#xff0c;允许用户通过网络直接编辑和管理服务器上的文件。本教程介绍如何在 Ubuntu 24.04 上使用 Apache2 搭建 WebDAV 服务&#xff0c;无…...

JVM、JRE、JDK的区别

JVM JVM全称Java虚拟机(Java Virtual Machine, JVM),它是运行java字节码的虚拟机&#xff0c;JVM针对不同的系统有不同的实现&#xff0c;目的运行相同的字节码有同样的结果&#xff0c;JVM是“一次编译&#xff0c;到处运行”实现的关键。如下不同的编程语言编译生成字节码文…...

解密火星文:LeetCode 269 题详解与 Swift 实现

文章目录 摘要描述题解答案题解代码分析构建图&#xff08;Graph&#xff09;拓扑排序&#xff08;Topological Sort&#xff09; 示例测试及结果时间复杂度空间复杂度实际场景类比总结 摘要 这篇文章我们来聊聊 LeetCode 269 题&#xff1a;火星词典&#xff08;Alien Dictio…...

系统思考:短期困境与长期收益

最近在项目中&#xff0c;一直有学员会提到一个议题&#xff0c;如何平衡当前困境和长期收益&#xff1f; 我的思考是在商业和人生的路上&#xff0c;我们常常听到“鱼和熊掌不可兼得”的说法&#xff0c;似乎短期利益和长期目标注定是对立的。但事实上&#xff0c;鱼与熊掌是…...

K8S - Harbor 镜像仓库部署与 GitLab CI 集成实战

引言 在 Kubernetes 环境中&#xff0c;容器镜像的存储与管理至关重要。企业级镜像仓库&#xff08;如 Harbor&#xff09;为团队提供了安全、稳定、可扩展的镜像管理解决方案。 一、Harbor 安装与配置 Harbor 是由 VMware 开源的企业级云原生镜像仓库&#xff0c;它不仅支持…...

2025-05-10-FFmepg库裁切有水印的视频

裁后 代码 import subprocess# 文件路径 input_video_path "bg_video.mp4" output_video_path "output_video_cropped.mp4"# 裁剪视频下方的水印 def crop_video(input_video_path, output_video_path, crop_height):# 获取视频的分辨率def get_video…...

通信协议选型篇:如何根据项目需求选择合适的通信协议?

🧭 本文为《嵌入式通信协议全解析》第七篇,面向系统架构师、嵌入式开发者与技术决策者,提供一套实用的通信协议选型方法论,结合性能对比表、使用案例与决策树,助你在“带宽、功耗、距离、可靠性、生态”之间做出最优权衡。 🔍 一、为什么通信协议的选型很关键? 在嵌入…...

Altera系列FPGA纯verilog视频图像去雾,基于暗通道先验算法实现,提供4套Quartus工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目Altera系列FPGA相关方案推荐本博主已有的图像处理方案 3、设计思路框架工程设计原理框图输入Sensor之-->OV7725摄像头输入Sensor之-->OV5640摄像头输入Sensor之…...

大模型的实践应用39-Qwen3(72B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法等研发数学教学管理与成绩提升系统

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用39-Qwen3(72B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法等研发数学教学管理与成绩提升系统。 在2025年AI技术快速发展的背景下,大模型已展现出在教育领域的巨大潜力。通义千问Qwen3作为阿里云推出的最新一代…...

【强化学习】动态规划(Dynamic Programming, DP)算法

1、动态规划算法解题 LeetCode 931. 下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一行选择的元素和当前行所选…...

【Linux】深入拆解Ext文件系统:从磁盘物理结构到Linux文件管理

目录 1、理解硬件 &#xff08;1&#xff09;磁盘 &#xff08;2&#xff09;磁盘的物理结构 &#xff08;3&#xff09;磁盘的存储结构 &#xff08;4&#xff09;磁盘的逻辑结构 &#xff08;5&#xff09;CHS && LBA地址 2、引入文件系统 &#xff08;1&…...

linux ptrace 图文详解(八) gdb跟踪被调试程序的子线程、子进程

目录 一、gdb跟踪被调试程序的fork、pthread_create操作 二、实现原理 三、代码实现 四、总结 &#xff08;代码&#xff1a;linux 6.3.1&#xff0c;架构&#xff1a;arm64&#xff09; One look is worth a thousand words. —— Tess Flanders 相关链接&#xff1a; …...

【列表类型】

1、按索引取值 索引可正向存取&#xff0c;也可反向存取 l [111, paipai, cat] # 正向取值 print(l[1]) # 方向取值 print(l[-1]) # 通过索引给列表重新赋值,前提&#xff1a;索引存在 l[0] ccat print(l) # 索引不存在的情况下&#xff0c;取值or重新赋值的情况下都会报错 …...

MySQL 8.0 OCP 英文题库解析(二)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到2025.07.31 之前。所有人均可以免费考取 原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题6~15。 试题6: …...

数据分析与逻辑思维:六步解决业务难题;参考书籍《数据分析原理:6步解决业务分析难题 (周文全, 黄怡媛, 马炯雄)》

文章目录 一、懂业务&#xff1a;业务背景与逻辑前提1.1 明确业务目标与问题定义1.2 培养批判性思维与高于业务视角 二、定指标&#xff1a;构建科学的指标体系2.1 指标拆解与维度分析2.2 典型指标体系案例&#xff1a;用户与业务视角 三、选方法&#xff1a;匹配业务需求的分析…...

人力资源管理系统如何有效提高招聘效率?

在传统招聘模式下&#xff0c;企业招聘常常陷入 “泥潭”。HR 每天需要花费大量时间在海量简历中 “大海捞针”&#xff0c;手动筛选、电话沟通、安排面试&#xff0c;流程繁琐且效率低下。好不容易邀约到候选人&#xff0c;却因面试安排冲突、信息传递不及时等问题&#xff0c…...

FAISS 与机器学习、NLP 的关系

FAISS&#xff08;Facebook AI Similarity Search&#xff09;是一个用于高效相似性搜索和密集向量聚类的开源库&#xff0c;由 Facebook AI Research 开发。它在机器学习&#xff08;特别是自然语言处理&#xff0c;NLP&#xff09;领域中扮演着重要角色&#xff0c;主要解决大…...

文件包含2

远程文件包含与本地文件包含的区别 对比 对比项本地文件包含&#xff08;LFI&#xff09;远程文件包含&#xff08;RFI&#xff09;定义攻击者包含服务器本地的文件攻击者包含远程服务器&#xff08;如HTTP/FTP&#xff09;上的文件依赖条件不需要特殊配置需要allow_url_incl…...

嵌入式系统架构验证工具:AADL Inspector v1.10 全新升级

软件架构建模与早期验证是嵌入式应用的关键环节。架构分析与设计语言&#xff08;AADL&#xff09;是专为应用软件及执行平台架构模型设计的语言&#xff0c;兼具文本与图形化的双重特性。AADL Inspector是一款轻量级的独立工具&#xff1a; 核心处理能力包括 √ 支持处理AA…...

软考高级系统架构设计师备考分享:操作系统核心知识点整理

在备战软考高级系统架构设计师的过程中&#xff0c;操作系统作为核心考点之一&#xff0c;需要系统性地掌握其核心原理。本文将从操作系统分类、进程状态模型、同步互斥机制、死锁问题及存储管理五大模块展开梳理&#xff0c;结合考试高频考点和实际案例进行解析。 一、操作系统…...

22、城堡防御工事——React 19 错误边界与监控

一、魔法护盾&#xff1a;错误边界机制 1. 城墙结界&#xff08;Error Boundary&#xff09; // 客户端错误边界use client function useErrorBoundary() {const [error, setError] useState(null);​const handleError useCallback((error, errorInfo) > {setError(erro…...

有关SOA和SpringCloud的区别

目录 1. 定义 2. 架构风格 3. 技术栈 4. 服务交互 5. 适用场景 前言 面向服务架构&#xff08;SOA&#xff09;是一种软件设计风格&#xff0c;它将应用程序的功能划分为一系列松散耦合的服务。这些服务可以通过标准的通信协议进行交互&#xff0c;通常是HTTP或其他消息传…...

大数据——Mac环境DataSpell集成Jupyter

1、设置 2、添加新的解释器 3、解释器类型选择Conda 4、进入选中全部&#xff0c;然后重启 5、dataspell右下角会显示当前项目的运行环境 6、创建Jupyter Notebook文件 7、测试 8、查看当前配置 &#xff08;1&#xff09;本地模式安装使用 &#xff08;2&#xff09;…...

解锁健康养生新境界

在追求高品质生活的当下&#xff0c;健康养生早已超越 “治未病” 的传统认知&#xff0c;成为贯穿全生命周期的生活艺术。它如同精密的交响乐&#xff0c;需饮食、运动、心理与生活习惯多维度协奏&#xff0c;方能奏响生命的强音。 饮食养生讲究 “顺时、适性”。遵循二十四节…...

WORD压缩两个免费方法

日常办公和学习中&#xff0c;Word文档常常因为包含大量图片、图表或复杂格式而导致文件体积过大&#xff0c;带来诸多不便&#xff0c;比如 邮件发送受限&#xff1a;许多邮箱附件限制在10-25MB&#xff0c;大文件无法直接发送 存储空间占用&#xff1a;大量文档占用硬盘或云…...

Zabbix监控 RabbitMQ 指定消息队列名称(pull_alarms )的消费者

✅ 1. 编写 RabbitMQ 队列监控脚本 创建脚本文件 /usr/local/bin/zbx_rabbitmq_metric.sh 并写入以下内容&#xff1a; #!/bin/bash # /usr/local/bin/zbx_rabbitmq_metric.shQUEUE$1 METRIC$2 USER$3 PASS$4if [[ -z "$QUEUE" || -z "$METRIC" || -z &q…...

RabbitMQ ②-工作模式

RabbitMQ 工作模式 官方提供了七种工作模式 Simple&#xff08;简单模式&#xff09; P&#xff1a;生产者&#xff0c;发布消息到队列C&#xff1a;消费者&#xff0c;从队列中获取消息并消费Queue&#xff1a;消息队列&#xff0c;存储消息。 一个生产者&#xff0c;一个…...

《探索React Native社交应用中WebRTC实现低延迟音视频通话的奥秘》

WebRTC&#xff0c;全称为Web Real-Time Communication&#xff0c;是一项开创性的开源技术&#xff0c;为Web和移动应用开启了实时通信的大门。它打破了传统通信的束缚&#xff0c;使得应用之间无需依赖繁琐的中间服务器&#xff0c;就能实现直接的点对点通信&#xff0c;这是…...

UI设计公司兰亭妙微分享:汽车 MHI 设计的界面布局创新法则

在汽车人机界面&#xff08;MHI&#xff09;设计中&#xff0c;界面布局犹如建筑蓝图&#xff0c;奠定了用户与汽车交互体验的基础。合理创新的布局能提升驾驶安全性与便捷性&#xff0c;融合极简美学与高效操作则成为现代汽车 MHI 界面布局设计的核心追求。​ 驾驶场景中&…...

【递归,搜索与回溯算法篇】专题(一) - 递归

文章目录 面试题 08.06. 汉诺塔问题21. 合并两个有序链表206. 反转链表24. 两两交换链表中的节点50. Pow(x, n) 面试题 08.06. 汉诺塔问题 题目链接&#xff1a; 面试题 08.06. 汉诺塔问题 题目描述&#xff1a; 在经典汉诺塔问题中&#xff0c;有 3 根柱子及 N 个不同大小的…...

B站pwn教程笔记-9

前言&#xff1a;可以去一些开源镜像站下载libc老的乌班图镜像&#xff0c;因为堆题的libc可能比较老&#xff0c;没有新的一些保护措施和机制。 格式化字符串漏洞 归根结底&#xff0c;可以读写任意地址内存。 泄露栈数据/任意地址数据 主要问题就是printf不知道自己有没有…...

NVR(网络视频录像机) 和 网络摄像机(IPC,IP Camera)

NVR&#xff08;网络视频录像机&#xff09; 和 网络摄像机&#xff08;IPC&#xff0c;IP Camera&#xff09; 是网络监控系统的两个核心组件&#xff0c;但功能定位完全不同。以下是它们的核心区别&#xff1a; 1. 功能角色 组件网络摄像机&#xff08;IPC&#xff09;NVR&a…...

数智读书笔记系列032《统一星型模型--一种敏捷灵活的数据仓库和分析设计方法》

引言 在当今数字化时代,数据仓库作为企业数据管理的核心基础设施,承担着整合、存储和提供企业数据的关键角色。随着商业环境的快速变化和业务需求的日益复杂,数据仓库的设计方法也在不断演进,以适应新的挑战和要求。 背景与意义 数据仓库领域长期存在着两种主流方法论之…...

互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现

互联网大厂Java求职面试&#xff1a;基于RAG的智能问答系统设计与实现 场景背景 在某互联网大厂的技术面试中&#xff0c;技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情&#xff0c;但回答问题时总是带着幽默感&#xff0c;有时甚至让人哭笑不得。 …...

[C#]Task.Run()和Task.Factory.StartNew()对比(腾讯元宝)

Task.Run和Task.Factory.StartNew都是用来创建并启动任务的方法&#xff0c;但它们的内部实现和使用场景有所不同。两者的主要区别&#xff1a;默认调度器、配置选项、异常处理、适用场景。建议用户大多数情况下使用Task.Run&#xff0c;除非需要StartNew的高级配置&#xff0c…...

Java游戏服务器开发流水账(3)游戏数据的缓存简介

简介 游戏服务器数据缓存是一种在游戏服务器运行过程中&#xff0c;用于临时存储经常访问的数据的技术手段&#xff0c;旨在提高游戏性能、降低数据库负载以及优化玩家体验。游戏开发中数据的缓存可以使用Java自身的内存也可以使用MemCache&#xff0c;Redis&#xff0c;注意M…...