秦王的和氏璧的文章

  • C#知识点总结


    C#数据类型的分类:值类型(简单类型(整数型:char、short、int、long,浮点型:float、double,小数型decimal,布尔型bool)、枚举类型enum、结构类型struct)和引用类型
    值类型和引用类型的定义及其类型间区别

    值类型:栈,包括结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型;引用类型:堆,包括数组、类,接口、委托、object、字符串。区别:值类型存取速度快,存储在栈里,直接存放数据;引用类型存取速度慢,存储在堆里,存放数据地址。
    数据类型间的转换方法:隐式、显示
    分支流程控制,if,switch
    循环流程控制,while, do…while, for, foreach,特别是foreach的使用方法。
    理解面向对象最基本的四个特征:抽象、封装、继承、多态
    类的声明、实例化: [访问修饰符] class 类名 [:基类] {类的成员;}定义类之后,可以用定义的类声明对象,然后再通过这个对象来访问其数据或调用其方法。
    理解类及成员的可访问性(访问修饰符的作用)

    public:公共的,访问不受任何限制,允许跨程序集引用,可用来修饰类及其成员。internal:内部的,只允许在当前程序集内部使用,可用来修饰类及其成员。private:私有的,只允许在该类内部使用,不允许其他类访问,只能用来修饰类成员。protected internal:仅限于当前程序集内部使用,只允许该类及其派生类使用, 只能用来修饰类成员。protected:受保护的,只允许该类及其派生类使用, 只能用来修饰类成员。
    掌握类成员(字段、属性、构造函数、常量、方法)及其定义方法,属性get和set访问器

    [访问修饰符] 数据类型 字段名;[访问修饰符] 数据类型 属性名{get{//获取属性的代码,用return 返回值} set{//设置属性的代码,用value赋值}}[访问修饰符] 构造函数名([参数列表]){ [语句;]}[访问修饰符] const 数据类型 常量名=常量的值;[访问修饰符] 返回值类型 方法名 ([参数列表]){语句;……[return 返回值;]}
    方法的重载:同一类中定义多个同名方法,同名方法的参数个数或参数类型不同
    方法的参数传递5种形式及特点

    按值传参:单向值传递,形参值不会影响实参值,string和object(两种引用型)有按值传参效果按引用传参:形、实参变量指向同一个引用,必须对实参明确赋初值(值类型和string类型参数的形参和实参都必须添加ref关键字)输出参数:不需要对实参赋初值(ref除外),但形参必须在赋值后才能用,被调方法结束前必须给输出参数赋值。形参、实参都使用out关键字来声明,一个方法中可允许有多个输出参数引用类型的参数:按引用传递,不用ref或out关键字数组型参数:形参数组前不添加params修饰符,实参是一个数组名;形参数组前添加params修饰符,对应的实参可以是数组名,也可以是数组元素值的列表
    静态类的定义及使用方法,静态成员、静态构造函数等的特点:只包含静态成员的类;静态成员只能用类名引用(和Java、C++不同),静态方法只能访问静态成员;静态构造函数是用来初始化静态字段的,不能有访问修饰符、参数列表和返回值,如:static Student(){}
    抽象类、密封类、接口的定义及使用方法

    只要包含无法实现的成员的类就是抽象类,抽象成员必须在抽象类中声明但抽象类不一定包含抽象成员,抽象类和抽象方法都必须用abstract定义,如:public abstract double Cubage();,抽象属性只声明该属性的数据类型、名字、可访问性等,如:public abstract double Length{get;set;}阻止一个类被其他类继承,sealed只含有公共抽象方法、可以实现多重继承的类,interface
    基本类和派生类的定义方法,派生类中构造函数的定义及调用:基类的构造函数负责初始化基类的成员字段,派生类的构造函数之初始化新添加的成员字段;声明派生类的构造函数时必须使用base关键字向基类的构造函数传递参数
    多态(new,virtual,override)的实现方法及其区别:new是在程序编译时对基类方法的替换,使用virtual定义虚方法再在派生类中使用override是在程序运行时的重写
    虚方法及抽象方法的异同

    异:虚方法有方法体而抽象方法没有;抽象方法只能在抽象类中声明但虚方法不是;要想实例化虚方法可以不重写但抽象方法必须要派生类覆盖即派生类必须重写抽象类的抽象方法但虚方法不必同:修饰符都不能用private、static
    基本类和派生类对象间的类型转换,详见书126页

    派生类对象即使强制转换为基类对象,所引用的仍然是派生类成员Dog x = new Animal();d = (Dog)a;都是错的
    集合的定义及简单使用:高度结构化地存储任意对象的类,可以随意调整大小

    ArrayList al=new ArrayList();Student stu1=(Student)al[0];
    程序错误类型:语法错误、逻辑错误、运行时错误
    程序异常的定义及异常处理方法:系统可能随时发生的不可预期事件:内存不够、磁盘出错、网络连接中断、数据库无法使用:try….catch、try….catch….catch、try…catch…finally
    ADO.NET访问数据库步骤,见书271页

    Connection对象负责连接数据库;Command对象负责对数据库执行命令;DataReader对象负责读取仅向前和只读的数据流;DataSet(数据集)负责建立数据副本和对数据执行命令;DataAdapter对象负责建立数据库和DataSet的联系
    System.Data.SqlClient中用于数据库访问和操作的主要类(Connection, Command, DataReader, DataSet)的使用方法

    Connection:
    String conString=''DataSource=.;DataBase=shujuku;User ID=xx;Pwd=123;/Integrated Security=True;'';SqlConnection conn=new SqlConnection(conString);conn.Open();...;conn.Close();
    Command:
    SqlCommand comm=new SqlCommand(''sql语句'',conn);comm.ExecuteNonQuery();执行增删改语句,返回受影响行数ExecuteReader返回DataReader对象ExecuteScalar执行查询并返回查询结果的第一列第一行
    DataReader://抽象类
    SqlDataReader dr=Command comm.ExecuteReader();while(dr.Read()){(数据类型)dr[索引或列名]//读取某列数据}dr.Close();
    DataSet:
    conn=new SqlConnection(conString);DataSet ds=new DataSet();SqlDataAdapter ad=new SqlDataAdapter("sql语句",conn);da.Fill/Update(ds);dataGridView1.DataSource=ds.Tables[0];

    0  留言 2020-08-11 10:37:35
  • 数据库复习要点(数据库知识点总汇)

    一、绪论1.1 概念
    数据:描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的
    数据库:数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享
    数据库管理系统:数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS 的主要功能包括数据定义功能、操纵、组织、存储功能、数据库的事务管理、运行管理功能、数据库的建立和维护功能
    数据库系统:数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成

    1.2 数据库发展三阶段及特性
    人工管理阶段:数据不保存、应用程序管理数据、数据不共享也不具有独立性
    文件系统阶段:数据可以长期保存、由文件系统管理数据、数据共享性差、冗余度大、独立性差
    数据库系统阶段:数据结构化、共享性好,冗余度低,易扩充、独立性(物理独立性和逻辑独立性)高、由DBMS统一控制管理

    1.3 数据模型现实世界中数据特征的抽象,包括数据结构(二维表/树/网状结构)、数据操作(操作集合)和数据的约束条件(符合实体/参照/自定义完整性)。概念模型、逻辑模型、物理模型。

    实体:客观存在并可以相互区别的事物,可以是具体对象或抽象事件
    属性:实体所具有的的某一特性
    码/键:唯一标识实体的属性集
    域:属性的取值范围
    实体型:某一实体属性的集合
    实体集:性质相同的同类实体的集合
    联系:实体内部的联系及实体之间的联系

    1.4 逻辑模型
    层次模型:有且只有一个结点(根)没有双亲,根以外的其它结点有且只有一个双亲;约束条件:增:如果没有相应的双亲结点值就不能插入子女结点值;删:如果删除双亲结点值,相应的子女结点也被同时删除;改:要修改所有相应记录保证数据一致性
    网状模型:允许一个以上的结点没有双亲;一个结点可以有多于一个的双亲
    关系模型:一张规范化的二维表;支持记录码:唯一标识记录的数据项的集合;保证一个联系中双亲记录和子女记录之间是一对多的联系;可以支持双亲记录和子女记录之间某些约束条件

    物理独立性:当DB的存储结构改变时,由DBA对各个模式/内模式的映象作相应改变,可使模式保持不变,从而应用程序不必修改,保证了数据和程序的物理独立性。
    逻辑独立性:当模式改变时,由数据库管理员对各个外模式/模式的映象作相应改变,可使外模式保持不变。应用程序是根据外模式编写的,从而应用程序不用作出修改,保证了数据和程序的逻辑独立性。
    1.5 思考题
    数据库阶段的数据管理有哪些特点?(2)
    数据独立性和物理独立性在数据库中如何体现?(7)
    DBMS有哪些功能?定义、组织、存储、管理、操纵数据,DB的事务、运行管理,建立和维护
    数据模型的作用及构成要素是什么?(3)
    DBS的用户有哪几类,如何区分?偶然(不常访问需不同信息)、简单(查询更新)、复杂(直接用数据库语言访问数据库)
    DB的三级模式结构描述了什么问题?DB的三级模式结构是指数据库系统是由外模式、模式、内模式三级构成,是数据的三个抽象级别,把数据的具体组织留给DBMS管理。模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图;外模式也称子模式或用户模式,是数据库用户能看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用相关的数据的逻辑表示;内模式也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
    DBS由哪几部分组成?硬件平台及DB、软件(DBMS,应用系统…)、人员(数据库管理员、用户…)

    二、关系数据库
    域:一组具有相同数据类型的值(基数)的集合,在关系中用域来表示属性的取值范围
    笛卡尔积:对两个关系R和S进行乘操作,产生的关系元组个数为两个关系中元组个数之积
    候选码:关系中的某一属性组的值能唯一标识一个元组而其子集不能,该属性组为候选码
    主码:一个关系有多个候选码(能唯一标识一个元组而其子集不能的属性组),则选定其中的一个为主码
    主属性:主码的诸属性
    非码属性:不包含在任何候选码中的属性
    全码:关系模式的所有属性是这个关系模式的候选码
    外部码:关系R的某一属性组X不是R的码,但是其他某一关系的码

    实体完整性:一个基本关系上的主属性不能取空值。
    参照完整性:一个关系R中的每个元组在他的外码上的取值要么取空值要么等于另一个关系S(关系R的外码对应关系S中的主码)中的某个元组的主码值。

    等值连接
    自然连接:去除重复的列

    思考题
    关系中的元组为什么没有先后顺序 ?关系是一个元组的集合,元组在集合中的顺序不重要
    关系与普通的表格、文件有什么区别 ?关系是一张规范化的二维表格,在关系模式中对关系有规范性限制:关系中的每一个属性值都不可分解,不允许出现相同的元组,没有行序,属性无序但使用时要考虑列的顺序。
    广义笛卡尔积、等值连接、自然连接三者区别?笛卡尔积对两个关系R和S进行乘操作,产生的关系元组个数为两个关系中元组个数之积;等值连接是在笛卡尔积的结果上进行选择操作,从R和S的笛卡尔积中选择对应属性值相等的元组;自然连接是在等值连接上进行投影操作,并去掉重复的公共属性列。当两个关系没有公共属性时,自然连接就转化为笛卡尔积。

    三、关系数据库标准语言SQL、数据库安全性、数据库完整性
    查询 WHERE GROUP BY HAVING LIKE ODER BY 集函数…
    相关子查询… IN EXISTS?

    思考题
    SQL语言有何特点?综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供多种使用方式、语言简洁,易学易用
    SQL的定义功能是什么? 模式定义、表定义、视图和索引的定义
    基本表和视图的区别和联系是什么? 视图是从一个或几个基本表(或视图)导出的虚表
    视图有何优点?简洁用户的操作、使用户能以多种角度看待同一数据、对重构数据库提供了一定程度的逻辑性、安全保护机密数据、清晰表达查询
    所有视图是否都可更新?为什么?请举例说明。不是 视图由两个以上基本表导出、字段来自字段表达式或常数、字段来自聚集函数、定义中含GROUP BY、DISTINCT、嵌套查询且内层查询FROM中的表也是导出该表的基本表,一个不允许更新的视图上定义的视图,都不允许更新
    连接查询和嵌套查询的特征分别是什么?一个查询同时涉及两个以上的表;将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询

    四、规范化
    函数依赖(简答):对一个属性集上的关系模式的任意一个关系,其中不可能存在两个元组在X函数上的属性值相等但在Y函数上的属性值不等的情况,则称X函数确定Y或Y函数依赖于X,记作X→Y。
    不平凡函数依赖:X→Y,Y⊆X
    平凡函数依赖:X→Y,Y⊆X 如:(学号,课程)→学号
    完全函数依赖F:X→Y,真子集X’Y 如:(学生,课程)→成绩
    部分函数依赖P:X→Y且Y不完全依赖于X
    传递函数依赖:Y对X不平凡函数依赖,YX,Y→Z 如:(学生、宿舍、面积)

    给出模式及其语义,写出函数依赖(部分/完全/传递)码:一个关系模式的属性或属性集完全函数依赖于K,则K为此关系模式的候选码,若有多个则选一个做主码;不可能出现两个元组在码上的值相同在其他值不同
    给出关系模式和函数依赖,判断第几范式
    R∈1NF:一个关系模式R的所有属性都是不可分的基本数据项
    (无非主对码的部分…)R∈2NF:关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码 每一个非主属性完全函数依赖于任一个候选码
    (无非主对码的传递…)R∈3NF:关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z  Y), 使得X→Y,(Y→X)Y→Z成立,则称R<U,F>∈3NF
    (无主对码的部分和传递…)R∈BCNF:设关系模式R<U,F>∈1NF,若X→Y且YX时X必含有码,则R<U,F>∈BCNF 每一个决定因素都包含码
    多值依赖X→→Y:一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关
    (限制关系模式间无非平凡且非函数依赖的多值依赖)R∈4NF:关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y  X),X都含有码,则称R<U,F>∈4NF

    五、数据库设计
    (大题)给出数据库要求,画出E-R图,转换为模式(需求分析、概念结构设计、逻辑结构设计)
    数据字典:数据项(不可再分的数据单位)、数据结构(反应数据之间组合关系)、数据流(数据结构在系统内传输的路径)、数据存储(数据结构停留和保存的地方,数据流的来源和去向之一)、处理过程(描述处理过程的说明性信息)的含义,写出某个应用系统的数据字典

    思考题
    数据库的生命周期分为哪几个阶段?6 需求分析 概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护
    数据库结构设计在生命周期中的地位如何?
    数据库概念设计的重要性和设计步骤。将需求分析阶段的数据分类组织,确定实体、实体的属性、实体之间的联系模型,画E-R图。
    数据库逻辑设计的重要性和设计步骤。把概念结构设计阶段的E-R图转换为与DBMS支持的数据模型相符的逻辑结构
    数据库物理设计的重要性和设计步骤为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构。1确定数据库物理结构2对物理结构进行评价
    最后一道大题 习题(学校/零件)某学校有若干系,每个系有若干学生,若干课程,每个学生只在一个系学习,同一门课只在一个系开设,某个学生选修了若干课程,每门课有若干学生选修。其中,学校包括属性:学校代码、学校名称、学校地址;系包括属性:系名、系代号、系主任名和电话;学生包括属性:学号、姓名、年龄、性别、所在系代号;课程包含属性:课程号、课程名;学生上课后有一个成绩。今要建立该学生选修课程的数据库,请你设计:关于此学校数据库的E-R图,并把该E-R图转换为关系模型,并标识出每个关系模式的主码。

    六、数据库恢复技术事务:用户定义的一个数据库操作序列,要么全做要么不做,是一个不可分割的工作单位ACID原子性(事务是数据库的逻辑工作单位)、一致性(事务执行的结果必须是数据库从一个一致性状态变到另一个一致性状态)、隔离性(一个事务的执行不能被其他事务干扰)、持续性(一个事务一旦提交他对数据库中数据的改变就应该是永久性的)
    三种故障和恢复
    事物内部的故障(事务在运行过程中未运行至正常终止点就夭折了):撤销事务UNDO、强行回滚该事务ROLLBACK、清除该事务对数据库的所有修改
    系统故障(正常运行被破坏、正在运行的事务非正常终止、内存数据库缓冲区的信息全丢失、外部存储设备上的数据没受影响):重启时恢复程序要强行撤销所有未完成事务UNDO、重做所有已提交的事务REDO
    介质故障(硬件故障使存储在外存中的数据丢失):数据转储

    静态转储:在系统无运行事务时进行转储,转储开始时一致性,转储期间不允许对数据库的任何存取、修改活动 简单但降低可用性
    动态转储:与事务并发进行,转储期间允许对数据库存取或修改不能保证副本中的数据正确有效和登录日志文件(后两种故障时用到)
    思考题
    什么是事务?事务有哪些重要属性 ?(1)
    什么是数据库的恢复 ?
    什么是数据库中数据的一致性?
    为什么事务的非正常结束会影响数据库数据的一致性?试举例说明。事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致性状态。例如,某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放,则可以定义一个事务T。T包括两个操作:Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。
    数据库恢复的基本原理是什么?冗余
    数据库恢复的基本技术有哪些?数据转储和登录日志文件

    七、并发控制
    丢失修改:事务1、2读入同一数据并修改,2的提交结果破坏了1提交的结果,导致1的修改被丢失
    不可重复读:指1读取数据后,2执行更新操作,使1无法再现前一次读取结果
    脏数据:1修改某一数据,并将其写回磁盘;2读取同一数据后;1由于某种原因被撤消,这时事务1已修改过的数据恢复原值;事务2读到的数据就与数据库中的数据不一致,是不正确的数据

    思考题
    什么是事务的并发操作,有哪几种类型 ?事务的并行执行 2交叉并发和同时并发
    并发操作会带来哪几种问题,这些问题的特征和根由是什么?破坏I、C +(1)
    什么是封锁?基本的封锁类型有几种?事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 2 排它锁X、共享锁S
    数据库恢复的基本原理是什么?冗余。数据库中任何一部分被破坏或不正确的数据可以根据存储在系统别处的冗余数据来重建。
    数据库恢复的基本技术有哪些?数据转储和登录日志文件是数据库恢复的基本技术。当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
    为什么要引进意向锁?意向锁的含义是什么?为提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁——显式封锁和隐式封锁。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突,显然,这样的检查方法效率很低。为此引进了意向锁。含义:对任一结点加锁时,必须先对它的上层结点加意向锁。例如事务T要对某个元组加X锁,则首先要对关系和数据库加ix锁。对关系和数据库加ix 锁,表示它的后裔结点——某个元组拟(意向)加X锁。引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。例如,事务T要对关系R加X锁时,系统只要检查根结点数据库和R本身是否己加了不相容的锁(如发现已经加了ix,则与x冲突),而不再需要搜索和检查R中的每一个元组是否加了X锁或S锁。
    0  留言 2020-08-11 10:37:21
eject