数据库系统概论整理与总结
数据库系统概论
第一章:绪论
四个基本概念
四个概念
数据:Data
数据库:DataBase
数据库管理系统:DBMS
数据库系统:DBS
打个比喻,比如说菜鸟物流:
Data:快递
DB:物流厂库
DBMS:对应整个仓库的运作情况
DBS:对应整个物流体系 宏
数据库关系系统的功能
1、数据定义功能
2、数据组织、存储和管理
3、数据操纵功能
4、数据库的事务管理和运行管理
5、数据库的建立和维护功能
6、其他功能
数据库系统的组成
1、数据库
2、数据库管理系统
3、应用程序
4、数据库管理员
数据库系统是用来存储、管理、处理和维护数据的系统
数据
Data
数据库
DBMS
数据库管理系统
DBS
数据库系统
数据库系统的组成
1、数据库
2、数据库管理系统
3、应用程序
4、数据库管理员
数据库系统是用来存储、管理、处理和维护数据的系统
发展阶段
人工
没有共享,冗余大
数据不独立,完全依赖于程序
文件系统
文件系统阶段:
数据管理者:文件系统
数据共享差、冗余度大
数据独立性差
存在操作系统中的,
数据库阶段
数据库阶段的特点:
1、数据结构化
2、数据共享性高、冗余度低且易扩充
3、数据独立性高
数据独立性包括逻辑独立性和物理独立性
4、数据由数据库管理系统统一管理和控制
DBMS的功能
(1)数据的安全性保护
(2)数据的完整性检查
(3)并发控制
(4)数据库恢复
数据模型
数据模型分为概念模型和逻辑物理模型
逻辑模型:
1、层次模型
2、网状模型
3、关系模型
4、面向对象数据模型
5、对象关系模型
6、半结构化数据模型
数据模型的组成要素
1、数据结构
2、数据操作
3、数据的完整性约束
概念模型
参考第七章
概念模型的基本概念
- 1、实体
- 2、属性
- 3、码
- 4、实体型
- 5、实体集
- 6、联系
实体: 是指具体的人或者事物。比如一个职工、学生、部门
属性: 比如姓名、年龄
码
ER图
逻辑和物理模型
层次模型
跟树形结构类似,有双亲,根节点,兄弟节点
层次模型的优点:
1、数据结构比较清晰
2、查询效率高
层次
网状模型
类似于图的结构
优点:
1、更直接地表示现实世界
2、良好的性能,存取效率高
分支主题
重点:关系模型
在第二章详细讲解
术语
1、关系
一个关系通常来说是一张表
2、元组
表中的一行
3、属性
一列是一个属性
4、码
可以唯一确定一个元组。
比如学号 能确定学生
学号和课程 可以确定成绩
5、域
是属性的取值范围
比如说考驾照的年龄设置为18-60
6、分量
元组中的一个属性值
7、关系模式
是对关系的描述,比如
学生(学号,姓名,年龄)
关系模型的最基本要求:表中无表 P26
关系模型的完整性约束:
1、实体完整性
主码唯一且非空
2、参照完整性
外码要么为空,要么在另一个表中的主码
3、用户定义完整性
自定定义的,比如年龄在12-30岁之间
学号 | 姓名 | 所属班级号 |
---|---|---|
1 | 张三 | 2 |
2 | 李四 | |
3 | 王五 | 1 |
班级号 | 班级名 |
---|---|
1 | 计算机班 |
2 | 网络工程班 |
分支主题
面向对象
对象关系数据模型
三级模式两级映像
外模式:
也称子模式或者用户模式
一个数据库可以有多个外模式
模式:
也称逻辑模型
一个数据库只有一个模式
内模式:
也称为存储模式
一个数据库只有一个内模式
数据独立性:
包括物理独立性、逻辑独立性
两个独立性
逻辑独立性
当模式结构改变的时候,只要修改外模式/模式映像即可保持逻辑独立性
逻辑独立性
物理独立性
当内模式结构改变的时候,只需要修改模式/内模式映像就可以保持物理独立性
物理独立性
分支主题
数据库系统的组成
数据库系统的组成
1、硬件平台及数据库
2、软件
3、人员
人员包括
1、数据库管理员
2、系统分析员和数据库设计人员
硬件
软件
人员
第二章:关系数据库
域: 相同数据类型的集合
笛卡尔积: 是域上一种集合运算
关系
3、关系
候选码
主码
主属性
关系模式
关系模式:对关系的描述
那么什么是关系?
关系是一张表,一张二维表
关系有哪些需要描述? P41
1、关系中有哪些属性
2、这些属性来自哪些域
3、属性与域之间的映射关系
可以形象地表示为
R(U,D,DOM,F)
R:关系名
U:所有属性名
D:属性来自哪些域
DOM:属性和域的映射
F:属性间的依赖关系
关系数据库:
关系数据库也有关系数据库模式
关系操作
关系操作:
插入、查询、删除、修改
其中查询操作分为:选择、投影、连接、除法、并、差、交、笛卡尔积
查询操作的基本操作:选择、投影、并、差、笛卡尔积
关系语言的分类
关系数据语言包括
1、关系代数语言
2、关系演算语言
3、具有关系代数和关系演算的SQL语言
关系代数语言
在P48 有详细的介绍
四种基本运算 P49页有详细说明
- 1、并
- 2、差
- 3、交
- 4、笛卡尔积
专门的关系运算
1、选择
2、投影
3、连接
4、除法:是用来表示全体的,比如说他都包含了,就可以被留下来
悬浮元祖 P54
R和S在自然连接中,被舍弃的元组成为悬浮元组
特殊的连接
1、外连接
2、左外连接
3、右外连接
关系演算语言
在P56页有详细说明
SQL语言
SQL的特点
1、综合统一
把定义,修改,删除,连接,安全性,完整性,事务控制,动态SQL等统一起来
2、高度非过程化
不需要过程
3、面向集合的操作方式
4、以同一种语法结构提供多种使用方式
既可以独立,也可以嵌入到Java或者C++之中
5、语言简洁,易学易用
SQL的基本概念
SQL | SQL | SQL | SQL | 所属模式 |
---|---|---|---|---|
SQL | ||||
视图1 | 视图2 | 外模式 | ||
基本表1 | 基本表2 | 基本表3 | 基本表4 | 模式 |
存储文件1 | 存储文件2 | 内模式 |
外模式:视图和部分基本表
模式:若干基本表
内模式:若干存储文件
数据定义与删除
create schema<模式名> authorization <用户名>
drop schema<模式名> <cascade|restrict>
基本表的定义
create table student
(sno char(9) priamry key
foreign key(Cpno) references Course(Cno)
)
关系的完整性
实体完整性
主码唯一且非空
参照完整性
外码要么为空,要么就要对应另一个表的主码
用户定义完整性
自己定义的完整性,比如年龄在18-60岁,身高多少之类的
实体完整性
参照完整性
用户定义完整性
第三章:SQL
数据定义与删除
create schema<模式名> authorization <用户名>
drop schema<模式名> <cascade|restrict>
基本表的定义
create table student
(sno char(9) priamry key
foreign key(Cpno) references Course(Cno)
)
SQL特点
SQL包括:数据查询、数据操作、数据定义、数据控制
非过程语言
SQL的特点
1、综合统一
把定义,修改,删除,连接,安全性,完整性,事务控制,动态SQL等统一起来
2、高度非过程化
层次模型和网络模型是过程化的,关系模型是非过程化的
3、面向集合的操作方式
4、以同一种语法结构提供多种使用方式
既可以独立,也可以嵌入到Java或者C++之中
5、语言简洁,易学易用
分支主题
SQL的基本概念
外模式:视图、部分基本表
模式:若干基本表
内模式:若干存储文件
一个关系对应一张基本表
一个或多个基本表对应一个存储文件
SQL的基本概念
SQL | SQL | SQL | SQL | 所属模式 |
---|---|---|---|---|
SQL | ||||
视图1 | 视图2 | 外模式 | ||
基本表1 | 基本表2 | 基本表3 | 基本表4 | 模式 |
存储文件1 | 存储文件2 | 内模式 |
外模式:视图和部分基本表
模式:若干基本表
内模式:若干存储文件
SQL的基本语法
数据定义
数据定义包括、模式定义、表定义、视图和索引的定义
模式:create schema
表:create table
视图:create view
索引:create index
一个DBMS建立多个数据库、一个数据库建立多个模式、一个模式包含多个表、视图、索引
定义模式:create schema<模式名> authorization<用户名>
drop schema<模式名>
定义基本表:
create table student
(
Sno char(9) primary keyforeign key(cpno) references Course(Cno)
)
修改基本表
alter table<表名> add birth date
添加列名
alter table<表名> add unique(CName)
添加约束条件
删除基本表
drop table <表名>[RESTRICT|CASCADE]
建立索引
create index<索引名> on <表名>(列名)
修改索引
alter index <旧索引名> rename to <新索引名>
删除索引
drop index<索引名>
数据字典:
一组系统表
数据库中所有的定义信息
包括:关系模式定义、视图定义、完整性约束、操作权限等
数据查询
数据查询
select
全体查询
包括 exists的查询
union
intersect
数据更新
数据插入
insert into <表名> [] values()
insert into Student(....) values (....)
更新数据
update <表名> set <列名>=<表达式> [where ... ]
删除数据
delete from <表名> [where]
空置判断
IS NULL IS NOT NULL
视图
建立视图
create view <视图名> as <子查询>
with check option
行列子集视图
删除视图
drop view<视图名> [CASCADE]
视图的作用
1、视图能够简化用户操作
2、视图用多种角度看待同一数据
3、提供一定程度的数据独立性
4、提供安全保护
5、利用视图清晰地表达查询
第四章:数据库安全性
数据库安全性概述
不安全因素
1、非授权对数据库的恶意存取和破坏
2、数据库中重要的数据泄露
3、安全环境的脆弱性
自主存取控制方法
1、grant revoke
grant <权限> on table <表名> to <用户>
revoke <权限> on table <表名> from <用户>
用户、角色
创建用户
create user<username> with
数据库安全性控制
数据库安全性控制
1、用户身份鉴别
- 静态口令鉴别
- 动态口令鉴别
- 生物特征鉴别
- 智能卡鉴别
2、存取控制
3、自主存取控制方法
4、授权:授予与收回
grant select on table Student
to U1
grant All privileges
on table Student,Course
To U2,U3
grant select on table sc
to public
5、数据库角色
角色指的是一类人,比如说教师,学生,家长。可以给一类人授权
6、强制存取控制方法
视图机制
为不同的用户定义不同的视图,把不需要的数据给隐藏起来,这样用户就不会进行误操作
create view CS_Student
asselect *from studentwhere sdept='IS'
grant select
on CS_Student
to 王平
grant all privileges
on CS_Student
to 王平
审计
审计
把对数据库的所有操作都记录到审计日志中,然后就可以通过日志审查这个里面是否有一些非法的行为
数据加密
通过一些加密算法,把明文变成密文,这样别人就无法查看
第五章:数据库完整性
正确性、相容性
正确性:符合现实世界语义
相容性:同一对象在不同表中的数据符合逻辑的
为维护完整性,需要实现如下功能
1、提供定义完整性约束条件的机制
2、提供完整性检查的方法
3、进行违约处理
三大完整性
实体完整性
主码唯一且非空
参照完整性
外码要么为空,要么对应另外一张表的主码
用户定义完整性
属性上约束条件的定义
1、非空 NOT NULL
2、列值唯一 UNIQUE
3、满足某一条件表达式 check
创建的时候用check进行约束
create table Student
(Sno char(9),Sname Char(8) NOT NULL,Ssex char(2),check(Ssex='女' Or Sname Not Like '张%' )
)
用constraint进行完整性约束
constraint C1 check(Sno between 9000 and 10000)
constraint c1 not null
constraint c1 primary key(Sno)
删除完整性
drop constraint C4
alter table student add constraint c3 check (sage<40)
断言
创建断言
create assertion <断言名><check 子句>
数据库中最多60名学生选修
create assertion 断言名
check(60 >= select count(*) from 。。。
)
只有符合check()里面的表示式才可以执行成功,否则就会执行失败
删除断言的语句格式
drop assertion <断言名>
触发器
触发器:用户定义在关系表上的一类由事件驱动的特殊过程
由某个触发事件引发的事务
建立触发器
create trigger<触发器名>
{BEFORE|AFTER} <触发事件> on<表名>
Referencing new|old row as <变量>
for each {row|statement}
[when <触发条件>] <触发动作体>
触发器不能定义在视图上
触发器类型:
1、行级触发器 for each row
2、语句触发器 for each statement
如果有一条语句涉及100行,则行级执行100次,语句执行1次
例子:
create trigger SC_Tafter update of Grade on SCreferencingOLDROW as OldTupleNEWROW as NewTupleFOR EACH ROWWHEN(NewTuple.Grade>=1.1*OldTuple.Grade)insert into SCvalues(OldTuple.sno....)
删除触发器
drop trigger <触发器名> on <表名>
第六章:关系数据理论
存在的问题
关系模式存在以下问题
1、数据冗余
比如姓名重复出现,浪费空间
2、更新异常
更新后造成数据不一致,比如班主任换名字,每个学生对应的每行都得换
3、插入异常
应该插入的无法被插入
比如系刚成立,无法插入数据
4、删除异常
不该删除的被删除
比如学生毕业,老师也没了
规范化-几个范式
函数依赖
1、平凡函数依赖
2、非平凡函数依赖
完全函数依赖
部分函数依赖
码
候选码
超码:超码是最小的候选码
从候选码中选一个为主码
主属性:包含在任意一个候选码中
全码:整个属性都是码
如果确定主属性?
如何选出候选码
范式
1NF
表中无表
2NF
不包含非主属性对码的部分函数依赖
3NF
不包含非主属性对码的传递函数依赖
BCNF
不包含主属性对码的部分和传递函数依赖
数据依赖的公理系统
ArmStrong公理系统
1、自反律
大推出小
2、增广律
X-> Y 那么 XZ->YZ
3、传递律
X->Y Y->Z 那么X->Z
三条有用的推理规则
1、合并规则
X->Y Y->Z 那么X->YZ
2、伪传递规则
X->Y WY->Z 那么XW->Z
3、分解规则
X->Y Z∈Y 那么X->Z
Armstrong 是有效的、完备的
最小依赖集或者最小覆盖
P193有求解过程
最小依赖的求解的步骤
1、把右边写成单个字母
2、把重复的去掉
3、一个一个筛选,假如把当前依赖去掉,如果能推出,就可以去掉。否则就不能去掉
4、最后对左边再进行筛选
模式分解
评价标准
1、无损连接
判断无损连接:chase过程
2、保持函数依赖
分解过后:连接的时候依赖没有丢失
分解保持函数依赖、总可以达到3NF、不一定达到BCNF
分解保持既可以保持函数依赖、又无损连接、可以达到3NF、不一定达到BCNF
具有无损连接、一定可以达到4NF
模式分解的算法P198
书中很晦涩难懂,建议百度
1、求出最小函数依赖集
2、把每一个依赖作为一个表
3、若都没有包含候选码,则再添加任意一个候选码
4、把没出现F中的属性也分到一个表中
第七章:数据库设计
数据库设计的基本步骤
####### 数据库设计的基本步骤
1、需求分析
2、概念结构设计
ER图、数据字典
3、逻辑结构设计
把ER图转换成逻辑模型
4、物理结构设计
逻辑模型转换为物理模型
5、数据库实施
写SQL代码
6、数据库运行和维护
性能检测、转储、恢复
数据字典包括
1、数据项
2、数据结构
3、数据流
4、数据存储
5、处理过程
需求分析
概念设计
ER图的画法
联系:1、一对一 一对多 多对多
矩形表示实体
椭圆表示属性
菱形表示联系
一对一转为主码
一对多转为外码
多对多转为一张表
ER图之间的冲突
1、属性冲突
2、命名冲突
3、结构冲突
逻辑结构设计
E-R图向关系模型转换
1:1 一个独立的关系模型
1:N 外码
M:N 一张表
物理结构设计
确定数据库的物理结构
对物理结构进行评价
设计关系模式的存取方法
数据库的实施和维护
第八章:数据库编程
嵌入式SQL
SQL语句,写到其他编程Java,C++
嵌入式SQL处理过程
1、预编译转化为函数调用
2、主语言再编译
3、变成主语言所编译的内容
嵌入式SQL与主语言之间的通信
1、SQL给主语言传递状态
2、主语言给SQL提供参数
3、SQL把查询结果交给主语言处理,通常用主变量和游标实现
主变量
SQL使用主语言的变量
主变量前面加冒号 比如 :name
游标
一个缓冲区,存放SQL的执行结果
select * from student where id =1
不使用游标的SQL语句
1、说明性语句、数据定义语句、数据控制语句、查询结果为单记录
EXEC SQL
Select Sno,Sname into :Hsno,:HName From Student Where ...
使用游标的SQL
打开游标
EXEC SQL OPEN <游标名>
推进游标
EXEC SQL FETCH<游标名> INTO <主变量>
关闭游标
EXEC SQL CLOSE <游标名>
动态SQL
执行的时候才确定SQL子句,使用动态SQL
过程SQL
过程化SQL程序的基本结构是块
块的基本结构
定义部分:1、DECLARE 2、变量、常量、游标、异常
执行部分:1、BEGIN SQL语句、过程化SQL的流程控制语句2、EXCEPTION异常处理部分3、END
变量和常量的定义
1、变量定义
变量名 数据类型[[NOT NULL] 初值表达式]
2、常量的定义
常量名 数据类型 constant:=常量表达式
3、赋值语句
变量名:=表达式
控制流程
1、条件控制
IF condition THEN...END IF
IF condition THEN...
ELSE...
END IF
2、循环
LOOP ...
END LOOP
WHILE condition LOOP...
END LOOP
FOR count IN [REVERSE] boud...
LOOP...
END LOOP
存储过程
创建存储过程
create or replace resource 过程名([参数1,参数2])
as <过程化SQL>
create or replace procedure 名字(a INT,b Int)
AS DECLAREc INT /*定义参数*/
BEGIN/*执行过程SQL语句*/IF condition THENEND IF
END
执行SQL语句
CALL PROCEDURE 名字(...)
修改存储过程
alter procedure 过程名1 rename to 过程名2
删除存储过程
drop procedure 过程名()
函数
创建函数
create or replace function 函数名(参数...) return <类型>
AS <过程化SQL块>
执行函数
CALL\SELECT 函数(参数...)
修改函数
alter function 函数名1 rename to 函数名2
ODBC编程
第九章:关系查询和优化
查询处理
查询处理分为4个阶段:
1、查询分析
2、查询检查
3、查询优化
4、查询执行
查询优化包括代数优化和物理优化
代数优化就是本章讲的重点,优化树
代数优化
代数优化的规则
1、连接、笛卡尔积的交换律
2、连接、笛卡尔积的结合律
3、投影的串接定律
4、选择的串接定律
5、选择和投影操作的交换律
6、选择与笛卡尔积的交换律
7、选择与并的分配律
8、选择与差运算的分配律
9、选择对自然连接的分配律
10、投影和笛卡尔积的分配律
11、投影与并的分配律
查询树的算法P282
1、选择运算尽可能先做
2、投影运算和选择运算同时进行
3、把投影同其前或后的双目运算结合起来
物理优化
第十章:数据库恢复技术
事务
事务的四大特性:
ACID
A:原子性 actom
要么全做,要么全不做
C:一致性 consistent
一致性与原子性密切相关,要么全做要么全不做,否则就会造成数据不一致。比如说:银行汇钱,两边都有操作才行
I:隔离性isolate
一个事务的执行不能被其他事务所干扰
D:持久性 duration
数据库的改变是永久的。比如要落入磁盘
事务的种类
故障的种类:
1、事物内部故障
采取REDO重做和UNDO撤销技术
2、系统故障 DBMS
系统突然停转,系统要重启
3、介质故障
硬件损坏
4、计算机病毒
恢复技术
数据转储
对失败的事务重新执行
日志文件
记录事务对数据的更新操作的文件
恢复策略
事务故障的恢复
事务异常终止,那么就撤销之前的所有操作
系统故障的恢复
还没执行完的事务UNDO、丢失的事务REDO。
介质故障的恢复
重装数据库,重做已经完成的事务
有检查点的恢复
第十一章:并发控制
并发带来的问题和解决
并发带来的问题
1、丢失修改
我修改的东西丢失了。比如说我把票价改成11元,结果还是原来的20元
2、读脏数据
我读的数据是已经撤回的无效数据。
比如我把想把车票改成2元,发现太便宜了,撤回。结果还没来得及撤回,就被其他人读取到了。
3、不可重复读
我在一个事务中,连续两次读到的数据不一样。
比如我刚开始读到车票为9元。结果另外一个人偷偷改成了99元,我第二次读就变成了99元。
解决方法
1、排它锁:写锁
X锁
2、共享锁:读锁
S锁
封锁协议
1、一级封锁协议
修改时,必须加X锁,直到结束
2、二级封锁协议
读的时候,加S锁,用完就放
3、三级封锁协议
读的时候,加S锁,直到结束
一级锁协议:解决丢失修改
二级锁协议:解决读脏数据
三级锁协议:解决不可重复度
分支主题
活锁和死锁
活锁:
该锁永远等待,得不到机会上锁
优先级的问题,你交钱了,你得到锁。穷人,没钱,
死锁:
多个锁互相等待,互相谦让,没人上锁
T1 :上锁 有A资源,等待B
T2: 上锁 有B这个资源 ,等待A
可串行性
1、可串行化调度
并发调度中的某一次结果与串行调度一致,称为可串行化
A B C
A
B
C
可串行化是事务正确调度的准则
两段锁协议:
封锁的粒度
封锁粒度大,并发度小,开销小
有一个坏人,不知道这个人是谁,把整个班都给封了。
封锁粒度小,并发度大,开销大
相关文章:

数据库系统概论整理与总结
数据库系统概论 第一章:绪论 四个基本概念 四个概念 数据:Data 数据库:DataBase 数据库管理系统:DBMS 数据库系统:DBS 打个比喻,比如说菜鸟物流: Data:快递 DB:物流厂库 DBMS:对…...

打通新势力NAS权限壁垒,绿联私有云安装Portainer,实现更强大的Docker功能
打通新势力NAS权限壁垒,绿联私有云安装Portainer,实现更强大的Docker功能 对于国产新势力NAS来说,因为安全问题并没有完全开放SSH权限,所以还不能和传统NAS那样直接通过Docker run命令来部署容器,同时,对于…...

前端基础自学整理|DOM树
DOM,文档对象模型(Document Object Model),简单的说,DOM是一种理念,一种思想,一个与系统平台和编程语言无关的接口,一种方法, 使 Web开发人员可以访问HTML元素!不是具体方…...

RedisDesktopManager无法远程连接到Linux虚拟机中Redis的docker容器的一种解决方案
1.问题描述 除了RedisDesktopManager以外,使用java代码也无法连接到centos7虚拟机中的docker容器中的Redis ,按照网上其他博主的解决方案,在排除Linux防火墙问题,端口映射问题,redis.conf配置文件问题以后,…...

HarmonyOS 权限 介绍
权限说明 权限等级 根据权限对于不同等级应用有不同的开放范围,权限类型对应分为以下三种,等级依次提高。 normal权限 normal 权限允许应用访问超出默认规则外的普通系统资源。 这些系统资源的开放(包括数据和功能)对用户隐私以及…...

算法训练营day33(补),复习二叉树1
// 889. 根据前序和后序遍历构造二叉树 // 前序中左右 后序遍历左右中 func constructFromPrePost(preorder []int, postorder []int) *TreeNode { if len(preorder) 0 { return nil } root : &TreeNode{} root.Val preorder[0] //前序数组去掉root节点 preorder pre…...

k8s-权限管理
1. 身份认证 我们在目前的k8s集群环境里面,只能在master节点上执行kubectl的一些命令,在其他节点上执行就会报错 # 看一下是不是 [rootnode1 ~]# kubectl get nodes E0220 12:50:15.695133 6091 memcache.go:238] couldnt get current server API gro…...

四.QT5工具安装和环境变量的配置
1.以管理员身份运行安装包 2.登录qt账号,点击【next】 3.选中同意 4.选择安装目录,注意不能有中文和空格 5.勾选 64位 mingw。点击【next】,等待安装完成 6.配置环境变量...

为什么需要MDL锁
点击上方蓝字关注我 在数据库管理中,元数据(metadata)的保护至关重要,而MySQL中的"元数据锁"(MDL锁)就是它的守护者。 1. 什么是MDL锁MDL锁,全名Metadata Lock,是MySQL中…...

nuxt项目搭建
1.先下载nuxt脚手架 yarn create nuxt-app <项目名>,记得安装完项目,npm i,下载node包 目录介绍 components 存放组件分别是头部(包含导航)和底部 layouts 页面布局,实现一个页面整体架构规则,头…...

RocketMQ消息队列(上)
什么是RocketMQ RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。主要功能是异步解耦和流量削峰。 常见的MQ主要有:ActiveMQ、RabbitMQ、Kafka、RocketMQ 四种MQ的对比 特性Act…...

【机器学习】机器学习是什么以及有哪些应用场景
机器学习是什么以及有哪些应用场景 一、机器学习是什么二、机器学习有哪些应用场景三、如何学习机器学习 一、机器学习是什么 机器学习(Machine Learning, ML)是一种计算机科学技术,它允许计算机系统在没有明确编程的情况下通过从数据中学习…...

vue3 #跨组件通信
//爷爷组件中 import { provide , ref } from vue const money ref (100) //定义数据 provide( money , money ) //提供数据给孙子组件 const changeMoney ( m:number ) > { //定义函数 if (money) { money.value money.value - m } } provide(&quo…...

【AI绘画工具有哪些?】讲解
AI绘画工具有哪些? AI绘画工具有哪些? AI绘画工具有哪些? 截至现在,有多种AI绘画工具被广泛使用。以下是一些流行的AI画图工具和平台: 1. DeepArt - 利用神经网络将你的照片转换成类似著名画家作品的艺术作品。 2. …...

在Vue中使用TypeScript时 props指定枚举类型
推荐一款AI网站 AI写作与AI绘画智能创作平台 - 海鲸AI | 智能AI助手,可以免费领取GPT3.5无限卡 在Vue中使用TypeScript时,您可以通过定义一个枚举类型,然后在组件的props定义中使用这个枚举来指定props的类型。以下是一个如何做到这一点的例子…...

快速将excel/word表格转换为web页面(html)的方法
前言 在进行开发企业信息化建设的过程,应该有很多这样的场景,就是将现有的电子表格记录的方式转换为在数据系统中进行网页上报。也就是需要根据当前一直使用的表格制作一个上传这个表格信息的网页,如果要减少系统的使用学习成本,…...

想高薪就业鸿蒙HarmonyOS 开发岗位,到底该学习些啥?
鸿蒙是什么? 经过十多年的发展,传统移动互联网的增长红利已渐见顶。万物互联时代正在开启,应用的设备底座将从几十亿手机扩展到数百亿 IoT 设备。GSMA 预测到 2025 年,全球物联网终端连接数量将达 246 亿个,其中消费物…...

Java中的建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,用于创建复杂对象。它将对象的创建过程分离出来,使得构建过程可以独立于对象本身的表示和组成。 在Java中,建造者模式的实现通常涉及以下几个角色: Prod…...

机器学习面试:逻辑回归与朴素贝叶斯区别
逻辑回归与朴素贝叶斯区别有以下几个方面: (1)逻辑回归是判别模型,朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。 (2)朴素贝叶斯属于贝叶斯,逻辑回归是最大似然,两种概率哲学间的区别。 (3)朴素贝叶斯需要条件独立假设…...

数据结构之线性表
线性表 数据结构之线性表一、基本定义1、线性表的概念、定义,特点,线性表抽象数据类型定义2、其他 二、线性表的顺序表示与实现1、静态顺序表2、静态表 三、线性表的链式表示与实现1、单链表包含了指针的知识,是第一部分的重难点2、特点3、代…...

记录解决uniapp使用uview-plus在vue3+vite+ts项目中打包后样式不能显示问题
一、背景 从 vue2+uview1 升级到 vue3+vite+ts+uview-plus ,uview组件样式打包后不显示,升级前uview 组件是可以正常显示,升级后本地运行是可以正常显示,但是打包发布成H5后uview的组件无法正常显示,其他uniapp自己的组件可以正常显示。折腾了很久,这里记录下我是如何解决…...

三年功能测试,测试工作吐槽
概述 大家好,我是洋子。有很多粉丝朋友目前还是在做功能测试,日常会遇到很多繁琐,棘手的问题,今天分享一篇在testerhome社区的帖子《三年功能测试,测试工作吐槽》 原文链接https://testerhome.com/topics/38546 这篇文…...

0206-1-网络层
第 4 章 网络层 网络层提供的两种服务 虚电路服务 数据报服务 概要: 虚电路服务与数据报服务的对比 网际协议 IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议: 地址解析协议 ARP (Address Resolution Protocol)逆地…...

以 All-in-One 模式安装 KubeSphere时避坑
环境 ubuntu 18.04 准备 安装服务插件 socat 必须 可选但建议 conntrack 必须 可选但建议 ebtables 可选但建议 可选但建议 ipset 可选但建议 可选但建议 命令 sudo apt-get install socat安装docker 建议自行安装,不用KubeSphere 自带的 处理服务器配置 1…...

Android T 远程动画显示流程其二——动画的添加流程(更新中)
前言 接着上篇文章分析 Android T 远程动画显示流程其一 切入点——处理应用的显示过渡 下面,我们以从桌面点击一个应用启动的场景来分析远程动画的流程,窗口添加的流程见Android T WMS窗口相关流程 这里我们从AppTransitionController.handleAppTran…...

Pytorch-SGD算法解析
关注B站可以观看更多实战教学视频:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) SGD,即随机梯度下降(Stochastic Gradient Descent),是机器学习中用于优化目标函数的迭代方法,特别是在处…...

物联网土壤传感器简介
物联网土壤传感器简介 物联网土壤传感器的工作原理基于多种物理、化学和生物原理,通过感应器等组成部件将土壤中的特征数据转化为电信号,从而进行采集、处理和输出。这些传感器主要包括土壤湿度传感器、土壤温度传感器、土壤酸碱度传感器和土壤颗粒物传…...

MySQL索引面试题(高频)
文章目录 前言什么时候需要(不需要))使用索引?有哪些优化索引的方法前缀索引优化索引覆盖优化索引失效场景 总结 前言 今天来讲一讲 MySQL 索引的高频面试题。主要是针对前一篇文章 MySQL索引入门(一文搞定)进行查漏补…...

SouthLeetCode-打卡24年02月第2周
SouthLeetCode-打卡24年02月第2周 // Date : 2024/02/05 ~ 2024/02/11 039.有效的字母异位词 (1) 题目描述 039#LeetCode.242.简单题目链接#Monday2024/02/05 给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意࿱…...

Rust CallBack的几种写法
模拟常用的几种函数调用CallBack的写法。测试调用都放在函数t6_call_back_task中。我正在学习Rust,有不对或者欠缺的地方,欢迎交流指正 type Callback std::sync::Arc<dyn Fn() Send Sync>; type CallbackReturnVal std::sync::Arc<dyn Fn…...