Linux,计算机网络,数据库,操作系统
- 一、Linux
- 1、linux查看进程
- 2、linux基本命令
- 3、top命令、查看磁盘
- 二、计算机网络
- 1、HTTP的报文段
- 请求 Repuest
- 响应 Response
- 2、HTTP用的什么连接
- 3、TCP的三次握手与四次挥手
- 三次握手
- 四次挥手
- 4、在浏览器中输入一个网址它的运行过程是怎样的
- 5、get和 post区别
- 6、tcp和udp的区别
- 7、http和https区别
- 三、数据库
- 1、数据库事务
- 2、Redis
一、Linux
1、linux查看进程
ps命令
ps命令查找与进程相关的PID号
ps a 显示现行终端机下的所有程序,包括其他用户的程序
ps -A 显示所有程序
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示
ps -e 此参数的效果和指定"A"参数相同
ps e 列出程序时,显示每个程序所使用的环境变量
ps f 用ASCII字符显示树状结构,表达程序间的相互关系
ps -H 显示树状结构,表示程序间的相互关系
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外
ps s 采用程序信号的格式显示程序状况
ps S 列出程序时,包括已中断的子程序资料
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况
ps u 以用户为主的格式来显示程序状况
ps x 显示所有程序,不以终端机来区分
最常用的方法是ps aux
2、linux基本命令
1、file
作用:file通过探测文件内容判断文件类型,使用权限是所有用户
格式:file [options] 文件名
options]主要参数
-v:在标准输出后显示版本信息,并且退出
-z:探测压缩过的文件类型
-L:允许符合连接
2、mkdir
作用:mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户
格式:mkdir [options] 目录名
[options]主要参数
-m, --mode=模式:设定权限<模式>;,与chmod类似
-p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误
-v, --verbose:每次创建新目录都显示信息
--version:显示版本信息后离开
3、grep
作用:grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户
格式:grep [options]
[options]主要参数
-c:只输出匹配行的计数
-i:不区分大小写(只适用于单字符)
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行
4、find
作用:find命令的作用是在目录中搜索文件,它的使用权限是所有用户。
格式:find [path][options][expression]path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录
[options]参数
-depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
-maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找
-mindepth levels:表示至少查找到开始目录的第level层子目录
-mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找
-version:打印版本
3、top命令、查看磁盘
top命令
Linux top命令用于实时显示 process 的动态
语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
实例
显示进程信息# top
显示完整命令# top -c
以批处理模式显示程序信息# top -b
以累积模式显示程序信息# top -S
查看磁盘:
Linux磁盘管理常用三个命令为df、du和fdisk
df:列出文件系统的整体磁盘使用量。df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法
df [-ahikHTm] [目录或文件名]
du:检查磁盘空间使用量。语法:du [-ahskm] 文件或目录名称
fdisk:用于磁盘分区。语法:fdisk [-l] 装置名称
二、计算机网络
1、HTTP的报文段
请求 Repuest
1、请求方法
GET:请求获取Request——URL所标识的资源
POST:在Request——URL所标识的资源后附加资源
HEAD:请求获取由Request——URL所标识的资源的响应消息报头
PUT:请求服务器存储一个资源,由Request——URL作为其标识
DELETE:请求服务器删除由Request——URL所标识的资源
TRACE:请求服务器回送收到的请求信息(用于测试和诊断)
CONNECT:保留
OPTIONS:请求查询服务器性能
2、URL
URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源。URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化
3、协议版本
格式为HTTP/主版本号.次版本号,常用为:HTTP/1.1 HTTP/1.0
4、请求头部
Host:接受请求的服务器地址,可以是IP或者是域名
User-Agent:发送请求的应用名称
Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)
Accept-Charset:通知服务器端可以发送的编码格式
Accept-Encoding:通知服务器端可以发送的数据压缩格式
Accept-Language:通知服务器端可以发送的语言
响应 Response
1、协议版本,同请求报文
2、状态码,状态码,100-199表示请求已收到继续处理,200-299表示成功,300-399表示资源重定向,400-499表示客户端请求出错,500-599表示服务器端出错
200:响应成功
302:跳转,重定向
400:客户端有语法错误
403:服务器拒绝提供服务
404:请求资源不存在
500:服务器内部错误
3、响应头部
Server:服务器应用软件的名称和版本
Content-Type:响应正文的类型
Content-Length:响应正文的长度
Content-Charset:响应正文所使用的编码
Content-Encoding:响应正文使用的数据压缩格式
Content-Language:响应正文使用的语言
2、HTTP用的什么连接
在HTTP/1.0中,默认使用的是短连接
也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话
但从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件中设定这个时间
3、TCP的三次握手与四次挥手
TCP报文的头部结构
(1)序号:seq序号
占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记
(2)确认序号:ack序号
占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1
(3)标志位:共6个
即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:、
ACK:确认序号有效
FIN:释放一个连接
PSH:接收方应该尽快将这个报文交给应用层
RST:重置连接
SYN:发起一个新连接
URG:紧急指针(urgent pointer)有效
三次握手
第一次握手:客户端要向服务端发起连接请求,首先客户端随机生成一个起始序列号ISN(比如是100),那客户端向服务端发送的报文段包含SYN标志位(也就是SYN=1),序列号seq=100
第二次握手:服务端收到客户端发过来的报文后,发现SYN=1,知道这是一个连接请求,于是将客户端的起始序列号100存起来,并且随机生成一个服务端的起始序列号(比如是300)。然后给客户端回复一段报文,回复报文包含SYN和ACK标志(也就是SYN=1,ACK=1)、序列号seq=300、确认号ack=101(客户端发过来的序列号+1)
第三次握手:客户端收到服务端的回复后发现ACK=1并且ack=101,于是知道服务端已经收到了序列号为100的那段报文;同时发现SYN=1,知道了服务端同意了这次连接,于是就将服务端的序列号300给存下来。然后客户端再回复一段报文给服务端,报文包含ACK标志位(ACK=1)、ack=301(服务端序列号+1)、seq=101(第一次握手时发送报文是占据一个序列号的,所以这次seq就从101开始)。当服务端收到报文后发现ACK=1并且ack=301,就知道客户端收到序列号为300的报文了,就这样客户端和服务端通过TCP建立了连接
四次挥手
比如客户端初始化的序列号ISA=100,服务端初始化的序列号ISA=300。TCP连接成功后客户端总共发送了1000个字节的数据,服务端在客户端发FIN报文前总共回复了2000个字节的数据
第一次挥手:当客户端的数据都传输完成后,客户端向服务端发出连接释放报文(当然数据没发完时也可以发送连接释放报文并停止发送数据),释放连接报文包含FIN标志位(FIN=1)、序列号seq=1101(100+1+1000,其中的1是建立连接时占的一个序列号)。需要注意的是客户端发出FIN报文段后只是不能发数据了,但是还可以正常收数据;另外FIN报文段即使不携带数据也要占据一个序列号
第二次挥手:服务端收到客户端发的FIN报文后给客户端回复确认报文,确认报文包含ACK标志位(ACK=1)、确认号ack=1102(客户端FIN报文序列号1101+1)、序列号seq=2300(300+2000)。此时服务端处于关闭等待状态,而不是立马给客户端发FIN报文,这个状态还要持续一段时间,因为服务端可能还有数据没发完
第三次挥手:服务端将最后数据(比如50个字节)发送完毕后就向客户端发出连接释放报文,报文包含FIN和ACK标志位(FIN=1,ACK=1)、确认号和第二次挥手一样ack=1102、序列号seq=2350(2300+50)
第四次挥手:客户端收到服务端发的FIN报文后,向服务端发出确认报文,确认报文包含ACK标志位(ACK=1)、确认号ack=2351、序列号seq=1102。注意客户端发出确认报文后不是立马释放TCP连接,而是要经过2MSL(最长报文段寿命的2倍时长)后才释放TCP连接。而服务端一旦收到客户端发出的确认报文就会立马释放TCP连接,所以服务端结束TCP连接的时间要比客户端早一些
4、在浏览器中输入一个网址它的运行过程是怎样的
1、查询DNS,获取域名对应的IP
(1)检查浏览器缓存、检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成
(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成
(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:
如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性
如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性
(4)如果本地DNS服务器也失效
如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如http://baidu.com)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成
如果采用转发模式(递归),则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成
2、得到目标服务器的IP地址及端口号(http 80端口,https 443端口),会调用系统库函数socket,请求一个TCP流套接字。客户端向服务器发送HTTP请求报文
(1)应用层:客户端发送HTTP请求报文
(2)传输层:(加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务器建立起一个TCP连接
(3)网络层:(加入IP头)路由寻址
(4)数据链路层:(加入frame头)传输数据
(5)物理层:物理传输bit
3、服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文
4、关闭连接,TCP四次挥手
5、客户端解析HTTP响应报文,浏览器开始显示HTML
5、get和 post区别
GET:从指定的资源请求数据。
POST:向指定的资源提交要被处理的数据。
6、tcp和udp的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
7、http和https区别
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
三、数据库
1、数据库事务
数据库事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
1.为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰
当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
数据库事务拥有以下四个特性,被称之为ACID特性
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中
2、Redis
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步