【保研复习】数据库复习笔记

保研历程(经验分享、保研流程介绍) 文章创作于2020年10月,知乎原文:https://zhuanlan.zhihu.com/p/270308727 2020年10月12号早晨结束了本次保研历程,本科:末流211+rk2+国奖,内心非常感恩母校。最终去向:重庆大学计算机学院。故事颇为曲折,稍攒经验,故作此文。 保研流程:夏令营——预推免——九推。本校保研名额往往是九月中旬左右,国家系统开放是9月28日。2020年由于疫情,情况特殊,系统延迟开放,开放时间是10月8日,正式填报是10月12日。(往届都是9.28) 夏令营(差不多五六月份开始) 阅读详情

数据库保研复习笔记

数据库相关概念

基本概念

数据Data

数据是数据库中存储的基本对象。数据的种类可以是数字、文本、图像、音频、视频等多种。

数据与信息的区别:

数据库 DB

数据库即存放数据的仓库。数据库中数据有永久存储、有组织、可共享三个特点。

数据库管理系统 DBMS

数据库管理系统是进行数据库管理的基础软件,其功能包括数据定义、组织、存储、管理、操纵,数据库的建立和维护,事务管理、运行管理等。

外模式:应用程序

模式:逻辑结构

内模式:物理结构

物理独立性:内模式改变不影响模式

逻辑独立性:模式改变不影响外模式

二级映像:

  • 外模式/模式映像:数据库的每一个外模式都有一个外模式/模式映像,它定义了外模式和模式之间的对应关系,一般在外模式中描述。当对某个字段重新修改关系、类型等时,只需要修改外模式/模式映像,而不需要修改外模式,由于应用程序是根据外模式编写的,因此应用程序也不需要修改,从而保证了逻辑独立性
  • 模式/内模式映像:这一映像存在于模式和内模式之间,定义了模式和内模式之间的对应关系。模式/内模式映像在数据库中是唯一的,因为一个数据库只有一个模式和内模式。

数据库系统 DBS

数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

与人工管理和文件系统相比,数据库系统的特点有:

  1. 数据结构化:指数据之间存在结构关系
  2. 数据共享性高、冗余度低且易扩充
  3. 数据独立性高
    • 物理独立性:用户应用程序与数据库中数据的物理存储相互独立,应用程序不需要了解数据库中是如何进行物理存储的
    • 逻辑独立性:用户应用程序与数据库中数据的逻辑结构相互独立,如果数据逻辑结构改变,应用程序也可以不变
  4. 数据是由数据库管理系统统一管理控制的。DBMS需要提供以下功能:
    • 数据安全性控制
    • 数据完整性控制
    • 并发控制
    • 数据库恢复

数据模型

数据模型可以分为两类,第一类是概念模型,第二类是逻辑模型和物理模型。

概念模型用于将现实世界抽象为某种信息结构,这种抽象与具体的数据库实现无关,可以应用于任何一种数据库。

逻辑模型是按计算机观点对数据建模,主要用于数据库管理系统的实现。

物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法。

概念模型

概念

实体:客观存在并可相互区别的事物称为实体

属性:实体的某种特性

码:唯一标识实体的属性,例如对学生而言,学号是码

实体型:用实体名和属性名集合来抽象刻画同类实体,称为实体型。例如:学生(学号,性别,年龄,所在院系)

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

联系:一对一、一对多、多对多

ER图

实体型用矩形表示,属性用椭圆表示,联系用菱形表示。用m、n、p表示多个,用1表示单个。(例题见第一次作业)

逻辑模型

层次模型、网状模型、关系模型

关系模型

一个关系对应一个表,表中的一行为一个元组,表中的一列是一个属性。分量指元组中的一个属性值。

关系数据库

候选码:能唯一标识一个元组的属性

主码:在候选码中选出一个属性来唯一标识元组,称为主码

完整性

实体完整性:主键不能为空

参照完整性:如果某元组的外键不为空,那么这个外键必须能够在外部表中有对应元组

用户定义完整性:用户自定义的一些约束

关系代数

并union:∪

差execpt:-

交intersection:∩

笛卡尔积cartesian product:×

选择selection:σ选择条件(关系R) 该运算的作用是从R中提取符合条件的元组

投影projection:ΠA® A是属性列,R是关系,该运算的作用是提取R中的列A

连接join:从两个关系的笛卡尔积中选择符合条件的元组(如果符号下没有写条件,则)

除运算division:

如果R(A, B, C)、S(B, C, D),则R÷S的结果是包含S中所有B、C组合的R中A的取值集合

运算符:>、<、=、≥、≤、<>(不等于)

SQL

表操作

定义表

定义一个属于用户WANG的模式

CREATE SCHEMA AUTHORIZATION WANG;

定义表

CREATE TABLE STUDENT(
	id VARCHAR(9) PRIMARY KEY,
    name VARCHAR(20),
    sex VARCHAR(2),
    major VARCHAR(10)
);

主键只有一个时,可以直接在属性后标注,如果主键由多个属性组成,必须作为表级完整性进行定义

CREATE TABLE Student(
	id VARCHAR(8),
    name VARCHAR(20),
    sex VARCHAR(2),
    PRIMARY KEY(id, name),
);

外键定义方法:

表示外键major参照Major表中的id属性

CREATE TABLE Student(
	id VARCHAR(8) PRIMARY KEY,
    name VARCHAR(20),
    major VARCHAR(10),
    FOREIGN KEY(major) REFERENCES Major(id), 
);

数据类型

类型原名含义
CHAR(n)CHARACTER长度为n的定长字符串
VARCHAR(n)CHARACTERVARYING最大长度为n的字符串
INTINTEGER长整数(4字节)
SMALLINT/短整数(2字节)
BIGINT/大整数(8字节)
REAL/单精度浮点数,其精度取决于机器
DOUBLE PRECISION/双精度浮点数,其精度取决于机器
FLOAT(n)/自定义精度浮点数,精度至少为n位数字
BOOLEAN/布尔值
DATE/日期,包括年月日
TIME/时间,包括时分秒
TIMESTAMP/时间戳类型
INTERVAL/时间间隔类型

修改表

// 修改Student表,加入入学时间列entrance,类型为DATE
ALERT TABLE Student ADD entrance DATE;
// 修改Student表,添加完整性约束
ALERT TABLE Student ADD FOREIGN KEY(entrance) REFERENCES date_table(date_id);
// 修改Student表,删除列entrance
ALERT TABLE Student DROP entrance;
// 修改Student表,删除完整性约束
ALERT TABLE Student DROP CONSTRAINT<完整性约束名>
// 修改Student表,将sex列的类型修改为BOOLEAN类型
ALERT TABLE Student sex BOOLEAN;

删除表

DROP TABLE <TABLE_NAME> RESTRICT|CASCADE;

RESTRICT表示约束,意味着如果表上有视图,则表不能删除。

CASCADE表示级联,意味着如果表上有视图,则删除表时将视图也级联删除。

数据操作

增

INSERT INTO Student(id, name, major)
VALUES(1, Meng, SOFTWARE);
// 插入子查询结果:将按照系分组后各系的平均成绩插入Grade表中
INSERT INTO Grade(major_id, avg_grade)
SELECT major, AVG(grade)
FROM Student
GROUP BY major;

删

DELETE
FROM Student
WHERE id=''20039454;
// 带子查询的删除
DELETE
FROM Student
WHERE id in
	(SELECT id
    FROM Student
    WHERE major = 'CS')

改

UPDATE Student
SET age=20
WHERE id='19373178';

UPDATE Student
SET age = age + 1;
// 带子查询的修改操作:将CS系的所有学生成绩置为0
UPDATE Student
SET grade = 0
WHERE id in
	(SELECT id
     FROM Student
    WHERE major='CS')

查

SELECT [all|distinct] id, name   // 默认为all,distinct为去重操作
FROM Student
[WHERE <条件表达式>]
[GROUP BY <按列分组>]
[ORDER BY <按列排序>] // 升序ASC,降序DESC,默认升序
WHERE子句的常用谓词

比较大小:>,<,=,>=,<=,!=,<>,!>(不大于),!<(不小于),NOT+上述运算符

确定范围:BETWEEN AND, NOT BETWEEN AND

确定集合:IN, NOT IN

字符匹配:LIKE, NOT LIKE(%任意长度字符串,_表示任意单个字符,\转义字符)

空值:IS NULL, IS NOT NULL

多重条件逻辑运算:AND, OR, NOT

WHERE age BETWEEN 20 AND 30
WHERE major IN ('CS', 'SOFTWARE', 'MATH')
WHERE name LIKE '张%'
WHERE grade IS NULL
WHERE name LIKE 'DB\_Design' ESCAPE'\'; // ESCAPE表示\是转义字符,字符串中的_不是通配符,而是本来的字符
ORDER BY
SELECT *
FROM Student
ORDER BY major, age DESC; // 学生按系号升序排列,同系学生按年龄降序排列
聚集函数

COUNT(*) // 统计元组数量

COUNT([ALL|DISTINCT] <列名>) // 统计一列中值的个数(去重)

SUM([ALL|DISTINCT] <列名>) // 统计一列中值的总和

AVG([ALL|DISTINCT] <列名>) // 统计一列中值的平均值

MAX([ALL|DISTINCT] <列名>) // 统计一列中值的最大值

MIN([ALL|DISTINCT] <列名>) // 统计一列中值的最小值

注意:WHERE子句中不能用聚集函数,聚集函数只能用于SELECT子句或GROUP BY子句中的HAVING子句

GROUP BY

GROUP BY按照某列分组,HAVING只输出符合某条件的分组

如下,按照专业分组,只输出专业人数大于3人的分组

SELECT *
FROM Student
GROUP BY major
HAVING COUNT(*) > 3

连接查询

SELECT Student.*, SC.course_name
FROM Student, SC
WHERE Student.id=SC.student_id

外连接

如下是一个左外连接的例子,左外连接列出左侧表中所有元组,如果左侧表中元组在右侧表中没有对应,就把对应位置置为NULL

SELECT Student.*, SC.course_name
FROM Student LEFT OUTER JOIN SC ON(Student.id = SC.student_id)

嵌套查询

in谓词

select * from student
where id in
	(select id from Major
    where major = 'CS')

比较运算符与ALL|ANY

select * from Student 
where grade > 
	(select AVG(grade)
    FROM SC
    WHERE Student.id = SC.id)

>ANY大于子查询中的任意一个值

>ALL大于子查询中的所有值

select * from Student
where grade > ALL(select grade from SC where Student.id=SC.id)

EXISTS谓词

若子查询结果不为空,则EXISTS谓词返回真,否则返回假

select * from Student
where EXISTS
	(select *
    from SC
    where Student.id=SC.id)

集合查询

交INTERSECT、并UNION、差EXCEPT

select * from Student
where major='CS'
UNION
select * from Student
where age>19;

派生表

select Sno, Cno
FROM SC, (select Sno, AVG(grade) FROM SC GROUP BY Sno) AS Avg_sc(avg_sno, avg_grade)
WHERE SC.Sno=Avg_sc.Sno and SC.grade>Avg_sc.avg_grade

索引

顺序文件上的索引、散列索引、B+树索引、位图索引等多种

如下语句意思是建立某表中某列对整个表的索引

CREATE [UNIQUE|CLUSTER] INDEX <索引名> ON <表名>(列名 [ASC|DSEC])

UNIQUE:此索引的每个索引值只对应一条记录

CLUSTER:此索引是聚簇索引

修改索引:

ALTER INDEX <旧索引名> RENAME TO <新索引名>

删除索引:

DROP INDEX <索引名>
索引的原理

B树

B+树

视图

视图是从一个或几个基本表中导出的表,但与基本表不同,视图是一个虚表,数据库中只存放视图的定义,视图包括的数据仍然存放在基本表中。

建立视图

CREATE VIEW <视图名> [(列名, 列名)]
AS <子查询>
WITH CHECK OPTION;

WITH CHECK OPTION表示对视图进行更新、插入、删除操作时要满足视图定义中的谓词条件,即子查询中的表达式

例如

CREATE VIEW Student_view(no, name, age)
AS
SELECT Sno, Sname, Sage
FROM Student
WHERE major='CS'
WITH CHECK OPTION

加上WITH CHECK OPTION后,对视图进行更新操作时,系统会自动加上where major='CS’的条件,也就是只能对视图内部的数据进行操作

使用视图进行查询时,将视图当作基本表来使用即可

删除视图

DROP VIEW <视图名>

可以说派生表是临时的,视图是永久的

Student(Sid, Sname, Ssex, Sage)

Course(Cid, Cname, Tname)

SC(Cid, Sid, grade)

---1.检索年龄大于20岁的男生的学号和姓名。
select Sid, Sname
from Student
where Sage>20 and Ssex='男'
---2.检索选修了姓刘的老师所教授的课程的女学生的姓名。
select distinct Sname
from SC, Student
where SC.Sid=Student.Sid and Ssex='女'
	and Cid in
	(select Cid
	from Course
	where Tname='刘老师')
---3.检索李想同学不学的课程的课程号和课程名。
select distinct Cid, Cname
from Course
where Cid not in
	(select Cid
    from SC, Student
    where SC.Sid=Student.Sid and Sname='李想')
---4.检索至少选修了两门课程的学生的学号。
select Sid
from SC
group by Sid
having COUNT(Cid) >= 2
---5.求刘老师所教授课程的每门课的平均成绩。
select AVG(grade)
from SC,Course
where SC.Cid=Course.Cid and Tname='刘老师'
group by Cid
---6.假设不存在重修的情况,请统计每门课的选修人数(选课人数超过两人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
select Cid, COUNT(*)
from SC
group by Cid
having COUNT(*) > 2
order by COUNT(*) DSEC, Cid ASC
---7.求年龄大于所有女生年龄的男生的姓名和年龄。
select Sname, Sage
from Student
where Ssex='男' and Sage > ALL
	(select Sage
    from Student
    where Ssex='女')
---8.假定不存在重修的情况,求选修了所有课程的学生的学号姓名。(可以不用相关子查询做)
select Sid, Sname
from Student,
	(select Sid, COUNT(*)
    from SC
    group by Sid)
    AS Num(num_id, course_num)
where Student.Sid=Num.num_id and course_num = (select count(*) from Course)
---9.查询重修次数在2次以上的学生学号,课程号,重修次数
select Sid, Cid, COUNT(*)
from SC
group by Sid, Cid
having COUNT(*) > 2
---10.查询重修学生人数最多的课程号,课程名,教师姓名
select SC.Cid, Cname, Tname
from SC, Course
where SC.Cid=Course.Cid
group by Cid, Sid
having COUNT(*) >= ALL
	(select COUNT(*)
    from SC
    group by Cid, Sid)

数据库保护

数据库安全性

用户身份鉴别(口令、生物特征、智能卡等)

存取控制

  • 用户权限(用户是否能进行某操作)、合法权限(指令是否合法)
  • 自主存取控制(授权)、强制存取控制(密级比较,用户许可证大于等于数据库密级可读,小于等于可写)

数据库完整性

数据库完整性是指数据的正确性和相容性。正确性指数据符合现实世界语义,相容性指数据库不同表之间逻辑关系合理。

实体完整性:主键唯一且不为空。违约处理:拒绝操作。

参照完整性:外键的值在参照表中有对应数据项。违约处理:1.拒绝操作;2.级联操作(参照表中数据项删除,则将作为外键引用该项的数据也删除);3.设置为空(参照表中数据项删除,则将作为外键引用位置置为空)

用户定义的完整性:用户自定义的约束,例如某列非空NOT NULL,列值唯一UNIQUE,检查是否满足某个表达式CHECK等

完整性约束使用CONSTRAINT子句定义

存储过程和触发器?

数据依赖

函数依赖

函数依赖:一个属性的值确定后另一个属性的值也唯一确定了。例如学号确定后,学生姓名也唯一确定,学生所在院系也唯一确定。类似于函数关系,自变量确定后因变量也唯一确定。

X函数确定Y或Y函数依赖于X,记作X→Y。

平凡的函数依赖:X→Y,且Y⊆X,则称X→Y是平凡的函数依赖。平凡的函数依赖一定成立。

非平凡的函数依赖:X→Y,且Y⊄X,则称X→Y是非平凡的函数依赖。

完全函数依赖:X函数确定Y,且X的任意真子集都无法函数确定Y

部分函数依赖:X函数确定Y,但X的某个真子集也可以函数确定Y,即Y不是完全函数依赖于X

传递函数依赖:X→Y,Y→Z,则X→Z

多值依赖

对于 Z=U-X-Y,给定一对值 (x, z),得到一组 Y,Y 只与 X 有关,与 Z 无关(X 是中转)

码

超码:一个元组部分依赖于一组属性,则这组属性称为超码。

候选码:一个元组完全依赖于一组属性,则这组属性称为候选码。

主码:选定一个候选码为主码。

全码:整个属性组构成一个主码,称为全码。

外码:表中存在其他表的主码。

码:候选码和主码统称为码

主属性:候选码或主码中的属性

非主属性:不在候选码中也不在主码中的属性

超码能唯一确定元组,而候选码是最小超码,也就是没有冗余元素。

范式

1NF:属性不可分。每个分量是不可分的数据项。

1NF存在的问题:

  1. 数据冗余。例如学生表中存了系和系主任,系主任在学生表中大量重复出现
  2. 更新异常。由于数据冗余,当系主任名字需要更新时,需要修改大量数据。
  3. 插入异常。如果把系存放在学生表中,当一个系刚成立还没有学生的时候无法插入。
  4. 删除异常。如果该系所有学生全部毕业,将学生删除后这个系及其系主任的信息也丢失了。

2NF:每个非主属性完全依赖于任何一个候选码。(消除表内的部份依赖)

反例:有的非主属性完全依赖于候选码中的一个属性,而部分依赖于候选码。

3NF:不存在非主属性传递依赖于码的情况,都是直接依赖(消除表内传递依赖)

BCNF:对每个X→Y,X中必有码

4NF:不存在多值依赖

事务

事务是数据库的逻辑工作单位,是进行数据库恢复和并发控制的基本单位

ACID特性:

原子性(Atomicity):事务中的操作要么都做要么都不做

一致性(Consistency):事务的执行结果是将数据库从一个一致性状态变到另一个

隔离性(Isolation):一个事务的执行不能被其他事务干扰

持续性(Durability):也称永久性,指一个事务一旦提交,它对数据库中数据的改变是永久性的

BEGIN TRANSACTION;
COMMIT;
ROLLBACK;

数据库恢复

原理:冗余

技术:数据转储和登记日志文件

  • 数据转储:定期保存到后备副本。故障发生时,将后备副本重新装入,然后运行自转储以后的所有事务。
    • 静态转储:在无事务运行时进行转储,得到的一定是一个数据一致性的副本
    • 动态转储:转储期间允许对数据库进行存取或修改。有可能转储结束后后备副本已经过时。
  • 登记日志文件:先写日志文件,再写数据库。日志文件中需要记录:事务的开始、结束标志和事务的更新操作

恢复策略:

  • 事务故障的恢复(事务内部发生错误,导致事务还未完成时发生故障)
    • 反向扫描日志文件,查找该事务的更新操作
    • 对更新操作执行逆操作
    • 直到读到事务的开始标记
  • 系统故障的恢复(系统发生故障。已提交事务可能还留在缓冲区没有写入数据库,未完成事务对数据库的更新可能已经写入数据库)(对已提交数据库进行REDO,对未完成事务进行UNDO)
    • 正向扫描日志文件,找出在故障发生时已经提交的事务(既有BEGIN TRANSACTION记录也有COMMIT记录)
    • 将其事务标记入重做队列REDO-LIST
    • 找出故障时尚未完成的事务(只有BEGIN TRANSACTION没有COMMIT)
    • 将事务标记入撤销队列
  • 介质故障(磁盘上的物理数据和日志文件被破坏)
    • 装入最新的后备副本
    • 装入日志文件副本,重做已完成的事务

检查点

记录检查点时刻所有正在执行的事务清单,以及这些事务最近一个日志记录的地址。

使用检查点可以提高恢复效率。

数据库写入发生在检查点建立之前或之时,那么在检查点之前提交的事务一定已经写入数据库,不需要REDO。检查点建立时正在执行的事务需要REDO。系统故障时未完成的事务需要UNDO。

使用检查点进行恢复的步骤:

  • 找到最后一个检查点
  • 由该检查点得到检查点建立时刻所有正在执行的任务清单ACTIVE-LIST。将ACTIVE-LIST暂时放入UNDO队列,REDO队列暂为空
  • 从检查点开始正向扫描日志文件:
    • 如果有新开始的事务,将其暂时放入UNDO队列
    • 如果有提交的事务,将其从UNDO队列移到REDO队列
    • 这样就实现了,系统故障时已完成的事务进行REDO操作,系统故障时未完成的事务执行UNDO操作
  • 对UNDO队列中的所有事务执行UNDO操作,对REDO队列的所有事务执行REDO操作

并发控制

并发操作破坏事务的隔离性,其带来的数据不一致问题有:

  1. 丢失修改:T1、T2两个事务同时读入同一数据并进行修改,T2提交的结果覆盖了T1的提交,导致T1的修改丢失。
  2. 不可重复读:事务T1读取某数据后,事务T2对其进行了修改,导致T1无法再现前一次的读取结果。
  3. 读脏数据:事务T1修改某一数据并将其写回磁盘后,事务T2读了这部分数据,但是随后T1由于某些原因被撤销,此时T2读到的数据与磁盘数据不一致,称之为脏数据。

控制方法:

  • 封锁
  • 时间戳
  • 乐观控制法
  • 多版本并发控制

排他锁(写锁X锁):一个事务对数据对象加排他锁后,其他事务不能再对该对象加任何锁

共享锁(读锁S锁):一个事务对数据对象加共享锁后,其他事务只能只能读而不能修改

一级封锁协议:修改之前必须加X锁,事务结束释放,防止丢失修改

二级封锁协议:读取之前必须加S锁,读完释放,防止读脏数据

三级封锁协议:读取之前必须加S锁,事务结束释放,防止不可重复读

活锁:事务饿死(T1封锁,T2、T3等待,分配给T3,T2、T4等待,分配给T4;T2一直等待)

防止活锁:先来先服务

死锁:循环等待

死锁的预防:

  • 一次封锁法
  • 顺序封锁法

死锁的诊断:

  • 超时法(事务超时即认为存在死锁)
  • 等待图法(等待图存在回路即认为存在死锁)

并发调度的可串行性

可串行化即并发执行的结果与按某一次序串行的结果相同。只有并发调度是可串行的,才认为它是正确调度。

冲突操作:不同事务的读写操作和写写操作。

不同事务的冲突操作和同一事务的操作是不可交换的,其他操作是可交换的。如果一个并发操作可以通过交换得到一个串行序列,则称它是冲突可串行的。

冲突可串行是可串行的充分条件。(不是必要)

两段锁协议:

事务分为两段,第一段是获得封锁,称为扩展阶段,第二阶段是释放封锁,称为收缩阶段

2021年计算机保研夏令营(从双非到南大软件学院) 保研是一场持久战,我从大一就有保研的想法,有意识的为保研做准备,看过很多经验帖,请教过多位保研成功的学长学姐,给了我很多帮助和建议,此篇博客旨在分享一些自己的推免经历。 个人背景 学校:江苏某双非软件工程专业,大学前三年学分绩点和推免综合排名都是专业第一 竞赛:数学建模竞赛(高教社杯省二,MathorCup三等),计算机设计大赛国二,蓝桥杯Java组国三 省一。没啥特别能拿的出手的比赛奖项,面试过程中感觉导师们不怎么在意学科竞赛(除了ICPC,CCPC)。 项目:1个目标检测相关的视频监控项目,2个 阅读详情

相关推荐

双非计算机保研之路(逆袭中上流985)

保研结束已经有段时间了,总结整理下自己的保研过程,算是对过去半年努力的回顾,也为后辈们提供些参考。 不得不说,今年的保研形式愈发严峻。中美关系紧张,留美难度增加,导致一些大佬转出国为保研,再加上清北研究生改革(缩减硕士名额等),Top学校的保研难度越来越大,层层影响下来,作为保研食物链底端的双非菜鸡,欲哭无泪啊。 个人情况 本科院校:普通双非(加上非双一流,也可以说是四非) 专业:软件工程...

冬泉谷 1万+

计算机专业保研面试复习笔记——数据库

文章目录事务ACID特性A,atomicity:原子性C,consistency:一致性I,isolation:隔离性D,durability:持久性索引数据库创建索引的好处增加索引的不利的方面哪些列应该建立索引哪些列不应该创建索引创建索引的方法基本的索引类型唯一性索引复合索引异常情况(并发一致性问题)丢失数据读脏数据不可重复读(非重复读)幻影读解决方案锁共享锁(S锁)更新锁(U锁)独占锁(X锁,也叫排他锁)范式函数依赖完全/部分函数依赖传递函数依赖码候选码(候选键)主码(主键)主属性非主属性全码第一范式(

weixin_43117620的博客 5770

计算机保研面试之专业课如何复习?

专业课的文档我们把优快云上的所有博客(四千多篇)经验贴字问到的专业课问题做了整理归纳,总结出来的这些面试比考的,找了很多人针对难度进行标星修订重要程度,即使是明天面试把星多的准备一下也能应付面试。 付费的内容包括: 1:这里把操作系统16问送给大家,后面还有数据结构(20问)、计算机网络(27问)、操作系统(16问)、计算机组成原理(8问)、以及编译原理(3问)、数据库(9问)、软件工程(9问)、编程语言(9问)、高数、线代(12问)、概率论(16问)离散数学(7问); 2:深度学习机器学习项目用.

党小板 3592

计算机专业保研面试复习笔记——计算机网络

文章目录三种协议五层协议应用层(对应七层协议中的应用层、表示层、会话层)运输层传输控制协议TCP用户数据报协议UDP网络层数据链路层物理层概念汇总对等层协议栈实体协议域名系统HTTPHTTP中GET和POST的区别TCP与UDPTCPUDPTCP与UDP的区别TCP实现可靠传输的方式停止等待协议流量控制拥塞控制TCP建立连接(三次握手)三次握手最后一次确认的原因TCP连接释放(四次挥手)关闭的时候比连接多一次握手的原因关闭时客户端需要进入TIME_WAIT状态,经过2MSL(最大报文段生存时间)才能关闭的原

weixin_43117620的博客 4770

北航计算机2018年保研推免经历

北航计算机2018年保研推免经历 最近没怎么写博客,是因为忙于保研的事情,今天只睡了5个小时一大清早就去第一个面了计算机,下午出了预录取名单,晚上上保研系统确定了志愿,可以说稍微有些宽下心来了。 我是从本校软件学院推免到计算机学院。 先上图 从之前的保研准备开始说起,说来惭愧,也只是刷了一些POJ的题目,可以见我之前的几篇博客,练得也是断断续续,但是勉强保持一点点状态,不过另一方面,这些题目涉...

VanciorH的博客 1万+

2020 我的计算机保研历程

本人情况 末九计科 6% 四级 558、六级 518 CCSP 一铜一银,ACM 一铁! 两个水项目 无科研经历 推免情况 由于对自身定位的认识不足,加之今年极度内卷的保研形式,以及线上面试的便利,我选择了海投。 夏令营 中国科技大学 计算机科学与技术学院(入营/参加)、南开大学 计算机学院(入营/未参加)、华东师范大学 软件学院(入营/未参加)、华东师范大学 计算机学院(入营/参加)、复旦大学 计算机学院(未入营)、山东大学 计算机学院(入营/参加)、南京大学 计算机科学与技术系

坤斤拷的博客 7513

计算机专业保研面试复习笔记——操作系统

死锁 定义 多个进程因循环等待资源而造成无法执行的现象 原因 进程互相申请对方占有的资源 条件 互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程可使用。如果另一进程申请该资源,那么申请进程应等到该资源释放为止。 持有并等待:一个进程应占有至少一个资源,并等待另一个资源,而该资源为其它进程所占有。 非抢占:资源不能被抢占,即资源只能被进程在完成任务后自愿释放。 循环等待:进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,P

weixin_43117620的博客 3849

保研经验分享--清深、交软、计算所、哈深、成电

保研经验分享–清深、交软、计算所、哈深、成电 这篇文章属于保研失败经验分享帖,记录三个月以来自己坎坷崎岖的保研之路。希望能够帮助到后来的学弟学妹,也算是给自己一个交代。 本文3700字,阅读时间约为10分钟。 (其实是感冒头晕看不进去论文的摸鱼之作)(也不知道我这罗里吧嗦的菜狗究竟能给谁借鉴) 文章目录保研经验分享--清深、交软、计算所、哈深、成电前言一、夏令营1.清深大数据2. 上交软院3.计算所泛在中心二.预推免1.哈工深2.电子科技大学计院3.浙大计院三 .总结 前言 个人情况简介:中游985软

weixin_48628281的博客 1万+

计算机专业保研面试复习笔记——数据结构中的重要算法

字符串匹配 KMP算法 判断模式串是否是主串的子串 对模式串的字符特点,求得next数组。next[i]代表如果第i位匹配失败,应该向后移动几位。时间复杂度O(m+n),即主串长度+模式串长度。是一种空间换时间的算法。 最小生成树 普里姆算法 加点法 普里姆算法是归并顶点的算法,与边数无关,所以适用于稠密图。 算法从某一个顶点s开始,将s加入已连接顶点集合,每次迭代选择已连接定点集合和未连接定点集合中代价最小的边对应的点,加入到最小生成树中。 最小生成树 克鲁斯卡尔算法 加边法 每次寻找不连通的两个顶点间

weixin_43117620的博客 2777

计算机专业保研攻略(二):研究方向与复习规划(必看干货)

目录写在最前读研的研究方向有哪些?人工智能(AI)机器学习(Machine Learning)数据挖掘(Data Mining)计算机视觉(Computer Vision)自然语言处理(Natural language Processing)信息检索(The Web & information retrieval )系统(System)计算机体系结构(Computer architecture)计算机网络(Computer Network)网络安全(Cyber Security)数据库(Databa

乔卿的博客 6372

从零到一:EHB-电机复合制动系统的Simulink仿真实战指南

本文详细介绍了EHB-电机复合制动系统在纯电动汽车中的Simulink仿真实战指南。通过系统概述、建模核心模块解析、控制策略开发及典型问题排查,帮助读者掌握从零到一的开发流程。重点讲解了液压子系统建模、电机再生制动模型及整车动力学集成,为开发者提供了一套完整的解决方案。

hh234的博客 1006

保研复习 vlog

讲道理看着自己的 bg(尤其是有点拉跨的 rk) 似乎并没有很大的希望去冲外校,但是博主不死心,还是还要努力挣扎一下。大概是看了看自己想去的学校(或者说希望比较大的),几乎都是强 com。哈哈哈这辈子有了(www)。所以开个帖记录一下自己从现在开始到夏令营、预推免甚至最后的九推(不过博主生性胆小,应该不可能去赌)的复习历程。

mathcode的博客 326

C#程序突然崩溃怎么办?5分钟学会分析Dump文件(Visual Studio 2022实战)

本文详细介绍了在C#程序崩溃或无响应时,如何捕获并分析Dump文件以快速定位问题。通过Visual Studio 2022实战演示,重点讲解了配置符号服务器、解读调用堆栈与内存状态,以及针对CPU飙高、内存泄漏等典型场景的分析方法,帮助开发者高效进行故障诊断。

docker8compose的博客 474

【北航软院】保研流程和保研经验介绍2022

介绍了从GPA、综测、获得推免资格,到夏令营、预推免、九推、获得接收资格的流程和注意事项,以及复习建议和面试经验,包括中科院软件所、北航计算机、北航软院、哈工大等。

unsignedccccc的博客 4751

华为无线WiFi实战:基于802.1x与NPS的企业级认证部署指南

本文提供了一份详尽的华为无线WiFi企业级认证部署实战指南。通过整合802.1x协议与Windows NPS服务器,构建基于AD域账号的安全认证体系,彻底解决传统WiFi密码共享带来的安全风险。文章详细拆解了从NPS服务器配置、证书部署到华为AC端RADIUS模板、AAA方案、认证域及VAP模板调用的全流程,并附有终端连接测试与常见故障排查方法,助力企业实现高效、安全的无线网络接入管理。

weixin_29239661的博客 267

DESeq2实战:如何用LRT检验分析基因表达随时间变化的模式(附完整代码)

本文详细介绍了如何使用DESeq2中的LRT检验分析基因表达随时间变化的模式,包括实验设计、数据预处理、模型构建、结果提取与可视化等完整流程。通过实战案例和完整代码,帮助生物信息学研究者掌握时间序列RNA-seq分析的核心技术,特别适合需要快速上手的实践者。

weixin_42620255的博客 466

2023计算机保研个人向记录

华师大数据、湖大信院、武大遥感、北师AI、厦大信院、东南网安

Leon_____的博客 2426

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 455

四非保研总结

3、对自己的项目、论文需要了如指掌,最好弄清楚每一个细节和每一个知识点以及与他相关的知识点,如果有余力的话最好学一下这个知识点所对应的最新的技术等等(例如卷积神经网络的为什么层数越多效果越好,如果你回答过程中提到了梯度下降,那么就会问你如果解决梯度下降),一般问项目问题都是某个概念,然后如果解决某个问题,最后解决这个问题的技术的概念是什么(例如:什么事梯度下降,如何解决梯度下降,使用残差网络解决,残差网络的结构是什么)我基本上面试了十多个211学校和两个985,计算机评级基本都是b以及以上的学校。

m0_68168438的博客 1436

COMSOL有限元仿真深度指南:为结构件添加预应变

一、什么是预应力和预应变? 我们知道,结构力学问题中,结构件在外载荷作用下产生变形响应以吸收外载荷做功带来的能量;而在结构内部,整体的受力和变形则是通过固体微元的应力与应变传递的。 对于线弹性材料来说,应力与应变的关系可以线性表达,也即 σ=Dεσ = Dεσ=Dε ;在该式中,无论固体微元的应变程度多大,弹性矩阵DDD都是一个不变的常值。而对于超弹性材料来说,应力与应变的关系则需要通过应变能密度函数WWW来表征(详细参加博客《COMSOL有限元仿真深度指南:超弹性模型有限元分析入门》)。 从上面我们也不难

忘了面孔的Batou 7170

复合材料仿真PAM-COMPOSITE 全工艺案例实操参数模板

复合材料仿真PAM-COMPOSITE 全工艺案例实操参数模板

源代码杀手的博客 275

项目经历成了保研标配?没有怎么办?

具体的考核方式也只是出现在个人陈述、个人简历以及面试当中,有一定的主观能动性,那我们可发挥的余地就有很多,重要的是看我们如何去。来打动面试官,复习要尽可能全面细致一些,主要以背诵理解为主,重点概念一定要牢牢记住,多次复习,在每一次面试前,重新复习所有科目的重点内容。在计算机领域,项目经历不仅可以展示一个学生的实际操作能力和解决问题的能力,更可以体现一个学生在计算机领域的专业知识和实践经验。在参与项目的过程中,可以找到自己感兴趣的创新点,如果能够争取在大三发表一篇论文的话,更是有力的加分点。

Baoyan_cs的博客 1668

YOLOv11改进 | 主干/Backbone篇 | 轻量化目标检测网络MobileViTv1改进yolov11有效涨点

本文给大家带来的改进机制是MobileViT系列的V1版本,其作为MobileNet网络的挑战者,其效果自然不用多说,MobileViT模型是为移动设备设计的轻量级、通用目的视觉变换器。它融合了卷积神经网络(CNN)和视觉变换器(ViT)的优势,旨在在保持高效性能的同时减少模型参数和降低延迟。通过其创新的MobileViT Block和多尺度训练方法,MobileViT在多个视觉任务上取得了优异的结果,欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。

Snu77的博客 2336

保研那些事

        不时总会有些师弟师妹询问我关于保研的一些事情,例如保研过程需要做那些准备?保研重视哪方面的事情等等,今天试着做个总结吧,也许能给师弟师妹一些参考的意见。         以下仅基于我个人(华南师范大学计算机学院2012级)保研的基本情况——国内升学,不包括出国留学等其他情况。         保研过程需要了解一下什么是推免资格?推免资格指,推荐优秀应届本科毕业生免试攻读研究生,...

yao伟斌 5402

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

211CS专业三无选手能保研外校吗?该怎么准备?

写在前面 2021年保研已经落下帷幕,今年的形势依旧是两个字——激烈!一个字——卷!保研就是“海王学校”和“鸽子学生”的一场博弈战。 相信大三的选手们对即将开打的新一轮保研战激动地搓手手了,但大多数同学可能担心自己没有像样的竞赛和科研项目,内心恐惧,开始担心三无选手(无论文、无科研、无竞赛)能否保研外校,211学校在保研高校中是不是”不受宠”呢? 岛主想说,只要用心准备,凡事皆有可能。既然知道了自己的短板,那我们就去最小化它们的影响,究竟应该怎么做呢?岛主认为以下4点最为重要! 01、 大三为简

Baoyan_cs的博客 838

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

2023双非转专业生计算机保研985经验分享

9.28终于接收了中南大学的拟录取通知,这个结果对于今年2023届严峻的保研形势下的双非鼠鼠来说已经是很满足了,因为我本人是转专业的,从原来的生物技术转到了极其内卷的软件工程,一直学的很吃力,但是还是成功保研到了中南大学。 我希望通过我的经历能给一些跟我有着类似经历的学弟学妹们一点帮助和启发,希望各位也能去到自己理想中的学校!

qq_53763141的博客 5812

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 【保研复习】数据结构复习笔记
下一篇: 【保研复习】C++机试笔记
拍坛对酒
博客等级 码龄6年 83粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值