MySQL基础『数据类型』
✨个人主页: 北 海
🎉所属专栏: MySQL 学习
🎃操作环境: CentOS 7.6 阿里云远程服务器
🎁软件版本: MySQL 5.7.44
文章目录
- 1.数据类型一览
- 2.整型
- 2.1.INT
- 2.2.BIT
- 3.浮点数
- 3.1.FLOAT
- 3.2.DECIMAL
- 3.3.如何选择
- 4.字符
- 4.1.CHAR
- 4.2.VARCHAR
- 4.3.如何使用
- 5.时间和日期
- 5.1.DATE
- 5.2.DATETIME
- 5.3.TIMESTAMP
- 6.枚举和集合
- 6.1.ENUM
- 6.2.SET
1.数据类型一览
作为专门用来存储数据的 数据库,MySQL
提供了丰富的数据类型,覆盖绝大多数使用场景
分类 | 数据类型 | 说明 |
---|---|---|
数值类型 | BIT(M) | 位类型,M指定位数,默认为 1,范围 [1, 64] |
TINYINT [UNSIGNED] | 有符号范围 [-128, 127],无符号范围 [0, 255],默认为有符号 | |
BOOL | 0 表示假,1 表示真,在许多数据库系统中,BOOL 与 TINYINT(1) 是同义的 | |
SMALLINT [UNSIGNED] | 有符号范围 [-2^15, 2^15-1],无符号范围 [0, 2^16-1] | |
INT [UNSIGNED] | 有符号范围 [-2^31, 2^31-1],无符号范围 [0, 2^32-1] | |
BIGINT [UNSIGNED] | 有符号范围 [-2^63, 2^63-1],无符号范围 [0, 2^64-1] | |
FLOAT [(M, D)] [UNSIGNED] | M 指定显示长度,D 指定小数位数,大小依赖具体平台,通常占用 4 字节,但在某些情况下可能达到 8 字节 | |
DOUBLE [(M, D)] [UNSIGNED] | 比 FLOAT 精度更高,大小通常为 8 字节,在某些情况下可能更大 | |
DECIMAL(M, D) [UNSIGNED] | 比 DOUBLE 精度更高,能完全保证数据的精度,适用于需要高精度的金融计算 | |
字符、二进制类型 | CHAR(SIZE) | 固定长度字符串,最大支持 255 字符,用空格填充字符串到指定的长度 |
VARCHAR(SIZE) | 可变长度字符串,最大支持 65535 字符,它不会用空格填充 | |
BLOB | 二进制数据 | |
TEXT | 大文本,不支持全文索引、默认值,需要注意有一些变体 | |
时间日期 | DATE | 格式为 yyyy-mm-dd |
DATETIME | 格式为 yyyy-mm-dd hh:mm:ss | |
TIMESTAMP | 时间戳,通常表示一个时间点,包括日期和时间 | |
其他类型 | ENUM | 字符串对象,表示枚举类型,只能选取其中一个值,由于在某些数据库系统中的限制,ENUM 的使用有时会受到争议 |
SET | 字符串对象,表示集合类型,可以选取零个或多个值 |
创建一个数据库 dataType
mysql> create database if not exists dataType;
选择数据库
mysql> use dataType;
2.整型
2.1.INT
首先看看最常用的 int
类型,同 C/C++
中的一样,MySQL
中的 int
占 4
字节,支持创建无符号类型
INT [UNSIGNED]
mysql> create table if not exists testINT
(整型 int,无符号整型 int unsigned
);mysql> desc testINT;
注意:
MySQL
中创建无符号类型,是在类型之后加上unsigned
- 括号中的数字通常用于指定显示宽度,并不表示存储范围
向表中插入一组合法的数据
mysql> insert into testINT values (-1234, 4321), (1000000000, 3000000000);
整型的范围是 [-2147483648
, 2147483647
],无符号整型的范围是 [0
, 4294967295
],范围内的数据都可以正常插入,如果插入越界数据,则会插入失败
mysql> insert into testINT (整型) values (2147483648);mysql> insert into testINT (整型) values (-2147483649);mysql> insert into testINT (无符号整型) values (4294967296);mysql> insert into testINT (无符号整型) values (-1);
由此可见:MySQL 中对于数据范围具有严格约束,会直接拦截非法数据的插入
也就是说:凡是成功插入 MySQL 中的数据,都是合法的
约束使用者,
MySQL
能保证数据插入的合法性(数据库中的数据是可预期、完整的)
插入数据时,需要注意符合数据类型范围要求
除了最常用的 int
外,MySQL
还提供了其他几种衍生类型:
TINYINT
极短整型,占1
字节,范围 [-128
,127
]SMALLINT
短整型,占2
字节,范围 [-32768
,32767
]MEDIUMINT
中整型,占3
字节,范围 [-8388608
,8388607
]BIGINT
大整型,占8
字节,范围 [-9223372036854775808
,9223372036854775807
]
不同大小的整型适用于不同场景中,
MySQL
提供了选择,把选择的权力交给了用户,由用户根据数据库的预期大小,自由选择整型
都可以正常建表并使用
mysql> create table if not exists testIntFamily
(极短整型 tinyint,短整型 smallint,中整型 mediumint,整型 int,大整型 bigint
);mysql> desc testIntFamily;mysql> insert into testIntFamily values (127, 32767, 8388607, 2147483647, 9223372036854775807);mysql> select * from testIntFamily;
注意: 这些衍生类型如同 int
一样,可以声明为无符号类型,定义时在类型之后加上 unsigned
即可,创建无符号类型后,无法再存储负数,存储整正数的能力翻倍
尽量不使用
unsigned
,对于int
类型可能存放不下的数据,int unsigned
同样可能存放不下,与其如此,还不如设计时,将int
类型提升为bigint
类型
2.2.BIT
MySQL
中提供了一个很有意思的类型:bit(m)
,表示 位字段类型,M
的范围 1~64
,这里的位指 比特位,64
比特位即 8
字节,接下来分别创建几个 bit
类型
BIT(M)
mysql> create table if not exists testBIT
(位字段类型_1 bit(1),位字段类型_2 bit(2),位字段类型_8 bit(8)
);mysql> desc testBIT;
再分别向其中插入一些数据,查询时却看到了一些奇怪字符
mysql> insert into testBIT values (1, 3, 100), (0, 2, 255);mysql> select * from testBIT;
这是因为 查表时,位字段类型默认按 ASCII
的形式显示,查表可以发现,100
正好对应字符 d
如果我们想让其正常显示,查询时可以使用 hex()
这个内置函数将查询结果转为十六进制显示
mysql> select hex(位字段类型_1), hex(位字段类型_2), hex(位字段类型_8) from testBIT;
注:64
表示 6 * 16 + 4 = 100
, FF
则表示 15 * 16 + 15 = 255
值得注意的是,对于 BIT
类型,MySQL
也做出了相应的 约束,对于超出范围的数据,拒绝插入
mysql> insert into testBIT (位字段类型_1) values (3);
这里的 3
明明只是一个整数,为什么会失败?
注意: 位字段类型限制的是比特位,而非位数,3
的二进制表示为 0011
,已经使用了两个比特位,自然也就超出范围了,所以 bit(1)
只能插入 0
或 1
3.浮点数
3.1.FLOAT
MySQL
支持我们熟悉的浮点数类型 float
、double
,所占大小分别为 4
字节和 8
字节
FLOAT [(M, D)] [UNSIGNED]DOUBLE [(M, D)] [UNSIGNED]
mysql> create table if not exists testFloat
(浮点数 float(4, 2)
);mysql> desc testFloat;
其中,float(4, 2)
中的 (4, 2)
表示当前浮点数支持显示 4
位,且小数精度为 2
位,数据范围为 [-99.99
, 99.99
]
float
和double
在定义时允许不指明显示位数和小数精度
插入一些正常数据,可以看到插入成功
mysql> insert into testFloat values (50.05), (99.99), (-99.99);
插入一些超出范围的数据,直接被拦截了
mysql> insert into testFloat values (500.05);mysql> insert into testFloat values (-500.05);mysql> insert into testFloat values (-100.00);mysql> insert into testFloat values (-100.0);
为什么插入 -100.0
也被拦截了?
这是因为 当小数部分不足时,MySQL
自动补齐,补齐后,实际插入的值为 -100.00
,有五位数,超出范围,自然就被拦截了
MySQL
也并非是铁面无私,当我们插入的数据小数部分超过指定精度时,MySQL
会遵循四舍五入的规则,将多余的小数部分省略,五入 向前进一位后,如果超出了范围,也会被拦截
mysql> insert into testFloat values (50.005), (50.000001), (99.994);mysql> select * from testFloat;// 下面这种情况会被拦截,因为四舍五入后,数据会变成 100.00
// mysql> insert into testFloat values (99. 995);
总之就是 MySQL
必须确保数据库中数据的合法性
如果将 float
类型定义为无符号类型,会导致它的 负数 部分直接丢弃
mysql> create table if not exists testFloatU
(无符号浮点数 float(4, 2) unsigned
);mysql> desc testFloatU;mysql> insert into testFloatU values (99.991), (50.00), (0);// 插入失败
mysql> insert into testFloatU values (-99.991), (-50.00), (-1);
至于为什么这么奇怪,这是因为浮点数的存储规则不同于其他类型,采用 IEEE 754
标准,不是简单的直接使用二进制位,而是将二进制位划分为几个区间,各司其职,如果将其设为无符号类型,等价于将符号表示的二进制位直接禁用
float
存在精度损失,当插入的小数部分过长时,会导致精度丢失
比如这里先创建一张含有 float(10, 8)
类型的表
mysql> create table if not exists testFloatL
(浮点数 float(10, 8)
);mysql> desc testFloatL;
现在向 testFloatL
表中插入一个较长的数据,并查询结果
mysql> insert into testFloatL values (1.23456789);mysql> select * from testFloatL;
可以看到第八位小数精度丢失了,证明 float
在使用过程中存在 精度损失 问题
float
至多保证7
位小数精度准确
至于 double
,除了比 float
大一些之外,与 float
的使用方法一模一样,同样存在 精度损失问题,如果想要追求超高精度,可以改用 decimal
类型
3.2.DECIMAL
decimal
是 MySQL
针对高精度小数推出的浮点数类型,decimal
使用方法和 float / double
一样,在支持浮点数存储的同时,decimal
还可以保证小数部分的精度
DECIMAL(M, D) [UNSIGNED]
创建一张表,其中分别包含两个高精度浮点数类型
mysql> create table if not exists testDecimal
(f float(10, 8),d decimal(10, 8)
);mysql> desc testDecimal;
分别插入普通数据和高精度数据,查看两者的差异
mysql> insert into testDecimal values (99.99, 99.99), (1.23456789, 1.23456789);mysql> select * from testDecimal;
可以看到,float
不仅出现了精度丢失,还出现了只插入两位小数的情况下,后面出现了一堆小数;而 decimal
则是指哪打哪,插入的数据非常准确,精度保持的非常稳定
3.3.如何选择
float
比 decimal
占用空间小,decimal
比 float
精度高
如果对精度要求不是很高(精度少于等于七位),可以选择 float
;如果从事金融相关工作,对精度的要求极其苛刻,选择 decimal
float
能保证的精度最多是7
位
decimal
能保证的精度最多是30
位,不同版本的MySQL
略有差异
4.字符
4.1.CHAR
char
在 C/C++
中称为字符类型,大小为 1
字节,在 MySQL
中则是叫做 固定长度字符串,也就是说 char
可以存储字符串(前提是长度足够)
CHAR(L)
创建一张表,其中包含了长度为 2
的 char
mysql> create table if not exists testChar
(固定字符串 char(2)
);mysql> desc testChar;
向表中插入字符串
注:在 MySQL
中使用 ‘ '
或者 " "
括起来的为字符串
mysql> insert into testChar values ('a'), ('bb'), ('战'), ('战狼');mysql> select * from testChar;mysql> insert into testChar values ('战狼三');mysql> insert into testChar values ('ccc');
在
utf8
编码中,一个英文字符占1
字节,一个中文字符占3
字节
成功插入 2
个英文字符可以理解,但为什么也可以成功插入 2
个中文字符?
这是因为 MySQL
中的 char
类型大小并非 1
字节,而是 1
字符,无论是什么语言,都可以按个数插入,而非实际占用空间,这与 C/C++
中的 char
有根本上的区别
这也就是解释了为什么 char
被称为 固定长度字符串,不过这个字符串也是有 约束 的,当实际插入的字符串长度超过 char
的固定长度时,插入操作会被拦截,并且 char
支持的最大长度为 255
,大于 255
的字符串注定不能使用 char
类型存储
mysql> alter table testChar modify 固定字符串 char(255);mysql> desc testChar;// 修改失败
mysql> alter table testChar modify 固定字符串 char(256);
4.2.VARCHAR
varchar
表示 变长字符串,不同于 char
至多支持插入长度为 255
的字符串,varchar
至多支持插入总大小为 65535
字节的字符串
VARCHAR(L)
varchar
为什么被称为 变长字符串 ?这是因为给
varchar
分配空间后(假设分配了10
字符),如果实际插入的字符串长度为5
,则只会使用varchar
中的5
字符空间,如果实际插入的长度为8
,就会使用8
字符空间,在长度范围之内,varchar
会根据实际插入的字符串长度,动态分配空间,达到 变长 的效果
mysql> create table if not exists testVarchar
(变长字符串 varchar(6)
);mysqL> desc testVarchar;mysql> insert into testVarchar values ('战狼一'), ('战狼一二三'), ('战狼一二三四');mysql> select * from testVarchar;
尝试将 变成字符串
的大小改为 65535
,结果提示最大支持修改为 21845
mysql> alter table testVarchar modify 变长字符串 varchar(65535);
为什么这里的 varchar
最大只支持 21845
?
因为此时存入的是中文字符,前面提到过,一个中文字符在 utf8
编码中占 3
字节, 21845 * 3 = 65535
,而这正是 varchar
支持字符串的最大字节数
需要注意的是 varchar
的最大长度与编码密切相关,在英文字符状态下,varchar
至多支持插入长度为 65535
的字符串,但是其中需要使用 1~3
字节的空间用来记录数据大小,所以实际至多支持插入长度为 65532
的英文字符串
对于中文字符串来说,除去 3
字节的记录空间,可用空间剩余 65532
字节,每个中文字符占 3
字节,实际至多插入长度 65532 / 3 = 21844
的中文字符串
将之前的 testVarchar
大小修改为 21844
mysql> desc testVarchar;mysql> alter table testVarchar 变长字符串 varchar(21488);mysql> desc testVarchar;
注意: 我这里能修改成功是因为当前的 testVarchar
表中只有一个字符,数据表中的字段也是需要占用空间的,当字段过多时,是无法修改 varchar
为最大容量的
如果实际使用场景中多次涉及 varchar
的边界,可以改用 text
,这是一个专门用来存储文本数据的类型,比如我当前编写的博客,就是通过该类型存储的
4.3.如何使用
char
与 varchar
的区别如下
实际存储 | char(4) | varchar(4) | char 占用字符 | varchar 占用字符 |
---|---|---|---|---|
abcd | abcd | abcd | 4*3=12 | 4*3+1=13 |
好 | 好 | 好 | 4*3=12 | 1*3+1=4 |
Abcde | X | X | 数据超过长度 | 数据超过长度 |
varchar
会额外使用 1~3
字节的空间,用于记录数据大小
如何选择定长或变成字符?
- 如果数据确定长度都一样,就使用定长
char
,比如身份证、手机号 - 如果数据长度有变化,就使用变长
varchar
,比如名字、地址 - 定长的磁盘空间比较浪费,但是效率高
- 变长的磁盘空间比较节省,但是效率低
- 定长的意思是:直接开辟对应好的空间
- 变长的意思是:在不超过自定义范围的情况下,用多少开辟多少
5.时间和日期
5.1.DATE
在 MySQL
中,日期表示 年月日,通过 date
类型表示,占用 3
字节空间
// yyyy-mm-dd
DATE
mysql> create table if not exists testDate
(日期 date
);mysql> desc testDate;
可以向其中插入日期信息
注意: 插入的日期信息需要使用 ' '
或者 " "
引起来
mysql> insert into testDate values ('2018-4-10'), ('2019-9-11'), ('2021-7-15');mysql> select * from testDate;
5.2.DATETIME
如果想插入更为详细的日期信息,可以改用 datetime
,格式为 年月日 时分秒,称为 日期时间类型,占用 8
字节空间
范围从 1000
到 9999
// yyyy-mm-dd hh:mm:ss
DATETIME
mysql> alter table testDate add (日期时间 datetime);mysql> desc testDate;
同样的,插入数据时需要使用 ' '
或者 " "
将日期时间括起来
mysql> insert into testDate values ('1970-1-1', '1970-1-1 0:0:0'), ('2023-12-4', '2023-12-4 14:21:42');mysql> select * from testDate;
诸如评论时间、博客发布时间等都是通过 datetime
类型存储的
除了 日期 和 日期时间,当然还有单纯 时间 类型,只能用来存储具体时间
// hh:mm:ss
TIME
5.3.TIMESTAMP
MySQL
中提供了 时间戳 类型 timestamp
,占用 8
字节,时间戳 最大的特点是随着对表的更新操作,更新时间,并且 时间戳 在查询时,显示的格式与 datetime
一样
时间戳是指从
1970-1-1 0:0:0
开始计时的秒数
// yyyy-mm-dd hh:mm:ss
TIMESTAMP
mysql> alter table testDate add (时间戳 timestamp);mysql> desc testDate;mysql> select * from testDate;
注意: 时间戳是一个非空字段,并且不允许用户手动插入时间
使用 update
指令更新字段信息,可以触发 时间戳 的更新
mysql> select * from testDate;mysql> update testDate set 日期='2023-12-5' where 日期='2023-12-04';mysql> select * from testDate;
利用这几个日期类型,编写一个简易版的 留言墙
mysql> create table if not exists commentWall
(name varchar(32) comment '用户名',regisTime date comment '注册时间',msg varchar(256) comment '留言信息',modifyTime timestamp comment '发布/修改时间'
);mysql> desc commentWall;
向其中插入一些留言信息,并在片刻之后修改其中的留言信息
注意: 因为时间戳不允许用户手动插入,所以在插入数据时,不能再使用全列插入的方式,需要指明往哪些列中插入数据
mysql> insert into commentWall (name, regisTime, msg) values
('曹操', '2018-1-1', '宁叫我负天下人,休叫天下人负我'),
('孙武', '2021-6-7', '其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震'),
('王勃', '2023-4-10', '落霞与孤鹜齐飞 秋水共长天一色');mysql> select name as 用户名, regisTime as 注册时间, msg as 留言内容, modifyTime as 修改时间 from commentWall;mysql> update commentWall set msg='老骥伏枥,志在千里' where name='曹操';mysql> select name as 用户名, regisTime as 注册时间, msg as 留言内容, modifyTime as 修改时间 from commentWall;
6.枚举和集合
6.1.ENUM
enum
称为 枚举 类型,用于提供一批元素,可以选择其中一个
ENUM
mysql> create table if not exists votes
(name varchar(16),gender enum('男', '女')
);mysql> desc votes;
向其中插入值时,只能选择枚举中已经存在的元素,并且只能选择一个
mysql> insert into votes values ('张三', '男'), ('小红', '女');mysql> select * from votes;// 非法操作
mysql> insert into votes values ('李四', '男, 女');mysq> insert into votes values ('王五', '沃尔玛购物袋');
除了直接选择枚举中的元素值外,还可以通过下标的方式进行选择,当然超过下标索引范围的选择也是非法的
注:这里的下标从 1
开始
mysql> insert into votes values ('李四', 1), ('王五', 2);mysql> select * from votes;// 非法操作
mysql> insert into votes values ('赵六', 0);mysql> insert into votes values ('赵六', 3);
6.2.SET
如果想多选,需要使用 集合 类型
SET
mysql> alter table votes add (hobby set('唱', '跳', 'rap', '篮球', '写代码'));mysql> desc votes;
可以看到,枚举 和 集合 类型默认都是可以为空的,现在继续向表中插入数据
注意: 在多选集合中的元素时,以 ,
分隔,并且中间不能有空格
mysql> insert into votes values ('ruoli', '男', '唱,写代码'), ('小蔡', '女', '跳'), ('小徐', '男', 'rap'), ('小坤', '女', '篮球');mysql> select * from votes;
集合 类型支持通过数字多选元素
mysql> insert into votes values ('赵六', 1, 1), ('田七', 2, 2), ('老八', 1, 3);mysql> select * from votes;
结果显得有些诡异,这是因为 集合中的数字并非下标,而是一个数值,其中的比特位对应着集合中的选项
- 当值为
1
时,二进制表示为0001
,即 集合 中的第一个元素 唱 - 当值为
2
时,二进制表示为0010
,即 集合 中的第二个元素 跳 - 当值为
3
时,二进制表示为0011
,即 集合 中的第一、二个元素 唱,跳
所以如果想通过数字全选当前 集合 中的所有元素(11111
),转化成十进制,表示为 31
,实际插入时结果符合预期
mysql> insert into votes values ('菜须鲲', 1, 31);mysql> select * from votes;
如果把数值设为 0
,会发现最终选择的元素为 空
注意: NULL
与 空
不等价
NULL
表示什么都没有,空
则表示某个类型存在,但它现在为空
mysql> insert into votes values ('旧人', 1, 0);mysql> select * from votes;
关于 集合 中元素的查询
如果想查询包含其中一个元素的行信息,需要借助函数 find_in_set(val, set)
这个函数可以在 set
中查找是否存在 val
,如果存在就返回其下标,不存在则返回 0
,在 MySQL
中可以直接通过 select
指令执行函数
mysql> select find_in_set('a', 'a,b,c,d,e');mysql> select find_in_set('c', 'a,b,c,d,e');mysql> select find_in_set('f', 'a,b,c,d,e');
将 find_in_set
函数加入 select
查询子句中,即可筛选出包含 集合 中任意元素的行信息
mysql> select * from votes where find_in_set('唱', hobby);
如果想同时筛选出包含多个元素的行信息,可以使用 and
级联两个条件
mysql> select * from votes where find_in_set('唱', hobby) and find_in_set('写代码', hobby);
关于 MySQL
中数据类型的讲解到此结束,总之:数据类型本质上就是一种约束,确保插入数据库中数据的合法性
相关文章:
MySQL基础『数据类型』
✨个人主页: 北 海 🎉所属专栏: MySQL 学习 🎃操作环境: CentOS 7.6 阿里云远程服务器 🎁软件版本: MySQL 5.7.44 文章目录 1.数据类型一览2.整型2.1.INT2.2.BIT 3.浮点数3.1.FLOAT3.2.DECIMAL3…...
SQL手工注入漏洞测试(PostgreSQL数据库)-墨者
———靶场专栏——— 声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。 靶场背景: 来源: 墨者学院 简介: 安全工程师"墨者"最近在练习SQL手工注入漏洞&#…...
STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础
STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础 一、项目介绍 1.1方案提供 1.2主控选择 1.3硬件平台 1.4 开发环境 1.5 关于华清 二、GUI界面基础 2.1.1 嵌入式绘图系统 2.1.1 色彩格式 2.1.1帧缓冲区 …...
【超详细教程】基于html+js实现轮播图
轮播图是现代网页设计中常见的元素之一,它能够展示多张图片或内容,在有限的空间内循环播放,提升网页的视觉效果和用户体验。下面将以一个简单的网页轮播图为例,说明如何基于HTML和JavaScript实现。 1、R5Ai智能助手 chatgpt国…...
C++11(上)
统一的列表初始化 首先要说明: 这个列表初始化和类和对象那里的初始化列表不是一个概念. {} 初始化 在C98中, 标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定. 比如: C语言里面其实就是这样支持的, 所以可以认为C支持这样就是因为要兼容C. 在…...
web前端开发规范、HTML规范、JavaScript规范、style规范
MENU 前言目的 HTML规范用法规范注释规范 CSS规范用法规范书写顺序样式覆盖注释规范 JavaScript规范用法规范组件选项注释规范 命名规范目录命名图片命名文件命名方法命名样式命名常用词 工程结构目录构建代码风格 Git规范分支说明使用说明 相关连接 前言 目的 规范的目的是为…...
骨传导耳机会影响听力么?盘点骨传导耳机的好处与坏处都有哪些?
先说结论,使用骨传导耳机是不会影响听力的!并且由于骨传导耳机的特殊传声原理,相比于传统的入耳式耳机,骨传导耳机拥有更多的优点,下面带大家了解一下骨传导耳机的优点和缺点都有哪些。 一、骨传导耳机的优点是什么&a…...
前端与VR/AR:代码的魔法穿越
摘要: 前端开发者们,快戴上VR头盔,准备好进入未知的虚拟世界!本文将深度解析前端如何携手VR/AR技术,创造出更为奇妙的用户体验,同时以幽默的笔调诠释这场代码与虚拟现实的魔法邂逅。 引言 在前端的世界中…...
elment Loading 加载组件动态变更 text 值bug记录
先上效果图: 倒计时4分钟组件方法 // 倒计时 4分钟getSencond() {this.countDown 4分00秒this.interval setInterval(() > {this.maxTime--;let minutes Math.floor(this.maxTime / 60);let seconds Math.floor(this.maxTime % 60);minutes minutes < 10 ? 0 minu…...
Typora免费版安装教程(仅供学习)
目录 一、Typora简介二、Typora安装三、Typora补丁四、Typora使用体验五、总结 一、Typora简介 Typora是一款非常流行的Markdown编辑器,它能够将Markdown文本转化为漂亮的排版,并且支持实时预览。Typora具有简单易用的界面,使得用户可以轻松地…...
SSM项目实战-前端-添加分页控件-调正页面布局
1、Index.vue <template><div class"common-layout"><el-container><el-header><el-row><el-col :span"24"><el-button type"primary" plain click"toAdd">新增</el-button></el-…...
C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现
常用字符函数和字符串函数的了解和模拟实现 前言1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strcat的使用和模拟实现6. strcmp的使用和模拟实现7. strncpy函数的使用8. strncat函数的使用9. strncmp函数的使用10. strstr的使用和模拟…...
nodejs+vue+elementui网上家电家用电器数码商城购物网站 多商家
基于vue.js的恒捷网上家电商城系统根据实际情况分为前后台两部分,前台部分主要是让用户购物使用的,包括用户的注册登录,查看公告,查看和搜索商品信息,根据分类定位不同类型的商品,将喜欢的商品加入购物车&a…...
32.768KHz时钟RTC晶振精度PPM值及频差计算
一个数字电路就像一所城市的交通,晶振的作用就是十字路口的信号灯,因此晶振的品质及其电路应用尤其关键。数字电路又像生命体,它的运行就像人身体里的血液流通,它不是由单一的某个器件或器件单元构成,而是由多个器件及…...
SQL Server 数据库,创建数据表
2.3表的基本概念 表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似,都是 按行和列的格式组织的,每行代表一条唯一的记录,每列代表记录中的一个字段.例如,在包含公 司员工信息的表中,每行…...
Vue3引入markdown编辑器--Bytemd
字节跳动开源了一款markdown编辑器,bytemd,项目地址:GitHub - bytedance/bytemd: ByteMD v1 repository 安装 npm i bytemd/vue-next 引入方式如下,再main.js中引入样式 import bytemd/dist/index.css 直接封装一个Markdown编…...
JS实现基数排序
基数排序(Radix Sort)作为一种非比较性的排序算法,以其独特的思想和高效的性能而受到广泛关注。本文将深入研究基数排序的原理、实现方式等。 什么是基数排序 公众号:Code程序人生,个人网站:https://creato…...
【蓝桥杯】二分查找
二分查找 题目描述 输入 n n n 个不超过 1 0 9 10^9 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_{n} a1,a2,…,an,然后进行 m m m 次询问。对于每次询问,给出一…...
大于2T磁盘划分并挂接
需要挂接9T多的磁盘做数据磁盘,记录下操作过程 1、使用fdisk -l识别到磁盘 # fdisk -l|grep 9.5 TiB Disk /dev/sdd: 9.5 TiB, 10453950398464 bytes, 20417871872 sectors Disk /dev/sdf: 9.5 TiB, 10453950398464 bytes, 20417871872 sectors Disk /dev/sdh: 9.…...
蓝桥杯每日一题2023.12.3
题目描述 1.移动距离 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题需要对行列的关系进行一定的探究,所求实际上为曼哈顿距离,只需要两个行列的绝对值想加即可,预处理使下标从0开始可以更加明确之间的关系,奇数行时这一行的数字需…...
Nacos源码解读04——服务发现
Nacos服务发现的方式 1.客户端获取 1.1:先是故障转移机制判断是否去本地文件中读取信息,读到则返回 1.2:再去本地服务列表读取信息(本地缓存),没读到则创建一个空的服务,然后立刻去nacos中读取更新 1.3:读到了就返回,同时开启定时…...
SAP系统邮件功能配置 SCOT <转载>
原文链接:https://zhuanlan.zhihu.com/p/71594578 相信SAP顾问或多或少都会接到用户要求SAP系统能够定时发送邮件的功能,定时将用户需要的信息已邮件的方式发送给固定的人员。 下面就来讲一下SAP发送邮件应该如何配置: 1、RZ10做配置&#…...
数据结构——二叉树(相关术语、性质、遍历过程)
遍历操作 二叉树的层次遍历-CSDN博客 二叉树的基本操作-CSDN博客 二叉树的先序遍历非递归实现-CSDN博客 后序遍历的非递归方式实现-CSDN博客 二叉树:已知先序中序求后序或者其他(秒解)-CSDN博客 因为之前发过一遍,我就不复制…...
详细学习Pyqt5的9种显示控件
Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图(Item View) 快速弄懂Pyqt5的4种项目部件(Item Widget) 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...
SpringBoot+vue美食外卖点餐系统的研究与设计
目录 前言😃:一、项目简介二、技术选型三、系统功能架构四、功能实现商家端功能实现(1)商家端登录界面(2)工作台界面(3)数据统计界面(4)订单界面(…...
行业分析:轻轨行业发展现状及市场投资前景
轻轨是城市轨道建设的一种重要形式,也是当今世界上发展最为迅猛的轨道交通形式。轻轨的机车重量和载客量要比一般列车小,因此叫做“轻轨”。 城市轻轨具有运量大、速度快、污染小、能耗少、准点运行、安全性高等优点。城市轻轨与地下铁道、城市铁路及其…...
智安网络|语音识别技术:从历史到现状与未来展望
语音识别技术是一种将语音信号转化为可识别的文本或命令的技术,近年来得到了广泛应用和关注。 一. 语音识别的发展现状 1.历史发展 语音识别技术的起源可以追溯到20世纪50年代,但直到近年来取得了显著的突破和进展。随着计算机性能的提升和深度学习算法…...
揭秘预付费电表怎么无线收费——方便快捷收费
【摘要】针对目前市场上普遍以Ic卡作为售电介质的预付费售电系统存在的问题,介绍了一种新型的无线预付费售电系统及其构成,并给出了整个系统设计的完整方案。整个系统包括用户终端和电力管理系统端,它们之间通过双工通信可以将用户用电信息和…...
OpenCV-Python:图像卷积操作
目录 1.图像卷积定义 2.图像卷积实现步骤 3.卷积函数 4.卷积知识考点 5.代码操作及演示 1.图像卷积定义 图像卷积是图像处理中的一种常用操作,主要用于图像的平滑、锐化、边缘检测等任务。它可以通过滑动一个卷积核(也称为滤波器)在图像…...
创建Vue项目
安装node 官网: https://nodejs.org/en/download/ 安装的过程没有什么需要注意的,可以把安装路径调整一下。 使用以下命令查看 node 的版本 v20.10.0 ,验证是否安装成功。 node -v 创建Vue项目 在存放项目的目录下打开cmd,输入以…...
网站制作公司网址/牡丹江网站seo
【天极网手机频道】今年华为开发者大会上,华为消费者业务业务CEO余承东曾预告鸿蒙OS 2.0系统将于今年12月份面向手机开发者进行少量测试,明年则会陆续向消费者开放。如今,华为官网传来消息,华为将于12月16日举行HarmonyOS 2.0手…...
服务器可以做自己网站用吗/搜索引擎营销ppt
WhiteBoard白板功能很强大。 可以直接在网页上进行圈画,然后截图。 ImageEditor是一个很好用的画图功能,比windows画图的箭头好看。 转载于:https://www.cnblogs.com/Tpf386/p/8876973.html...
找外包公司做网站的好处和坏处/手机百度app
信息技术期末教学质量分析报告纵观这次的考试总得都考得不错,对这次考试总结如下:一、情况分析:本次质量检测,考查了三、四年级的教学情况,三年级成绩分析年级人数测试人数合格率优秀率平均分172172100%80%91分四年级成…...
重庆网站建设在哪里/网络市场调研的方法
讲师:庞雨秾讲师简介:法狗狗法律人工智能技术总监,伦敦大学玛丽女皇学院认知科学硕士。专注于自然语言处理方面的研究与应用,负责研发了包括处理垂直于法律领域的智能咨询系统、分布式非结构化文本挖掘系统等一系列基于自然语言分…...
克隆网站首页做单页站几个文件夹/韩国今日特大新闻
目录 文档用途 详细信息 文档用途 用于排查应用连接不上数据库的错误原因 详细信息 检查网络,使用ping命令检查应用服务器与数据库服务器之间是否联通。写法:ping加ip地址 ping 192.192.192.192 检查端口,使用telnet命令检查端口是…...
如何去门户网站做推广呢/百度公司有哪些部门
<pre name"code" class"html">/* 需求:编写一个js文件,在js文件中自定义一个数组工具对象, 该工具对象要有一个找到最大值的方法,与找元素对应的索引值的方法。 */这个代码在ArrayTool.js文件中 //创建…...