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

数据库(MySQL黑马)

基础篇

MySQL概述

数据库概述

数据库相关概念

 主流的关系型数据库管理系统

MySQL数据库的安装与启动

下载:MySQL :: MySQL Community Downloads

安装步骤

MySQL―8.0.40超详细保姆级安装教程_mysql8.0.40安装教程-CSDN博客文章浏览阅读1k次。_mysql8.0.40安装教程https://blog.csdn.net/2403_88677213/article/details/143582509

客户端连接

方式1:MySQL提供的客户端命令行工具

 方式2:系统自带的命令行工具执行指令

mysql [-h 127.0.0.1] [-p 3306] -u root -p

(ps:要想在任意的目录下执行mysql指令,必须要先配置PATH环境变量)

 数据模型

  • 关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

特点:

        1.使用表存储数据,格式统一,便于维护

        2.使用SQL语言操作,标准统一,使用方便

SQL

SQL通用语法及分类

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  4. 注释:
  • 单行注释:--注释内容 或 # 注释内容(MySQL持有)
  • 多行注释:/*注释内容*/
SQL分类

DDL 

DDL-数据库操作
  • 查询

SHOW DATABASES;//查询所有数据库        

SELECT DATABASE();//查询当前数据库     

  • 创建

CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [ COLLATE 排序规则];

  • 删除

DROP DATABASE [ IF EXISTS ]数据库名;

  • 使用

 USE 数据库名;

DDL-表操作-创建&查询
DDL-表操作-查询
  • 查询当前数据库所有表

SHOW TABLES;

  • 查询表结构

DESC表名;

  • 查询指定表的建表语句

SHOW CREATE TABLE 表名;

 DDL-表操作-创建

 建表规范 :数据库MySQL-表【DDL/DML】_数据库ddl建表规范-CSDN博客文章浏览阅读239次。数据库MySQL-表【DDL/DML】7、表的创建(建表)7.1、建表的语法格式:(建表属于DDL语句,DDL包括:create drop alter)create table 表名(字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型);create table 表名(字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型);表名:建议以t_ 或者 tbl_开始,可读性强。见名知意。字段名:见名知意。表名和字段名都属于标识符。7.2、关于mysql中的_数据库ddl建表规范https://blog.csdn.net/qq_43030934/article/details/123178158

DDL-数据类型及案例 
  • 数值类型
类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值
  • 字符串类型
类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

 TEXT:描述文本数据        BLOB:描述二进制数据

char类型: 定义形式为 char[10]        varchar类型:定义形式为varchar[10]  

注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

比较项目CHARVARCHAR
空间使用方式定义多大就占用多大空间,不足则在右侧填充空格至定义长度根据输入字符串的实际大小来占用空间,上限为所定义的大小
示例说明定义CHAR(8),存储"abc"时,实际存储为"abc "(后面 5 个空格填充)定义VARCHAR(8),存储"abc"时,只占用存储"abc"实际所需空间
效率层面性能相对较好,因为数据长度固定,在存储和检索时处理相对简单直接性能相对较差,由于其可变长度的特性,存储和检索时可能需要更多的处理来确定实际长度等操作
适用场景适合存储长度固定的数据,如身份证号(固定 18 位)、邮编(固定几位数字等)、固定格式的代码等适合存储长度不确定且变化较大的数据,如用户评论、文章内容、产品描述等
  • 日期时间类型:
类型大小
( bytes)
范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4

'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳
 案例

DDL-表操作-修改
添加字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

  删除字段

ALTER TABLE 表名 DROP 字段名;

修改表名

 ALTER TABLE 表名 RENAME TO 新表名;

DDL-表操作-删除

删除表

DROP TABLE 表名;     -- 直接删除表,不检查是否存在

        或

DROP TABLE [IF EXISTS] 表名;  -- 会检查是否存在,如果存在则删除

删除指定表,并重新创建该表

TRUNCATE TABLE 表名;

PS:在删除表的同时表中的数据也会删除。 

DDL总结

 

MySQL图形化界面工具

DataGrip下载安装及使用教程(详细版)-CSDN博客文章浏览阅读7.2w次,点赞44次,收藏237次。本文提供了DataGrip的详细安装教程和应用指南。从官网下载最新版本的IDE,选择安装路径并进行安装。激活后,启动DataGrip,新建项目并选择数据库类型。在连接界面配置服务器信息,下载驱动,测试连接成功后即可开始使用,查看和操作数据库。https://blog.csdn.net/m0_70536638/article/details/128860243

DML 

DML(Data Manipulation Language)语句: 数据操纵语言,主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT、UPDATE、DELETE 等。

  • INSERT   添加数据
  • UPDATE  修改数据
  • DELETE   删除数据

DML-插入
  • 给指定字段添加数据

INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...);

  • 给全部字段添加数据

INSERT INTO 表名 VALUES(值1,值2,...);

  • 批量添加数据

INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...);

INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

 

小Tips:

select * from 表名;/*在命令行输入完成对表的查看*/

DML-修改数据

UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,... [WHERE 条件];

注意:修改语句中的条件可以有,也可以没有,如果没有条件时,则会修改整张表的所有数据。

DML-删除数据

DELETE FROM 表名 [WHERE 条件]

注意:
        DELETE语句的条件可以有,也可以没有,如果没有条件时,则会修改整张表的所有数据。

        DELETE语句不能删除某一个字段的值(可以使用UPDATE)。

DML语句小结

 

DQL

DQL(Data Query Language)语句:数据查询语言,主要是对数据进行查询操作。常用关键字有 SELECT、FROM、WHERE 等。

查询关键字:SELECT        (频次最多)

DQL-语法

DQL-基本查询
1.查询多个字段

SELECT 字段1,字段2,字段3,... FROM 表名;

SELECT * FROM 表名;

2.设置别名

SELECT 字段1 [ AS 别名1 ],字段2 [ AS 别名2 ] ... FROM 表名;

 3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

DQL-条件查询 
1.语法

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

 2.条件

DQL-聚合函数 
1.介绍

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

2.常见聚合函数

 3.语法

SELECT 聚合函数(字段列表)FROM 表名;

DQL-分组查询
1.语法

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

 2.where与having区别
  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意

执行顺序:where>聚合函数>having。

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

DQL-排序查询 
1.语法

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

2.排序方式
  • ASC:升序(默认值)
  • DESC:降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

DQL-分页查询 
1.语法

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

 注意

  • 起始索引从0开始,起始索引 =(查询页码 -1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接写为 limit 10。
DQL-执行顺序 

DQL-小结

DCL

DCL(Data Control Language)语句: 数据控制语言,主要是用来设置/更改数据库用户权限。常用关键字有 GRANT、REVOKE 等。

DCL-用户管理

1.查询用户

USE mysql;

SELECT * FROM user;

 2.创建用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

 3.修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

 4.删除用户

DROP USER '用户名'@'主机名';

注意:

  • 主机名可以使用%通配
  • 这类SQL开发人员操作的比较少,主要是DBA(Database Administrator 数据库管理员)使用。

练习:

--创建用户itcast 只能够在当前主机localhost访问,密码123456;
create  user 'itcast'@'localhost' identified by '123456';--创建用户 heima ,可以在任意主机访问该数据库,密码123456;;
create user 'heima'@'%' identified by '123456';--修改用户heima 的访问密码 1234;
alter user 'heima'@'%' identified with mysql_native_password BY '1234';--删除itcast@localhost用户
drop user 'itcast'@'localhost';
DCL-权限控制 

常用:

 1.查询权限

SHOW GRANTS FOR  '用户名'@'主机名';

 2.授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

3.撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

 注意:

  • 多个权限之间,使用逗号分隔
  • 授权时,数据库名和表名可以使用*进行通配,代表所有。
DCL-小结 

函数 

 是指一段可以直接被另一段程序调用的程序或代码。

字符串函数

 运用函数是尽量不要出现 函数 (s1,s2,s3...) 函数中间尽量不要有空格

SELECT 函数(参数)

数值函数

日期函数

流程(控制)函数

约束

概述

1.概述:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

2.目的:保证数据库中数据的正确,有效性和完整性。

3.分类:

 注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

主要归类为列级约束和表级约束

  1. 列级约束NOT NULL | DEFAULT | PRIMARY KEY | UNIQUE | CHECK
  2. 表级约束PRIMARY KEY | UNIQUE | CHECK | FOREIGN KEY

约束演示

--------------约束演示-------------------
create table user
(id     int primary key auto_increment comment '主键',name   varchar(10) not null unique comment '姓名',age    int check (age > 0 && age <= 120 ) comment '年龄',status char(1) default '1' comment '状态',gender char(1) comment '性别'
)comment '用户表';---------插入数据
insert into user(name,age,status,gender) values ('Tom1',10,'1','男'),('Tom2','9',1,'女');
insert into user(name,age,status,gender) values ('Tom3',10,'1','男');insert into user(name,age,status,gender) values (null,10,'1','男');#报错:[23000][1048] Column 'name' cannot be null
insert into user(name,age,status,gender) values ('Tom3',10,'1','男');#报错:[23000][1062] Duplicate entry 'Tom3' for key 'user. name'insert into user(name,age,status,gender) values ('Tom4',80,'1','男');
insert into user(name,age,status,gender) values ('Tom5',-1,'1','男');#报错:[HY000][3819] Check constraint 'user_chk_1' is violated.
insert into user(name,age,status,gender) values ('Tom6',121,'1','男');#报错:[HY000][3819] Check constraint 'user_chk_1' is violated.insert into user(name,age,gender) values ('Tom7',120,'男');#给予默认值

外键约束

  • 概念

外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

  • 语法
添加外键

删除外键

外键删除/更新行为

## 语法(cascade可替换)
alter table emp add constraint fk_emp_dept_id foreign key(dept_id) references dept(id) on update cascade on delete cascade ; 

小结

多表查询

多表关系

  • 概述

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:

  • 一对多(多对一)
  • 多对多
  • 一对一
一对多(多对一)

 多对多

 一对一

 多表查询概述

概述:指从多张表中查询数据

笛卡尔积:笛卡尔乘积是指在数学中,两个集合 A集合和B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积

真正需要的 

 多表查询的分类:

 连接查询
内连接

 外连接

自连接 

联合查询 

 查询语句A(得表A)

union(all)

 查询语句B(得表B)

 子查询

标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。

常用的操作符:= <> > >= < <=

列子查询

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

常用的操作符:IN、NOT IN、ANY、SOME、ALL

行子查询

子查询返回的结果是一行(可以是多行),这种子查询称为行子查询。

常用的操作符: =、<>、IN、NOT IN

表子查询

子查询返回的结果是多行多行,这种子查询称为表子查询。

常用的操作符:IN

案例演示

要求

准备数据

-- 准备数据
create table dept(id   int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称'
)comment '部门表';
INSERT INTO dept (id, name) VALUES (1, '研发部'), (2, '市场部'),(3, '财务部'), (4, '销售部'), (5, '总经办');alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);create table emp(id  int auto_increment comment 'ID' primary key,name varchar(50) not null comment '姓名',age  int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',dept_id int comment '部门ID'
)comment '员工表';INSERT INTO emp (id, name, age, job,salary, entrydate, managerid, dept_id) VALUES(1, '金庸', 66, '总裁',20000, '2000-01-01', null,5),(2, '张无忌', 20, '项目经理',12500, '2005-12-05', 1,1),(3, '杨逍', 33, '开发', 8400,'2000-11-03', 2,1),(4, '韦一笑', 48, '开发',11000, '2002-02-05', 2,1),(5, '常遇春', 43, '开发',10500, '2004-09-07', 3,1),(6, '小昭', 19, '程序员鼓励师',6600, '2004-10-12', 2,1);
create table salgrade(grade int,losal int,hisal int
)comment "薪资等级表"insert into salgrade value(1,0,3000);
insert into salgrade value(2,3001,5000);
insert into salgrade value(31,5001,8000);
insert into salgrade value(4,8001,10000);
insert into salgrade value(5,10001,15000);
insert into salgrade value(6,15001,20000);
insert into salgrade value(7,20001,25000);
insert into salgrade value(8,25001,30000);-- 案例
-- 1、查询员工姓名、年龄、部门信息(隐式内连接)
-- 表:emp , dept
-- 连接条件 : emp.dep_id = dep.id
select e.name,e.age, e.job,d.name from emp e,dept d where e.dept_id = d.id;-- 2、查询年龄大于20的员工姓名、年龄、部门信息 (显示内连接)
-- 表:emp , dept
-- 连接条件 : emp.dep_id = dep.id
select e.name,e.age,e.job,d.name from emp e inner join dept d on e.dept_id =d.id where e.age > 20;-- 3、查询拥有员工的部门ID、部门名称 (部门表和员工表交集的部分)
-- 表:emp , dept
-- 连接条件 : emp.dep_id = dep.id
-- distinct 去重
select distinct d.id, d.name from emp e,dept d where e.dept_id = d.id;-- 4、查询所有年龄大于25的员工及其归属的部门名称,如果没有分配部门,也要展示出来
-- 表:emp , dept
-- 连接条件 : emp.dep_id = dep.id
-- 外连接
select e.*,d.name from emp e left join dept d on d.id = e.dept_id where e.age > 25;-- 5、查询所有员工工资等级
-- 表:emp , salgrade
-- 连接条件 : emp.salary >= salgrade.losal &&  emp.salary <= salgrade.hisal
select e.*, s.grade, s.losal,s.hisal from emp e,salgrade s where e.salary >= s.losal &&  e.salary <= s.hisal;
select * from emp e ,salgrade s where e.salary between s.losal and s.hisal;-- 6、查询"研发部"所有员工信息及工资等级
-- 表:emp , salgrade, dep
-- 连接条件 :e.salary between s.losal and s.hisal; emp.dep_id = dep.id
-- 查询条件:dept.dept = '研发部'
select e.*, s.grade
from emp e,dept d,salgrade s
where (e.salary between s.losal and s.hisal)and e.dept_id = d.idand d.name = '研发部';-- 7、查询"研发部"员工的平均工资
-- 表:emp ,  dep
-- 连接条件 : emp.dep_id = dep.id
select avg(e.salary)
from emp e,dept d
where e.dept_id = d.idand d.name= '研发部';-- 8、查询工资比小昭高的员工信息
-- 表:emp
select *
from emp e
where salary > (select e.salary from emp e where e.name = '小昭');-- 9、查询比平均工资高的员工信息
-- 表:emp
select *
from emp e
where salary > (select avg(salary) from emp);-- 10、查询低于本部门平均工资的员工
-- 表:emp , dept
-- 连接条件 : emp.dep_id = dep.id
select *
from emp e2
where e2.salary < (select avg(e1.salary) from emp e1 where e1.dept_id = e2.dept_id);-- 11、查询所有部门的信息,并统计部门的员工人数
select d.id,d.name ,(select count(*) from emp e where e.dept_id = d.id) '人数' from dept d;
小结

事务

事务简介

一组操作的集合,它是不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

操作演示

-- 数据准备
create table account(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',monney int comment '余额'
) comment '账户表';insert into account (id, name, monney)
values (null,'张三',2000),(null,'李四',2000);-- 恢复数据
update account set monney = 2000 where name = '张三' or name = '李四';-- 张三给李四转账1000
select * from account where name = '张三';
update account set monney = monney - 1000 where name = '张三';
程序抛出异常...
update account set monney = monney + 1000 where name = '李四';

select @@autocommit;
set @@autocommit = 0;-- 张三给李四转账1000
select * from account where name = '张三';
update account set monney = monney - 1000 where name = '张三';
update account set monney = monney + 1000 where name = '李四';-- 提交事务
commit ;-- 回滚事务;
rollback ;

 

-- 张三给李四转账1000
start transaction ;
select * from account where name = '张三';
update account set monney = monney - 1000 where name = '张三';
update account set monney = monney + 1000 where name = '李四';
commit ;
rollback ;

事务四大特性

并发事务问题

事务隔离级别

MySQL默认为 Repeatable Read(默认)         Orcle默认为Read committed

 

 注:事务隔离级别越高,数据越安全,但是性能越低 。

小结

相关文章:

数据库(MySQL黑马)

基础篇 MySQL概述 数据库概述 数据库相关概念 主流的关系型数据库管理系统 MySQL数据库的安装与启动 下载&#xff1a;MySQL :: MySQL Community Downloads 安装步骤 MySQL―8.0.40超详细保姆级安装教程_mysql8.0.40安装教程-CSDN博客文章浏览阅读1k次。_mysql8.0.40安装教…...

HTML5+JavaScript实现消消乐游戏

HTML5JavaScript实现消消乐游戏 点击两个相邻的方块来交换它们位置。 如果交换后形成三个或更多相同图案的方块连成一线&#xff0c;这些方块会被消除。 消除后&#xff0c;上方的方块会下落填补空缺&#xff0c;顶部会生成新的方块。 每消除一个方块得10分。例如&#xff0…...

sin函数拟合

目录 一、 目的... 1 二、 模型设计... 1 2.1 输入与输出.... 1 2.2 隐藏层设计.... 1 2.3 优化算法与损失函数.... 1 2.4 神经网络结构.... 1 三、 训练... 1 3.1 数据生成.... 2 3.2 训练过程.... 2 3.3 训练参数与设置.... 2 四、 测试与分析... 2 4.1 选取不同激活函数....…...

设置Mysql5.6允许外网访问

设置mysql用户支持外网访问步骤&#xff1a; 需要使用root权限登录mysql&#xff0c;更新mysql.user表&#xff0c;设置指定用户的Host字段为%&#xff0c;默认一般为127.0.0.1或者localhost。 1.登录数据库 1 mysql -u root -p 输入密码 1 mysql> use mysql; 2.查询hos…...

【随笔】一次JS和python中的MD5加密的记录

// 使用CryptoJS进行MD5加密和Base64编码 const sign CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(CryptoJS.MD5(sign2encrypt).toString()));上面这段JS和下面这个python等价 def hash_and_encode(input_string):sign2encrypt input_string# 使用 hashlib 进行 …...

力扣 二叉树的中序遍历

用了递归遍历&#xff0c;关于树的经典例题。 题目 递归 常规做法即递归了&#xff0c;不会写也得背下来。递归可以大致理解方法调用自身&#xff0c;先写中序遍历递归的方法&#xff0c;递归一定要有递归出口&#xff0c;当遍历到节点为空时返回&#xff0c;即已经找到了。…...

uniapp学习(010-3 实现H5和安卓打包上线)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第114p-116p的内容 文章目录 H5配置文件设置开始打包上传代码 安卓设置模拟器启动设置基础配置设置图标启动界面…...

基于DHCP,ACL的通信

该问题为华为的学习资料 1.首先把所有的PC机全部设置为DHCP 2.配置地址 3.ospf 4.dhcp 5.acl AR1 dhcp en interface GigabitEthernet0/0/0ip address 192.168.1.254 255.255.255.0 dhcp select global interface GigabitEthernet0/0/1ip address 10.1.12.1 255.255.255.…...

金融租赁系统助力企业升级与风险管理的新篇章

内容概要 在当今的商业环境中&#xff0c;“金融租赁系统”可谓是企业成功的秘密武器。简单来说&#xff0c;这个系统就像一位聪明的财务顾问&#xff0c;帮助企业在资金和资源的运用上达到最优化。从设备采购到项目融资&#xff0c;它提供了一种灵活的方式&#xff0c;让企业…...

linux安装部署mysql资料

安装虚拟机 等待检查完成 选择中文 软件选择 网络和主机名 开始安装 设置root密码 ADH-password 创建用户 等待安装完成 重启 接受许可证 Centos 7 64安装完成 安装mysql开始 Putty连接指定服务器 在 opt目录下新建download目录 将mysql文件传到该目录下 查看linux服务器的…...

深入理解 MongoDB:一款灵活高效的 NoSQL 数据库

在现代应用程序开发中&#xff0c;数据存储技术已经从传统的关系型数据库&#xff08;RDBMS&#xff09;扩展到多样化的 NoSQL 数据库。MongoDB 作为一款广泛使用的文档型数据库&#xff0c;以其灵活性、高性能和易用性成为开发者的首选之一。本篇博文将从 MongoDB 的核心概念、…...

爆改老旧笔记本---将笔记本改造为家用linux服务器

爆改老旧笔记本---将笔记本改造为家用linux服务器 linux启动盘制作镜像文件分区类型:MBR分区和GPT分区的定义MBR分区&#xff08;Master Boot Record&#xff09;GPT分区&#xff08;GUID Partition Table&#xff09;应用场景和优势MBR的应用场景和优势GPT的应用场景和优势 Li…...

RocketMQ MQTT Windows10 环境启动

RocketMQ MQTT Windows10 环境启动 参考环境和软件版本下载资源启动RocketMQ启动RocketMQ MQTT 参考 https://blog.csdn.net/weixin_43114058/article/details/140043257 https://blog.csdn.net/yangxiaovip/article/details/138355443 环境和软件版本 操作系统&#xff1a…...

sd webui整合包怎么安装comfyui

环境: sd webui整合包 comfyui 问题描述: sd webui整合包怎么安装comfyui 扩展安装不成功 解决方案: 1.直接下载 ,解压到SD文件夹里(或者git拉一下) 2.ComfyUI模型共享:如果本机部署过Webui,那么ComfyUI可以与WebUI公用一套模型,防止复制大量模型浪费空间 将…...

Edify 3D: Scalable High-Quality 3D Asset Generation

Deep Imagination Research | NVIDIA 目录 一、Abstract 二、核心内容 1、多视图扩散模型 3、重建模型&#xff1a; 4、数据处理模块&#xff1a; 三、结果 1、文本到 3D 生成结果 2、图像到 3D 生成结果 3、四边形网格拓扑结构 一、Abstract NVIDIA 开发的用于高质量…...

鸿蒙HarmonyOS学习笔记(6)

定义扩展组件样式&#xff1a;Extend装饰器 在前文的示例中&#xff0c;可以使用Styles用于样式的重用&#xff0c;在Styles的基础上&#xff0c;我们提供了Extend&#xff0c;用于扩展原生组件样式。 说明 从API version 9开始&#xff0c;该装饰器支持在ArkTS卡片中使用。 从…...

蓝桥杯备赛笔记(一)

这里的笔记是关于蓝桥杯关键知识点的记录&#xff0c;有别于基础语法&#xff0c;很多内容只要求会用就行&#xff0c;无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout&#xff1a; 1.3 string以下是字符串的一些简介&#xff1a;字符串…...

在Java中使用Apache POI导入导出Excel(二)

本文将继续介绍POI的使用&#xff0c;上接在Java中使用Apache POI导入导出Excel&#xff08;一&#xff09; 使用Apache POI组件操作Excel&#xff08;二&#xff09; 14、读取和重写工作簿 try (InputStream inp new FileInputStream("workbook.xls")) { //Inpu…...

linux 中后端jar包启动不起来怎么回事 -bash: java: 未找到命令

一、用以下命令检查jdk版本 输入&#xff1a;java -version&#xff0c;如果JDK 环境变量没有配置&#xff0c;你会看到如下提示 二、配置jdk环境 1.先找到/etc/profile文件&#xff0c;然后在该文件最后面加上以下配置 export JAVA_HOME/usr/local/jdk-21.0.1 export PATH$…...

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论&#xff0c;感谢大家支持&#xff01; 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…...

快速排序(C++实现)

基本思想 任取一个元素为中心&#xff0c;所有比它小的元素一律前放&#xff0c;比他大的元素一律后放&#xff0c;形成左右两个子表&#xff1b;对各子表重新选择中心元素并依此规则调整&#xff0c;直到每个子表的元素只剩一个。 通过一趟排序&#xff0c;将待排序记录分割成…...

【数据库知识】数据库关系代数表达式

文章目录 概述一、关系代数表达式的基本组成部分二、关系代数运算符及其使用样例三、关系代数表达式的优化四、总结 概述 数据库关系代数表达式是关系数据库系统查询语言的理论基础&#xff0c;它使用一系列符号和运算符来描述从一个或多个关系&#xff08;即表&#xff09;中…...

linux系统清理全部python环境并重装

提问 centos系统清理全部python环境并重装&#xff0c;并且使用宝塔。 解答 要在CentOS系统中彻底清理Python3环境&#xff0c;可以遵循以下步骤&#xff1a; 卸载Python3 使用rpm命令卸载所有与Python3相关的包。这个命令会查询所有已安装的与python3相关的rpm包&#xf…...

Servlet的介绍

Servlet是Java Web的核心组件&#xff0c;它是一个运行在服务器端的Java程序&#xff0c;用于接收客户端的请求、处理请求并返回响应。Servlet遵循特定的生命周期&#xff0c;包括初始化、服务、销毁等阶段。 生命周期&#xff1a; init()&#xff1a;初始化Servlet实例&#x…...

DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解

目录 引言 伪彩色映射的概念 基本原理 查找表&#xff08;Look-Up Table, LUT&#xff09; 步骤 示例映射方案 实现伪彩色映射的C代码 代码详解 伪彩色处理效果展示 总结 扩展知识 LUT 的基本概念 LUT 在伪彩色映射中的应用 示例 引言 在医学影像处理中&#xff0c…...

(超详细图文详情)Navicat 配置连接 Oracle

1、下载依赖文件 Oracle官网下载直链&#xff1a;https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 夸克网盘下载&#xff08;oracle19c版本&#xff09;&#xff1a;https://pan.quark.cn/s/5061e690debc 官网下载选择对应 Oracle 版…...

PyTorch:神经网络的基本骨架 nn.Module的使用

神经网络的基本骨架 nn.Module的使用 为了更全面地展示如何使用 nn.Module 构建一个适用于现代图像处理任务的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;我们将设计一个针对手写数字识别&#xff08;如MNIST数据集&#xff09;的简单CNN模型。CNN非常适合处理图像数…...

学习threejs,使用CubeCamera相机创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️CubeCamera 立方体相机 二、…...

Linux网络——IO模型和多路转接

通常所谓的IO&#xff0c;其本质就是等待通信和进行通信&#xff0c;即IO 等 拷贝。 那么想要做到高效的IO&#xff0c;就要在单位时间内&#xff0c;减少“等”的比重。 一.五种IO模型 阻塞 IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方…...

【计网】自定义序列化反序列化(二) —— 实现网络版计算器【上】

&#x1f30e; 实现网络版计算器【上】 文章目录&#xff1a; 实现网络版计算器【上】 自定义协议       制定自定义协议 Jsoncpp序列化反序列化       Json::Value类       Jsoncpp序列化       Jsoncpp反序列化 自定义协议序列化反序列化      …...

怎么做网站和艺龙对接/58同城黄页推广

本文作者&#xff1a;CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI&#xff09;是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员每天至少集成一次&#xff0c;也就意味着每天可能会发生多次集成。每…...

做赌博网站代理违法吗/业务推广方式有哪些

awk 默认以空格为分割符 倒数第一行 awk ‘{print $(NF)}’ 倒数第二行 awk ‘{print $(NF-1)}’ awk ‘{print $0}’ demo.txt 上面示例中&#xff0c;demo.txt是awk所要处理的文本文件。前面单引号内部有一个大括号&#xff0c;里面就是每一行的处理动作print $0。其中&am…...

手机上怎么做微电影网站/好项目推荐平台

百度的对话式 AI 领先能力获世界级认可。近日&#xff0c;全球权威的技术研究与咨询机构 Gartner 发布《竞争格局报告&#xff1a;对话式 AI 平台》报告&#xff0c;百度成为国内唯一入围的供应商&#xff0c;在对话式人工智能领域处于市场领先地位。 ▲ Gartner 发布《竞争格局…...

网站建设公司业务/网络营销实训总结报告

Java如何入门&#xff1f; 1、建立好开发环境 首先建立好开发环境非常重要&#xff0c;工欲善其事&#xff0c;必先利其器。做任何开发&#xff0c;首先就是要把这个环境准备好&#xff0c;之后就可以去做各种尝试&#xff0c;尝试过程中就能逐渐建立信心。初学者往往在环境配…...

威海城乡建设局网站首页/百度下载安装到桌面

Redmine的code review插件可以显示代码的具体内容&#xff0c;但是缺少代码的作者、发布时间等等信息&#xff0c;所以需要对插件进行修改&#xff0c;添加这个功能。如图所示为没有修改时的显示页面&#xff1a; 可以看到&#xff0c;图中只有代码。 我们要做的就是在上面添加…...

福州做网站哪家最好/广告宣传网站

这周五&#xff0c;就是昨天&#xff0c;部门走了3个人。他们是“被离职”的&#xff0c;从被通知到走人&#xff0c;只过了一周左右。一开始经理和他们谈的时候&#xff0c;说有没有赔偿不能确定&#xff0c;然后到周四左右&#xff0c;上面的人可能是等急了&#xff0c;才说年…...