面试准备话术整理
知识点都会,表达不流畅,恩,大多数技术人的特点,总结成口语化方便记忆
lnmp组合工作流程
首先是用户通过浏览器输入域名请求Nginx Web
服务,如果请求是静态资源,则由Nginx
解析返回给用户;如果是动态请求(.php
结尾),那么Nginx
就会把它通过FastCGI
接口(生产常用方法)发送给PHP
引擎服务(FastCGI
进程php-fpm
)进行解析,如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MySQL
数据库。以读取需要的数据,并最终通过Nginx
服务把获取的数据返回给用户。
ftp主动模式和被动模式
主动模式下,ftp客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送ftp用户名和密码,然后开放N+1号端口进行监听,并向服务器发送port N+1命令,告诉服务端 客户端采用主动模式开放了端口。ftp服务器接收到port命令后,会用其本地的ftp数据端口(通常是20)来连接客户端所指定的端口 N+1,进行数据传输。
被动模式下,ftp客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆,同时会开启N+1端口。然后向服务器发送pasv命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P(范围可设置)进行监听,然后用port P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
nginx正向代理和反向代理
正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端(vpn)
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。(用户不知道要访问真正的服务器)
索引
一个表可能会涉及两个数据结构(文件),一个是表本身,存放表中的数据,另一个是索引。索引是什么?它就是把一个或几个字段(组合索引)按规律排列起来,再附上该字段所在行数据的物理地址(位于表中)。比如我们有个字段是年龄,如果要选取某个年龄段的所有行,那么一般情况下可能需要进行一次全表扫描。但如果以这个年龄段建个索引,那么索引中会按年龄值建一个排列,这样在索引中就能迅速定位,不需要进行全表扫描。
为什么性别不适合建索引呢?
为什么性别不适合建索引呢?因为你访问索引需要付出额外的IO开销,你从索引中拿到的只是地址,要想真正访问到数据还是要对表进行一次IO。假如你要从表的100万行数据中取几个数据,那么利用索引迅速定位,访问索引的这IO开销就非常值了。但如果你是从100万行数据中取50万行数据,就比如性别字段,那你相对需要访问50万次索引,再访问50万次表,加起来的开销并不会比直接对表进行一次完整扫描小。