0%

数据查询(接上节课):

带有谓词in的子查询:

1
2
SELECT sname FROM s,sc WHERE s.sno=sc.sno AND cno='c2';
SELECT sname FROM s WHERE sno in (SELECT sno FROM sc WHERE cno='c2');//嵌套查询先做里面的SELECT

带有ANY和ALL的比较子查询:

1
SELECT s.sno,sname FROM s WHERE sec='男' AND s.sno=sc.sno GROUP BY s.sno HAVING AVG(grade)>ALL (SELECT grade FROM s,sc WHERE s.sno=sc.sno AND sex='女')//找男同学,平均分大于所有女同学的分

带有存在量词EXISTS子查询:

1
2
SELECT sname FROM s WHERE sno NOT IN (SELECT sno FROM sc WHERE cno='c2');
SELECT sname FROM s WHERE NOT EXISTS (SELECT * FROM sc WHERE cno='c2' AND s.sno=sc.sno);//存在量词是先做外面再做里面的

SQL语言只有存在量词,不支持全称量词:

查询所有学生都选修的课程号和课程名==没有学生不选修的课程号和课程名 \[ (\forall x)P\equiv\neg(\exist x)\neg P \]

1
SELECT cno,cname FROM c WHERE NOT EXISTS (SELECT * FROM s WHERE NOT EXISTS (SELECT * FROM sc WHERE sno=s.sno AND cno=c.cno))//不存在一个学生不选

SQL不支持逻辑蕴含:

求选修学号为S3的学生所修全部课程的学生号码 \[ (\forall c_y)(p \rightarrow q) \\ \equiv \neg(\exist c_y)\neg(p \rightarrow q) \\ \equiv \neg(\exist c_y)\neg(\neg p \lor q) \\ \equiv \neg(\exist c_y)( p \land \neg q) \]

1
SELECT sno FROM sc x WHERE NOT EXiSTS (SELECT * FROM sc y WHERE sno='s3' AND NOT EXISTS (SELECT FROM sc z WHERE sno=x.sno and cno=y.cno))

SQL的数据操作:

1.数据插入

2.数据删除

1
2
3
DELETE FROM<表名> WHERE
DELETE FROM s WHERE sno NOT IN (SELECT sno FROM sc)
DELETE FROM sc WHERE cno IN (SELECT cno FROM c WHERE cname='数据库原理')

3.数据修改

1
2
3
UPDATE<表名> SET<列名>=<表达式>
UPDATE sc SET grade=grade*1.04 WHERE grade>=70
UPDATE sc SET grade=grade*1.05 WHERE grade<70

实验要求:

第一题:给定一个矩阵, 判断是否存在单位矩阵,并给出所在列

金泓宇的弱智思路:因为早起智商低下,所以就定义一个Mat单位阵,然后一点一段划过去判断能不能合上

1
2
3
4
5
6
7
8
9
10
11
12
function [yt] = whethereye(A,m,n)
yt=6.19;
M=min(m,n);
x=m-M+1;y=n-M+1;
Mat=eye(M,M);
for i=1:x
subA=A(:,i:i+M-1)
if(subA==Mat)
yt=i;
end
end
end

第二题:高斯消元解方程

就正常按高斯消元的步骤就好,做的时候因为偷懒看了上学期的作业,行和列还给搞反了,看了半天怎么系数那一列做完都不动的

1
2
3
4
5
6
7
8
9
10
11
12
13
function[x]=gauss_elim(A,b)
C=[A,b];
[m,n]=size(A);
for i =1:n
C(i,:) = C(i,:)/C(i,i);
for j =1:n
if i~=j
C(j,:)= C(j,:)-C(i,:).*C(j,i)
end
end
end
x=C(:,n+1);
end

开环系统和闭环系统的抗扰动性能对比

实验目的:设输入电压为0时,扰动信号Td(s)=1/s,分别比较在无转速计开环控制状态下和有转速计闭环控制状态下电机输出转速稳定误差。

开环系统:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
%Speed Tachometer Example
Ra=1;Km=10;j=2;f=0.5;Kb=0.1;
num1=[1];den1=[j,Kb];sys1=tf(num1,den1);
num2=[Km*Kb/Ra];den2=[1];sys2=tf(num2,den2);
sys_o=feedback(sys1,sys2);
%
sys_o=-sys_o
%
[yo,T]=step(sys_o);
plot(T,yo)
title('Open-loop Disturbance Step Response')
xlabel('Time (sec)'),ylabel('\omega_o'),grid
%
yo(length(T))

实验结果:

开环系统

闭环系统:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%Speed Tachometer Example
Ra=1;Km=10;J=2;b=0.5;Kb=0.1;Ka=54;Kt=1;
num1=[1];den1=[J,b];sys1=tf(num1,den1);
num2=[Ka*Kt];den2=[1];sys2=tf(num2,den2);
num3=[Kb];den3=[1];sys3=tf(num3,den3);
num4=[Km/Ra];den4=[1];sys4=tf(num4,den4);
sysa=parallel(sys2,sys3);
sysb=series(sysa,sys4);
sys_c=feedback(sys1,sysb);
%
sys_c=-sys_c
%
[yc,T]=step(sys_c);
plot(T,yc)
title('Closed-loop Disturbance Step Response')
xlabel('Time (sec)'),ylabel('\omega_c(rad/sec)'),grid
%
yc(length(T))

实验结果:

开环系统

这是一门数学课,mly说不多学点数学就没有以后了

构建模型的步骤:

1.从问题描述中筛选出数据和参数

2.定义决策变量集合

3.基于数据和决策变量构建目标函数

4.建立等式或不等式约束条件

课程主要内容:

线性规划:图解法,单纯形法

非线性规划:无约束和有约束问题,梯度下降,牛顿法

整数规划

动态规划:多阶段决策过程最优化

叮咣太ppt做的不行

线性规划

线性规划的数学模型的三要素:

目标函数,决策变量,约束条件

线性规划模型的特征:约束条件是一组多个决策变量的不等式或等式

线性规划问题的标准形式: \[ maxZ = \sum_{j=1}^nc_jx_j\\\sum^n_{j=1}a_{ij}x_j = b_i, i =1,2,\ldots,n\\x_j \geq 0,j =1,2,\ldots,n \] 线性规划问题转换标准形式:

目标函数的转换:如果是求极小值,就Z‘=-Z

变量的转换:无约束变量

闭环比开环适应性好

第四章 结构化查询语言

因为学校的弱智安排,第一周要上机,所以从第四章开始讲

数据库里不做排序的,用的是索引提高查询速度 (因为排序会造成数据冗余)

SQL组成:

数据定义:CREATE,ALTER,DROP

查询语句:SELECT

HAVING(分组,和分组有关用这个)WHERE(选行,分组没关用这个)

基本查询(都是单表查询):

1
2
3
4
5
SELECT sno,sname FROM s; //从s表查sno sname
SELECT * FROM s; //查询s表所有信息 *表示所有
SELECT sname,2021-age 出生年份 FROM s;//查学生名字和出生年份
//表达式取名字 1.字段 AS 名称 2.字段 名称
SELECT distinct sno FROM sc; //distinct 去除重复行

查询——选择行:多个WHERE

通配符:%多个字符, _单个字符

LIKE是模糊匹配,=是精确匹配

1
2
3
4
5
6
7
8
SELECT * FROM s WHERE age<2021-1995; //查询年龄小于2021-1995
SELECT sname FROM s WHERE age>=20 AND age<=25; // 数据在两者之间可以用BETWEEN AND
SELECT sname FROM s WHERE age BETWEEN 20 AND 25;
SELECT sno,grade FROM sc WHERE cno='c1' OR cno='c4' OR cno='c6';// IN 的运算符判断前值是否在后集合
SELECT sno,grade FROM sc WHERE cno IN ('c1','c4','c6');//所有字符型数据一定要加单引号
SELECT sno FROM sc WHERE grade IS NULL;//判断成绩为空
SELECT sname FROM s WHERE sname LIKE '%敏%';
SELECT sname FROM s WHERE sname LIKE '刘__' OR sname LIKE '王__';

单表查询——聚合函数:

1.COUNT——统计行的个数,count+列名 统计该列值的个数

2.SUM——该列求和 AVG MAX MIN

1
2
3
4
5
SELECT COUNT(distinct sno) AS 人数 FROM sc;
SELECT COUNT(*) 次数 FROM sc;
SELECT MAX(age) AS 老大,MIN(age) AS 老小 FROM s;//最大最小
SELECT COUNT(sno) FROM s WHERE age>=19 AND sex='女';
SELECT AVG(grade) 平均分,SUM(grade) 总分 FROM sc WHERE sno='s1';

单表查询——分组排序:

查询结果分组:

1
2
SELECT COUNT(sno) FROM sc GROUP BY cno;//这样写只有一堆数字
SELECT cno,COUNT(sno) FROM sc GROUP BY cno;//这样写才在前面有课程号

SQL规定:GROUP BY出现的列名 一定要在SELECT里出现

SQL Server规定:SELECT里写的GROUP BY里要出现,但不一定代表按此分组

1
2
3
SELECT sno FROM sc GROUP BY sno HAVING count(cno)>1; //选课超过一个的学生学号
SELECT sex,COUNT(sno),AVG(age) FROM s GROUP BY sex;
SELECT sno FROM sc GROUP BY sno HAVING MIN(grade)>70 ;//每门课都超过七十分

查询结果排序:

1
2
SELECT cno,count(sno),SUM(grade) FROM sc GROUP BY cno ORDER BY 3 ASC,2 DESC; //SELECT后面的顺序
SELECT sno,count(cno) FROM sc GROUP BY sno HAVING COUNT(cno)>5 ORDER BY 2 DESC, 1 ASC;//默认升序

多表查询(大的要来了)

联接操作:

INNER JOIN 内联接(两张表要有相同的,张三和张三接一起)

CROSS JOIN 交叉联接(啥关系也没有连一起)

自身联接:

1
2
3
SELECT sno FROM sc GROUP BY sno HAVING COUNT(cno)>=2;
SELECT DISTINCT x.sno FROM sc x,sc y WHERE x.sno=y.sno AND x.cno<>y.cno;//自身联接 同一个人的课程号不同
SELECT DISTINCT x.sno,sname FROM s,sc x,sc y WHERE s.sno=x.sno AND s.sno=y.sno AND x.cno='c1' AND y.cno='c2';

复合条件联接:

1
2
3
SELECT sname,grade FROM s,sc,c WHERE s.sno=sc.sno AND c.cno=sc.cno AND cname='VB' AND grade>70;//查修了VB且超70
SELECT s.sno,sname FROM s,sc WHERE s.sno=sc.sno GROUP BY s.sno HAVING min(grade)>70
SELECT sno,sname,count(cno) FROM s,sc WHERE s.sno=sc.sno GROUP BY s.sno HAVING COUNT(cno)>5 ORDER BY 3 DESC,1

这个故事叫:

哭也哭了 骂也骂了 觉也睡了

该干活了

应用层 <----> 数据传输层

数据传输层提供 socket api

网络应用的体系结构:

客户端——服务器模式(C/S)

服务器:持续运行 相应资源 软件 硬件数据资源都在服务器上

客户端:可以有动态地址 请求资源

问题:可扩展性差 架构随着用户的增加 达到阈值时 性能急剧下降

​ 可靠性差 需求服务器持续运行

对等体 (P2P)

平滑扩展 几乎没有持续运行的服务器

节点提供的服务能力仅在其上线时提供

混合体(C/S & P2P)

Napster QQ

双方的通信是P2P 注册是C/S

进程通信

问题:标识自己的地址 唯一的地址 别人能定位到

​ 使用传输层的api

寻址:在哪个主机ip 是TCP/UDP 在哪个端口

telnet: 23 web: 80 ftp: 21

应用进程间的通信可以由两个端节点表示

层间接口携带的信息:谁发的 发给谁 发了什么

端口号(port) ip是主机的标识 ip上有很多的应用进程

socket:使得通信的信息量变少 便于管理

lfy:不仅是有的同学 很多教计算机的老师 张口就是乱说

​ 中国人写书都是很功利的目的 所以现在写的书都很差

​ 以后上课关起门来 我叫自己朕 你们叫我陛下

lfy说要考的:硬件做的是指令系统 用的是指令集

​ 什么是函数 什么是系统空间调用

1.3.2共享

lfy:你们一起在教室上课,就是共享了我(?)

共享会有安全性问题

1.3.3虚拟

时分复用技术——虚拟处理机技术——虚拟设备技术

操作系统本身就是虚拟机 是一个资源管理器

eg. 硬盘—文件

​ cpu—进程&&线程

1.3.4异步 (Asynchronism)

我们写的程序是顺序执行的 但是计算机内的许多程序是并发运行的

各个程序跑的有快有慢

1.4 操作系统的主要功能

1.4.1处理器管理功能/进程管理功能 (1.控制进程 2.进程同步 3.进程通信 4.调度)

​ 计算机层次:

​ APP APP APP

​ —————— (房管指令)

​ OS

​ —————— (指令集)

​ 硬件

1.4.2存储器管理功能

1.内存分配 内存操作系统给出去了也可以收回来

(1)给程序分配内存空间(2)提高存储器利用率(3)允许正在运行的程序申请附加的内存空间

2.内存保护

3.地址映射 将地址空间中逻辑地址转换为内存空间中对应的物理地址

4.内存扩充

1.4.3设备管理功能

(1)完成I/O请求 完成指定的I/O操作

主机五层:应用 运输 网络 链路 物理

路由器三层:网络 链路 物理

链路是一条无源的点到点的物理线路段,中间没有任何其他交换节点

数据链路:除了物理线路之外,必须有通信协议来控制数据的传输。把这些协议的硬件和软件加在链路上,就构成了数据链路

常用方法:数据链路层的工作由适配器(网卡)实现协议的硬件和软件

3.1封装帧

在一段数据的前后分别添加首部和尾部

数据链路层的帧长是首部+尾部+MTU

MTU:帧的数据部分的帧长

利用控制字符封装: 开始符:SOH(START OF HEAD) 结束符:EOT (END OF TEXT)

3.2透明传输

当数据中出现控制字符时 在SOH和EOT前加入转义字符“ESC”(其编码为1B)

如果转义字符也出现在数据当中,在其之前再插入一个转义字符,当连续接受两个转义字符时,删除前面的一个

3.3差错检测

传输错误的比特占总比特的比例为误码率BER(Bit Error Rate)

误码率和信噪比有很大关系

汉明距离:

如果要检测e个差错,则编码集的汉明距离至少为e+1

如果要纠正t个差错,则编码集的汉明距离至少为2t+1

如果要检测e个差错,同时纠正t个差错,则编码集的汉明距离至少为e+t+1

eg.纠错 000000 000111 111000 111111 汉明距离=3

​ 010111 恢复为 000111 错一位

3.4差错控制编码

奇偶检验码:在数据码后附加一个校验位,使构成的码组中1的个数为奇数,或偶数

0100101(0)奇校验

0100101(1)偶校验

奇偶检验码只能检测出奇数个错误,无法检测出偶数个错误,但是实践简单

使用水平/二维奇偶检验

3.5数据的可靠传输和流量控制

实用的停止等待协议:

在实际的数据传输过程中,传输差错是不可避免的

传输差错导致接收的数据帧差错,接收方要求发送方重发数据帧

(a)正常情况 A DATA0 -> B -> ACK -> A -> DATA1 ->B ->ACK

(b)数据帧错误 A DATA0 -> B ->(出错) NAK -> A -> DATA0 ->B ->ACK

(c)数据帧丢失 A DATA0 -> B ->(丢失) (重传) A -> DATA0 ->B ->ACK

(d)确认帧丢失 A DATA0 -> B -> ACK(丢失) A -> DATA0 ->B ->ACK(要是再要就从鸿福了)

所以需要解决接收方的重传问题

超时重传技术:

结点A发送完一个数据帧是,就启动一个超时计时器,此计时器又称定时器

重复帧问题:(应答帧丢失导致)

每个数据帧带上不同的发送序号,每发送一个新的数据帧就把序号加1

帧的编号问题:任何的编号系统的序号所占用的比特数都是有限的,因此在一段事件后,发送的序号就会重复

老佛爷吐槽:中国人说话一直没什么逻辑

老佛爷技能:把粉笔往地上一丢 粉笔就断了

1.在核心态下运行的软件

interface 接口 操作系统是一个硬件上的软件平台 在操作系统上进而运行application

文件是操作系统虚拟出来的概念 离开了操作系统就没有这个概念

1.2.3多道批处理系统

中断是做切换的trigger

1.3.1并发

并行是好几个事情一起发生

并发是好几个事情在同一个时间