Mysql基础

news2025/1/11 22:48:40

Mysql基础

  • 1. 数据库相关概念
    • 1.1 数据库
    • 1.2 数据库管理系统
    • 1.3 常见的数据库管理系统
    • 1.4 SQL
  • 2. Mysql的安装
    • 2.1 MySQL数据模型
  • 3. SQL概述
    • 3.1 SQL简介
    • 3.2 通用语法
    • 3.3 SQL分类
  • 4. DDL:操作数据库
    • 4.1 数据库的显示讲解
    • 4.2 查询
    • 4.3 创建数据库
    • 4.4 删除数据库
    • 4.5 使用数据库
    • 4.6 小结
  • 5. DDL:操作表
    • 5.1 查询表
    • 5.2 创建表
    • 5.3 数据类型
    • 5.4 删除表
    • 5.5 修改表
  • 6.navicat使用
  • 7. DML
    • 7.1 添加数据
    • 7.2 修改数据
    • 7.3 删除数据
  • 8. DQL
    • 8.1 基础查询
      • 8.1.1 语法
    • 8.2 条件查询
      • 8.2.1 语法
      • 8.2.2 条件查询练习
      • 8.2.3 模糊查询练习
    • 8.3 排序查询
      • 8.3.1 语法
      • 8.3.2 练习
    • 8.4 聚合函数
      • 8.4.1 概念
      • 8.4.2 聚合函数分类
      • 8.4.3 聚合函数语法
    • 8.5 分组查询
      • 8.5.1 语法
    • 8.6 分页查询
      • 8.6.1 语法
    • 8.6 分页查询
      • 8.6.1 语法

1. 数据库相关概念

以前我们做系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果,当然文件存储也有它的弊端。

假设在文件中存储以下的数据:

姓名	年龄	性别	住址
张三	23	男	北京西三旗
李四	24	女	北京西二旗
王五	25	男	西安软件新城

现要修改李四这条数据的性别数据改为男,我们现学习的IO技术可以通过将所有的数据读取到内存中,然后进行修改再存到该文件中。通过这种方式操作存在很大问题,现在只有三条数据,如果文件中存储1T的数据,那么就会发现内存根本就存储不了。

现需要既能持久化存储数据,也要能避免上述问题的技术使用在我们的系统中。数据库就是这样的一门技术。

1.1 数据库

  • 存储和管理数据的仓库,数据是有组织的进行存储。
  • 数据库英文名是 DataBase,简称DB。

数据库就是将数据存储在硬盘上,可以达到持久化存储的效果。那又是如何解决上述问题的?使用数据库管理系统。

1.2 数据库管理系统

  • 管理数据库的大型软件
  • 英文:DataBase Management System,简称 DBMS

在电脑上安装了数据库管理系统后,就可以通过数据库管理系统创建数据库来存储数据,也可以通过该系统对数据库中的数据进行数据的增删改查相关的操作。我们平时说的MySQL数据库其实是MySQL数据库管理系统。

img

1.3 常见的数据库管理系统

img

  • Oracle:收费的大型数据库,Oracle 公司的产品
  • MySQL: 开源免费的中小型数据库。后来 Sun公司收购了 MySQL,而 Sun 公司又被 Oracle 收购
  • SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用
  • PostgreSQL:开源免费中小型的数据库
  • DB2:IBM 公司的大型收费数据库产品
  • SQLite:嵌入式的微型数据库。如:作为 Android 内置数据库
  • MariaDB:开源免费中小型的数据库

img

我们可以通过数据库管理系统操作数据库,对数据库中的数据进行增删改查操作,而怎么样让用户跟数据库管理系统打交道呢?就可以通过一门编程语言(SQL)来实现。

1.4 SQL

  • 英文:Structured Query Language,简称 SQL,结构化查询语言
  • 操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准,可以使用SQL操作所有的关系型数据库管理系统,以后工作中如果使用到了其他的数据库管理系统,也同样的使用SQL来操作。

2. Mysql的安装

参照 : https://www.cnblogs.com/NorthPoet/p/16901095.html

2.1 MySQL数据模型

关系型数据库:

关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的 二维表 组成的数据库

如下图,订单信息表客户信息表 都是有行有列二维表我们将这样的称为关系型数据库。

img

接下来看关系型数据库的优点:

  • 都是使用表结构,格式一致,易于维护。
  • 使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
    • 关系型数据库都可以通过SQL进行操作,所以使用方便。
    • 复杂查询。现在需要查询001号订单数据,我们可以看到该订单是1号客户的订单,而1号订单是李聪这个客户。以后也可以在一张表中进行统计分析等操作。
  • 数据存储在磁盘中,安全。

数据模型:

img

如上图,我们通过客户端可以通过数据库管理系统创建数据库,在数据库中创建表,在表中添加数据。创建的每一个数据库对应到磁盘上都是一个文件夹。比如可以通过SQL语句创建一个数据库(数据库名称为db1),语句如下
img

我们可以在数据库安装目录下的data目录下看到多了一个 db1 的文件夹。所以,在MySQL中一个数据库对应到磁盘上的一个文件夹。

而一个数据库下可以创建多张表,我们到MySQL中自带的mysql数据库的文件夹目录下:

img

而上图中右边的 db.frm 是表文件,db.MYD 是数据文件,通过这两个文件就可以查询到数据展示成二维表的效果。

小结:

  • MySQL中可以创建多个数据库,每个数据库对应到磁盘上的一个文件夹
  • 在每个数据库中可以创建多个表,每张都对应到磁盘上一个 frm 文件
  • 每张表可以存储多条数据,数据会被存储到磁盘中 MYD 文件中

3. SQL概述

3.1 SQL简介

  • 英文:Structured Query Language,简称 SQL
  • 结构化查询语言,一门操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准
  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”

3.2 通用语法

  • SQL 语句可以单行或多行书写,以分号结尾。

img

  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

同样的一条sql语句写成下图的样子,一样可以运行处结果。

img

  • 注释

    • 单行注释: – 注释内容 或 #注释内容(MySQL 特有)
    • img

    注意:使用-- 添加单行注释时,--后面一定要加空格,而#没有要求

    • 多行注释: / 注释 /

3.3 SQL分类

DDL(Data Definition Language) : 数据定义语言,用来定义数据库对象:数据库,表,列等

DDL简单理解就是用来操作数据库,表等

img

DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)

DQL简单理解就是对数据进行查询操作。从数据库表中查询到我们想要的数据。

DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

DML简单理解就是对数据库进行权限控制。比如我让某一个数据库表只能让某一个用户进行操作等。

注意: 以后我们最常操作的是 DMLDQL ,因为我们开发中最常操作的就是数据。

4. DDL:操作数据库

我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。

4.1 数据库的显示讲解

img

  • information_schema:信息图式,存储服务器管理数据库的信息
  • mysql:存放系统信息,用户名密码等
  • performance_schema:性能图式
  • sys:系统文件

4.2 查询

查询所有的数据库

SHOW DATABASES;

运行上面语句效果如下:

img

上述查询到的是的这些数据库是mysql安装好自带的数据库,我们以后不要操作这些数据库。

4.3 创建数据库

  • 创建数据库
CREATE DATABASE 数据库名称;

运行语句效果如下:

img

而在创建数据库的时候,我并不知道db1数据库有没有创建,直接再次创建名为db1的数据库就会出现错误。
img

为了避免上面的错误,在创建数据库的时候先做判断,如果不存在再创建

  • 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;

运行语句效果如下:

img

4.4 删除数据库

  • 删除数据库
DROP DATABASE 数据库名称;
  • 删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS 数据库名称;

img

运行语句效果如下:

img

4.5 使用数据库

数据库创建好了,要在数据库中创建表,得先明确在哪儿个数据库中操作,此时就需要使用数据库。

  • 使用数据库
USE 数据库名称;
  • 查看当前使用的数据库
SELECT DATABASE();

运行语句效果如下:

img

4.6 小结

img

5. DDL:操作表

操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。

5.1 查询表

  • 查询当前数据库下所有表名称
SHOW TABLES;

我们创建的数据库中没有任何表,因此我们进入mysql自带的mysql数据库,执行上述语句查看

img

  • 查询表结构
DESC 表名称;

查看db1数据库中stu表的结构,运行语句如下:

img

5.2 创建表

  • 创建表
CREATE TABLE 表名 (
	字段名1  数据类型1,
	字段名2  数据类型2,
	…
	字段名n  数据类型n
);

注意:最后一行末尾,不能加逗号

知道了创建表的语句,那么我们创建创建如下结构的表

img

create table tb_user (
	id int,
    username varchar(20),
    password varchar(32)
);

运行语句如下:

img

5.3 数据类型

MySQL 支持多种类型,可以分为三类:

  • 数值
tinyint : 小整数型,占一个字节
int	: 大整数类型,占四个字节
	eg : age int
double : 浮点类型
	使用格式: 字段名 double(总长度,小数点后保留的位数)
	eg : score double(5,2)   
  • 日期
date : 日期值。只包含年月日
	eg :birthday datedatetime : 混合日期和时间值。包含年月日时分秒
  • 字符串
char : 定长字符串。
	优点:存储性能高
	缺点:浪费空间
	eg : name char(10)  如果存储的数据字符个数不足10个,也会占10个的空间
varchar : 变长字符串。
	优点:节约空间
	缺点:存储性能底
	eg : name varchar(10) 如果存储的数据字符个数不足10个,那就数据字符个数是几就占几个的空间	

img

5.4 删除表

  • 删除表
DROP TABLE 表名;
  • 删除表时判断表是否存在
DROP TABLE IF EXISTS 表名;

运行语句效果如下:

img

5.5 修改表

  • 修改表名
ALTER TABLE 表名 RENAME TO 新的表名;

-- 将表名student修改为stu
alter table student rename to stu;

运行语句效果如下:

img

  • 添加一列
ALTER TABLE 表名 ADD 列名 数据类型;

-- 给stu表添加一列address,该字段类型是varchar(50)
alter table stu add address varchar(50);

运行语句效果如下:

img

  • 修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;

-- 将stu表中的address字段的类型改为 char(50)
alter table stu modify address char(50);

运行语句效果如下:

img

  • 修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

-- 将stu表中的address字段名改为 addr,类型改为varchar(50)
alter table stu change address addr varchar(50);

运行语句效果如下:

img

  • 删除列
ALTER TABLE 表名 DROP 列名;

-- 将stu表中的addr字段 删除
alter table stu drop addr;

运行语句效果如下:

img

6.navicat使用

参照 : https://www.cnblogs.com/NorthPoet/p/16904950.html

7. DML

DML主要是对数据进行增(insert)删(delete)改(update)操作。

7.1 添加数据

  • 给指定列添加数据
INSERT INTO 表名(列名1,列名2,) VALUES(1,2,);
  • 给全部列添加数据
INSERT INTO 表名 VALUES(1,2,);
  • 批量添加数据
INSERT INTO 表名(列名1,列名2,) VALUES(1,2,),(1,2,),(1,2,);
INSERT INTO 表名 VALUES(1,2,),(1,2,),(1,2,);

7.2 修改数据

  • 修改表数据
UPDATE 表名 SET 列名1=1,列名2=2,[WHERE 条件] ;

注意:
1. 修改语句中如果不加条件,则将所有数据都修改!
2. 像上面的语句中的中括号,表示在写sql语句中可以省略这部分

  • 语句演示
-- 修改数据 UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;

update stu set sex = '女' where name = '陈平安';
	
-- 修改多条数据
	
update stu set birthday = '1999-12-12' , score = 88.88 where name = '徐峰';
		
update stu set sex = '女';

注意:如果update语句没有加where条件,则会将表中所有数据全部修改!
img

7.3 删除数据

  • 删除数据
DELETE FROM 表名 [WHERE 条件] ;

8. DQL

下面是黑马程序员展示试题库数据的页面

img

页面上展示的数据肯定是在数据库中的试题库表中进行存储,而我们需要将数据库中的数据查询出来并展示在页面给用户看。上图中的是最基本的查询效果,那么数据库其实是很多的,不可能在将所有的数据在一页进行全部展示,而页面上会有分页展示的效果,如下:
img

当然上图中的难度字段当我们点击也可以实现排序查询操作。从这个例子我们就可以看出,对于数据库的查询时灵活多变的,需要根据具体的需求来实现,而数据库查询操作也是最重要的操作

  • 查询的完整语法:
SELECT 
    字段列表
FROM 
    表名列表 
WHERE 
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定

数据准备

-- 删除stu表
drop table if exists stu;


-- 创建stu表
CREATE TABLE stu (
 id int, -- 编号
 name varchar(20), -- 姓名
 age int, -- 年龄
 sex varchar(5), -- 性别
 address varchar(100), -- 地址
 math double(5,2), -- 数学成绩
 english double(5,2), -- 英语成绩
 hire_date date -- 入学时间
);

-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date) 
VALUES 
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');

8.1 基础查询

8.1.1 语法


  • 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; -- 查询所有数据

注意 :在公司*最好少使用,而是用哦过所有的字段列表去替代*,方便以后的注释

select id , name , age , sex , address , math , english , hire_date from stu;

img

  • 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

没有去重复

-- 查询地址信息

select address from stu;

img

有重复 , 使用 distinct去除

select distinct address from stu;

img

  • 起别名
AS: AS 也可以省略

没有起别名前

-- 查询姓名 , 数学成绩 , 英语成绩

select name , math , english from stu;

img

使用as起别名后

select name as 姓名 , math as 数学成绩 , english as 英语成绩 from stu;

img

8.2 条件查询

8.2.1 语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;
  • 条件

条件列表可以使用以下运算符

img

8.2.2 条件查询练习

  • 查询年龄大于20岁的学员信息
select * from stu where age > 20;
  • 查询年龄大于等于20岁的学员信息

    select * from stu where age >= 20;
    
  • 查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息

    select * from stu where age >= 20 &&  age <= 30;
    select * from stu where age >= 20 and  age <= 30;
    

    上面语句中 && 和 and 都表示并且的意思。建议使用 and 。

    也可以使用 between … and 来实现上面需求

    select * from stu where age BETWEEN 20 and 30;
    
  • 查询入学日期在’1998-09-01’ 到 ‘1999-09-01’ 之间的学员信息

    select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';
    
  • 查询年龄等于18岁的学员信息

    select * from stu where age = 18;
    
  • 查询年龄不等于18岁的学员信息

    select * from stu where age != 18;
    select * from stu where age <> 18;
    
  • 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息

    select * from stu where age = 18 or age = 20 or age = 22;
    select * from stu where age in (18,20 ,22);
    
  • 查询英语成绩为 null的学员信息

    null值的比较不能使用 = 或者 != 。需要使用 is 或者 is not

    select * from stu where english = null; -- 这个语句是不行的
    select * from stu where english is null;
    select * from stu where english is not null;
    
    • 全部语法
SELECT * FROM `stu`

-- 查询年龄大于20岁的学员信息
select * from stu where age > 20;

-- 查询年龄大于等于20岁的学员信息
select * from stu where age >= 20;

-- 查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
select *from stu where age >= 20 && age <= 30;
select * from stu where age >= 20 and age <= 30;

select * from stu where age between 20 and 30; 

-- 查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息
select * from stu where hire_date between '1998-09-01' and '1999-09-01';

desc stu;

-- 查询年龄等于18岁的学员信息
select * from stu where age = 18;

-- 查询年龄不等于18岁的学员信息
select * from stu where age != 18;
select * from stu where age <> 18;

-- 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in(18 , 20 , 22);

-- 查询英语成绩为 null的学员信息
select * from stu where english is null;
select * from stu where english is not null;


-- 模糊查询

-- 查询姓'马'的学员信息
select * from stu where name like '马%';

-- 查询第二个字是'花'的学员信息  
select * from stu where name like '_花%';

-- 查询名字中包含 '德' 的学员信息
select * from stu where name like '%德%';


8.2.3 模糊查询练习

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

(1)_ : 代表单个任意字符

(2)% : 代表任意个数字符

  • 查询姓’马’的学员信息

    select * from stu where name like '马%';
    
  • 查询第二个字是’花’的学员信息

    select * from stu where name like '_花%';
    
  • 查询名字中包含 ‘德’ 的学员信息

    select * from stu where name like '%德%';
    

8.3 排序查询

8.3.1 语法

SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2];

上述语句中的排序方式有两种,分别是:

  • ASC : 升序排列 (默认值)
  • DESC : 降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

8.3.2 练习

  • 查询学生信息,按照年龄升序排列

    select * from stu order by age ;
    
  • 查询学生信息,按照数学成绩降序排列

    select * from stu order by math desc ;
    
  • 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

    select * from stu order by math desc , english asc ;
    

练习全部代码

select * from stu;

-- 查询学生信息,按照年龄升序排列 
select * from stu order by age;

-- 查询学生信息,按照数学成绩降序排列
select * from stu order by math desc;

-- 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
select * from stu order by math desc , english asc;


8.4 聚合函数

8.4.1 概念

将一列数据作为一个整体,进行纵向计算。

img

8.4.2 聚合函数分类

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

8.4.3 聚合函数语法

SELECT 聚合函数名(列名) FROM;

注意:null 值不参与所有聚合函数运算

  • 统计班级一共有多少个学生
select count(id) from stu;
select count(english) from stu;

果该字段某一行的值为null的话,将不会被统计。所以可以在count(*) 来实现。* 表示所有字段数据,一行中也不可能所有的数据都为null,所以建议使用 count(*)

select count(*) from stu;
  • 查询数学成绩的最高分
select max(math) from stu;
  • 查询数学成绩的最低分
select min(math) from stu;
  • 查询数学成绩的总分
select sum(math) from stu;
  • 查询数学成绩的平均分
select avg(math) from stu;
  • 查询英语成绩的最低分
select min(english) from stu;

8.5 分组查询

8.5.1 语法

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

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

  • 查询男同学和女同学各自的数学平均分
select sex , avg(math) from stu group by sex;
  • 查询男同学和女同学各自的数学平均分 , 以及各自人数
select sex , avg(math) , count(*) from stu group by sex;
  • 查询男同学和女同学各自的数学平均分 , 以及各自人数 , 要求: 分数低于70分的不参与分组
select sex , avg(math) , count(*) from stu where math > 70 group by sex;
  • 查询男同学和女同学各自的数学平均分 , 以及各自人数 , 要求: 分数低于70分的不参与分组 , 分组之后人数大于两个的
select sex , avg(math) , count(*) from stu where math > 70 group by sex having count(*) > 2;

where 和 having 区别:

  • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

  • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

8.6 分页查询

如下图所示,大家在很多网站都见过类似的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用户也可以通过点击查看下一页的数据。

img

8.6.1 语法

SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数;

注意: 上述语句中的起始索引是从0开始

  • 从0开始查询,查询3条数据
select * from stu limit 0 , 3;
  • 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
  • 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
  • 每页显示3条数据,查询第3页数据
select * from stu limit 6 , 3;

从上面的练习推导出起始索引计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

`

  • 查询男同学和女同学各自的数学平均分 , 以及各自人数 , 要求: 分数低于70分的不参与分组 , 分组之后人数大于两个的
select sex , avg(math) , count(*) from stu where math > 70 group by sex having count(*) > 2;

where 和 having 区别:

  • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

  • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

8.6 分页查询

如下图所示,大家在很多网站都见过类似的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用户也可以通过点击查看下一页的数据。

[外链图片转存中…(img-G3wbqrbr-1668945118276)]

8.6.1 语法

SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数;

注意: 上述语句中的起始索引是从0开始

  • 从0开始查询,查询3条数据
select * from stu limit 0 , 3;
  • 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
  • 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
  • 每页显示3条数据,查询第3页数据
select * from stu limit 6 , 3;

从上面的练习推导出起始索引计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

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

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

相关文章

linux Qt编译自己的动态库(.so),详细全流程

本篇记录Qt编译动态库全流程 1. 建立工程 首先&#xff0c;打开Qt&#xff0c;新建C Library 工程 点击choose之后&#xff0c;输入项目名称为Example&#xff0c;一直下一步即可 生成的项目里边有三个文件&#xff0c;分别是example.h, Example_global.h, example.cpp exam…

数据结构之:递归思想

&#xff08;一&#xff09;递归概念 将复杂问题 递推分解为最简问题 然后将结果回归的过程 Windows - Linux Linux Linux is not Unix 使用方法&#xff1a; 自己调用自己&#xff08;二&#xff09;斐波那契数列 兔子问题 有一对大兔子 每个月繁衍 一对小兔子&#xff08;一…

【Java 设计模式】UML 之类图

UML 之类图前言&#xff1a;什么是 UML &#xff1f;1 类图概念2 类的表示方式3 类与类之间关系的表示方式3.1 关联关系3.1.1 单向关联3.1.2 双向关联3.1.3 自关联3.2 聚合关系3.3 组合关系3.4 依赖关系3.5 继承关系3.6 实现关系前言&#xff1a;什么是 UML &#xff1f; 定义…

Linux 软件包下载加速工具:APT Proxy

本篇文章将继续介绍这个仅有 2MB 身材大小的 Linux 软件包缓存和加速工具&#xff1a;APT Proxy。 相比老牌的 apt cacher ng 而言&#xff0c;除了尺寸更小、内存占用更低&#xff08;10M以内&#xff09;、它还拥有无需配置&#xff0c;开箱即用等特点。 写在前面 年中的时…

!与~有什么区别

目录 将整型数据转换为二进制的函数 利用函数查看&#xff01;与~之后的数据有何不同 以一个非0数据作为例子 以0作为例子 我们都知道&#xff01;与~都是用于取反的。那么这两个有什么区别呢&#xff1f; 我们百度结果如下&#xff0c;很明显&#xff0c;八股文。我接下…

element-ui时间选择器(DatePicker )数据回显

系列文章目录 第一篇【element-ui】table表格底部合计自定义配置 目录 前言 一、element-ui时间选择器&#xff08;DatePicker &#xff09;是什么&#xff1f; DatePicker 日期选择器 二、返回数据格式 1.引入 总结 前言 需求&#xff1a;element-ui时间选择器&#…

【报错】QT Release NO CMAKE_CXX_COMPILER could be found

NO CMAKE_CXX_COMPILER could be found 错误&#xff1a; Tell CMake where to find the compiler by setting either the environmentvariable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path tothe compiler, or to the compiler name if it …

PostgreSQL数据库动态共享内存管理器——dynamic shared memory segment

首先看dynamic_shared_memory_type GUC参数&#xff0c;该参数用于指定dynamic shared memory implementation类型&#xff08;DSM_IMPL_POSIX、DSM_IMPL_SYSV、DSM_IMPL_WINDOWS、DSM_IMPL_MMAP&#xff0c;定义在src/include/storage/dsm_impl.h文件中&#xff09;。了解一下…

前段入门-CSS

目录1 CSS 快速入门1.1 CSS 的介绍1.2 CSS 的组成2 基本语法2.1 CSS 的引入方式2.1.1 内联样式2.1.2 内部样式2.1.3 外部样式2.2 注释2.3 选择器2.3.1 基本选择器2.3.2 属性选择器2.3.3 伪类选择器2.3.4 组合选择器2.4 总结3 CSS 案例-头条页面3.1 案例效果3.2 案例分析3.2.1 边…

【第三部分 | 移动端开发】4:Rem布局

目录 | Rem布局简介 | 单位 rem | 媒体查询 | 根据不同的媒体引入不同的CSS | less基础 概述与安装 基础使用&#xff1a;创建less文件 基础使用&#xff1a;变量 基础使用&#xff1a;用Esay LESS插件把less文件编译为css 基础使用&#xff1a;嵌套 基础使用&#x…

cuda在windows10安装教程

CUDA安装教程&#xff0c;以Windows10系统为例&#xff1a; CUDA.exe安装 查看电脑的支持的CUDA版本&#xff0c;按照如下教程&#xff1a; 首先找到这个图标&#xff0c;也就是nvidia控制面板&#xff0c;然后打开&#xff1a; 然后点击左下角系统信息 再点击“组件”&…

LabVIEW性能和内存管理 8

LabVIEW性能和内存管理 8 本文介绍LabVIEW性能和内存管理的几个建议8。 MemoryFragmentation内存碎片 内存管理器分配和释放内存需要时间&#xff0c;这会降低执行速度。在某些情况下&#xff0c;即使假设有足够的可用内存&#xff0c;也会发生内存不足错误。 上图显示了实际…

【练拳不练功,到老一场空】深入浅出计算机组成原理

深入浅出计算机组成原理 文章目录深入浅出计算机组成原理计算机的基本组成硬件设备组成CPU内存主板I/O 设备硬盘显卡冯.诺依曼体系结构运算器/处理器单元控制器存储器输入设备输出设备举个栗子&#xff1a;计算机的性能与功耗响应时间吞吐率CPU时钟/主频计算机的功耗计算机的指…

jdk8新特性(Lambda、Steam、函数式接口)

JDK8新特性 JDK8新特性Lambda表达式函数式&#xff08;Functional&#xff09;接口方法引用与构造器引用方法引用构造器引用强大的 StreamAPI创建Stream方式Stream 的中间操作Stream 的终止操作Optional 类Java 8 (又称为jdk 1.8)是Java语言开发的一一个主要版本。 Java 8是ora…

Electron 之通讯模块ipcMain 和 ipcRenderer

Electron一个使用HTML、CSS和JavaScript开发桌面应用程序的框架。Electron可以生成在Windows、macOS和Linux上运行的应用程序&#xff0c;借助Electron可以把我们的web端应用直接移植到桌面端而无需再次开发&#xff0c;这样我们可以使用同一套代码在不同平台上运行应用&#x…

数据收集面可视化

数据收集面可视化&#xff08;Data Collector Surface Visualization&#xff09;分析选项允许用户指定模型中的某一表面&#xff0c;在光线追迹的过程中收集光线数据&#xff0c;并显示或者输出该面的照度&#xff08;或相关的物理量&#xff09;。该分析选项允许计算&#xf…

电脑网页打不开提示错误err connection怎么办?

网页打不开显示err_connection_reset网络错误&#xff0c;怎么解决err_connection_reset网络错误&#xff1f;下面我们就来看看解决电脑err_connection_reset网络错误的方法&#xff0c;请看下文详细介绍。 方法一&#xff1a;组件注册 1、我们点下键盘的winR&#xff0c;输入…

2. 选择排序

2.1 内存的工作原理 需要将数据存储到内存时&#xff0c;你请求计算机提供存储空间&#xff0c;计算机给你一个存储地址。 需要存储多项数据时&#xff0c;有两种基本方式——数组和链表。 2.2 数组和链表 有时候&#xff0c;需要在内存中存储一系列元素。 使用数组意味着所…

ElasticSearch面试

Welcome to Elastic Docs | Elastic 1. ES的结构和底层实现 ES的整体结构? 一个 ES Index 在集群模式下&#xff0c;有多个 Node &#xff08;节点&#xff09;组成。每个节点就是 ES 的Instance (实例)。每个节点上会有多个 shard &#xff08;分片&#xff09;&#xff0…

koa框架(二) mvc 模式及实现一个koa框架的web服务

mvc三层架构 mvc&#xff0c; 即 model 、controller、view&#xff1b;mvc模式将model、view、controller分离&#xff1b;使用mvc分层是系统更加灵活&#xff0c;扩展性更强。让程序更加直观、复用性更强、可维护性更强。 model 负责数据访问&#xff1b;controller 负责消息…