目录
基础概念
Redis的运行
API的使用
基础概念
1.Redis是一种基于键值对的NoSQL数据库,Redis键值对中的值可以是由string、hash、list、set、zset(有序集合)、Bitmaps(位图)等多种数据结构和算法组成
2.Redis把所有的数据放在内存中,所有读写性能高,还会把数据用快照和日志的形式保存到硬盘上以防丢失
理论
基础操作
在Ubuntu上配置Docker
踩坑
1.容器的概念:容器是对应用程序及其依赖关系的封装,可以看成是一个轻量级的虚拟机环境。
2.Docker利用的是Linux的容器技术,Docker 平台拥有两个不同部分
3.Docker工具:
4.容器使软件应用程序与操作系统脱钩,从而为用户提供了一个干净而最小的Linux环境,同时在一个或多个隔离的“容器”中运行其他所有内容。容器的目的是启动一组有限的应用程序或服务(通常称为微服务),并使它们在独立的沙盒环境中运行
5.docker的组成
6.docker的流程
1.运行第一个镜像
1 | docker run debian echo "Hello World" |
2.在镜像中使用shell
1 | docker run -i -t debian /bin/bash |
3.用指定主机名“CONTAINER”启动镜像
1 | docker run -h CONTAINER -i -t debian /bin/bash |
4.查看正在运行的容器信息,会出现容器id和名称(这两个字段都可以用作inspect的参数)
1 | doker ps |
5.显示某容器的详细信息
1 | docker inspect xx |
6.显示某容器哪些文件被改动过
1 | docker diff xx |
7.显示容器中发生的一切操作记录
1 | docker logs xx |
8.删除容器
1 | docker rm xx |
9.从远程服务器拉取镜像
1 | docker pull nginx |
1.安装Docker
1 | sudo apt-get update |
1 | sudo apt-get install \ |
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
1 | sudo add-apt-repository \ |
1 | sudo apt-get update |
1 | sudo apt-get install docker-ce |
2.检查Docker是否配置正确
1 | sudo docker run hello-world |
1 | Hello from Docker! |
1 | docker version |
1 | Client: Docker Engine - Community |
1 | sudo chmod a+rw /var/run/docker.sock |
1 | Client: Docker Engine - Community |
1.win系统启动docker桌面版失败就去把AppData里面的docker文件夹重命名为docker_backup,再重新启动即可
基础部分
进阶部分
1.进程与线程的区别
2.程序、进程、线程、协程
3.操作系统的储存:
即容量越小速度越快
4.操作系统的寻址操作
5.进程间的通信方式
6.线程同步的方式
7.进程的三种状态(调度方法有抢占式和非抢占式)
8.线程的六种状态
9.CPU的调度算法
10.死锁:指两个或两个以上的进程在执行过程中,由于竞争资源或由于彼此通信而造成的阻塞,若无外力作用无法推进下去
产生条件
死锁处理方法
11.什么是内存?
答:内存是一种高速存储设备,仅次于寄存器和缓存。因为CPU处理速度与外存读取程序速度存在差异,所以程序执行前要先放入内存后再被CPU处理,内存用于缓和CPU与外存的速度矛盾,提高CPU利用率
12.虚拟内存时为了防止不同进程同一时刻在物理内存中运行而产生对物理内存的争夺,每个进程看到自己独占了内存空间,但实际只是把目前自己需要的内存空间映射并存储到物理内存上
13.缺页中断:每当要访问的页面不在内存中,会产生一次缺页中断,然后系统再根据页表中的外存地址找到该页并调入内存
14.并发:宏观上两程序同时运行,例如单核CPU的多任务,但微观上还是你一条指令、我一条指令交替运行的。并不能提高计算机性能,只能提高效率
并行:严格意义上的同时运行,例如多核CPU,两程序同时分别运行在两个核上,提高了计算机性能
15.单核机器上写多线程程序,为什么仍需要考虑加锁?
答:因为线程锁用于实现线程的同步和通信,在抢占式操作系统中,当某线程时间片耗尽被挂起时,为保证运行的下一个线程不会出错(两线程共享同一数据的情形),要使用线程锁
16.线程切换
17.内存溢出:程序申请内存时,没有足够的内存供申请者使用
内存泄漏:出于某种原因没有释放掉不再使用的内存的情况,失去了对该部分内存的控制,造成浪费
18.源码到可执行文件的过程:
19.进程种类:
20.五种IO模型(前四种都是同步IO):
21.多线程、线程池、IO复用可以使server接受多个client的请求
22.怎么实现线程池
23.立即寻址不用访问内存
24.用来实现线程间的通知和唤醒的两种方法
25.微机一般是16位或32位机,“微”指的是机器的字长
26.建立符号链接时,引用计数值直接复制,删除两个文件的任一个不影响值,而是直接删除链接
建立硬链接时,双方的引用值+1,删除文件时将与之硬链接的文件引用值减1,若某文件引用值为0则会删除该文件
27.若系统有m个进程,则就绪队列的进程数就为0 ~ m-1个
28.文件属性有:系统、只读、隐藏、存档
29.进程在运行中不能自行修改PCB(进程管理块)
30.挂起就绪状态(也叫静止就绪)的进程只能转换为就绪状态(活动就绪)
31.处于同一进程的多个线程,CPU寄存器对每个线程来说都是私有的
32.用户态和内核态
33.用户使用计算机的方式
34.DOS是磁盘操作系统
35.文件管理系统管理的对象(最小磁盘空间单位是扇区)
36.物理地址的计算
37.线程共享堆和静态变量,不共享寄存器、栈、PCB、状态
38.页的计算
39.实模式下的算法就是CS往左移1位十进制 + ip
例如:地址位2330H:5041H,实际地址为23300+5041=28341H
40.几核CPU就表示可同时运行几个进程,但因为CPU运转速度极快我们会感觉所有进程都是同时运行的
41.几个名词的解释
42.操作系统的地址映射使用段页式实现
43.操作系统的内存管理
44.一个进程占用什么资源
1.操作系统的四个特性
2.操作系统主要功能
3.采用段页式存储,将进程按逻辑模块分段,再将各段分页,将内存空间分为大小相同的页框,将程序按页装入页框,分页分段都是为虚拟内存服务的。
4.页面置换算法
5.磁盘寻址
磁盘调度算法
6.Linux进程的内存结构分为:用户空间和内核空间,内核空间在系统调用时才可访问,内核映射是固定的,分用户态和内核态是为了安全,因为内核一旦出错就会使整个系统崩溃
用户空间分为
7.fork()和vfork()都是拷贝进程,vfork()较快因为不用复制页表
8.Linux的四种锁机制(获取锁失败后,线程会睡眠,等待锁释放的时候再被唤醒)
9.判断大端和小端用联合体变量,因为联合体变量总是从低地址(小端)到高地址存储的
10.常用线程模型
11.协程的暂停完全由程序控制,开销远小于线程,一个线程可拥有多个协程
12.宏内核:内核执行大部分操作,包括调度、内存管理、文件系统、驱动、网络协议,例如linux内核,效率高但稳定性差
微内核:内核只执行调度、内存管理,其他功能用用户态的守护进程去实现,出错也只会导致对应进程死掉,效率低但稳定性好
13.异步编程的事件循环:在单个的线程中,如果某事件绑定了两个处理器,那它也会先去第一个处理器处理再去第二个处理器处理,在这个事件的所有处理器执行完毕前,事件循环不会去检查是否有新事件触发
14.Unix的文件系统按物理结构划分,采用索引文件;Unix时分时系统
15.银行家算法中:需求矩阵 = 最大需求矩阵 - 分配矩阵
16.内存屏障用于使CPU有序,在高级语言的体现就是锁
17.二层交换机(层指的是OSI模型前几层):不同VLAN(广播域)之间的通信必须通过三层设备;交换机仅根据MAC地址进行帧的转发
18.若进程P一旦被唤醒就能投入运行,则系统是抢占调度式,P的优先级高于正在运行的进程
19.实时系统中的进程调度采用抢占式的优先级高者优先执行的算法
20.原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用
21.最佳适应算法时按空闲区大小递增顺序形成空闲分区链
22.逻辑设备表(LUT)作用:在物理设备和逻辑设备之间建立对应关系
23.信号量初值为2,表示为有两个可用资源;当前值为-1,表示两个可用资源都在忙且还有一个等待进程
24.一次I/O请求对应一个I/O请求包;每次I/O操作都会有对应的I/O请求包
25.进程
26.守护进程最重要的特性是后台运行,并且守护进程必须与其运行前的环境隔离开来。创建方法:
27.指令流水线
28.内核同步
29.如果把一个较大的数据放入内存该怎么做
基础部分
进阶部分
1.OSI七层模型(从下数起,物理层是第一层)

TCP/IP 5层模型:应用层、传输层、网络层、数据链路层、物理层
TCP/IP 4层模型:应用层、传输层、网络层、网络接口层
2.ARP/RARP协议:是一个根据IP地址获取物理地址的协议,ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系或进行修改
3.TCP负责发现传输问题,一旦有异常就发信号要求重新传输,还采用滑动窗口的方式进行流量限制

为什么是三次握手?
答:三次握手是为了确保双方都知道彼此都已经准备好。若改为两次握手的话,在Server发送SYN+ACK出去时就已经满足,但这个SYN+ACK可能会在中途丢失,导致Client不知道Server是否准备好,从而一直在等待形成死锁。而三次握手的话,即使最后一次Client发送的ACK丢失也不受影响
为什么是四次挥手?
答:因为发送端提出FIN报文后,接收端很有可能还有数据未传完,因此先回一个ACK,然后传完数据后再回FIN,因此比三次握手额外多一步操作
TIME_WAIT状态的意义是什么?
答:TIME_WAIT是以防第四次挥手的ACK中途丢失而导致Server不知道要关闭连接,所以Client会在此状态多等2msl,在此期间若没有收到Server发送过来的回复则表明Server收到了ACK,明白此时关闭连接是安全的再关闭连接
(ps:在连接建立与关闭的过程中,TCP具有超时重传机制,即若该端规定时间内没有收到预期报文,它会默认上一次自己发送的报文丢失从而再重新发一次)
4.一个电子邮件程序使用的TCP/IP协议:
5.TCP靠什么保证数据传输可靠?
6.TCP如何解决粘包、拆包问题?
7.DNS原理(以www.tmall.com为例):树状结构、迭代递归查询
8.HTTP状态码
9.HTTPS加密过程(七次握手)

10.HTTP与HTTPS主要区别
11.常见端口
12.五类IP地址范围
13.在浏览器中键入URL并回车会发生什么?
14.TCP/IP数据链路的交互过程
15.http中的GET请求、POST请求和PUT请求
16.互联网主要硬件有中继器、网桥(用于局域网)和路由器
17.网络发送数据的原则是:先发大的,再发小的
18.根据CSMA/CD原理
传输速度-最短帧长度 = 网络传输速率-最大距离-2
19.路由器总是具有两个或两个以上的IP地址,并且路由器接口可以自动获取IP地址
20.信息帧头部包括:标志字段、地址字段、控制字段和协议字段(0021H表示网络层使用IP协议)
21.发送窗口一定要小于接受窗口
22.协议是水平的,用于控制同一地位的实体间的通信规则;服务是垂直的,是下层向上层通过层间接口提供的功能
23.以太网MAC协议时无连接不可靠的,因为局域网通道质量好,它只负责高效率地交付,纠错由高层来完成
24.网络延迟:报文进入网络到它离开网络的时间,可以看成是发送端到接受端的时间
往返延迟:报文从客户端发出到客户端收到服务端响应的时间
25.192.168.0.234/26是C类,所以前三段是网络地址,子网掩码默认为255.255.255.0,但由于有个/26,所以子网掩码实际上是255.255.255.26,ip地址与子网掩码与运算得到网络地址
26.路由器和交换机的区别
27.DNS主要靠UDP协议传输,只有请求超过512字节时才会去用TCP协议,可以分割成多个片段
28.TCP/IP报文


29.HTTPS和HTTP的区别主要如下:
30.DNS在进行区域传输的时候使用TCP,普通的查询使用UDP
31.网络请求说明
32.http和tcp的关系
33.浏览器的缓存机制
34.cookie
1.TCP/IP中包含一系列通信协议
2.TCP使用固定连接
(UDP与TCP相似,但更简单,可靠性也更低,它俩相比就是UDP缺少像TCP这样的流控制)
3.IP是无连接的:
4.IP路由器:
5.TCP/IP工作协同:
6.TCP/IP用4个数字来作为计算机编址:XXX.XXX.XXX.XXX(每个XXX在0~255之间,因为每个XXX用8位二进制表示)
7.域名的存在是为了方便记忆,域名要经过DNS程序翻译成数字形式的TCP/IP地址
当一个新的域名连同TCP/IP地址一起注册后,全世界的DNS服务器都会对此信息进行更新
8.TCP长连接
TCP短连接
9.TCP的拥塞控制
10.UDP协议是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号,由于通讯不需要连接,所以可以实现广播发送
11.ip地址是ip协议提供的统一地址格式,为互联网上每个网络、每台主机分配的一个逻辑地址,由网络号和主机号组成(主机号为0的ip地址表示网络地址)
12.什么是子网掩码?
答:子网掩码用来识别两个IP地址是否同属于一个子网,1表示网络位,0表示主机位。若两IP地址与子网掩码经过位与计算后结果相同,则表明它们在同一子网。“0”地址和“1”地址一般不用来计算子网掩码,因为一个是网络地址、一个是广播地址。(ip地址与掩码取反再相与就是主机地址,ip地址与掩码直接相与就是网络地址)
13.HTTP各版本特点
14.对称加密和非对称加密
15.两个机制(注意它俩不能同时使用,否则会造成互相等待)
16.早期拨号上网用SLIP协议,现在用的时PPP点到点协议
17.计网系统的基本组成时通信子网和资源子网
18.CSRF通过伪装来自受信任用户的请求来进入网址,XSS时实现CSRF的一条途径,在Client端增加伪随机数可以阻挡CSRF
19.Websocker至少需要一次握手,模型与node类似
20.IP、UDP和TCP传送数据的协议
21.多级页表更好时因为有助于减少实现进程的虚拟空间所需的页表大小
22.使用RS232在两台主机之间通信时,不需要有路由选择的网络层
23.SDH设备出现帧丢失(LOF)后,应立即倒换
24.曼切斯特编码时一种同步时钟编码技术(本身具有同步信号),每个码元被调成两个电平,因此数据传输速率只有调制速率的一半
25.5类线的传播距离最大时100米
26.交换机中找不到mac就会向其它端口转发
27.提供差错控制的有传输层、网络层、数据链路层
28.NAT协议
29.VPN工作原理