数据库基础学习笔记

news2025/2/25 3:40:43

一.基础概念

数据库、数据库管理系统、SQL

主流数据库:

mysql的安装:略
mysql图形化界面的安装:略

二.数据模型

1). 关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 而所谓二维表,指的是由行和列组成的表,就类似于Excel表格数据,有表头、有列、有行, 还可以通过一列关联另外一个表格中的某一列数据。我们之前提到的MySQL、Oracle、DB2、 SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。

简单说,基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库。

2). 数据模型 MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:

我们可以通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库。
可以使用SQL语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。

三.SQL

全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准。

通用语法:【1】SQL语句可以单行或多行书写,以分号结尾
【2】不区分大小写,关键字建议使用大写
【3】注释:
单行注释:-- 注释内容 或 # 注释内容
多行注释:/* 注释内容 */

SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

1.DDL

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 。

【1】对数据库的增删查

#增
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;#创建数据库
create schema ...#创建数据库的另一种写法

#删
drop database [ if exists ] 数据库名 ;#删除数据库

#查
show databases ;#查询所有数据库
use 数据库名 ;#use 数据库名 ;
select database() ;#查询当前数据库

【2】对表的增删改查

#查
show tables;#查询当前数据库所有表
desc 表名 ;#查看指定表结构
show create table 表名 ;#查询指定表的建表语句

#增[创建表]
CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;
#注意: [...] 内为可选参数,最后一个字段后面没有逗号

#改
ALTER TABLE 表名 RENAME TO 新表名;##修改表名

#删
DROP TABLE [ IF EXISTS ] 表名;#删除表;注意: 在删除表的时候,表中的全部数据也都会被删除。
TRUNCATE TABLE 表名;#删除指定表, 并重新创建表

【3】对字段的增删改查

##对字段名的增
ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];#添加字段

#改
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);#修改数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];#修改字段名和字段类型

#删
ALTER TABLE 表名 DROP 字段名;#删除字段

数据类型:数值类型,字符串类型,日期时间类型

1.数值类型

2.字符串类型

3.日期时间类型

2.DML--对表中数据的增删改

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。
添加数据(INSERT) 修改数据(UPDATE) 删除数据(DELETE)

#增
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, ...) ;#批量添加数据

/*
注:字符串和日期型数据应该包含在引号中。插入的数据类型和大小要符合字段规定。
*/

#删
DELETE FROM 表名 [ WHERE 条件 ] ;

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

3.DQL--对表中数据的查询

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。

查询关键字: SELECT

1.基本语法

SELECT
    字段列表
FROM
    表名列表
WHERE
    条件列表
GROUP BY
    分组字段列表
HAVING
    分组后条件列表
ORDER BY
    排序字段列表
LIMIT
    分页参数

2.语法

#基本查询
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;#查询多个字段
SELECT * FROM 表名 ;#查询所有专业,开发中尽量少用,因为无法做到覆盖索引,影响效率
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;#字段设置别名
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;#字段设置别名
SELECT DISTINCT 字段列表 FROM 表名;#去除重复记录

#条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

#聚合函数查询
SELECT 聚合函数(字段列表) FROM 表名 ;
/*
注意 : NULL值是不参与所有聚合函数运算的。
*/

#分组查询[分为不同组进行查询]
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];
/*
where与having区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组
之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
注意事项:
• 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
• 执行顺序: where > 聚合函数 > having 。
• 支持多字段分组, 具体语法为 : group by columnA,columnB
*/

#排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
/*
排序方式
ASC : 升序(默认值)
DESC: 降序
注意事项:
• 如果是升序, 可以不指定排序方式ASC ;
• 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;
*/

#分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
/*
注意事项:
• 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
• 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
• 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
*/

运算符大全:

3.执行顺序

4.DCL--对用户和用户访问权限的增删改查

【1】对用户的增删改查

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

#删除用户
DROP USER '用户名'@'主机名' ;

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

#查询用户
select * from mysql.user;

/*
注意事项:
• 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
• 主机名可以使用 % 通配。
• 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。
*/

【2】对用户权限的增删查

MySQL中定义了很多种权限,但是常用的就以下几种:

#查询权限
SHOW GRANTS FOR '用户名'@'主机名' ;
#授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
#撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
/*
注意事项:
• 多个权限之间,使用逗号分隔
• 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。
*/

四.函数

MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数【处理字符串,数值,日期】
流程函数【一些判断功能】。

五.约束--规定表中字段的规则

1.概述

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的:保证数据库中数据的正确、有效性和完整性。

分类:

2.外键约束

其中主要讲讲外键约束。

外键:用来让两张表的数据之间建立连接,形成关系。可以想象成指针,由一张表指向另一张表。

但是目前上述两张表,只是在逻辑上存在这样一层关系;在数据库层面,并未建立外键关联。所以需要外键约束来在数据库层面建立外键。
并且我们还可以增加外键规则来保证数据的一致性和完整性的。

外键的增加和删除语句:

#增加外键
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名)
REFERENCES 主表 (主表列名) ;
例:alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references
dept(id);

#删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
例:alter table emp drop foreign key fk_emp_dept_id;

规定删除和更新的数据一致性:

具体语法:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES
主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;
例:
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;

六.多表联查

1.关系型数据库的三种关系

因为是关系型数据库,表和表之间通过外键连接存在关系,可以分为3种。

【1】一对多
案例: 部门 与 员工的关系
关系: 一个部门对应多个员工,一个员工对应一个部门
实现: 在多的一方建立外键,指向一的一方的主键
【2】多对多
案例: 学生 与 课程的关系
关系: 一个学生可以选修多门课程,一门课程也可以供多个学生选择
实现: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
【3】一对一
案例: 用户 与 用户详情的关系
关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另 一张表中,以提升操作效率
实现: 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

2.多表查询概述

多表查询就是指从多张表中查询关联行的数据。

连接查询分类
内连接:相当于查询A、B交集部分数据
外连接:
        左外连接:查询左表所有数据,以及两张表交集部分数据
        右外连接:查询右表所有数据,以及两张表交集部分数据
        自连接:当前表与自身的连接查询,自连接必须使用表别名

3.内连接

内连接的语法分为两种: 隐式内连接、显式内连接。先来学习一下具体的语法结构。

SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 ... ;#隐式内连接
例:select emp.name , dept.name from emp , dept where emp.dept_id = dept.id ;
-- 为每一张表起别名,简化SQL编写
select e.name,d.name from emp e , dept d where e.dept_id = d.id;

SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ... ;#显式内连接
例:select e.name, d.name from emp e inner join dept d on e.dept_id = d.id;
-- 为每一张表起别名,简化SQL编写
select e.name, d.name from emp e join dept d on e.dept_id = d.id;

4.外连接

 外连接分为两种,分别是:左外连接 和 右外连接。具体的语法结构为:

SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;#左外连接
例:select e.*, d.name from emp e left outer join dept d on e.dept_id = d.id;

SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ;#右外连接
例:select d.*, e.* from emp e right outer join dept d on e.dept_id = d.id;

注意事项: 左外连接和右外连接是可以相互替换的,只需要调整在连接查询时SQL中,表结构的先后顺 序就可以了。而我们在日常开发使用时,更偏向于左外连接。

5.自连接

自连接查询,顾名思义,就是自己连接自己,也就是把一张表连接查询多次。我们先来学习一下自连接 的查询语法:

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ... ;
例:select a.name , b.name from emp a , emp b where a.managerid = b.id;

注意事项: 在自连接查询中,必须要为表起别名,要不然我们不清楚所指定的条件、返回的字段,到底 是哪一张表的字段。 

6.联合查询

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

SELECT 字段列表 FROM 表A ...
UNION [ ALL ]
SELECT 字段列表 FROM 表B ....;
例:
select * from emp where salary < 5000
union all
select * from emp where age > 50;

 对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。 union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重。                          

七.子查询

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );

例:
select * from emp where entrydate > (select entrydate from emp where name = '方东白');
select * from emp where dept_id in (select id from dept where name = '销售部' or name = '市场部');

子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT 的任何一个。

根据子查询结果不同,分为:
A. 标量子查询(子查询结果为单个值)
B. 列子查询(子查询结果为一列)
C. 行子查询(子查询结果为一行)
D. 表子查询(子查询结果为多行多列)
根据子查询位置,分为: A. WHERE之后 B. FROM之后 C. SELECT之后

八.事务

1.概述

事务简单说将一串操作看成一个整体,只有当这串操作全部做对时才成功,只有有一个环节出错就失败。这一串操作就是事务。

比如张三给李四转账100块这件事有三个步骤,
查询张三余额,张三自己账户先扣一百块,然后李四账户获得一百块。
如果张三扣款成功,但李四获得一百块失败,那么不是转账失败,凭空损失了100块?或者张三扣款失败,但李四获得一百块成功,那张三不是凭空赚了100块?
然后我们将这两个事情打包,规定有一件事情做错就代表失败并回滚到最初的状态,就保证了数据的一致性,解决了上面的问题。

注意: 默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐 式的提交事务。简单说其实一条DML也有事务。

2.案例

-- 开启事务
start transaction
-- 1. 查询张三余额
select * from account where name = '张三';
-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';
-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';
-- 如果正常执行完毕, 则提交事务
commit;
-- 如果执行过程中报错, 则回滚事务
-- rollback;

3.事务四大特性【ACID】

原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
上述就是事务的四大特性,简称ACID。

4.事务并发问题

(1)赃读:一个事务读到另外一个事务还没有提交但暂时发生更改的数据。

假设有一个银行转账系统,事务 A 正在执行转账操作,它读取了账户 A 的余额,此时事务 B 修改了账户 A 的余额但还未提交。如果事务 A 提交之前再次读取账户 A 的余额,它将读取到一个“脏”的余额,即未提交的修改。

(2)不可重复读:一个事务先后查询同一条记录,在读取的过程中另一个事务更新记录,导致两次查询得到数据不同,称之为不可重复读。

例如一个在线商城的库存管理系统,事务 A 查询某个商品的库存数量,得到结果为 10。与此同时,事务 B 更新了该商品的库存数量为 5,并提交了更改。如果事务 A 再次查询同一个商品的库存数量,它将得到不一致的结果,即 10 和 5。

(3)幻读:一个事务先后查询同一条记录,刚开始没有查询到对应的数据行,但是另一个事务在这过程中插入数据,然后再次查询,又发现这行数据已经存在,好像出现了 "幻影"。

假设有一个图书馆管理系统,事务 A 在某个时间段内对图书馆的所有图书进行借阅操作。与此同时,事务 B 向系统添加了新的图书记录。如果事务 A 在这个时间段内再次查询图书馆的所有图书,它将发现出现了新的图书记录,这些记录在第一次查询时是不存在的,产生了幻觉般的新增数据。

比较:脏读是读到另外一个事务还没有提交但暂时发生更改的数据。不可重复读和幻读是查询两次,但是查询中间另一个事务在操作数据导致前后查询结果不一致,区别在于另一个事务的操作是更新还是插入。

(4)解决方案:事务隔离级别

SELECT @@TRANSACTION_ISOLATION;#查看事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }#设置事务隔离级别

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

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

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

相关文章

【python】Fraction类详解及生成分数四则运算“试卷”

文章目录 一、前言实验所需的库终端指令Fraction类1. Fraction(numerator, denominator)&#xff1a;2. Fraction(numerator)3. Fraction()4. 分数作参数5. 负分数作参数6. 字符串作参数7. 小数作参数8. 科学计数法9. 浮点数作参数10. 浮点数精度问题11. Decimal对象作参数 二、…

代码随想录刷题笔记 DAY 23 | 修剪二叉搜索树 No.669 | 将有序数组转换为二叉搜索树 No.108 | 把二叉搜索树转换为累加树 No.538

文章目录 Day 2301. 修剪二叉搜索树&#xff08;No. 669&#xff09;1.1 题目1.2 笔记1.3 代码 02. 将有序数组转换为二叉搜索树&#xff08;No. 108&#xff09;2.1 题目2.2 笔记2.3 代码 03. 把二叉搜索树转换为累加树&#xff08;No. 538&#xff09;3.1 题目3.2 笔记3.3 代…

EasyCaptcha,开源图形验证码新标杆!

引言&#xff1a; 随着互联网的普及&#xff0c;验证码已成为网站和应用程序中不可或缺的安全组件。它能够有效地防止自动化攻击、垃圾邮件和机器人活动。在众多验证码解决方案中&#xff0c;Easy-captcha以其简单易用和高度可定制的特点受到了开发者的青睐。本文将指导读者如…

LeetCode:69.x的平方根

嗨嗨嗨&#xff0c;二分又来了&#xff0c;淦它&#xff0c; 这个题官解是&#xff0c;C函数法&#xff0c;二分&#xff0c;和牛顿迭代法&#xff08;暂且搁置&#xff09;&#xff0c; 当然还有暴力&#xff08;不必讨论&#xff0c;就从0开始一个一个试&#xff09;&#…

Ubuntu Desktop - scrolling (Terminal 缓存更多终端历史输出内容)

Ubuntu Desktop - scrolling [Terminal 缓存更多终端历史输出内容] 1. ubuntu-14.04.5-desktop-amd64.iso2. ubuntu-16.04.3-desktop-amd64.isoReferences Terminal -> 右键 Profiles -> Profile Preferences 1. ubuntu-14.04.5-desktop-amd64.iso 2. ubuntu-16.04.3-de…

IM聊天系统为什么需要做消息幂等?如何使用Redis以及Lua脚本做消息幂等【第12期】

0前言 消息收发模型 第一张图是一个时序图&#xff0c;第二张图是一个标清楚步骤的流程图&#xff0c;更加清晰。消息的插入环节主要在2步。save部分。主要也是对这个部分就行消息幂等的操作。 前情提要&#xff1a;使用Redis发布 token 以及lua脚本来共同完成消息的幂等 目…

数据结构(4) 链表(链式存储)

链表&#xff08;链式存储&#xff09; 单链表定义基本操作的实现单链表的插入按位序插入指定节点的前插指定节点的后插 单链表的删除 小结 单链表 定义 顺序表优点:可随机存取&#xff0c;存储密度高&#xff0c;缺点:要求大片连续空间&#xff0c;改变容量不方便。 单链表优…

winprop二次开发

winprop二次开发 前言工具1——整合多个天线结果用途代码实现 工具2——wallman辅助工具 前言 工作需求&#xff0c;对该软件进行简单地二次开发&#xff0c;都是一些挺简单的代码&#xff0c;单纯是为了上传之后将其从本地删除 工具1——整合多个天线结果 用途 winprop最终…

MIT-Missing Semester_Topic 3:Editors (Vim) 练习题

文章目录 练习一练习二练习三练习四练习五练习六练习七练习八 本 Topic 的 MIT 讲解网页&#xff08;练习题未给解答&#xff09; 练习一 自行完成 vimtutor。vimtutor 是 Vim 本身附带的一个入门教程&#xff0c;在 shell 中直接输入 vimtutor 便能运行。注意该教程在 8024 大…

第2讲投票系统后端架构搭建

创建项目时&#xff0c;随机选择一个&#xff0c;后面会生成配置properties文件 生成文件 maven-3.3.3 设置阿里云镜像 <?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apache Software Foundation (ASF) under one or more cont…

助力智能化农田作物除草,基于轻量级YOLOv8n开发构建农田作物场景下玉米苗、杂草检测识别分析系统

在我们前面的系列博文中&#xff0c;关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了&#xff0c;结合智能化的设备可以实现只能除草等操作&#xff0c;玉米作物场景下的杂草检测我们则少有涉及&#xff0c;这里本文的主要目的就是想要基于最新的YOLOv8下最轻量级…

【开源】JAVA+Vue.js实现高校学院网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

Kafka 入门介绍

目录 一. 前言 二. 使用场景 三. 分布式的流平台 四. Kafka 的基本术语 4.1. 主题和日志 &#xff08;Topic 和 Log&#xff09; 4.2. 分布式&#xff08;Distribution&#xff09; 4.3. 异地数据同步技术&#xff08;Geo-Replication&#xff09; 4.4. 生产者&#xf…

2.2-学成在线内容管理之课程分类查询+新增课程

文章目录 内容管理模块4 课程分类查询4.1 需求分析4.2 接口定义4.3 接口开发4.3.1 树型表查询4.3.2 开发Mapper 4.4 接口测试4.4.1 接口层代码完善4.4.2 测试接口 5 新增课程5.1 需求分析5.1.1 业务流程4.1.2 数据模型 5.2 接口定义5.3 接口开发5.3.1 保存课程基本信息5.3.2 保…

ZigBee学习——BDB

✨本博客参考了善学坊的教程&#xff0c;并总结了在实现过程中遇到的问题。 善学坊官网 文章目录 一、BDB简介二、BDB Commissioning Modes2.1 Network Steering2.2 Network Formation2.3 Finding and Binding&#xff08;F & B&#xff09;2.4 Touchlink 三、BDB Commissi…

【linux系统体验】-ubuntu简易折腾

ubuntu 一、终端美化二、桌面美化2.1 插件安装2.2 主题和图标2.3 美化配置 三、常用命令 以后看不看不重要&#xff0c;咱就是想记点儿东西。一、终端美化 安装oh my posh&#xff0c;参考链接&#xff1a;Linux 终端美化 1、安装字体 oh my posh美化工具可以使用合适的字体&a…

深入浅出CChart 每日一课——红花当然配绿叶,CChart辅助图形绘制

各位同学&#xff0c;好久不见&#xff0c;我可想死你们了&#xff01;&#xff01;&#xff01;咦&#xff0c;那位不是巩叔吗&#xff1f;不好意思&#xff0c;侵权了&#xff0c;请多担待_。 前面的课程呢&#xff0c;拓展的内容比较多&#xff0c;最近笨笨想聚焦在CChart本…

微服务多级缓存

多级缓存 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a; •请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 •Redis缓存…

Structured Streaming

目录 一、概述 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;两种处理模型 &#xff08;三&#xff09;Structured Streaming和Spark SQL、Spark Streaming关系 二、编写Structured Streaming程序的基本步骤 &#xff08;一&#xff09;实现步骤 &…