MySQL基础篇1
第1章 数据库介绍
1.1 数据库概述
什么是数据库?
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
数据库分两大类:
关系型数据库
非关系型NoSQL
什么是关系型数据库
数据库中的【记录是有行有列的数据库】就是关系型数据库(RDBMS, Relational DatabaseManagement System)与之相反的就是 NoSQL 数据库了。
什么是数据库管理系统?
广义数据库:泛指数据库管理系统RDBMS
狭义数据库:真正存储数据的地方
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。一个 DBMS 可以管理多个 数据库,我们建议每个项目系统,对应一个数据库,避免数据混乱。然后可以在数据库中,根据具体操作数据对象,对应创建多个表。比如,商城管理系统中,有商品表、订单表、用户表等等。
数据库与数据库管理系统的关系?
1.2 数据库表
数据库中以表为组织单位存储数据。表中的每个字段都有对应的数据类型。
数据库表中,每一列数据存储的是固定的数据类型的数据;
1.3 表数据
表中的一行一行的信息我们称之为记录。根据表字段所规定的数据类型,向其中填入一条条数据。
1.4 常见数据库管理系统
- MYSQL: 开源免费的数据库,小型的数据库。已经被Oracle收购了,MySQL6.x版本也开始收
费。- Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
- DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
- SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
- SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
- SQLite:嵌入式的小型数据库,应用在手机端。
常用数据库:MYSQL,Oracle。
这里使用MySQL数据库。MySQL中可以有多个数据库,数据库中的表是真正存储数据的地方。
第2章 MySql数据库
2.1 什么是MySQL?
MySQL 是最流行的【关系型数据库管理系统】,在 WEB 应用方面 MySQL是最好的RDBMS 应用软件之一。
发展历程:
MySQL 的历史可以追溯到 1979 年,一个名为 Monty Widenius 的程序员在为TcX的小公司打工,并且用 BASIC 设计了一个报表工具,使其可以在4MHz 主频和 16KB内存的计算机上运行。当时,这只是一个很底层的且仅面向报表的存储引擎,名叫Unireg。
1990年:TcX 公司的客户中开始有人要求为他的 API 提供 SQL 支持。Monty 直接借助于 mSQL 的代码,将它集成到自己的存储引擎中。效果并不太令人满意,决心自己重写一个 SQL 支持。
1996年:MySQL 1.0 发布,它只面向一小拨人,相当于内部发布。
1996年10月,MySQL 3.11.1发布(MySQL 没有 2.x 版本),最开始只提供Solaris下的二进制版本。一个月后,Linux 版本出现了。在接下来的两年里,MySQL 被依次移植到各个平台。
1999年:【MySQL AB】公司在瑞典成立。Monty 雇了几个人与Sleepycat 合作,开发出了【Berkeley DB引擎】, 由于 BDB 支持事务处理,因此MySQL 从此开始支持事务处理了。
2000年:MySQL 不仅公布自己的源代码,并采用 GPL(GNU General Public License)许可协议,正式进入开源世界。同年 4 月,MySQL 对旧的存储引擎 ISAM进行了整理,将其命名为 MyISAM。
2001年:集成 Heikki Tuuri 的存储引擎【InnoDB】,这个引擎不仅能【支持事务处理,并且支持行级锁】。后来该引擎被证明是最为成功的 MySQL 事务存储引擎。【MySQL与InnoDB的正式结合版本是4.0】
2003年:【MySQL 5.0】版本发布,提供了视图、存储过程等功能。
2008年:【MySQL AB 公司被 Sun 公司以 10 亿美金收购】,MySQL 数据库进入 Sun 时代。在 Sun时代,Sun 公司对其进行了大量的推广、优化、Bug 修复等工作。MySQL 5.1发布,它提供了分区、事件管理,以及基于行的复制和基于磁盘的 NDB 集群系统,同时修复了大量的 Bug。
2009年:Oracle 公司以74亿美元收购Sun公司,自此 MySQL 数据库进入Oracle 时代,而其第三方的存储引擎 InnoDB 早在 2005 年就被 Oracle 公司收购。
2010年:【MySQL 5.5发布】,其主要新特性包括半同步的复制及对 SIGNAL/ RESIGNAL 的异常处理功能的支持,【最重要的是 InnoDB 存储引擎终于变为当前MySQL的默认存储引擎】。
MySQL 5.5 不是时隔两年后的一次简单的版本更新,而是加强了 MySQL 各个方面在企业级的特性。
Oracle 公司同时也承诺 MySQL 5.5 和未来版本仍是采用 GPL 授权的开源产品。
2.2 安装
安装:参考MySQL安装图解.pdf
安装后,MySQL会以windows服务的方式为我们提供数据存储功能。开启和关闭服务的操作:右键点击
我的电脑→管理→服务→可以找到MySQL服务开启或停止。
也可以在DOS窗口,通过命令完成MySQL服务的启动和停止(必须以管理员身份运行cmd命令窗口)
开启mysql服务:net start mysql
关闭mysql服务:net stop mysql
2.3 登录
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。
格式1:cmd> mysql –u用户名 –p密码
例如:mysql -uroot –proot
格式2: mysql –u用户名 –p
请输入密码: root
格式2:cmd> mysql --host=ip地址 --user=用户名 --password=密码
例如:mysql --host=127.0.0.1 --user=root --password=root
第3章 SQL语句
3.1 SQL概述
SQL语句介绍
结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
扩展:SQL作为一种访问【关系型数据库的标准语言】,SQL 自问世以来得到了广泛的应用,不仅是著名的大型商用数据库产品 Oracle、DB2、Sybase、SQL Server 支持它,很多开源的数据库产品如 PostgreSQL、MySQL也支持它,甚至一些小型的产品如 Access 也支持 SQL。近些年蓬勃发展的 NoSQL 系统最初是宣称不再需要 SQL 的,后来也不得不修正为 Not Only SQL,来拥抱SQL。
蓝色巨人 IBM 对关系数据库以及 SQL 语言的形成和规范化产生了重大的影响,第一个版本的 SQL标准 SQL86 就是基于 System R 的手册而来的。
Oracle 在 1979 年率先推出了支持 SQL 的商用产品。随着数据库技术和应用的发展,为不同RDBMS提供一致的语言成了一种现实需要。
对 SQL 标准影响最大的机构自然是那些著名的数据库产商,而具体的制订者则是一些非营利机构,例如【国际标准化组织 ISO、美国国家标准委员会 ANSI】等。
各国通常会按照 ISO 标准和 ANSI 标准(这两个机构的很多标准是差不多等同的)制定自己的国家标准。
SQL作用
在数据库中检索信息。
对数据库的信息进行更新。
改变数据库的结构。
更改系统的安全设置。
增加或回收用户对数据库、表的许可权限。
SQL语句分类
数据定义语言:简称DDL(Data Definition Language)
作用:用来定义数据库对象:数据库,表,列等。
关键字:create,alter,drop等
数据操作语言:简称DML(Data Manipulation Language),
作用:用来对数据库中表的记录进行更新。
关键字:insert,delete,update等
数据查询语言:简称DQL(Data Query Language),
作用:用来查询数据库中表的记录。
关键字:select,from,where等
数据控制语言:简称DCL(Data Control Language),
作用:用来定义数据库的访问权限和安全级别,及创建用户。
SQL通用语法
-- 创建用户表
create table user (uid int primary key auto_increment, -- 用户 iduname varchar(20), -- 用户名
);
SQL语句可以单行或多行书写,以分号结尾
可使用空格和缩进来增强语句的可读性
MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
例如:SELECT * FROM user。
常用注释形式
– 单行注释内容
/* 多行注释 */
#单行注释内容
MySQL中的我们常使用的数据类型如下
类型名称 说明 int(integer) 整数类型 double 小数类型 decimal(m,d) 指定整数位与小数位长度的小数类型 decimal(10,2) date 日期类型,格式为yyyy-MM-dd,包含年月日,不包含时分秒 2019-05-06 datetime 日期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年月日时分秒 2019-05-0609:49:30 timestamp 日期类型,时间戳 varchar(M) 文本类型, M为0~65535之间的整数
3.2 DDL之数据库操作:database
创建、查看、删除、修改…
1)创建数据库
create database 数据库名;
create database 数据库名 character set 字符集;
-- 【案例】
-- 1. 创建一个叫 hello 的数据库
create database hello;
-- 2. 如果不存在则创建
create database hello if not exists hello;
-- 3. 创建数据库并指定字符集
create database hello default character set gbk;
2)查看数据库
查看数据库服务器中的所有的数据库:show databases;
查看某个数据库的定义的信息:show create database 数据库名;
-- 【案例】
-- 查看数据库服务器中的所有的数据库
show databases;
-- 查看某个数据库的定义信息
show create database hello;
3)删除数据库(慎用)
drop database 数据库名称;
-- 【案例】
drop database hello;
4)修改数据库
修改数据库默认的字符集:
alter database 数据库名 default character set 字符集
-- 【案例】
alter database hello3 character set utf8;
5)其他数据库操作命令
切换数据库: use 数据库名;
查看正在使用的数据库:select database();
3.3 DDL之表操作:table
创建数据库表
查看表
快速创建:克隆
删除表
修改表结构:如果表内有数据,修改需要谨慎
字段更改
字段删除
修改表名称
1)创建表
建立数据表,就是建立表结构,指定数据表中的一共有多少列,每一列的数据类型
-- create 指的是【创建】,table 指的是【数据表】。
-- 一张表中可以指定多个字段,用逗号隔开,最后的字段不需要逗号
create table 表名(-- 可以定义多个列
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
--【案例】
-- 创建用户表
create table t_user (uid int primary key auto_increment, -- 用户 iduname varchar(20), -- 用户名
);
字段类型
常用的类型有:
① 数字型:int、integer、bigint、mediumint、smallint、tinyint
② 浮点型:double、float、decimal(精确小数类型)
③ 字符型:char(定长字符串)、varchar(可变长字符串)
④ 日期类型:date(只有年月日)、time(只有时分秒)、datetime(年月日,时分秒)、year(年)
⑤ 二进制字符串类型:binary(定长,以二进制形式保存字符串)、varbinary(可边长)
单表约束
主键约束:primary key
唯一约束:unique
非空约束:not null
注意
主键约束 = 唯一约束 + 非空约束
2)查看表
查看数据库中的所有表:show tables;
查看表结构:desc 表名;
查看创建表的 SQL 语句:show create table 表名;
-- 【案例】
use hello; -- 使用 hello 数据库
show tables; -- 查看所有表
desc user; -- 查看 user 表的结构
show create table user; -- 查看 user 表的创建语句
3)快速创建一个表结构相同的表
create table 新的表名 like 旧的表名;
-- 【案例】
create table tb_user like user;
desc tb_user;
4)删除表
drop table 表名;
drop table if exists 表名;
--【案例】
-- 删除用户表
drop table user;
5)修改表:
-- 1.修改表添加列
alter table 表名 add 列名 类型(长度) 约束;
-- 2.修改表修改列的类型长度及约束
alter table 表名 modify 列名 类型(长度) 约束;
-- 3.修改表修改列名
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
-- 4.修改表删除列
alter table 表名 drop 列名;
-- 5.修改表名
rename table 表名 to 新表名;
--【案例】
-- 修改表添加列
alter table user add address varchar(50);
-- 修改表修改列的类型长度及约束
alter table user modify address int(30);
-- 修改表修改列名
alter table user change address addr varchar(50);
-- 修改表删除列
alter table user drop addr;
-- 修改表名
rename table user to tb_user;
3.4 DML数据操作语言
1)插入记录:insert
语法:
-- 1.向表中插入某些列
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..);
-- 2.向表中插入所有列
insert into 表 values (值1,值2,值3..);
-- 3.从另外一张表查某些列的结果插入当前表
insert into 表 (列名1, 列名2, 列名3..) values select (列名1,列名2,列名3..) from 表
-- 4.从另外一张表查所有列的结果插入当前表
insert into 表 values select * from 表
--【案例】
-- 向表中插入某些列,必须写列名
insert into user (uid, uname) values (001, 'cuihua');
-- 向表中插入所有列
insert into user values (002, 'aqiang');
5个注意事项:
① 列名数与 values 后面的值的个数相等
② 列的顺序与插入的值得顺序一致
③ 列名的类型与插入的值要一致.
④ 插入值得时候不能超过最大长度.
⑤ 值如果是字符串或者日期需要加引号’’ (一般是单引号)
2)更新记录:update
语法格式:update 更新、set 修改的列值、where 指定条件。
-- 1.不指定条件,会修改表中当前列所有数据
update 表名 set 字段名=值, 字段名=值;
-- 2.指定条件,符合条件的才会修改
update 表名 set 字段名=值, 字段名=值 where 条件;
-- 【案例】
-- 更新所有字段的值
update user set uname='xiaodong';
-- 根据指定的条件来更新
update user set uname='hashiqi' where uid = 2;
注意:
① 列名的类型与修改的值要一致
② 修改值得时候不能超过最大长度
③ 值如果是字符串或者日期需要加 ’ ’ 引号
3)删除记录:delete & truncate
语法格式:
delete from 表名 [where 条件];
-- 【案例】
-- 删除表中所有数据
delete from user;
-- 删除 uid 为 1 的用户
delete from user where uid = 1;
truncate table 表名;
注意
删除表中所有记录使用【delete from 表名】,还是用【truncate table 表名】?
删除方式的区别:
delete :一条一条删除,不清空 auto_increment 记录数。
truncate :直接将表删除,重新建表,auto_increment 将置为零,从新开始
第4章 SQL约束
约束类型:
主键约束 primary key
唯一性约束 unique
非空约束 not null
外键约束 foreign key
4.1 主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
特点:
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
添加主键约束
方式一:创建表时,在字段描述处,声明指定字段为主键:
CREATE TABLE persons( id_p int PRIMARY KEY, lastname varchar(255), firstname varchar(255), address varchar(255), city varchar(255)
);
方式二:创建表时,在constraint约束区域,声明指定字段为主键:
格式: [constraint 名称] primary key (字段列表)
&关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
&字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段为主键,
&我们称为联合主键。
CREATE TABLE persons_cons(
firstname varchar(255),
lastname varchar(255),
address varchar(255),
city varchar(255),CONSTRAINT pk_personID PRIMARY KEY (firstname,lastname)
);
方式三:创建表之后,通过修改表结构,声明指定字段为主键:
格式: ALTER TABLE persons ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)
CREATE TABLE persons_after(
firstname varchar(255),
lastname varchar(255),
address varchar(255),
city varchar(255)
);
ALTER TABLE persons_after ADD PRIMARY KEY (firstname,lastname);
删除主键约束
如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
ALTER TABLE persons DROP PRIMARY KEY
4.2 自动增长列
我们通常希望在每次插入新记录时,数据库自动生成字段的值。
我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(一般是主键)。
下列 SQL 语句把 “persons” 表中的 “p_id” 列定义为 auto_increment 主键
CREATE TABLE persons_id(p_id int PRIMARY KEY AUTO_INCREMENT,lastname varchar(255),firstname varchar(255),address varchar(255),city varchar(255)
);
向persons添加数据时,可以不为p_id字段设置值,也可以设置成null,数据库将自动维护主键值:
INSERT INTO persons_id (firstname,lastname) VALUES ('Bill','Gates');
INSERT INTO persons_id (p_id,firstname,lastname) VALUES
(NULL,'Bill','Gates');
默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法:
ALTER TABLE persons AUTO_INCREMENT=100
4.3 非空约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 “id_p” 列和 “lastname” 列不接受 NULL 值:
CREATE TABLE persons_null(id_p int NOT NULL,lastname varchar(255) NOT NULL,firstname varchar(255),address varchar(255),city varchar(255)
);
4.4 唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
注意:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个PRIMARY KEY 约束。
添加唯一约束
与主键添加方式相同,共有3种
方式一:创建表时,在字段描述处,声明唯一:
CREATE TABLE persons(id_p int UNIQUE,lastname varchar(255) NOT NULL,firstname varchar(255),address varchar(255),city varchar(255)
)
方式二:创建表时,在约束区域,声明唯一:
CREATE TABLE persons(id_p int,lastname varchar(255) NOT NULL,firstname varchar(255),address varchar(255),city varchar(255),CONSTRAINT unique_id_p UNIQUE (Id_P)
)
方式三:创建表后,修改表结构,声明字段唯一:
ALTER TABLE persons ADD [CONSTRAINT 名称] UNIQUE (Id_P)
删除唯一约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE persons DROP INDEX 名称
如果添加唯一约束时,没有设置约束名称,默认是当前字段的字段名。
常见问题解答
01-MySQL数据库密码重置
- 停止mysql服务器运行输入services.msc 停止mysql服务
- 在cmd下,输入mysqld --console --skip-grant-tables 启动服务器,出现一下页面,不要关闭该窗口
- 新打开cmd,输入mysql -uroot 不需要密码
- use mysql;
update user set password=password(‘root’) WHERE user=‘root’; - 关闭两个cmd窗口
02-DOS操作数据乱码解决
我们在dos命令行操作中文时,会报错
insert into category(cid,cname) values(‘c010’,’中文’);
ERROR 1366 (HY000): Incorrect string value: ‘\xB7\xFE\xD7\xB0’ for column ‘cname’ at row 1
错误原因:因为mysql的客户端设置编码是utf8,而系统的cmd窗口编码是gbk
- 查看MySQL内部设置的编码
show variables like ‘character%’; 查看所有mysql的编码
- 需要修改client、connection、results的编码一致(GBK编码)
解决方案1:在cmd命令窗口中输入命令,此操作当前窗口有效,为临时方案。
set names gbk;
解决方案2:安装目录下修改my.ini文件,重启服务所有地方生效。
相关文章:
MySQL基础篇1
第1章 数据库介绍 1.1 数据库概述 什么是数据库? 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。 数据库分两…...
AQS 源码解读
一、AQS AQS 是 AbstractQueuedSynchronizer 的简称,又称为同步阻塞队列,是 Java 中的一个抽象类。在其内部维护了一个由双向链表实现的 FIFO 线程等待队列,同时又提供和维护了一个共享资源 state ,像我们平常使用的 ReentrantLo…...
使用 DataLoader 加载数据报错‘expected sequence of length 4 at dim 1 (got 0)’
使用 transformer 将字符串转为 id 序列,字符串为中英文混杂形式, 运行中出现报错:expected sequence of length 4 at dim 1 (got 0) 发现是在encoder_plus转换时,将输入的文本根据max_length截断了,导致[MASK]等字段…...
第十四届蓝桥杯第三期模拟赛B组C/C++原题与详解
文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…...
致敬三八女神节,致敬IT女生
前言 三八女神节是一个特别的节日,它是为了纪念所有的女性,表达对她们的尊重和关爱。在这个特别的节日里,我们想要致敬所有在IT领域中奋斗的女生,她们用自己的智慧和努力为这个世界带来了无限的可能。 IT女神 从事IT行业的女生…...
【Go语言学习笔记】数据
目录字符串数组数组初始化指针复制切片基本操作resliceappendcopy字典deletemap是引用类型并发操作字符串 字符串是不可变字节(byte)序列,其本身是一个复合结构 type stringStruct struct{str unsafe.Pointerlen int }头部指针指向字节数组…...
puzzle(0919)六宫数局
目录 六宫数局 示例题目 简单模式 普通模式 困难模式 六宫数局 最强大脑同款项目。 找出一条给定起点和终点的路径,每一步的方向任选,在这个方向上移动的步数是当前数的质因数分解中2、3、5的次数。 示例题目 按照六边形坐标系来建立坐标系&#…...
脑机接口科普0016——独立BCI与非独立BCI
本文禁止转载!!!! 所谓的“独立BCI”与“非独立BCI”仅仅是BCI系统中的一个术语。本章主要是介绍一下这两个术语。 这两个术语是由Wolpaw在2002年提出来的。 独立BCI是指不依赖于中枢神经系统的的输出。 非独立BCI是指那种依赖…...
女神节告白代码
今天是女神节,送给所有女神们一句话: 爱自己是终生浪漫的开始,无论何时都要好好爱自己 目录 1. 请求动画帧填充 2.点类 3.粒子类 编辑 4.ParticlePool 池类 5.创建和填充 6.处理循环队列 7.更新活动粒子 8.移除非活性粒子 9.绘制有…...
【数据结构】单链表:头部操作我很行,插入也不用增容!!!
单链表 文章目录单链表1.链表1.1链表的概念和结构1.2链表的分类2.单链表的模拟实现2.1单链表的打印2.2单链表的尾插2.3单链表的头插2.4单链表的尾删2.5单链表的头删2.6单链表的查找2.7单链表的中间插入(在结点前插入)2.8单链表的中间删除(删除该结点)2.9单链表的中间插入(在结点…...
SpringBoot——使用WebSocket功能
springboot自带websocket,通过几个简单的注解就可以实现websocket的功能; 启动类跟普通的springboot一样: /*** 2023年3月2日下午4:16:57*/ package testspringboot.test7websocket;import org.springframework.boot.SpringApplication; im…...
博弈论小课堂:非零和博弈(实现双赢)【纳什均衡点】
文章目录 引言I 非零和博弈1.1 囚徒问题1.2 博弈中双方的收益矩阵II 在现实中找均衡点2.1 博弈通常不是一次性的,而是反复进行的2.2 博弈论讲的都是阳谋的策略2.3 人类还处于文明的初级阶段,人的道德水准不容高估2.4 乌合之众效应2.5 很多时候看似是双赢,其实是在更大范围内…...
数组中的逆序对
解题思路1: 看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个逆序对。假设数组中含有n个数字。由于每个数字都要和…...
C++基础了解-01-基础语法
基础语法 一、基础语法 C 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 -…...
phpmyadmin 文件包含(CVE-2014-8959)
0x01 漏洞介绍 phpMyAdmin是phpMyAdmin团队开发的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,创建、删除、修改数据库表,执行SQL脚本命令等。phpMyAdmin的GIS编辑器中libraries/gis/GIS_Factory.class.php脚本存在目录遍历漏洞。远程攻击者可借助…...
SpringBoot集成MyBatis
目录 实现步骤 1. 在项目的 pom.xml 配置文件中引入如下依赖 2. 在项目的 application.properties 配置文件中添加如下依赖 3. 新建 UserMapper.class 接口类,添加如下 3 个方法 4. 在 /resources/mybatis/mapper 路径(需要手动创建文件夹)下创建 UserMapper.xm…...
MySQL-索引
索引介绍索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一特定值得…...
【STM32存储器映射-寄存器基地址-偏移】
前言 在学习STM32的时候,我们看到很多的寄存器编程, 比方说LED灯: //GPIOB.5端口输出高电平GPIOB->ODR|1<<5; //PB.5 输出高GPIOE->ODR|1<<5; //PE.5输出高 //GPIOB端口全部输出高电平*(unsigned int*)(0x4001 …...
【华为OD机试2023】最多颜色的车辆 C++ Java Python
【华为OD机试2023】最多颜色的车辆 C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收…...
特斯拉后端面试(部分)
HR告知如果面试通过要转.net-_- round1 有没有用过Java新版本,知道有哪些特性吗?A:没有。Q:我们基本在用JDK11,有的新项目用到JDK17了。参考答案1: ZGC: A Scalable Low-Latency Garbage Collector Epsi…...
【python】使用python将360个文件夹里的照片,全部复制到指定的文件夹中,并且按照顺序重新命名
最近要做一个图像生成的课题,在网上找了一个混合的数据集。这个数据集中一共有360个文件夹,然后文件夹中有6-9张不等的照片,我的目标就是编写python代码将所有的照片取出来,放到一个指定的文件夹里,并且从1开始按照顺序…...
【C语言】3天速刷C语言(初识)
【声明】本篇博客只用于对与刚学习C语言的同学的一个初始了解,具体内容请继续关注本专栏后续内容。什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及…...
如何搞定MySQL锁(全局锁、表级锁、行级锁)?这篇文章告诉你答案!太TMD详细了!!!
概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&…...
云计算生态该怎么做?阿里云计算巢打了个样
2023 年 2 月 23 日至 24 日,由阿里云主办的「阿里云计算巢加速器」于杭州阿里云谷园区集结。 阿里云计算巢加速器于 2022 年 8 月正式启动招募,最终百奥利盟、极智嘉、EMQ、KodeRover、MemVerge 等 30 家创新企业入选计算加速器,覆盖了人工智…...
小樽C++ 多章⑧ (贰) 指针与数组
目录 1.C中数组变量名某些情况可以看成是指针 2.C语言的scanf 输入语句,printf 输出语句 3.用指针来当动态数组 小樽C 多章⑧ (壹) 指针变量https://blog.csdn.net/weixin_44775255/article/details/129031168 小樽C 多章⑧ (叁) 指针与字符串、(肆) 函数与指针…...
MXNet的机器翻译实践《编码器-解码器(seq2seq)和注意力机制》
机器翻译就是将一种语言翻译成另外一种语言,输入和输出的长度都是不定长的,所以这里会主要介绍两种应用,编码器-解码器以及注意力机制。编码器是用来分析输入序列,解码器用来生成输出序列。其中在训练时,我们会使用一些…...
RK3588平台开发系列讲解(同步与互斥篇)自旋锁介绍
平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、自旋锁介绍二、自旋锁相关的函数1、普通场景2、进程上下文和下半部3、中断相关三、相关结构体四、函数实现1、初始化2、获取自旋锁沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇介绍自旋锁的使用和基…...
Linux系统CPU占用率较高问题排查思路
作为工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。对于CPU过载问题通常使用以下两种方式即可快速定位:方法一第一步&a…...
源码解析——HashMap
源码解析——HashMap1. 什么 是HashMap2. 为什么要使用HashMap3. HashMap的使用4. 源码解析4.1 关键问题4.1 存储结构4.2 HashMap 的容量和负载因子4.3 初始化过程4.3 put() 方法实现原理4.3.1 hash()4.3.2 resize()4.4 get() 方法实现原理5. 面试题总结6. ConcurrentHashmap(J…...
Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例
❤️ 博客主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:大数据核心技术从入门到精通 文章目录一、内置分词器1. Standard(标准分词器)英文示例中文示例…...
软件开发工具框图/百度推广账户优化方案
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Tell me what youre dreaming bout tonightI never want to let you goThe lips that kissed my lashes and your sleepy smileSinking into the darkest nightA breezeless flow in the afterglowYou and me together we could go…...
网站中的ppt链接怎么做的/百度网盘下载速度慢破解方法
《信用社反洗钱自查工作报告》是一篇好的范文,好的范文应该跟大家分享,为了方便大家的阅读。不知不觉中,已经开学了,为了能在新学期里有新的进步,新的发展,特做了以下的学习计划。首先,应该纠正…...
做网站的个人总结/群发软件
定义和用法:1、DATE() 函数:返回日期或日期时间表达式的日期部分;2、str_to_date()函数:按照指定日期或时间显示格式 将字符串转换为日期或日期时间类型;3、date_format()函数:按照指定日期或时间显示格式 …...
江西哪里可以做企业网站/免费刷赞网站推广免费
说到日志工具,下意识就想到log4系列,这个日志库始于log4j,后来被移植成各种流行语言的库,各种log4xxxx满天飞。最近在Linux下写C程序,需要一个日志工具,很自然想到了要找log4的c移植。放狗搜了一下…...
如何创立网站/搜狗搜索引擎入口
本文摘抄于《C嵌入式编程设计模式》 1. 头文件部分:Queue.h 1 #ifndef __QUEUE_H_2 #define __QUEUE_H_3 4 #define QUEUE_SIZE 105 6 /* class queue */7 typedef struct Queue queue;8 struct Queue9 { 10 int buffer[QUEUE_SIZE]; 11 int head; 12 …...
长春网站建设建站系统/html友情链接代码
参考链接:http://www.cnblogs.com/xianglan/archive/2011/01/01/1923779.html 主思路和程序基本上都是参考博主的,只是在思路理解上和Python3的一些小修改. 首先是算法原理介绍:图像细化: 图像细化主要是针对二值图而言࿰…...