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

数据库系统概念

1. 绪论 

数据库的基本概念:

        数据(data): 数据库中存储的基本对象, 可以是文字, 声音, 图片, 视频等。

        数据库(DB): 概括来说就是永久存储, 有组织, 可共享的大量数据的集合。

        数据库管理系统(DBMS): 和操作系统一样是计算机基础软件, 主要有数据定义语言(DDL, 对数据对象的组成与结构进行定义)和数据操作语言(DML, 增删改查)等

        数据库系统(DBS):  由数据库, 数据库管理系统(及其应用开发工具), 应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。

引入数据库后计算机系统的层次结构:

1.1 数据模型

        两类数据模型: 1) 概念模型 2) 逻辑模型+物理模型

        数据模型=数据结构+ 数据操作+数据的完整性约束条件

客观对象的抽象过程:

概念模型: 

        1) 实体: 客观存在可互相区别的事物, 如学生, 职工, 部门, 选课等。

        2) 属性: 实体所具有的某一特性, 如学生的学号, 姓名, 出生年月等。

        3) 码: 唯一标识实体的属性集, 如学生的学号, 整个属性组是码, 则称为全码

        4) 实体型: 实体名及其属性名集合, 如学生(学号, 姓名, 出生年月)就是一个实体型

        5) 实体集: 同一类型实体的集合

        6) 联系: 实体之间的联系, 如一对一, 一对多, 多对多。

逻辑模型:

1) 层次模型

        优点: 数据结构清晰简单, 查询效率优

        缺点: 多对多联系表示不自然, 对插入和删除限制多 

2) 网状模型

        优点:  具有良好性能

        缺点: 结构比价复杂

3) 关系模型

4) 面向对象数据模型

5) 对象关系数据模型

6) 半结构化数据模型

相关概念:  

        关系: 一个关系对应一张表

        元组: 表中的一行为一个元组

        属性: 表中的一列即为一个属性

        码: 可以唯一确定一个元组

        域: 属性的取值范围, 如 {男, 女}

        分量: 元组中的一个属性值

        关系模式: 关系名(属性1, 属性2, ... , 属性n)

        备注: 关系必须是规范化的, 每一个分量是一个不可分的数据项, 即不允许表中表。

数据库系统结构

        模式: 逻辑模式, 数据库中全体数据的逻辑结构和特征的描述, 是所有用户的公共数据视图。

        外模式: 称子模式或用户模式, 是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。

        内模式: 存储模式, 数据物理结构和存储方式的描述。

1.2 数据库系统模式

数据库系统的三级模式结构:

数据库的二级映像: 

        1) 外模式/模式映像: 模式改变时, 可使外模式不变, 保证数据与程序的逻辑独立性

        2) 模式/内模式映像: 数据库的结构改变时, 可使模式保持不变, 保证数据与程序的物理独立性

 2 关系数据库

        笛卡尔积: 域上的一种运算。

例图:

        备注: 其中(刘逸, 计算机专业, 刘晨) 是元组(记录), 刘逸是分量。R(A1,A2 ...An), 即关系名(属性1, 属性2 ... 属性n) 称为关系模型

2.1 关系操作

关系的完整性: 

        实体完整性: 关系R中主属性不能取空值, 如学生(学号, 姓名, 年龄), 学号为主码不能是空值。

        参照完整性: 外码取空值或取对应关系表中某个元组的值

        用户定义的完整性: 如成绩只能取 0~100

关系代数运算符表:

示例表: 

2.1.1 选择

2.1.2 投影

        备注: 去重

2.1.3 连接

        备注: 自然连接是两个关系的相同属性上的等值连接。结果中把重复的属性去掉, 而等值连接不必。

2.1.4 除

2.2 数据库标准语言SQL

SQL的基本概念:

        视图: 数据库中只存放视图定义而不存放视图对应数据, 因此是一个虚表

2.2.1 SQL理论

数值类型:

        bit[(m)]      m制定位数,默认为1                tinyint           1字节

        smallint      2字节                                        int                4字节

        bigint         8字节                                        float(M,D)     4字节

        double(M,D)   8字节                                   decimal(M,D)  相当于java BigDecimal

        日期类型: datetime  8字节

        运算符: and, or, not

2.2.2 SQL定义

约束:

        NOT NULL: 不能为空                                                                            (用户定义的完整性)

        unque: 数据唯一                                                                                    (用户定义的完整性)

        check+逻辑语句: 检查列值是否满足条件表达式                                    (用户定义的完整性)

        default: 默认值 

        primary key auto_increment:限制列为自增主键                                   (实体完整性)

        constraint 取外键名 foreign key(子表的列名) references父表名(列名)   (参照完整性)

创建数据库:

        create database 数据库名 default charset=字符集类型

创建表:

        create table 表名(列名 类型,列名 类型)default charset=utf8

创建索引:

        create unique (创建唯一索引) index 索引名 on 表名(列名asc/desc , 列名asc/desc)

创建断言:                

        略

创建视图:

        1) create view 视图名 as select 语句 (whit check option 表示要符合创建视图时的where语句, 不符合where则不能修改视图)

        2) create or replace view 视图名 as select 语句: 存在视图名则替换。

创建触发器:

        create trigger 触发器名 before/after 增删查改关键字 on 表名 for each row 触发器事件

创建存储过程:

        delimiter 符号:自定义结束标志符

        create procedure 存储过程名 (in/out/inout 参数名,参数类型)

        begin

        …过程体…

        end (自定义结束符)

存储的调用: 

        call 存储过程名();

创建函数: 只能用于查询

        create function 函数名(参数 参数类型)

        returns +返回值类型

        begin

        ……函数体

        return(xxx)

        end (自定义结束符)

函数的调用:

        select 函数名()

声明游标:

        declare 游标名 cursor is +select语句

打开游标:

        open 游标名

使用游标:

        fetch 游标名into 变量1,变量2,…………

关闭游标:

        close 游标名

创建会话变量:

        set @变量名:=变量值

创建局部变量:

        declare 变量名 变量类型 default 变量值   

创建用户:

        Create user ‘用户名’  identified by ‘密码’

多行插入:

        insert into 表名 values(列的值),(列的值)

插入部分列数据:

        insert into 表名 (列名) values(列的值)

新增查询的数据(列要对应):

        insert into 表名 select 列名,列名 from 表名;

2.2.3 SQL 删除

删除数据库:

        drop database 数据库名

删除表:

        drop table 表名

删除数据:

        delete from 表名 where

        truncate table 表名:清空表

删除表索引:

        drop index 索引名 on 表名

2.2.4 SQL查询

显示所有数据库:

        show databases

查看表结构:

        show create table 表名;

查看表(所有表名)

        show tables;

查看表的列结构:

        desc(describe) 表名;

查看表内容:

        1) 查看全列:select * from 表名;

        2) 查看某列并设别名:select 列名,列名 as 别名 from 表名 as 别名;

        3) 查看某列(含去重):select distinct 列名 from 表名;

        4) 排序查看:select 列名 from表名 order by 列名 asc(默认升序)/desc(降序)

        5) 筛选查看:select 列名 from 表名 where 条件( NULL=NULL结果是NULL 为假 )

where条件: 

模糊匹配like:

        1) %: 匹配任意多个(包括 0 个)字符

        2) _ :  匹配严格的一个任意字符

正则表达式示例:

   select * from users where mail regexp  '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';

        ^:这个符号表示字符串的开始。

        [a-zA-Z]:匹配任何单个字母,无论大小写。

        [a-zA-Z0-9_.-]*:匹配任何数量(包括零个)的字母,数字,下划线,点或破折号。星号表示前面的字符可以出现任意次数。

        \@leetcode\.com: \用于转义特殊字符@和.,使它们被视为普通字符而不是正则表达式的特殊符号。

        $:这个符号表示字符串的结束。

分页查询limit:

        select xxx from 表名 [where ...] [order by ...] limit n offset s; ( s 始,选 n 条, 起始下标为0 ) 

聚合查询(行查询):

函数:

        1) count(*): 对某列的查询,返回行数,为null的不记录当中

        2) sum(列): 对数字进行累加求和

        3) avg(): 求平均数

        4) round(x,2): 对x精确到小数点后两位

        5) min(): 最小值

        6) max(): 最大值

        7) DATEDIFF(end_date, start_date) BETWEEN 0 AND 29 : 用于计算两个日期之间的差距

        8) DATE_FORMAT(order_date,'%Y%m') = '202002': 用于筛选为2020-02开头的日期

        9) ifNull(xx, 默认值): xx为空则取默认值

分组操作:

        1)select 列名,max(列名) from 表名 group by 列名(分组依据);

        2)group by 列名:根据列名,将相同的值进行分组

筛选条件:

        having 条件:分组之后进行的条件筛选(where是在分组前筛选)

        备注: 分组查询后, 某列可能有多个不同值, 但查询显示只显示一个值

比如:

id           p_id            date

1              1                2018

2              2               2018

3              1                2017

        用select * from x group by p_id 后, date只能显示一个值了

笛卡尔查询:

        select * from 表1,表2;

多表查询:

        select * from 表1,表2 where 表名.列名=表名.列名;

外连接:

        select * from 表1 left/right join 表2 on 条件

自链接:

        select * from 表1 as 别名,表1 as 别名; 

        说明: 对自己笛卡尔积后,将行问题变列问题

子查询:

         略

集合查询:

        1) union :去重

        2) union all:不去重

        4) intersect: 交集

        5) minus: 差集

查看用户权限:

        Show grants

2.2.5 SQL修改

修改列数据:

        update 表名 set列名=值,列名=值 where 条件

alter修改表结构:

添加列:

        alter table 表名 add 列名 类型

添加索引:

        alter table 表名 add (fulltext)index 索引名(列名)

删除列:

        alter table 表名 drop 列名

改变列的类型:

        1)alter table 表名 modify 列名 类型 after 列名(可以after到某个列名后面)

        2)alter table 表名 change 旧列名 新列名 类型

改变列的名字:

        alter table 表名 change 就列名 新列名

改变表的名字:

        alter table 旧表名 rename 新表名

删除约束:

        alter table 表名drop 约束名 外键名

改变表的字符集:

        alter table 表名 character set utf8;

更改数据库密码:

        Set password=’新密码’

更改其他用户密码:

        1)Alter user ‘用户名’@’主机名(或者%)’ identified by ‘新密码’

        2)Revoke 权限 on 数据库.表名 from 用户

2.2.7 SQL 常用函数

        Year();   month();    now();    day(); 

        char_length(列名): 计算字符长度

        substr(string,start,length): string是字符串, start是起始截取位置(从0开始), length是截取长度

concat()函数

        举例:select concat (id, name, score) as 别名 from 表名;

group_concat()函数

        语法:group_concat( [distinct] 要连接的字段 [order by字段 asc/desc ])

case when语法:

        case 表达式

        when 值1 then 结果1的语句

        when 值2 then 结果2的语句

        ….

        end(结束)

if语法:

        if 表达式 then 执行语句

        elseif 表达式2 then 执行语句

        else 执行语句

        end if;

举例:

        SELECT id,

        SUM(CASE WHEN month='Jan' THEN revenue END) AS Jan_Revenue,

        SUM(CASE WHEN month='Feb' THEN revenue END) AS Feb_Revenue,

        FROM department

        GROUP BY id

        说明: case when 只会匹配 数据库的第一个数据,如果不是它就返回空了 sum 就可以去 数据里的每个值都匹配一次 ,返回匹配得上的值总和。

while语法:

        while 表达式 do

        循环体

        end while

2.2.6 SQL其他

        cmd登入:mysql -u root -p123456

        source + 路径:导入数据库语句;

        选中数据库:use 数据库名

        注释: --

备份单个数据库:(不能加分号)

        Mysqldump -uroot -p 数据库名>备份的路径

备份全部数据库:

        Mysqldump -uroot -p -A>备份的路径

备份部分数据库:

        Mysqldump -uroot -p –databases 数据库1 数据库2>备份的路径

备份表:

        Mysqldump -uroot -p 数据库名 表名1 表名2>备份的路径

表的导出:

        1) 先查看mysql允许的导出路径: show global variables like '%secure%'

        2) select语句 into outfile “文件路径”

赋予用户权限:

        Grant select/update/drop(或all privileges)等等 on 数据库名.表名(或*) to ‘用户名’@’主机名’

3 关系数据库理论

3.1 数据依赖

1) 函数依赖:

        解释: 学号(Sno)决定学生所在的系(Sdept), 学号, 课程号(Cno)决定成绩(Grade)。

        完全函数依赖: X→Y X的任意一个真子集X' 使得X' --/-> Y

        部分函数依赖示例:  (学号, 课程号)能决定学生信息, 但 (学号) 就可决定学生信息, (学号)是(学号, 课程号)的子集, 所以不满足完全函数依赖, 所以为部分函数依赖。

        主属性: 包含在任何一个候选码中的属性称为主属性, 反之为非主属性

2) 多值依赖: 

3.2 范式

        1NF: 每一个分量必须是不可分的数据项。

反例:

        2NF: 满足1NF基础上, 每个非主属性完全依赖于任何一个候选码。即不存在部分函数依赖。

        3NF: 在2NF的基础上, 消除了非主属性的传递依赖

        BCNF: 在3NF基础上, 消除了主属性中的部分函数依赖, 如以下例子, 其中S, J, T都为主属性。

(S,J)-->T, (S,T)-->J  T-->J 

        4NF: 解决多值依赖, 如上图的多值依赖WSC表, 将关系模式WSC(W,S,C) 分解为WS(W,S) 和WC(W,C)

规范化过程: 

3.3 闭包

        题目: 关系具有属性A,B,C,D,E,F, 函数依赖有{A->C, BC->DE, D->A, F->B}, 那么(AB)+

计算过程如下:

  1. 初始闭包:{A, B}

  2. 应用 A→C:闭包扩展为 {A, B, C}

  3. 应用 BC→DE:闭包扩展为 {A, B, C, D, E}

  4. 应用 D→A:A 已在闭包中,无需添加

  5. F→B:F 不在闭包中,无法应用

  6. 最终闭包:{A, B, C, D, E}

4. 数据库设计

数据库设计的六个阶段:

        1) 需求分析

        2) 概念结构设计

        3) 逻辑结构设计

        4) 物理结构设计

        5) 数据库实施

        6) 数据库运行和维护

各个阶段的描述:

 E-R图举例:

E-R图转化为关系模型(逻辑结构设计):

物理结构设计:

        1) B+树索引适合: 某个属性(组)经常在查询条件中出现。或经常作为最大最小值等聚合函数的参数。经常在连接操作的连接条件中出现

        2) hash索引适合: 一个关系的大小可预知且不变

        3) 聚簇存取: 提高某个属性的查询速度, 把具有相同值的元组集中存放在连续的物理块中。适合: 经常一起进行连接操作的关系操作的关系。经常出现在相等比较条件中。属性上的值重复率很高。

5. 数据库恢复技术

5.1 事务

        用户定义一个数据库操作序列, 这些操作要么全部做, 要么全不做

事务的ACID特性

        1) 原子性(Atomicity): 诸操作要么都做, 要么都不做

        2) 一致性(Consistency): 数据库只包含成功事物提交的结果, 与原子性密切相关

        3) 隔离性(Isolation): 一个事物的执行不能被其他事务干扰, 即一个事物内部操作及使用的数据对其他并发事务是隔离的, 并发执行的各个事务之间不能互相干扰

        4) 持续性(Durability): 也称永久性, 指事务一旦提交, 他对数据库中数据的改变就是永久的, 其他操作或故障对其执行结果不应该有任何影响。

数据不一致性示例:

封锁:

        1)排它锁: 写锁, T事物对数据对象加上X锁, 则只允许T读和写, 其他事务不能加任何锁

        2)共享锁: 读锁, T事物对数据对象加上S锁, 则事物T可读不可写, 其他事务只能加S锁 

5.2 恢复技术

        1)数据转储: 某个时期的整个数据库的备用数据(后备副本)

        2)登录日志文件: 用来记录事务对数据库的更新操作的文件。 严格按并发事务的时间次序; 先写日志文件, 后写数据库。

相关文章:

数据库系统概念

1. 绪论 数据库的基本概念: 数据(data): 数据库中存储的基本对象, 可以是文字, 声音, 图片, 视频等。 数据库(DB): 概括来说就是永久存储, 有组织, 可共享的大量数据的集合。 数据库管理系统(DBMS): 和操作系统一样是计算机基础软件, 主要有数据定义语言(DDL, 对数据对象的组…...

51单片机学习之旅——定时器

打开软件 1与其它等于其它,0与其它等于0 1或其它等于1,0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作,高四位保持,低四位清零,高四位定时器1,低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

一台服务器将docker image打包去另一天服务器安装这个镜像

一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…...

QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)

接上 QT串口通信之一,实现单个温湿度传感器数据的采集 上述文章中用QSerialPort实现了温湿度传感器的采集,实际上比较麻烦的,因为需要自定义解析帧, 接下来,用Qt-modbus-封装度更高的协议,来实现温湿度的采集; #include "MainWindow.h" #include "ui_M…...

基于SpringBoot的校园消费点评管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

【小沐学Java】VSCode搭建Java开发环境

文章目录 1、简介2、安装VSCode2.1 简介2.2 安装 3、安装Java SDK3.1 简介3.2 安装3.3 配置 4、安装插件Java Extension Pack4.1 简介4.2 安装4.3 配置 结语 1、简介 2、安装VSCode 2.1 简介 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器,可在桌面上…...

《操作系统 - 清华大学》8 -4:进程管理:进程控制结构

深度剖析进程控制块:操作系统进程管理的核心关键 在操作系统的复杂体系中,进程控制块(PCB)是实现高效进程管理的关键所在。接下来,将从多个维度深入剖析进程控制块,帮助更好地理解其在操作系统中的重要作用…...

RPC 框架项目剖析

RPC 框架项目剖析 说明 本文用于梳理一个 rpc项目的实现细节,此项目基于cpp语言 大概三千行左右,用于学习目的。 项目链接:rpc项目 项目底层类 1.抽象消息类 描述: 各种消息的基类 属性: 消息id,消息类型…...

C++ Boost面试题大全及参考答案

目录 boost::thread_group 如何实现批量线程管理? 解释 boost::asio 中 proactor 模式的设计原理 使用 boost::atomic 实现无锁环形缓冲区 boost::mutex 与 std::mutex 在异常安全上的差异 如何用 boost::condition_variable 实现生产者 - 消费者模型 当 boost::shared_p…...

关于Transparent native-to-ascii conversion

1、功能 自动转换ASCII编码,即在文件系统上,文件的编码格式为ascii编码,在编辑器(idea/pycharm)中,其展现结果为配置的编码格式,仅展现方便阅读 使用UTF-8并勾选自动转换ASCII编码结果&#x…...

js数据类型检测

JavaScript的数据类型检测 typeof操作符 适用场景 基本数据类型快速判断:适用于快速判断变量是否为number、string、boolean、undefined、function等基本数据类型。比如在函数参数检查中,若要求传入数字参数,可用typeof来初步判断。函数类型…...

go 模块管理

go version 查看版本 go version go1.21.12 windows/amd64 需要保证:go的版本升级为1.11以上,go mod依赖的最底版本 go env 查看go的环境变量 go env 开启go mod # 标识开启go的模块管理 set GO111MODULE=on GO111MODULE有三个值:off, on和auto(默认值)。 GO111M…...

记一次复杂分页查询的优化历程:从临时表到普通表的架构演进

1. 问题背景 在项目开发中,我们需要实现一个复杂的分页查询功能,涉及大量 IP 地址数据的处理和多表关联。在我接手这个项目的时候,代码是这样的 要知道代码里面的 ipsList 数据可能几万条甚至更多,这样拼接的sql,必然是要内存溢出的,一味地扩大jvm参数不…...

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中,有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统,能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…...

java面试场景问题

还在补充,这几天工作忙,闲了会把答案附上去,也欢迎各位大佬评论区讨论 1.不用分布式锁如何防重复提交 方法 1:基于唯一请求 ID(幂等 Token) 思路:前端生成 一个唯一的 requestId(…...

JS宏实例:数据透视工具的制作(四)

上一节中,我们完成了核心的计算代码部分,本节中将完善事件代码 一、创建所有需求的事件函数 1、窗体初始化 // 窗体初始化 function pivotForm_Initialize(){} function typeSet_Initialize(){} function valueSet_Initialize(){} function allCol…...

5. Go 方法(结构体的方法成员)

Go语言没有传统的 class ,为了让函数和结构体能够关联,Go引入了“方法”的概念。 当普通函数添加了接收者(receiver)后,就变成了方法。 一、函数和方法示例 // 普通函数 func Check(s string) string {return s }//…...

20250223学习记录

之前HDFview查看.hdf5文件的时候,看到土壤湿度数据是分为AM和PM,当时我有一个这样的疑问 但是后来用Python处理的时候,直接就是对整个的.hdf5文件处理,当时没有注意这一块,所以就没有这个疑问了。 今天突然看到一篇论…...

WPS携手DeepSeek:开启智能办公新时代

在数字化办公的浪潮中,效率与智能成为了人们追求的核心目标。近年来,人工智能技术的飞速发展为办公领域带来了前所未有的变革契机。DeepSeek作为一款备受瞩目的人工智能工具,以其强大的功能吸引了众多用户,然而在使用过程中&#…...

无需服务器,浏览器跑700+AI模型?!

Transformers.js 是一个创新的网络机器学习库,它将先进的 Transformer 模型直接带入浏览器,无需服务器端支持。这个库与 Hugging Face 的 Python transformers 库功能对等,提供相似的 API 接口来运行预训练模型,涵盖了自然语言处理…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...