数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求。数据库设计过程中命名规范很是重要,命名规范合理的设计能够省去开发人员很多时间去区别数据库实体。
最近也因为工作需要所以整理出了这个word文档,望大家指正。
数据库规划→需求分析→数据库设计→应用程序设计→实现→测试→运行于维护
定义数据库应用系统的主要目标,定义系统特定任务,包括工作量的估计、使用资源、和需求经费,定义系统的范围以及边界。
涉及人员:用户和分析人员
任务:对现实世界要处理的对象进行详细的调查,收集基础数据及处理方法,在用户调查的基础上通过分析,逐步明确用户对系统的需求,包括信息的要求及处理的要求。
方法与步骤:1.通过与用户的调查,对用户的信息需求进行收集。
2.在收集数据的同时,设计人员要对其进行加工和整理,以数据字典和数据流图的形式描述出来,并以设计人员的角度向用户讲述信息,根据用户的反馈加以修改并确定(该过程是反复的过程)
成果:数据流图,数据字典,各种说明性表格,统计输出表以及系统功能结构图。
外部实体:存在于软件系统之外的人员或组织(正方形或立方体表示)。
加工:数据处理,表示输入数据在此进行变换,产生输出数据(圆角巨型或圆形表示)。
数据流:表示流动着的数据(箭头线表示)。
数据存储:用来表示要存储的数据(开门矩形或两条平行横线表示)。
订单处理系统顶层流程图:
0层数据流图:
l 对事务加以抽象以E-R图的形式描述出来。
l E-R图(实体联系图):包括实体,联系,属性
实体:现实中的事物例如,学生,老师
联系:两个实体之间的关系,1:1、1:N、M:N三种关系
属性:实体所具有的属性,例如 学生的学号、姓名、性别等
例如:一个学生属于一个班级,一个班级拥有多名学生,E-R图如下
网上购物系统E-R图,该系统数据之间存在下列约束
图2.2
l 将E-R图转换成关系模式
将每个实体转换成一个关系模式,实体的属性即关系模式的属性,实体的标识即关系模式的键。
l 根据规则合并E-R图中的1:1,1:N,M:N之间的联系
根据E-R图实体之间的联系可以转换成以下关系模式:
订购细目(订购明细编号,订购数量,支付金额,订单编号)。关系主键:订购明细编号;外键:订单编号。
出现(订购明细编号,商品编号,类型)。关系的主键:订购明细编号,商品编号;外键:订购明细编号,商品编号。
商品:(商品编号,商品名称,单价,生产日期,商品类别号,商品类别名)。关系的主键:商品编号;外键:无
在关系模式设计中可能会出现以下几个问题:数据冗余、数据修改不一致、数据插入异常、数据删除异常,所以提出范式的要求,目的就是最低限度地冗余,避免插入、删除、修改异常。
主属性:包含键的所有属性。
l 关系模式要求达到4NF (减少冗余,消除操作异常)
例如:选课关系(学号,课程号,成绩,学分)
该关系的主键是(学号,课程号),但是课程号→学分,所以学分属性部分依赖于主键,即关系部满足第二范式,可以拆分为(学号,课程号,成绩),(课程号,学分)两个关系
例如:学生关系(学号,姓名,所属系,系地址)
该关系的主键是:学号
学号→所属系,所属系→学号,所属系→系地址;根据函数的依赖公理,系地址传递函数依赖于学号,即关系不满足第三范式,可以拆分关系为(学号,姓名,所属系),(所属系,系地址)
如果不拆分会存在数据修改异常,比如该学生的换了系,修改了所属系,但是系地址没有修改,这样就造成了修改异常
例如:关系R(零件号,零件名,厂商名),如果设定每种零件号只有一个零件名,但不同的的零件号可以有相同的零件名,每种零件可以有多个厂商生产,但每家厂商生产的零件应有不同的零件名。这样可以得到:
零件号→零件名,(厂商名,零件名)→零件号
所以主属性包括(零件号,厂商名,零件名),但是“零件名”传递依赖于码“厂商名,零件名”,所以关系R不满足BCNF,当一个零件由多个生产厂商生产时,由于零件号只有一个而零件名根据厂商不同而又多个,零件名与零件号之间的联系将多次重复,带来数据冗余和操作异常现象
可以将关系分解为(零件号,厂商名),(零件号,零件名)
对于上面的商品关系,由于关系的主键是商品编号,而商品类别号→商品类别名
所以商品关系部满足第三范式,非主属性商品类别名传递依赖于商品编号,会存在数据冗余,数据修改异常问题。将商品关系分解为:
商品(商品编号,商品名称,单价,生产日期,商品类别号)
商品类别(商品类别号,商品类别名)
为一个给定的逻辑数据模型设计一个最合适应用要求的物理结构的过程
l 数据库的建立
l 数据表的建立
l 索引的建立
l 视图的建立
l 触发器的建立
l 存储过程设计
l 用户自定义函数设计
l 对关系模式的数据项加以约束,如检查约束、主键约束、参照完整性约束以保证数据正确性
采用高级语言以结构化设计方法或面向对象方法进行设计
4. 当系统中有一些少量的,重复出现的值时,使用字典表来节约存储空间和优化查询。如地区、系统中用户类型的代号等。这类值不会在程序的运行期变化,但是需要存储在数据库中。
就地区而言,如果我们要查询某个地区的记录,则数据库需要通过字符串匹配的方式来查询;如果将地区改为一个地区的代号保存在表中,查询时通过地区的代号来查询,则查询的效率将大大提高。
程序中宜大量的使用字典表来表示这类值。字典表中保存这类值的代号和实体的集合,以外键的方式关联到使用这类值的表中。然而,在编码阶段,程序员并不使用字典表,因为首先查询字典表中实体的代号,违背了提高查询效率的初衷。程序员在数据字典的帮助下,直接使用代号来代表实体,从而提高效率。
虽然字典表在实际上并不使用,但是仍应该保留在数据库中(起码是在开发期内保留)。字典表作为另一种形式上的“数据字典文档”出现,以说明数据库中哪些表的哪些字段是使用了字典表的。
为了提高数据库的数据完整性,在开发阶段可以保留完整的字典表和普通表的外键约束。但是在数据库的运行阶段,应该将普通表和字典表的外键删除,以提高运行效率,特别是某些表使用了很多字典表的情况。
案例:某数据库中有百万条用户信息,应用系统中常常需要按照地区要查询用户的信息。用户信息表以前是按照具体的地区名称来保存的,现在将具体的名称改为字典表中的地区代号,查询效率大大提高。
对象
前缀
数据库
视图
VI
索引
IX
存储过程
SP
函数
FN
触发器
TR
自定义数据类型
ud
Default
DF
主键
pk
外键
FK
rule
ru
序列
Sq
UNIQUE
uq
数据库对象采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。
同一个数据库中这些对象名都是不能重复
C CHECK_CONSTRAINT
D DEFAULT_CONSTRAINT
F FOREIGN_KEY_CONSTRAINT
IT INTERNAL_TABLE
P SQL_STORED_PROCEDURE
PK PRIMARY_KEY_CONSTRAINT
S SYSTEM_TABLE
SQ SERVICE_QUEUE
TR SQL_TRIGGER
U USER_TABLE
UQ UNIQUE_CONSTRAINT
V VIEW
例如:对存储客人信息的表(Customer)不使用Customers
1、 表是用来存储数据信息的。2、表是行的集合。那么如果表名已经能够很好地说明其包含的数据信息,就不需要再添加体现上面两点的后缀了。
2、 GuestInfo(存储客户信息)应写成Guest,FlightList(存储航班信息的表)应写成Flight
以大家都熟悉的论坛来说,需要记录会员最后一次登录的时间,这时候一般人都会把这个字段命名为LoginTime 或者 LoginDate。这时候,已经产生了一个歧义;如果仅看表的字段名称,不去看表的内容,很容易将LoginTime理解成登录的次数,因为,Time还有一个很常用的意思,就是次数
数据库名称不需要简写,根据实际意义来命名。例如:ReportServer
数据库名:ReportServer
逻辑数据名:ReportServer;逻辑日志名:ReportServer_log
CREATE DATABASE [ReportServer] ON PRIMARY
LOG ON
GO
注意:避免所有数据库的逻辑名称使用相同的名称。
注意字段名不能使用保留关键字:如action,avg等
1、不使用tab或tbl作为表前缀(本来就是一个表,为什么还要说明)
2、表名以代表表内的内容的一个和多个名词组成,以下划线分隔,每个名词的第一个字母大写,例如:User、UserLogin,UserGroupRelation等
5、一些作为多对多连接的表,可以使用两个表的前缀作为表名:
存储过程名=[SP_]+[表名]+[操作名字]
[操作名字]=[insert|delete|update|calculate|confirm]
例如:SP_community_update
只允许应用程序通过存储过程访问数据库,而不允许直接在代码中写SQL语句访问数据库。
在数据库开发项目中,大量使用存储过程有很多的好处,首先看微软提供信息:
使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:
允许模块化程序设计:
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
允许更快执行:
如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。
减少网络流量:
一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
可作为安全机制使用:
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
除此以外,使用存储过程的好处还有:
1、 在逻辑上,存储过程将应用程序层和数据库物理结构分离开来。存储过程形成了一个应用程序和数据库之间的接口。这样的接口抽象了复杂的数据库结构,符合极限编程中“基于接口编程”的思想。
2、 将主要的业务逻辑封装在存储过程中,能够避免在应用程序层写大量的代码(在应用程序中通过字符串插入太长的SQL语句影响效率,而且维护困难)。有助于提高开发效率,并且直接在查询分析器中调试存储过程,能够更早的发现系统中的逻辑问题,从而提高代码的质量。
3、 在网站一类的应用系统中,SQL注入式漏洞一直是难以完全杜绝的漏洞。如果只通过存储过程来访问数据库,能够大大减少这类安全性问题。(因此,就算是简单的只有一句的SQL语句,也应该写成存储过程。)
4、 由于采用存储过程,应用程序的层面可以不关心具体的数据库结构,而只关心存储过程的接口调用。因此,在以下一些情况,存储过程的优势非常明显:
·需求变更,表的结构必须要改变。使用存储过程,只要参数不变,我们就只需要修改相应的存储过程,而不需要修改应用程序的代码。这样的设计将减小需求变更对项目的影响。
·为提高效率,使用冗余表(拆分表):一些大的表,为了提高查询效率,可能需要将记录分别保存到多个表中去。使用存储过程,有存储过程来决定从哪些拆分的表中获取或插入数据。这样提高了效率,又不必在应用程序层面关心具体的拆分规则。
5、 使用存储过程,便于在项目后期或者运行中集中优化系统性能。在项目开发过程中,由于各种原因,往往无法编写高效的代码,这个问题常常在项目后期或者在运行期体现出来。通过存储过程来封装对数据库的访问,可以在项目集成以后,通过试运行观察系统的运行效率,从而很容易找出系统的瓶颈,并能够通过优化存储过程的代码来提高系统的运行效率。这样的优化,比在运用程序中优化更有效,更容易。
同时,过多的使用存储过程,也存在以下一些疑虑:
问题一:存储过程编译后,将作为数据库的全局对象保存,太多的存储过程将占用大量的数据库服务器的内存。
问题二:在存储过程中实现大量的逻辑,将使大量的运算在数据库服务器上完成,而不是在应用服务器上完成。当访问量很大的时候,会大大消耗数据库服务器的CPU占用率。
在此还存在这个一个案例:有一个访问量巨大的网站,有多台WEB服务器构成一个负载均衡的服务器群集,但是只有一台中心的数据库服务器。当访问量持续增加的时候,接入更多的WEB服务器来满足高并发量的访问;但是数据库服务器却没办法一直增加。因此,就需要尽量在WEB服务器上完成业务逻辑,尽量避免消耗数据库服务器的资源。
对于这两个担心,我的想法是:
问题一的解决:存储过程是经过编译后的SQL语句,在内存中是二进制的代码,并不会消耗太多内存。并且,存储过程比起直接使用SQL语句来说,效率大大提高。换个角度来说,这是一个“以空间换时间”的方案,多消耗一点内存来换取效率的提高,是值得的。
问题二的解决:首先,在实现业务逻辑的问题上,在存储过程中实现比在应用程序中实现更容易;其次,从开发效率上,存储过程的开发比应用程序更简单(就完成相同逻辑而言)。在高访问量的系统中,应用服务器和数据库服务器的资源分配的问题,应该从成本的角度来开率:软件开发中的成本,人工支出的费用远远高于硬件支出的成本。我们可以很容易花钱购买更好的服务器,但是很难花钱让开发人员使程序有大幅度的提高。
对于大访问量的情况,最简单的办法是投入更多的硬件成本:更快的硬盘,更大的内存和更多的CPU,还有更好的网卡…………等等。
其次,在应用程序的层面,可以大量的使用静态文件缓存的办法来减轻数据库的压力。如:不经常变化的信息,可以从数据库服务器中读取,保存为应用服务器上的XML静态文件等。
实在不行的话,应该在系统设计之初,考虑可能的访问量,将系统设计成分布式的。这样就能从根本上解决大访问量的问题。
1、存储过程的前缀和表名的前缀类似:把一系列表看成一个对象,字段为对象的属性,存储过程则为访问对象的方法。如:添加用户的存储过程取名为:User_AddUser
2、存储过程使用模块的前缀来命名。如,用户管理的存储过程使用前缀user_。
3、存储过程的前缀之后,是动词+名词形式的存储过程名(也可以是动词短语)。
1、参数名采用匈牙利命名法,使用类型的前缀
2、每个存储过程都有:@errno int和@errmsg varchar(255)两个输出参数。应用程序中可以根据这两个参数得到存储过程执行的情况。(这两个参数使用默认值,可以忽略)
errno为整型的错误信息代码,执行成功返回0。Errno的值的具体含义通过errmsg参数说明,或者通过代码中的注释或文档。
Errmsg为错误信息的字符串描述,这个参数主要用于调试期作为说明,避免在应用程序中使用该值。同时,要注意英文版系统和中文版系统中,信息的语言选择对程序的影响。
1、存储过程的输出记录集:为程序的结构清晰,存储过程最好只返回一个记录集。但在某些为了提高性能的场合,还是可以输出多个记录集
2、记录集中,每个输出的字段最后都指定字段的别名,以面真实的字段名信息流失到客户端,从而加大黑客找到系统漏洞的可能。
1、 所有SQL关键字大写
2、 使用良好的变量命名规范
3、 保持良好的结构,包括空行、缩进和空格等。
4、 块状的语句,一定要写上BEGIN…END
6、 每个存储过程内的代码前后必须加上SET NOCOUNT ON 和SET NOCOUNT OFF。
7、 存储过程格式的示例如下:
一个数据库中的视图名不能重复
视图名=VI(前缀)+[表名]..[表名]+[描述]
一个数据库中的主键名不能重复
主键名=PK_(前缀)+[表名]
例如:pk_Community
一个数据库中的外键名不能重复
外键名=FK_(前缀)+[主表名]+[从表名]+[字段名]
考虑这样一个关系,表Hotel,字段Id, Name, CityId。表City,字段Id,Name。因为一个城市可能有好多家酒店,所以是一个一对多的关系,City是主表(1方),Hotel是从表(多方)。在Hotel表中,CityId是做为外键使用。
在实现外键的时候我们可以这样写:
ALTER TABLE HotelInfoADD CONSTRAINT FK_Hotel_City_Cityid FOREIGN KEY (CityID) REFERENCES City(ID)
触发器名=TR_(前缀)+[表名]+[ _I、_U、_D]+[字段\描述]
例如:TR _Communtiy_u_name(对表community的字段name进行更新)
使用格式如:DF_[表名]_[列名]
例如:DF _Community_Age
格式:CK_[表名]_[列名]
例如:CK_Community_Number
格式:uq_[表名]_[列名]
例如:uq_Community_Name
1、字段不使用任何前缀(表名代表了一个名称空间,字段前面再加前缀显得罗嗦)
2、字典名也避免采用过于普遍过于简单的名称:例如,用户表中,用户名的字段为UserName比Name更好。
3、布尔型的字段,以一些助动词开头,更加直接生动:如,用户是否有留言HasMessage,用户是否通过检查IsChecked等。
4、字段名为英文短语、形容词+名词或助动词+动词时态的形式表示,大小写混合,遵循“见名知意”的原则。
1、不允许写SELECT * FROM ……,必须指明需要读取的具体字段。
2、不允许在应用程序代码中直接写SQL语句访问数据库。
3、避免在一行内写太长的SQL语句,在SQL关键字的地方将SQL语句分成多行会更加清晰。
如:SELECT UserID,UserName,UserPwd FROM User_Login WHERE AreaID=20
修改成:
SELECT UserID,UserName,UserPwd
FROM User_Login
WHERE AreaID=20
更加直观
4、在一些块形式的SQL语句中,就算只有一行代码,也要加上BEGIN…END块。
如:IF EXISTS(…)
SET @nVar = 100
应该写成:
IF EXISTS(…)
BEGIN
SET @nVar = 100
END
5、SQL批处理语句的空行和缩进与一般的结构化程序语言一致,应该保持良好的代码格式。
6、所有的SQL关键字大写
1、 若无必要,不要使用游标
2、 包含游标的存储过程,必须对性能进行认真测试。
函数命名分两类:1.针对对象的函数,2.用作辅助功能操作的函数(不针对具体的数据库对象)
角色是一个权限的集合,只要将用户加入到角色成员(给用户分配一个角色),就可以给这个用户分配这个角色所具有的全部权限。角色的出现极大的简化了权限的管理。
一、数据库分片是什么?1.1简单介绍分片数据库分片是一种将数据水平切分为多个片段(分片)的技术,旨在提高大型数据集的查询性能和扩展性。每个分片可能位于独立的数据库实例中。这种方法特别适用于处理大规模和高并发的应用场景。1.2. 分片的基本概念水平分片:将表中的行分散到不同的数据库实例。每个分片都是表的一个子集。垂直分片:将表的列分散到不同的数据库实例。不同列的数据将存储在不同的数据库中。1.3.
在Microsoft SQL Server中,通过日志备份来恢复数据库至特定时间点的过程(也称为事务日志链恢复)通常遵循以下步骤:确认恢复模式: 确保数据库处于“完整恢复模式”(Full Recovery Mode)。只有在这种模式下,SQL Server才会生成详细的事务日志,允许你进行基于时间点的恢复。 备份集与日志备份: 在数据丢失前应有一个完整的数据库备份,并且在此之后有足够的事务日志备份
:本图由鲜枣课堂知识库志愿者——青鸾绘制,特此感谢!
【管理思路思维导图】—— PMP考试与持续认证的重要性一、PMP考试概况项目管理专业人士(PMP)认证是全球公认的项目管理领域的黄金标准。PMP考试是由美国项目管理协会(PMI)发起的,对项目管理知识体系、技能和经验进行严格评估的考试。考试时长230分钟,包含180道选择题,要求考生在有限时间内展示其对项目管理的深入理解和应用能力。二、PMP考试费用与补考政策PMP考试的费用为39
包含MySQL数据库八个项目的内容总结,详细细致,标明重难点,复习必备。
软考数据库思维导图是一种以图形化方式呈现数据库系统知识和结构的工具,它可以帮助考生更好地理解和记忆软考数据库考试的重要知识点,提高学习效率和考试成绩。以下是对软考数据库思维导图的一些介绍和分析,希望能够对考生的备考起到一定的帮助。一、软考数据库思维导图的作用软考数据库思维导图的主要作用有以下几个方面:1. 梳理知识体系:数据库系统是一个庞大而复杂的知识体系,包括多个领域和知识点。通
在复习数据库时画的一些思维导图,自己觉得还不错,发出来希望帮助大家复习。如有问题,,,欢迎指正!!个人网站原文链接!!!主要教材:数据库系统教程(第三版,施伯乐)辅助教材:数据库系统概论(第五版,王珊)其他参考:数据库系统教程习题解答与实验指导(丁宝康)这里只是贴了局部,完整版导图在文章最后。 完整版导图戳这里!有需要xmind文件的小伙伴可留言邮箱。(私信不怎么看)
在软件行业,数据库作为信息存储与管理的核心组件,其重要性不言而喻。对于参加软考的考生而言,掌握数据库基础知识更是必不可少的一环。本文将以数据库基础知识思维导图为引领,系统梳理数据库的核心概念、原理及应用,助力广大考生夯实基础,迎接软考挑战。首先,我们需明确数据库的基本概念。数据库,顾名思义,是存储数据的“仓库”。然而,它并非简单地堆积数据,而是按照一定结构组织、存储和管理数据的系统。这种系统具
# MySQL数据库在Windows上的安装指南MySQL是一个高效、开源的关系型数据库管理系统,广泛应用于各种应用程序中。本文将为你提供在Windows上安装MySQL数据库的步骤和代码示例,同时附上一个简单的流程图帮助你理解安装流程。## 安装准备在安装MySQL之前,请确保你具备以下条件:1. 一台运行Windows的计算机。2. 确保有可用的互联网连接,以下载MySQL安
DDL 数据定义语言(data define language)DML 数据操作语言(data manipulation language)TCL 事物控制语句(transaction control language)
在备战软考(计算机软件专业技术资格和水平考试)的过程中,数据库系统作为一个重要的知识领域,经常是考生们需要深入理解和掌握的难点之一。为了更好地梳理和记忆这一领域的知识点,许多考生会选择使用思维导图这一工具。下面,我们将围绕“软考数据库系统思维导图”这一主题,详细探讨如何构建和使用思维导图来助力软考备考。首先,我们需要明确数据库系统在软考中的重要性和涵盖的内容。数据库系统是计算机科学的一个重要分
思维导图---思维导图网站
基础指令 数据操作语言DMLselectselect 列名 from 表名select * from 表名select distinct 列名 from 表名(返回唯一不同的值)select 列名 from 表名 where 列 运算符 值=,!=,>,<,>=,<=,between,likeselect 列名 from 表名 where (列1 运算符 值1)and/or
如何准备转行学习Java,相信很多初学Java者都在考虑这个问题,如果你是在校学生,务必要在学好基础(比如计算机系统、算法、编译原理等等)的前提下,再考虑去进行下面的学习,第一部分:对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学。 一、Java基础首先去找一个Java基础教程学一下,这里推荐动力节点基础教学视频,学习Java基础的时候,应该
任务摘要:1.1安装与配置数据库管理系统环境 1.2创建关系数据库 1.3创建表,选择正确的字段数据类型 1.4创建完整性约束,绘制数据表关系图 1.5录入数据按教程安装SQL Server2008后,使用create database命令创建一个数据库“School_MS”,其包含2个40M的数据文件,2个20M的日志文件,并包括一个文件组“MyGroup”,文件
本实例为综合实例,考察数据库原理中的,sql脚本的编写,创建——增删改查,视图和索引的创建等;数据库ER图,关系模式;以及一些高级的应用包括:触发器,函数和存储过程。(一). 数据库设计题目如下 有一个图书出版发行管理系统,其主
说起大一就学过C++,但从未接触过VC++,至于做界面也是直到学java才开始,所以自己还是个新手啊。。。 步入正题,通过自己写的两个小程序,对做界面的思路进行一下整理。 首先,构想出自己想要实现的界面是什么样子。可
写在前面有个几年经验的爪娃们都经历过成长的阶段,但每个人成长阶段接触到的技术不尽相同。作为java思维导图的作者,我当然就想这用思维导图的方式结构化、可视化地每阶段的成长与技术串联起来。如果你还只是个什么都不懂的小白这一时期是你最困难的时候,你什么都不懂,想要入门学习java,你面临着两个选择,一自学,二报培训班,这是常见的两个选择。 自学需要很大的毅力,特别是对于一个没有任何基础,刚
Description 给定一个含有 \(N\) 个顶点的有根树 \(T\),顶点编号为 \(1\) 到 \(N\)。其中,顶点 \(1\) 为根节点,对于每一个顶点 \(i\)(\(2 \leq i \leq N\)),有 \(p_i\) 为其父节点,且 \(p_i < i\)。 我们定义满足以下 ...
最近在学习容器虚拟化,今天试着开启docker的时候要输入一大堆代码,发现周围的人都能粘贴,但是我的虚拟机粘贴不了,十分难受,遂开始调整。 1.豆包让我在VMmare上虚拟机选项里面安装VMtools解决,但是开启虚拟机后也没办法选中这个选项,这个方案pass 2.因为对于 CentOS 9 这类 ...
代理模式是一种结构型设计模式,其核心思想是:通过一个 “代理对象” 来控制对 “目标对象” 的访问。代理对象作为客户端与目标对象之间的中介,既能保证客户端正常访问目标对象,又能在访问前后附加额外操作(如权限校验、日志记录、延迟加载等),从而实现对目标对象的间接控制。 核心角色 代理模式通常包含 3 ...
TypeScript 的 namespace 是早期代码组织方案,通过 namespace 关键字封装代码,需 export 暴露成员,支持嵌套和合并。
目录一、基于统计学模型1. 基本概念2. 平稳性检验3. 平稳化处理4. 统计学模型:自回归模型 AR5. 统计学模型:滑动平均模型 MA6. 统计学模型:自回归滑动平均模型 ARMA7. 统计学模型:差分整合移动平均自回归模型 ARIMA8. 统计学模型:季节性差分自回归滑动平均模型 SARIMA9. 模型检验:残差检验二、基于机器学习模型三、基于深度学习模型 【说在前面】本