前言
日志,各位看官就当乐子看吧。
正经人谁写日记啊?!!
----鹅城县长
网络
http状态码
状态码的第一位决定了不同的响应状态,有
-
1xx 表示消息
-
2xx 表示成功
-
3xx 表示重定向
-
4xx 表示请求错误
-
5xx 表示服务器错误
常见的有,
状态码 | 含义 |
---|---|
200 | 请求成功 |
403 | 禁止请求,服务器拒绝请求 |
404 | 未找到,服务器没有找到请求的资源 |
500 | 服务器遇到错误,无法完成请求 |
504 | 网关超时,服务器作为网关或代理,没有及时从上游服务器收到请求 |
tcp连接的三次握手和四次挥手
建立tcp
连接,需要经过三次握手:
-
客户端发送
SYN
报文给服务器; -
服务器响应
ack
报文给客户端,确认客户端的发送能力; -
客户端发送
ack
报文给服务器。客户端确认服务器的接收和发送能力,服务器确认了客户端的接收能力,然后就能进行数据传输了。
为什么做三次握手,而不是两次?,第三次握手能够让服务器知道客户端的接收能力是正常的。
断开tcp
连接,需要经过四次挥手:
-
客户端发送
FIN
报文,并停止发送数据,向服务器请求断开连接; -
服务器发送
ack
报文响应; -
服务器在发送完所有数据后,发送
FIN
报文,告诉客户端可以断开了; -
客户端发送
ack
报文响应,完成断开。
为什么是四次,不是三次?,服务器做接收到客户端的断开请求时,有时还有数据需要继续发送,所以不立即发送FIN
报文,于是就有了四次挥手。
其他
这部分看了,但是不好记忆,也不好描述:
-
udp
和tcp
的对比(udp不可靠); -
http1.0 1.1 2.0
-
地址栏输入
url
敲下回车后发生了什么(url解析 -> 域名解析,获得IP -> 建立请求,服务器响应 -> 网站渲染,首先解析dom树,然后css树,然后计算完成大小和位置的布局信息,然后是图像像素信息,最后交给GPU渲染) -
tcp/IP
:指的是一系列互联网协议构成的协议族,模型可分为五层或者四层,五层是应用层、传输层、网络层、数据链路层、物理层。其中还有和OSI
模型的对照内容需要了解。
操作系统
进程和线程
- 线程是进程的子集,每个进程包含多个线程;2. 每个进程有各自独立的内存空间,而所有线程共享一片相同的内存空间;3.每个线程有自己的栈内存存储本地数据。
死锁
一个进程请求其他进程拥有的资源,并且不释放自己获取的资源,不断请求,产生死锁。死锁产生条件:1. 互斥:一个资源在同一时间内只能由一个进程获得;2. 请求和保持,一个进程因请求资源而堵塞时,对已获得的资源不释放;3. 不剥夺,进程已获得的资源在未使用完成时,不能剥夺,只能在使用完时自己释放;4. 循环等待,存在循环等待链,每个进程都在等待链中等待下一个进程资源,造成这组进程永远处于等待状态。
服务器
docker
docker是软件平台,用于创建、管理、分发应用程序。类似于轻量级的虚拟机,
区别于虚拟机:不同于虚拟机,容器内只运行应用程序,不是一个完整操作系统。
完整的docker包含那些部分:client 客户端;daemon 守护进程;images 镜像;container 容器
容器生命周期:创建create、运行start(run,创建并运行)、停止(stop)启动(start)重启(restart)、杀死(kill,不删除容器,能再次启动)、销毁(destroy,删除,需要重新创建容器)
常用指令:
指令 | 含义 |
---|---|
docker images | 列出本机所有镜像 |
docker pull 镜像名[:tag] | 下载镜像[对应版本],名字后加上: 接数字,表示下载哪个版本 |
docker search | 搜索镜像 |
docker rmi -f 镜像id | 删除镜像 |
dockerfile:存放配置镜像的指令的文件,docker使用dockerfile自动构建镜像。
Nginx
用于构建web服务器,常用于反向代理。常用功能:1. 反向代理:客户端向服务器发送请求时,首先会经过nginx服务器,nginx将请求分发给相应的web服务器;2. 负载均衡:将大量的前端请求或数据流量分担到后端多个网络节点上分别处理,减少用户等待时间。
负载均衡
根据不同的实际情况,可采取不同的均衡算法,介绍如下。
普通轮询算法
upstream OrdinaryPolling {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://OrdinaryPolling;
index index.html index.htm index.jsp;
}
}
上面代码表明,upstream
代码块声明了名为OrdinaryPolling
的负载均衡配置,server
代码块配置虚拟主机,监听localhost
主机上的80
端口(端口默认为80),当请求地址为/
时,采用反向代理proxy_pass
设置的方案,将请求分发给127.0.0.1:8080
和8081
两个服务器,默认响应index.html
文件。
加权轮询算法
当服务器配置不同,希望高配置的服务器处理更多的请求,这时就可以采用加权轮询。配置如下,
upstream OrdinaryPolling {
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=2;
}
此时,nginx会根据权重给不同服务器分担不同的请求量,8080和80801处理的量比例为5:2。不设置weight
则默认都是1,就是普通轮询。
基于IP路由负载
当服务器需要保存信息完成验证时,如登录验证时,保存session,当请求在第一个服务器没处理完,通过nginx轮询到第二个服务器上,那么这个服务器是没有会话信息的。又需要重新登录。此时可以采用基于IP负载
。配置如下,
upstream OrdinaryPolling {
ip_hash;
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=2;
}
upstream
指令块中增加了ip_hash
指令。该指令就是告诉 nginx 服务器,同一个 IP 地址客户端发送的请求都将分发到同一个服务器进行处理.
基于服务器响应时间负载分配
根据服务器响应时间分配,时间越短的优先分配。upstream
指令块中增加了fair
指令.
对不同域名实现负载均衡
结合location
指令块可以实现对不同域名实现负载均衡。配置如下,
upstream wordbackend {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
upstream pptbackend {
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80;
server_name localhost;
location /word/ {
proxy_pass http://wordbackend;
index index.html index.htm index.jsp;
}
location /ppt/ {
proxy_pass http://pptbackend;
index index.html index.htm index.jsp;
}
}
当路径为 word
时,会分配到 127.0.0.1:8080
和8081
上,当路径为 ppt
时,会分配到 8082
和8083
上。
彩蛋
为了一个软件实施的岗位做准备,网上关于实施的面试题大多都是计算机通识内容,再结合工作经验,实施中数据库和服务器的技术需要着重关注(还在等面试通知,逆天,…,.,)。网络相关的知识点还要没复习到的,也有理解或记不清的内容。还有数据库的知识点。当然服务器也需要再补补