部分知识点引用小林coding
-
TCP/IP网络模型及相关协议
应用层:专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。
传输层:为应用层提供网络支持的,有两个传输协议,分别是 TCP 和 UDP。
网络层:实现应用到应用的通信,IP
网络接口层:在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上,arp,rarp协议
-
三次握手的过程及其理解
-
四次挥手的过程及其理解
-
cookie是啥?
Cookie 通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。在客户端第一次请求后,服务器会下发一个装有客户信息的「小贴纸」,后续客户端请求服务器的时候,带上「小贴纸」,服务器就能认得了了。 -
session是啥?
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。 -
tomato是啥?
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用。 -
linux系统启动的过程
1)加载内核:当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
2)启动初始化进程:内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境。
3)确定运行级别:Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
4)加载开机启动程序(系统初始化):init进程逐一加载开机启动程序,其实就是运行这个目录里的启动脚本。
5)用户登录
6)进入login shell:所谓shell,简单说就是命令行界面,让用户可以直接与操作系统对话。 -
linux系统的目录有哪些分别有什么作用
见链接 -
home目录存储那些东西
该目录包含每个用户的家目录。例如:用户 xiaoming 的家目录为 /home/xiaoming,在用户家目录下包含该用户的数据文件和用户特定的配置文件。每个用户仅对其自己的家目录具有写访问权,并且必须获得管理员权限(root 权限)才能修改系统上非该用户的文件。通常也将其设置为一个单独的分区。 -
bin目录存储哪些东西
需要在单用户模式可用的必要命令(可执行文件),面向所有用户,例如: cat、 ls、 cp等。注意:/bin 目录是 /usr/bin 的软连接。
单用户模式:在最小环境中使用超级用户维护系统环境,例如:修改损坏的系统文件、修改配置文件等。 -
etc目录存储哪些东西
该目录包含系统范围内的配置文件。注意:/etc 目录包含系统范围的配置文件,特定于用户的配置文件位于每个用户的家目录中。 -
挂载文件存在那个目录
/mnt 目录:该目录是临时挂载文件系统的位置。例如:挂载 U 盘,然后通过挂载的文件访问 U 盘内容。 -
软链接和硬链接
硬链接就是同一个文件使用了多个别名;
软链接:若文件用户数据块中存放的内容是另一文件的路径名的指向; -
linux查看文件的尾部
tail命令会显示文件最后几行(即文件尾部)的内容。默认情况下,它会显示文件的末尾10行。 -
cat查看文件是一次性加载文件吗?
cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况 -
查看网络端口用什么命令
lsof命令:lsof(list open files)是一个列出当前系统打开文件的工具。lsof -i:端口号
netstat:netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况,netstat -nltp | grep 端口号 -
查看网络配置用什么命令
ifconfig命令可以查看与配置网络状态 -
查看网络状态
netstat 命令是一个用于监控系统TCP/IP网络状态的命令,它可以显示网络连接与每一个网络接口设备的状态与进程相关信息。 -
ping怎么用,底层协议是啥?
“ping”命令使用ICMP协议,该协议是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。 -
事务的四大特性
-
并行事务会引发什么问题?
脏读:如果一个事务「读到」了另一个「未提交事务修改过的数据」,就意味着发生了「脏读」现象。
不可重复读:在一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样的情况,就意味着发生了「不可重复读」现象。
幻读:在一个事务内多次查询某个符合查询条件的「记录数量」,如果出现前后两次查询到的记录数量不一样的情况,就意味着发生了「幻读」现象。 -
InnoDB如何解决不可重复读的?
可重复读隔离级别是启动事务时生成一个 Read View,然后整个事务期间都在用这个 Read View。 -
数据库输入一条命令发生了什么?
-
数据库中的日志
undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。
redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;
binlog (归档日志):是 Server 层生成的日志,主要用于数据备份和主从复制; -
MVCC有了解吗?解决的是什么问题?
隔离性是通过 MVCC(多版本并发控制) 或锁机制来保证的; -
数据库中有哪些锁?
全局锁:全局锁主要应用于做全库逻辑备份,执行后,整个数据库就处于只读状态了
表级别的锁有这几种:
1)表锁;
2)元数据锁(MDL);
3)意向锁;
在使用 InnoDB 引擎的表里对某些记录加上「共享锁」之前,需要先在表级别加上一个「意向共享锁」;
在使用 InnoDB 引擎的表里对某些纪录加上「独占锁」之前,需要先在表级别加上一个「意向独占锁」;
4)AUTO-INC 锁;
AUTO-INC 锁是特殊的表锁机制,锁不是再一个事务提交后才释放,而是再执行完插入语句后就会立即释放。
行级锁的类型主要有三类:
1)Record Lock,记录锁,也就是仅仅把一条记录锁上;
2)Gap Lock,间隙锁,锁定一个范围,但是不包含记录本身;
3)Next-Key Lock:Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。 -
InnoDB和MylSAM的锁有哪些区别?
InnoDB 引擎是支持行级锁的,而 MyISAM 引擎并不支持行级锁。 -
B+树和B树的区别?
区别:所有关键码都存放在叶节点中,上层的非叶节点的关键码是其子树中最小(或最大)关键码的复写。叶节点包含了全部关键码及指向相应数据记录存放地址的指针,且叶节点本身按关键码从小到大顺序连接。如果按下层结点“最小关键码复写”原则,则树中每个非叶结点中有 m 棵子树必有 m - 1 个关键码;如果按下层结点“最大关键码复写”原则,则树中每个非叶结点中有 m 棵子树必有 m 个关键码。在搜索过程中,如果查询和内部节点的关键字一致,那么搜索过程不停止,而是继续向下搜索这个分支。 -
你对分布式的理解
为了解决传统单体服务架构带来的各种问题,代码数量庞大,迭代测试维护困难,可能因为一处改动测试不到位造成整个服务瘫痪等问题,分布式系统就是将一个大的服务拆分成几十个甚至上百个微小的服务。 -
cap的理解
CAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。CAP是一个已经被证实的理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三项中的两项。 -
有哪些设计模式
(2)工厂模式:所谓工厂方法模式,是指定义一个用于创建对象的接口,让子类决定实例化哪一个类。 -
手撕代码:先进先出(输入:3 2 4 1 4 6 # 窗口为4,输出:3 2)
#include<iostream>
#include<queue>
using namespace std;
int main() {int t;queue<int> val;while(cin>>t){val.push(t);if(val.size()>4){cout<<val.front()<<" ";val.pop();}}return 0;
}