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

MySQL 基础知识(六)之数据查询(二)

目录

6 数值型函数

7 字符串函数

8 流程控制函数

9 聚合函数

10 分组查询 (group by)

11 分组过滤 (having)

12 限定查询 (limit)

13 多表查询

13.1 连接条件关键词 (on、using)

13.2 连接算法

13.3 交叉连接 (cross join)

13.4 内连接 (inner join)

13.5 外连接 (left join、right join)

14 子查询

14.1 select 子查询 (只需了解)

14.2 from 子查询

14.3 where 子查询

15 查询顺序总结


6 数值型函数

数值型函数描述
abs()求绝对值
sqrt()求二次方根
mod(x,y)求 x 除以 y 的余数
pi()返回圆周率
ceil() 或 ceiling()两个函数功能相同,都是向上取整
floor()向下取整,返回值为 bigint 类型
rand()生成一个 0 ~ 1 的随机数,传入相同的参数,得到的随机数也相同
round(x,y)对 x 进行四舍五入,y 表示保留几位小数
truncate(x,y)返回 x 截断后有 y 位小数后的结果
pow(x,y) 或power(x,y)求 x 的 y 次方
# 求 -3 的绝对值、4 的二次方根、11 / 3 的余数、圆周率
select abs(-3), sqrt(4), mod(11,3), pi();# 对 3.49 向上取整、3.49 向下取整、生成一个随机数
select ceil(3.49), floor(3.49), rand();# 对 3.415 保留两位小数、返回 3.415 截断后有两位小数的结果、求 2 的三次方
select round(3.415,2), truncate(3.415,2), pow(2,3);

7 字符串函数

字符串函数描述
length(s)返回字符串 s 的长度
concat(s1,s2,...,sn)拼接字符串
insert(s,idx,len,replacestr)替换字符串,将字符串 s 从第 idx 位置开始,len 个字符长的子串替换为字符串 replacestr,字符串下标从 1 开始的
lower(s) 或 lcase(s)将字符串 s 中的字母都转换为小写
upper(s) 或 ucase(s)将字符串 s 中的字母都转换为大写
left(s,n)从字符串 s 左侧开始截取,截取 n 位字符
right(s,n)从字符串 s 右侧开始截取,截取 n 位 字符
lpad(s,len,pad)从字符串 s 左侧开始填充字符串 pad,直到字符串 s 的长度为 len
rpad(s,len,pad)从字符串 s 右侧开始填充字符串 pad,直到字符串 s 的长度为 len
trim(s)去掉字符串 s 左右两侧的空格
ltrim(s)去掉字符串 s 左侧的空格
rtrim(s)去掉字符串 s 右侧的空格
repeat(s,n)返回字符串 s 重复 n 次后的结果
space(n)返回 n 个空格
strcmp(s1,s2)

比较字符串 s1 和 s2 的 ASCII 值大小

replace(s,a,b)用字符串 b 替换 字符串 s 中的所有子串 a
substr(s,idx,len) 或 substring(s,idx,len)截取字符串,从字符串的索引 idx 开始,截取 len 位字符
reverse(s)字符串反转
NULLIF(s1,s2)比较字符串 s1 和 s2,如果两个字符串相等,则返回 NULL,否则返回 s1
field(s,s1,s2,...,sn)返回字符串 s 在字符串列表中第一次出现的位置,下标从 1 开始
find_in_set(s1,s2)

返回字符串 s1 在 字符串 s2 中第一次出现的位置。

其中,字符串 s2是一个以逗号分隔的字符串 

# 求字符串 'MySQL' 的长度,拼接 'My' 、'SQL'和'数据库',替换 'Oracle数据库' 为 'MySQL数据库'
select length('MySQL'), concat('My','SQL','数据库'), insert('Oracle数据库',1,5,'MySQL');# 将字符串 'MySQL' 转为小写、大写,从 'MySQL数据库' 左侧截取 5 位字符、右侧截取 3 位字符
select lower('MySQL'), ucase('MySQL'), left('MySQL数据库',5), right('MySQL数据库',3);# 从字符串 '情人节' 左侧开始填充字符串 '财神节',直到字符串 '情人节' 的长度为 11;
# 从字符串 '情人节' 右侧开始填充字符串 '财神节',直到字符串 '情人节' 的长度为 11;
select lpad('情人节',11,'财神节'), rpad('情人节',11,'财神节');# 去掉 '   MySQL数据库   ' 两侧、左侧、右侧的空格
select trim('   MySQL数据库   '), ltrim('   MySQL数据库   '), rtrim('   MySQL数据库   ');# 返回 '财神节' 重复 8 次的结果,返回 3 个空格,比较  '情人节' 和 '财神节' ASCII 值大小
select repeat('财神节',8), space(3), strcmp('情人节','财神节');# 用 '财神节' 替换 '情人节情人节情人节' 中的子串 '情人节'
# 从 'MySQL数据库' 截取出 'MySQL'
select replace('情人节情人节情人节','情人节','财神节'), substr('MySQL数据库',1,5);# 反转字符串 'MySQL数据库',判断 c 和 'MySQL数据库' 是否相等
select reverse('MySQL数据库'), nullif('MySQL数据库','Oracle数据库');# 返回字符串 'ab' 在字符串列表 'abc','a','b','ab' 中第一次出现的位置
# 返回字符串 'ab' 在字符串 'abc,a,b,ab' 中第一次出现的位置
select field('ab','abc','a','b','ab'), find_in_set('ab','abc,a,b,ab');

8 流程控制函数

流程控制函数描述
if(condition,value1,value2)如果 condition 条件为true,返回 value1,否则返回 value2
IFNULL(value1,value2)如果 value1 不为 NULL,返回 value1,否则返回 value2
select if(1>2,'真','假'),if(1,'真','假'),if('1','真','假'),if(1<2,'真','假');
select ifnull(null,'为NULL'),ifnull('不为NULL',NULL);

9 聚合函数

  • 聚合函数会自动忽略 NULL,若该行有一个列值不为 NULL,则这行数据有效
  • 在 where 子句中不能使用聚合函数
聚合函数说明

count()

求总行数
sum()求单列中所有行的总和
avg()求单列中所有行的平均值
max()求单列中所有行的最大值
min()求单列中所有行的最小值
#计算表 goods 总行数,weight 总和、平均 netprice,最大 saleprice,最小 saleprice
select count(*), sum(weight), avg(netprice), max(saleprice), min(saleprice) from goods;

10 分组查询 (group by)

在一条 select 语句中,如果有 group by 语句,select 后面只能是:参加分组的字段、聚合函数

# 按照商品名 name 进行分组,计算每种商品的重量 weight 
select name, sum(weight) from goods group by name;

11 分组过滤 (having)

  • 使用 having 可以对分组后的数据进行过滤
  • having 不能单独使用,必须和 group by 联合使用
  • having 不能代替 where,优先使用 where,where 实在完成不了,再选择 having
# 按照商品名 name 进行分组,计算每种商品的重量 weight,选择其中总重量 > 40 的
select name, sum(weight) from goods group by name having sum(weight) > 40;

12 限定查询 (limit)

  • limit offset_start,row_count,限定查询的起始行 (offset_start) 和总行数 (row_count),起始下标从 0 开始
  • offset_start 默认是 0,可以省略,表示从第一行开始查询

关键字顺序

select

        ...

from

        ...

where

        ...

group by

        ...

having

        ...

order by

        ...

limit

        ...

以上语句执行顺序:

  1. from
  2. where
  3. group by
  4. having
  5. select
  6. order by
  7. limit
# 查询表 goods 第 3 行到第 5 行的数据
select * from goods limit 2,3;# 查询表 goods 前 3 行的数据
select * from goods limit 3;

13 多表查询

sales 表

drop table if exists sales;
create table sales (
id int primary key auto_increment,
name varchar(20),
saleprice float(7,2)
)charset=utf8;insert into sales(id, name, saleprice) values
(1, '香蕉', 3.8),
(3, '苹果', 7.5),
(4, '橘子', 4.5),
(7, '葡萄', 4.7);
  • 交叉连接:cross join (,)
  • 内连接:(inner) join
  • 外连接:left (outer) join、right (outer) join、union

MySQL join 语法官方文档: 

MySQL 5.7 Reference Manual / ... / JOIN Clauseicon-default.png?t=N7T8https://dev.mysql.com/doc/refman/5.7/en/join.html

13.1 连接条件关键词 (on、using)

执行顺序:

通过 on | using 连接多张表,再通过 where 进行筛选

select * from A join B on A.id=B.id;
# 等价于
select * from A join B using(id);# 执行顺序
from -> on|using -> where -> group by -> having -> select -> order by -> limit 

13.2 连接算法

参考文档:

MySQL 连接查询超全详解icon-default.png?t=N7T8https://learnku.com/articles/46944

  • Simple Nested Loop Join (SNLJ)

两张表做笛卡尔积进行扫描,比较费时,MySQL 不会选用该连接算法,时间复杂度 O(n * n)

  • Block Nested Loop Join (BNLJ)

没有索引,MySQL使用该算法。对外层循环的结果集进行分块,减少内层循环的次数,时间复杂度 O(n / m * n) ,其中 m 为分片数。

  • Index Nested Loop Join (INLJ)

有索引,MySQL使用该算法。用小结果集驱动大结果集,将筛选结果小的表首先连接,再去连接结果集比较大的表,即用小的表的取连接大的表

补充 left join | right join 连接算法,瞎编的伪代码,具体可以看官方文档:

MySQL 5.7 Reference Manual / ... / Nested Join Optimizationicon-default.png?t=N7T8https://dev.mysql.com/doc/refman/5.7/en/nested-join-optimization.html

注:MySQL 8.0 版本提供了 hash join 连接算法,其他版本仍是 nested loop join 连接算法,尽量少用 join,不同时连接三张表

13.3 交叉连接 (cross join)

  • A cross join B 把表 A 和表 B 的数据进行一个 N * M 的组合,即笛卡尔积。
  • 逗号 (,) 相当于 cross join,但逗号 (,) 的优先级低于 xxx join,不建议使用逗号进行多表连接(可读性差,易出错)

MySQL 中逗号 (,) 的优先级低于 xxx joinicon-default.png?t=N7T8https://blog.csdn.net/zjs246813/article/details/135706189

# 查询 表 goods 和 sales 通过 cross join 连接后的结果
select * from goods cross join sales;# 查询 表 goods 和 sales 通过 逗号 (,) 连接后的结果
select * from goods, sales;

上述代码中,表 goods 有 7 行数据,sales 有 4 行数据,通过 cross join 连接的后的表 有 7 * 4 行数据

 

13.4 内连接 (inner join)

  • A (inner) join B on A.id = B.id,内连接产生的结果集是表 A 和 B 的交集,即符合连接条件的结果集,其中 inner 可省略,在 MySQL 中 join 默认是 inner join

  • 如果不加连接条件,在 MySQL 中,join、inner join 等同于 cross join,根据本文 13.2 连接算法,没有连接条件则结果集是笛卡尔积
# 通过 goos.name 和 sales.name 内连接两张表,可以对表名使用别名
select * from goods g join sales s on g.name = s.name;

13.5 外连接 (left join、right join)

  • A left (outer) join B:以左表 A 为主表,outer 可以省略,大致连接步骤看 本文 13.2 连接算法中的 left join | right join 连接算法

  • A right (outer) join B:以右表 B 为主表,outer 可以省略

  • union:拼接两张表的查询结果,两张表的查询结果的列数需要相同并且每列的数据类型也要相同,列名可以不同 。union 默认去除重复的行,union all 不去除重复行。
# 左连接,例子不是很好
select * from goods g left join sales s on g.name = s.name;# 右连接
select * from goods g right join sales s on g.name = s.name;# 如果不去除重复行,将 union 改为 union all
select id, name,netprice from goods
union
select id,name,saleprice from sales;

14 子查询

select 语句中嵌套 select 语句,嵌套的 select 语句被称为子查询,不建议使用子查询(需要创建临时表,用完后还要删除临时表)

子查询可以用在哪里:

select

        ... (select)

from

        ... (select)

where

        ... (select)

14.1 select 子查询 (只需了解)

# 查询表 goods 和 sales 相同商品名的数据,并用 goods 中的 id、name 和 sales 中的 name 显示
select g.id, g.name goodname, (select g.name from sales s where g.name = s.name)  as  salename
from goods g;

14.2 from 子查询

把内层的查询结果当成临时表,供外层 SQL 再次查询

# 查询 表 goods 和 sales 相同商品 id 的数据
# 并用 goods 中的 id、name 和 临时表中 saleprice 显示(实际 SQL 不是这样写的)
select g.id, g.name, s.saleprice
from goods g, (select id, saleprice from sales) s
where g.id = s.id;

14.3 where 子查询

where 子查询把 select 查询结果当作一个列表项,结合 in、exists、any、all 等关键字使用。

# 查询 goods表的 id 出现在 sales 表中的数据
select * from goods where id in (select id from sales);

all  表示所有,需要结合 =、>、<、>=、<=、!=、>< 来使用

条件描述
c > all(集合)筛选 c 列中大于集合中的最大值的值
c >= all(集合)筛选 c 列中大于或等于集合中的最大值的值
c < all(集合)筛选 c 列中小于集合中的最小值的值
c <= all(集合)筛选 c 列中小于或等于集合中的最小值的值
c <> all(集合)筛选 c 列中不和集合中的任何值相等的值,可用于字符串
c != all(集合)筛选 c 列中不和集合中的任何值相等的值,可用于字符串
c = all(集合)筛选 c 列中和集合所有值都相等的值,可用于字符串
select * from goods where name != all(select name from goods where name = '苹果');

any 表示任意一个, 需要结合 =、>、<、>=、<=、!=、>< 来使用

条件描述
c > any(集合)筛选 c 列中大于集合中的最小值的值
c >= any(集合)筛选 c 列中大于或等于集合中的最小值的值
c < any(集合)筛选 c 列中小于集合中的最大值的值
c <= any(集合)筛选 c 列中小于或等于集合中的最大值的值
c <> any(集合)

筛选 c 列中不等于集合中的所有值的值,可用于字符串

c = any(集合) 表示 c 列中的值等于集合中的一个或多个值就满足筛选条件,即 c = a1 | c = a2

c <> any(集合) 是 c = any(集合) 的逆否命题,即 c != a1 & c != a2

c != any(集合)筛选 c 列中不等于集合中的所有值的值,可用于字符串
c = any(集合)筛选 c 列中只要和集合中一个值相等的值,可用于字符串
select * from goods where name != any(select name from goods where name = '苹果');

exists(子查询) 用来判断子查询是否为空,不为空,则返回 true;为空,则返回 false

select id, name, netprice from goods where exists(select 1);

15 查询顺序总结

关键字顺序:

select

        ...

distinct

        ...

from

        ...

join

        ...

on

        ...

where

        ...

group by

        ...

having

        ...

order by

        ...

limit

        ...

以上语句执行顺序:

  1. from
  2. join
  3. on
  4. where
  5. group by
  6. having
  7. select
  8. distinct
  9. order by
  10. limit

注:在MySQL中,group by、order by、having 中可以使用别名,Oracle 中不可以。

An alias can be used in a query select list to give a column a different name. You can use the alias in GROUP BY, ORDER BY, or HAVING clauses 

来自官方文档:

MySQL 8.0 Reference Manual / ... / Problems with Column Aliasesicon-default.png?t=N7T8https://dev.mysql.com/doc/refman/8.0/en/problems-with-alias.html

相关文章:

MySQL 基础知识(六)之数据查询(二)

目录 6 数值型函数 7 字符串函数 8 流程控制函数 9 聚合函数 10 分组查询 (group by) 11 分组过滤 (having) 12 限定查询 (limit) 13 多表查询 13.1 连接条件关键词 (on、using) 13.2 连接算法 13.3 交叉连接 (cross join) 13.4 内连接 (inner join) 13.5 外连接 …...

蓝桥杯嵌入式STM32G431RBT6知识点(主观题部分)

目录 1 前置准备 1.1 Keil 1.1.1 编译器版本及微库 1.1.2 添加官方提供的LCD及I2C文件 1.2 CubeMX 1.2.1 时钟树 1.2.2 其他 1.2.3 明确CubeMX路径&#xff0c;放置芯片包 2 GPIO 2.1 实验1&#xff1a;LED1-LED8循环亮灭 ​编辑 2.2 实验2&#xff1a…...

ELAdmin 部署

后端部署 按需修改 application-prod.yml 例如验证码方式、登录状态到期时间等等。 修改完成后打好 Jar 包 执行完成后会生成最终可执行的 jar。JPA版本是 2.6&#xff0c;MyBatis 版本是 1.1。 启动命令 nohup java -jar eladmin-system-2.6.jar --spring.profiles.active…...

计算机功能简介:EC, NVMe, SCSI/ISCSI与块存储接口 RBD,NUMA

一 EC是指Embedded Controller 主要应用于移动计算机系统和嵌入式计算机系统中&#xff0c;为此类计算机提供系统管理功能。EC的主要功能是控制计算机主板上电时序、管理电池充电和放电&#xff0c;提供键盘矩阵接口、智能风扇接口、串口、GPIO、PS/2等常规IO功能&#xff0c;…...

linux上安装bluesky的步骤

1、设备上安装的操作系统如下&#xff1a; orangepiorangepi5b:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy 2、在用户家目录下创建一个目录miniconda3目录&a…...

视频监控需求八问:视频智能分析/视频汇聚平台EasyCVR有何特性?

最近TSINGSEE青犀视频在与业内伙伴进行项目合作的过程中&#xff0c;针对安防监控可视化视频管理系统EasyCVR视频融合平台在电信运营商项目中的应用&#xff0c;进行了多方面的项目需求沟通。今天我们就该项目沟通为案例&#xff0c;来具体了解一下用户关心度较高的关于视频智能…...

django rest framework 学习笔记2

注意&#xff1a;该文章部分摘抄之百度&#xff0c;仅当做学习笔记供小白使用&#xff0c;若侵权请联系删除&#xff01; 显示关联表的数据&#xff0c;本示例会显示所有的关联的数据信息 from rest_framework import serializers from .models import Student class StudentM…...

第四篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:pyttsx3自动化脚本经典案例

传奇开心果短博文系列 系列短博文目录Python文本和语音相互转换库技术点案例示例系列 短博文目录前言一、雏形示例代码二、扩展思路介绍三、批量处理文本示例代码四、自定义语音设置示例代码五、结合其他库和API示例代码六、语音交互系统示例代码七、多语言支持示例代码八、添加…...

model.train()和model.eval()两种模式的原理

1. model.train() 在使用 pytorch 构建神经网络的时候&#xff0c;训练过程中会在程序上方添加一句model.train()&#xff0c;作用是 启用 batch normalization 和 dropout 。 如果模型中有BN层&#xff08;Batch Normalization&#xff09;和 Dropout &#xff0c;需要在 训练…...

docker的底层原理六: 联合文件系统(UnionFS)

Docker的底层存储原理基于联合文件系统&#xff08;UnionFS&#xff09;。 联合文件系统&#xff08;UnionFS&#xff09;是一种特殊的文件系统&#xff0c;它允许独立地叠加多个目录层&#xff0c;呈现给用户的是这些目录层的联合视图。这种结构使得在Docker中&#xff0c;不…...

【动态规划专栏】专题一:斐波那契数列模型--------1.第N个泰波那契数

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…...

自养号测评低成本高效率推广,安全可控

测评的作用在于让用户更真实、清晰、快捷地了解产品以及产品的使用方法和体验。通过买家对产品的测评&#xff0c;也可以帮助厂商和卖家优化产品缺陷&#xff0c;提高用户的使用体验。这进而帮助他们获得更好的销量&#xff0c;并更深入地了解市场需求。因此&#xff0c;测评在…...

ubuntu22.04@laptop OpenCV Get Started: 015_deep_learning_with_opencv_dnn_module

ubuntu22.04laptop OpenCV Get Started: 015_deep_learning_with_opencv_dnn_module 1. 源由2. 应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 使用 OpenCV DNN 模块进行图像分类3.1 导入模块并加载类名文本文件3.2 从磁盘加载预训练 DenseNet121 模型3.3 读取图像并准备为模型输…...

【elk查日志 elastic(kibana)】

文章目录 概要具体的使用方式一&#xff1a;查找接口调用历史二&#xff1a;查找自己的打印日志三&#xff1a;查找错误日志 概要 每次查日志&#xff0c;我都需要别人帮我&#xff0c;时间长了总觉得不好意思&#xff0c;所以这次下定决心好好的梳理一下&#xff0c;怎么查日…...

RapidMiner数据挖掘2 —— 初识RapidMiner

本节由一系列练习与问题组成&#xff0c;这些练习与问题有助于理解多个基本概念。它侧重于各种特定步骤&#xff0c;以进行直接的探索性数据分析。因此&#xff0c;其主要目标是测试一些检查初步数据特征的方法。大多数练习都是关于图表技术&#xff0c;通常用于数据挖掘。 为此…...

基于STM32的光照检测系统设计

基于STM32的光照检测系统设计 摘要: 随着物联网和智能家居的快速发展,光照检测系统在智能环境控制中扮演着越来越重要的角色。本文设计了一种基于STM32的光照检测系统,该系统能够实时检测环境光强度,并根据光强度调节照明设备,实现智能照明控制。本文首先介绍了系统的总体…...

车辆管理系统设计与实践

车辆管理系统是针对车辆信息、行驶记录、维护保养等进行全面管理的系统。本文将介绍车辆管理系统的设计原则、技术架构以及实践经验&#xff0c;帮助读者了解如何构建一个高效、稳定的车辆管理系统。 1. 系统设计原则 在设计车辆管理系统时&#xff0c;需要遵循以下设计原则&…...

板块一 Servlet编程:第四节 HttpServletResponse对象全解与重定向 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第四节 HttpServletResponse对象全解与重定向 一、什么是HttpServletResponse二、响应数据的常用方法三、响应乱码问题字符流乱码字节流乱码 四、重定向&#xff1a;sendRedirect请求转发和重定向的区别 在上一节中&#xff0c;我们系统的学习了…...

漫谈:C/C++ char 和 unsigned char 的用途

C/C的字符默认是有符号的&#xff0c;这一点非常的不爽&#xff0c;因为很少有人用单字节表达有符号数&#xff0c;毕竟&#xff0c;ASCII码是无符号的&#xff0c;对字符的绝大多数处理都是基于无符号的。 这一点在其它编程语言上就好很多&#xff0c;基本上都提供了byte这种类…...

安全保护制度

安全保护制度 第九条 计算机信息系统实行安全等级保护。安全等级的划分标准和安全等级保护的具体办法,由公安部会同有关部门制定。 第十条 计算机机房应当符合国家标准和国家有关规定。 在计算机机房附近施工,不得危害计算机信息系统的安全。 第十一条 进行国际联网的计算…...

沁恒CH32V30X学习笔记07---多功能按键框架使用

多功能按键框架使用 参考开源框架: GitHub - 0x1abin/MultiButton: Button driver for embedded system 框架使用说明: ch32gpio基本驱动 https://blog.csdn.net/u010261063/article/details/136157718 MultiButton 简介 MultiButton 是一个小巧简单易用的事件驱动型按…...

如何看显卡是几G?

created: 2024-02-20T09:22:13 (UTC 08:00) tags: [] source: https://www.sysgeek.cn/windows-check-gpu-model/ author: 海猴子 6 种简单方法&#xff1a;如何在 Windows 中轻松查看显卡型号 - 系统极客 Excerpt 不确定你的显卡型号&#xff1f;使用这 6 个简单有效的方法&a…...

虚拟机--pc端和macOS端互通

windows开启虚拟化 要在Windows系统中开启虚拟化&#xff0c;您可以按照以下步骤操作&#xff1a; 准备工作&#xff1a; 确保您的计算机CPU支持虚拟化技术。在BIOS中开启相应的虚拟化支持。 开启虚拟化&#xff1a; 打开控制面板&#xff0c;点击程序或功能项&am…...

(14)Hive调优——合并小文件

目录 一、小文件产生的原因 二、小文件的危害 三、小文件的解决方案 3.1 小文件的预防 3.1.1 减少Map数量 3.1.2 减少Reduce的数量 3.2 已存在的小文件合并 3.2.1 方式一&#xff1a;insert overwrite (推荐) 3.2.2 方式二&#xff1a;concatenate 3.2.3 方式三&#xff…...

Linux 驱动开发基础知识——LED 模板驱动程序的改造:设备树(十一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…...

学习文档:QT QTreeWidget及其代理

学习文档&#xff1a;QT QTreeWidget及其代理 1. QT QTreeWidget简介 QT QTreeWidget是QT框架中的一个重要组件&#xff0c;用于显示树形数据结构。它提供了一种方便的方式来展示并操作带有层次关系的数据。QTreeWidget可以显示包含多个列的树形视图&#xff0c;每个项目可以…...

代码随想录算法训练营——总结篇

不知不觉跟完了代码训练营为期两个月的训练&#xff0c;现在来做个总结吧~ 记得去年12月上旬的时候&#xff0c;我每天都非常浮躁。一方面&#xff0c;经历了三个多月的秋招&#xff0c;我的日常学习和实验室进展被完全打乱&#xff0c;导致状态很差&#xff1b;另一方面&#…...

更改WordPress作者存档链接author和用户名插件Change Author Link Structure

WordPress作者存档链接默认情况为/author/Administrator&#xff08;用户名&#xff09;&#xff0c;为了防止用户名泄露&#xff0c;我们可以将其改为/author/1&#xff08;用户ID&#xff09;&#xff0c;具体操作可参考『如何将WordPress作者存档链接中的用户名改为昵称或ID…...

Kernelized Correlation Filters KCF算法原理详解(阅读笔记)(待补充)

KCF 目录 KCF预备知识1. 岭回归2. 循环移位和循环矩阵3. 傅里叶对角化4. 方向梯度直方图&#xff08;HOG&#xff09; 正文1. 线性回归1.1. 岭回归1.2. 基于循环矩阵获取正负样本1.3. 基于傅里叶对角化的求解 2. 使用非线性回归对模型进行训练2.1. 应用kernel-trick的非线性模型…...

安卓游戏开发之图形渲染技术优劣分析

一、引言 随着移动设备的普及和性能的提升&#xff0c;安卓游戏开发已经成为一个热门领域。在安卓游戏开发中&#xff0c;图形渲染技术是关键的一环。本文将对安卓游戏开发中常用的图形渲染技术进行分析&#xff0c;比较它们的优劣&#xff0c;并探讨它们在不同应用场景下的适用…...