MySQL基础篇1

news2025/1/23 15:13:09

第1章 数据库介绍
1.1 数据库概述
什么是数据库?

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

数据库分两大类:

关系型数据库
非关系型NoSQL

什么是关系型数据库

数据库中的【记录是有行有列的数据库】就是关系型数据库(RDBMS, Relational DatabaseManagement System)与之相反的就是 NoSQL 数据库了。

什么是数据库管理系统?

广义数据库:泛指数据库管理系统RDBMS
狭义数据库:真正存储数据的地方
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。一个 DBMS 可以管理多个 数据库,我们建议每个项目系统,对应一个数据库,避免数据混乱。然后可以在数据库中,根据具体操作数据对象,对应创建多个表。比如,商城管理系统中,有商品表、订单表、用户表等等。

数据库与数据库管理系统的关系?
在这里插入图片描述
1.2 数据库表

数据库中以表为组织单位存储数据。表中的每个字段都有对应的数据类型。在这里插入图片描述
数据库表中,每一列数据存储的是固定的数据类型的数据;

1.3 表数据

表中的一行一行的信息我们称之为记录。根据表字段所规定的数据类型,向其中填入一条条数据。在这里插入图片描述

1.4 常见数据库管理系统

  1. MYSQL: 开源免费的数据库,小型的数据库。已经被Oracle收购了,MySQL6.x版本也开始收
    费。
  2. Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
  3. DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
  4. SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
  5. SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
  6. 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, -- 用户 id
 	uname 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, -- 用户 id
 	uname 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 intovalues (1,2,3..); 
-- 3.从另外一张表查某些列的结果插入当前表
insert into(列名1, 列名2, 列名3..) values select (列名1,列名2,列名3..) from-- 4.从另外一张表查所有列的结果插入当前表
insert intovalues 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数据库密码重置

  1. 停止mysql服务器运行输入services.msc 停止mysql服务
  2. 在cmd下,输入mysqld --console --skip-grant-tables 启动服务器,出现一下页面,不要关闭该窗口
    在这里插入图片描述
  3. 新打开cmd,输入mysql -uroot 不需要密码
  4. use mysql;
    update user set password=password(‘root’) WHERE user=‘root’;
  5. 关闭两个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

  1. 查看MySQL内部设置的编码

show variables like ‘character%’; 查看所有mysql的编码
在这里插入图片描述

  1. 需要修改client、connection、results的编码一致(GBK编码)

解决方案1:在cmd命令窗口中输入命令,此操作当前窗口有效,为临时方案。
set names gbk;

解决方案2:安装目录下修改my.ini文件,重启服务所有地方生效。 在这里插入图片描述

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

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

相关文章

多线程的Thread 类及方法

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:海压竹枝低复举,风吹山角晦还明。 目 录🌲一. 线程的复杂性🌴二. Thread 类及常见方法📕2.1 Thread 的常见构…

Dubbo的服务暴漏与服务发现源码详解

服务暴漏 如果配置需要刷新则根据配置优先级刷新服务配置 如果服务已经导出,则直接返回 是否异步导出(全局或者服务级别配置了异步,则需要异步导出服务) 服务暴漏入口DefaultModuleDeployer#exportServices private void exp…

Redis缓存穿透

缓存穿透: 缓存穿透说简单点就是⼤量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上, 根本没有经过缓存这⼀层。举个例⼦:某个⿊客故意制造我们缓存中不存在的 key 发起⼤量 请求,导致⼤量请求落到数据库。…

http笔记

文章目录1、什么是http?2、http报文格式3、请求报文1、认识URL2、认识http方法3、认识header4、响应报文5、https加密机制1、什么是http? http是应用层最广泛使用的协议之一;其中浏览器获取到网页就是基于http实现的;http就是浏览…

Caddy2学习笔记——Caddy2反向代理docker版本的DERP中继服务器

一、个人环境概述 本人拥有一个国内云服务商的云主机和一个备案好的域名,通过caddy2来作为web服务器。我的云主机系统是Ubuntu。 我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com。后面的文章…

【量化交易笔记】3.实现数据库保存数据

上一节,我们通过下载相关的 pandas 数据保存为 本地csv文件,这一节将上节的数据以数据库方式保存。 数据库保存 采集数据部分前一节已做说明,这里就直接用采用前面的内容。这里着重说明的事数据库连接。对与 python 相连接的数据库有很多&a…

玩转Python的交互(命令行)模式

我喜欢使用Python的交互界面(命令行模式)来运行和调试Python代码。为什么不用PyCharm、VSCode?因为先入为主,加上我的DOS命令行的情结,我第一次安装使用Python就是用这种黑白界面的,平时写代码惯用EmEditor…

MySQL慢查询

2 慢查询 2.1 慢查询介绍 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL&…

软件测试之快速熟悉项目

快速熟悉项目 1、了解项目架构 C/S架构 C/S 代表的是客户端/服务器(client/server),这类软件的使用者需要在本地电脑安装客户端程序,例如:QQ。 优点:安全性高。 缺点:一旦软件有更新,用户需要手动下载&am…

Rust 开发系列PyO3:Rust与Python的联动编程(中)

第三节:对比C语言的Python原生扩展开发模式 C/c编写Python扩展的方法,与Rust大致是相同的,如果不论语言本身的语法带来的繁琐的话,就单纯以开发步骤和模式来看,原生语言写扩展的步骤更为标准和简单。 大致来说&#…

QT入门Item Views之QTreeView

目录 一、QTreeView界面相关 1、布局介绍 二、基本属性功能 1、设置单元格不能编辑 2、一次选中一个item 3、去掉鼠标移动到单元格上的虚线框 4、最后一列自适应 三、代码展示 1、创建模型,导入模型 2、 右键菜单栏 3、双…

深度学习模型训练工作汇报(3.8)

进行数据的初始整理的准备 主要是进行伪序列字典的设置,以及训练数据集的准备。 期间需要的一些问题包括在读取文件信息的时候,需要跳过文件的第一行或者前两行,如果使用循环判断的话,会多进行n次的运算,这是不划算的…

003+limou+HTML——(3)HTML列表

000、前言 列表是网页常见的一种数据排列方式,在HTMl中列表一共有三种:有序列表、无序列表、定义列表(另外“目录列表dir”和“菜单列表menu”已经在HTML5中被废除了,现在都是使用无序列表ul来替代) 001、有序列表&a…

C/C++指针与数组(一)

预备知识 1、数据的存储 2、基本内建类型 1)类型的大小 C offers a flexible standard with some guaranteed minimum sizes, which it takes from C: A short integer is at least 16 bits wide.An int integer is at least as big as short.A long integer is a…

Spring Cloud学习笔记:基础知识

这是本人学习的总结,主要学习资料如下 马士兵教育 目录1、Spring Cloud 简介2、Eureka3、建立Spring Cloud项目3.1、启动Server3.1.1、dependency3.1.2、配置文件3.1.3、Server端启动代码3.2、启动Client3.2.1、dependency3.2.2、配置文件3.3.3、Client端启动代码3…

Go之入门(特性、变量、常量、数据类型)

一、Go语言特性 语法简单并发性。Go语言引入了协程goroutine,实现了并发编程内存分配。Go语言为了解决高并发下内存的分配和管理,选择了tcmalloc进行内存分配(为了并发设计的高性能内存分配组件,使用cache为当前线程提供无锁分配…

电脑自动重启是什么原因?详细解说

案例:电脑自动重启是什么原因? “一台用了一年的电脑,最近使用,每天都会一两次莫名其妙自动重启,看了电脑错误日志,看不懂什么意思,一直找不到答案。有没有高手知道怎么解决这个问题的。” 当…

仿写简单IOC

目录 TestController类: UserService类: 核心代码SpringIOC: Autowired和Component注解 SpringIOCTest 类 ​编辑 总结: TestController类: Component public class TestController {Autowiredprivate UserService userService;public void test…

RocketMQ如何测试

RocketMQ如何测试MQ简介RocketMQRocketMQ测试点MQ简介 MQ:Message Queue,即消息队列,是一种应用程序之间的消息通信,简单理解就是A服务不断的往队列里发布信息,另一服务B从队列中读取消息并执行处理,消息发…

同步、异步ETL架构的比较

背景介绍: 数据的抽取,转换和加载 (ETL, Extract, Transform, Load) 是构建数据仓库过程中最复杂也是至 关重要的一个步骤,我们通常用两种办法来处理 ETL 流程: 一种是异步(Asynchronous) ETL 方式, 也称为文本文件(Flat file)方式。 另外…