笔试——数据库、网络、操作系统(Linux)

1、数据库

元组行,属性列
————————————————————————————————————————————————
模式:
Create Schema “s-t” Authorization username
Drop Schema s-t District/Cascade
————————————————————————————————————————————————
基本表
Create Table tablename
(
Sno CHAR(9) Primary Key;

);

Alter Table tablename
Add/Drop/Alter Column

Drop Table tablename (District/Cascade)
————————————————————————————————————————————————
索引
Create Unique/Cluster Index indexname
ON tablename(Sno ASC/DESC);
————————————————————————————————————————————————
数据查询
1、
SELECT Sname NAME, ‘Year of Birth’ BIRTH, 2004-Sage BIRTHDAY, LOWER(Sdept) DEPARTMENT
这里写图片描述

2、DISTINCT 消除取值重复的行
select DISTINCT sno,grade
from sc

3、
a%b(任意长度字符,表示至少两个字符)
a_b(单个字符,只表示3个字符)

4 、通配符 LIKE/NOT LIKE
select *
from Course
where Cname LIKE ‘DB_Design%i__’ ESCAPE ‘\’;
ESCAPE ‘\’表示\为转码字符。

5、空值查询
where Grade IS null
在排序中空值最大

6、查询某个学生选修课程的总学分数
select SUM(ccredit) / COUNT(DISTINCT Sno)
from SC, Coure
where Sno=’200215012’ AND SC.Cno = Coure.Cno

7、where having的区别
where作用于基本表、视图
having作用于组,group
例如:查询选修了3门以上课程的学生学号
select Sno
from SC
group by Sno
having COUNT(*) > 3
①查询( 选修了3门以上课程的 )学生学号
②COUNT(*) 统计元组个数,该聚集函数作用于每一个组
③group by Sno 按学号分组

8、聚集函数
COUNT( [ DISTINCT | ALL ] *) 统计元组个数
SUM/AVG/MAX/MIN

9、order by排序(ASC/DESC) group by分组
Select *
From Student
Where …
Order By dept, age DESC (按系号升序,同系年龄降序)

查询选修了3门以上课程的学生学号:
Select sno
From Sc
group by sno
Having Count(*) > 3
先按照sno进行分组,然后进行count的聚集计算。
where作用于基本表或视图,having作用于

10、连接查询、嵌套查询
IN/ANY(SOME)/ALL/EXISTS

查询所有选修了1号课程的学生姓名
Select sname
From Student
Where Exists
(
Select *
From Sc
Where Student.sno = sno AND
cno = ‘1’
);
【查询过程】在student表中,拿出一个sno,用此值去检查SC表,如果满足(Student.sno = sno AND cno = ‘1’),则取student.sname送入结果表。

11、集合查询
Union 并
Intersect 交
Except 差
————————————————————————————————————————————————
数据更新
Insert Into SC(sno, cno)
Values ….

Update table_name
Set age = age+1
Where …

Delete From table_name
Where ..
————————————————————————————————————————————————
视图
Create View view_name( col _name … )
As
<子查询> //where子查询中不能包括:order by/distinct
[With Check Option] //进行update/insert/delete时保证子查询中的条件表达式

Drop View view_name [Cascade]
————————————————————————————————————————————————
触发器
Create Trigger trigger_name
Before/After Insert or Update
On table_name
For Each Row/Statement (行级或语句级触发器)
————————————————————————————————————————————————
候选码,候选码就是可以区别一个元组(即表中的一行数据)的属性或属性的集合,比如学生表student(id,name,age,sex,deptno),其中的id是可以唯一标识一个元组的,所以id是可以作为候选码的,既然id都可以做候选码了,那么id和name这两个属性的组合可不可以唯一区别一个元组呢?显然是可以的,
此时的id可以成为码,id和name的组合也可以成为码,但是id和name的组合不能称之为候选码,因为即使去掉name属性,剩下的id属性也完全可以唯一标识一个元组,就是说,候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了,给候选码下一个精确的定义就是:可以唯一标识一个元组的最少的属性集合。而码是没有最少属性这个要求的。
另外,一个表的候选码可能有多个,从这些个候选码中选择一个做为主码,至于选择哪一个候选码,这个是无所谓的,只要是从候选码中选的就行。
至于主属性,刚才提到了,一个表可以有多个候选码,那么对于某个属性来说,如果这个属性存在于所有的候选码中,它就称之为主属性

范式:
第一范式(1NF):属性不可分。

第二范式(2NF):符合1NF,并且,非主属性完全依赖于码。
(注意是完全依赖不能是部分依赖,设有函数依赖W→A,若存在XW,有X→A成立,那么称W→A是局部依赖,否则就称W→A是完全函数依赖)
有关系模式:S-L-C(sno, sdept, sloc, cno, grade) 非主属性sdept sloc并不完全函数依赖于码sno。

第三范式(3NF):符合2NF,并且,消除传递依赖(也就是每个非主属性都不传递依赖于候选键,判断传递函数依赖,指的是如果存在”A → B → C”的决定关系,则C传递函数依赖于A。)

BC范式(BCNF):符合3NF,并且,主属性不依赖于主属性(也就是不存在任何字段对任一候选关键字段的传递函数依赖)
参考:http://blog.csdn.net/kaiwii/article/details/7365758
————————————————————————————————————————————————
事务:
开始事物: Begin Transaction
提交事物: Commit
回滚事务:Rollback

4个属性
● Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
● Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
● Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立
● Durability(持久性):事务结束后,事务处理的结果必须能够得到固化

数据恢复
数据转储
日志文件(按并发事务执行的时间次序、先写日志文件,后写数据库)

撤销队列:反向扫描日志文件(故障发生时,尚未完成的事务)
重做队列:正向扫描(故障前已经提交的事务)

并发控制:
事务是并发控制的基本单位

2、网络

这里写图片描述

网络层:

IP地址:网络号+主机号

IP地址与硬件地址的区别:《计算机网络5th》P117
一个路由器至少拥有两个IP地址和物理地址

ARP IP addres -> 物理地址
地址解析协议(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机(ARP请求),并接收返回消息,以此确定目标的物理地址;收到返回消息(ARP响应)后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射。

RARP 物理地址 -> IP地址
反向地址转换协议(Reverse Address Resolution Protocol) 允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址

ICMP
ICMP是(Internet Control Message Protocol)Internet**控制**报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

IGMP
Internet 组管理协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。

划分子网的路由器转发分组算法:《计算机网络5th》P134

————————————端口号———————————————————————————————————————
端口:0
服务:Reserved
说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。

端口:1
服务:tcpmux
说明:这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,默认情况下tcpmux在这种系统中被打开。Irix机器在发布是含有几个默认的无密码的帐户,如:IP、GUEST UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。许多管理员在安装后忘记删除这些帐户。因此HACKER在INTERNET上搜索tcpmux并利用这些帐户。

端口:7
服务:Echo
说明:能看到许多人搜索Fraggle放大器时,发送到X.X.X.0和X.X.X.255的信息。

端口:19
服务:Character Generator
说明:这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时会发送含有垃圾字符的数据流直到连接关闭。HACKER利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。同样Fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。

端口:21
服务:FTP
说明:FTP服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口。

端口:22
服务:Ssh
说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在。

端口:23
服务:Telnet
说明:远程登录,入侵者在搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马Tiny Telnet Server就开放这个端口。

端口:25
服务:SMTP
说明:SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的E-MAIL服务器上,将简单的信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口。

端口:53
服务:Domain Name Server(DNS)
说明:DNS服务器所开放的端口,入侵者可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其他的通信。因此防火墙常常过滤或记录此端口。

端口:67
服务:Bootstrap Protocol Server
说明:通过DSL和Cable modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址。HACKER常进入它们,分配一个地址把自己作为局部路由器而发起大量中间人(man-in-middle)攻击。客户端向68端口广播请求配置,服务器向67端口广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。

端口:69
服务:Trival File Transfer
说明:许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常由于错误配置而使入侵者能从系统中窃取任何 文件。它们也可用于系统写入文件。

端口:79
服务:Finger Server
说明:入侵者用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其他机器Finger扫描。

端口:80
服务:HTTP
说明:用于网页浏览。木马Executor开放此端口。
———————————————————————————————————————————————————————
【ping/tracert命令基于ICMP协议】

 当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP、TCP、HTTP等),以及服务器等各种参与对象上由此引发的一系列活动,请尽可能的涉及到所有的关键技术点。

● DNS Lookup 先获得URL对应的IP地址      
● Socket Connect 浏览器和服务器建立TCP连接
● Send Request 发送HTTP请求 浏览器发出取文件命令 get
● Content Download 服务器发送响应 服务器给出响应
①获取IP地址
②建立TCP连接
③HTTP传输 (发送HTTP请求、响应HTTP请求、传输数据)
————————————————————————————————————————————————————————
① 进行DNS域名解析(先获得URL对应的IP地址)
首先是查找浏览器缓存,浏览器会保存一段时间你之前访问过的一些网址的DNS信息,不同浏览器保存的时常不等。
如果没有找到对应的记录,这个时候浏览器会尝试调用系统缓存来继续查找这个网址的对应DNS信息。
如果还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息。
如果还是没有,这个请求就会被发送到ISP(注:Internet Service Provider,互联网服务提供商,就是那些拉网线到你家里的运营商,中国电信中国移动什么的),ISP也会有相应的ISP DNS服务器。题外话:会跑到这里进行查询是因为你没有改动过”网络中心”的”ipv4”的DNS地址,万恶的电信联通可以改动了这个DNS服务器,换句话说他们可以让你的浏览器跳转到他们设定的页面上,这也就是人尽皆知的DNS和HTTP劫持,ISP们还美名曰“免费推送服务”。强烈鄙视这种霸王行为。我们也可以自行修改DNS服务器来防止DNS被ISP污染。
如果还是没有的话, 你的ISP的DNS服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。所以这些服务器有真正完整的DNS数据库。如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者卖域名的把它回收掉了(通常是因为欠费)。
这也就是为什么打开一个新页面会有点慢,因为本地没什么缓存,要这样递归地查询下去。
多说一句,例如”mp3.baidu.com”,域名先是解析出这是个.com的域名,然后跑到管理.com域名的服务器上进行进一步查询,然后是.baidu,最后是mp3,
所以域名结构为:三级域名.二级域名.一级域名。
② 浏览器给这个IP的服务器发送一个http请求
浏览器终于得到了IP以后,浏览器接着给这个IP的服务器发送了一个http请求,方式为get,例如访问nbut.cn
这里写图片描述
这个get请求包含了主机(host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的”代理人”,Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求的内容后不要断开连接,不断开的话下次继续连接速度就很快了。其他的顾名思义就行了。
还有一个重点是Cookies,Cookies保存了用户的登陆信息,在每次向服务器发送请求的时候会重复发送给服务器。Chrome上的F12与Firefox上的firebug(快捷键shift+F5)均可查看这些信息。
发送完请求接下来就是等待回应了,如下图:
这里写图片描述
③ WEB服务器解析HTTP请求
当然了,服务器收到浏览器的请求以后(其实是WEB服务器接收到了这个请求,WEB服务器有iis、apache等),它会解析这个请求(读请求头),然后生成一个响应头和具体响应内容。
接着服务器会传回来一个响应头和一个响应,响应头告诉了浏览器一些必要的信息,例如重要的Status Code,2开头如200表示一切正常,3开头表示重定向,4开头,如404,呵呵。响应就是具体的页面编码,就是那个……,浏览器先读了关于这个响应的说明书(响应头),然后开始解析这个响应并在页面上显示出来。在下一次CF的时候(是http://codeforces.com/),由于经常难以承受几千人的同时访问,所以CF页面经常会出现崩溃页面,到时候可以点开火狐的firebug或是Chrome的F12看看状态。
如果是个静态页面,那么基本上到这一步就没了,但是如今的网站几乎没有静态的了吧,基本全是动态的。所以这时候事情还没完,根据我们的经验,浏览器打开一个网址的时候会慢慢加载这个页面,一部分一部分的显示,直到完全显示,最后标签栏上的圈圈就不转了。
这里写图片描述
这是因为,主页(index)页面框架传送过来以后,浏览器还要继续向服务器发送请求,请求的内容是主页里面包含的一些资源,如图片,视频,css样式等等。这些”非静态”的东西要一点点地请求过来,所以标签栏转啊转,内容刷啊刷,最后全部请求并加载好了就终于好了。
这里写图片描述
需要说明的是,对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。缓存的内容通常也不会保存很久,因为难保网站不会被改动。

这里写图片描述
参考:http://www.huashengjp.com/zonghepindao/shehuixinwen/shehuiqiwen/201501/00140971.html

TCP连接与释放

①TCP三次握手连接
客户端A 服务端B
A向B发送SYN同步报文 进入SYN-SENT 同步已发送状态
B向A发送ACK + SYN 确认同步 进入SYN-RCVD同步已收到状态
A向B发送ACK 再次确认同步。 进入ESTAB-LISHED已连接状态
第三次的作用是(即客户端向服务器的第二次确认):
防止客户端第一次发给服务器端的连接请求的报文因滞留而延误发送给服务器,导致服务器第二次给出确认(第一次给出的确认(是正确的)是在客户端长时间未得到回复后,再次发送第二个连接请求,服务器给出的连接确认。)。
当服务器第二次给出确认时,客户端可不予理睬,因为它本身知道自己不需要连接服务器了,之前已经连接过了。再次确认客户端是否真的需要连接。
TCP规定,SYN同步报文段不发送数据,所有第三次确认时可用携带数据。
——————————————————————————————————————————————————————
TCP Flags:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次为URG,ACK,PSH,RST,SYN,FIN。每个标志位的意思如下:
URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;
ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;
PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;
RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;
SYN:表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK=0;连接被响应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来 ,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手;
FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。

这里写图片描述
这里写图片描述

第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。

参考:简析TCP的三次握手与四次分手

②TCP连接释放
客户端A 服务端B
首先,A向B发送终止连接报文,B向A发送确认 此时A->B的方向连接中断,但B仍可以向A发送数据。
然后,B向A发送终止连接报文,A向B发送确认 此时B->A的方向连接中断,整个连接终止。

3、操作系统

1、Linux常用命令
http://blog.csdn.net/ljianhui/article/details/11100625

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值