Hero Image

计算机网络面试核心 7. HTTP 简介 超文本传输协议的主要特点 是应用层的请求响应的无状态协议 支持客户/服务器模式 : 浏览器通过url向服务端发送请求, 服务端返回响应信息 简单快速 : 请求方法 get post delete 通讯速度快 灵活: 数据格式灵活,允许任意格式的数据类型 无连接: 每次连接只处理一个请求,收到应答之后就断开连接 , 1.1 之后使用了长连接 下层实现对上层透明, keep alive 无状态: 对事务处理没有记忆能力,缺少状态, version 1.1 引入了 keep alive 持续连接机制 2.0 升级成本太大 HTTP 请求结构 HTTP请求报文结构 1GET /baidu/com HTTP1.1 2 Host: www.baidu.com 3 Connection:keep-alive # close 1.1之前 4 User-Agent: Mozilla/5.0 5 Accept-Encoding 6Cookie: XXX HTTP响应结构 1HTTP 1.1 200 OK 2 Server: 3 Accept-Ranges: 4 Content-Type: 5 Content-Languge: 6 Content-Length: 7 Date: 请求/响应步骤 客户端连接到WEB服务器 发送HTTP请求 服务器接受请求并返回HTTP响应 释放TCP连接: 服务器主动关闭TCP连接,浏览器被动释放TCP连接 客户端浏览器解析HTML内容 在浏览器地址键入http 开头的url,按下回车之后经历的流程 DNS解析 :逐层查询路由器中的DNS缓存,浏览器-系统-路由器-IPS服务器-根域名服务器缓存-顶级域名服务器缓存,返回对应IP TCP连接:IP+80端口 三次握手 http协议版本 发送HTTP请求: 服务器处理并返回HTTP报文 浏览器解析渲染页面 连接结束 HTTP状态码 1XX:指示信息——表示请求已接收,继续处理

Hero Image

数据库 1. 数据库架构 关系型数据库的主要考点: 架构、 索引、锁、语法、理论范式 范式一: 列不可再分 范式二: 标准键 范式三: 去除传递依赖 如何设计一个关系型数据库 RDMBS 存储管理:尽可能的减少IO,使用块或者页实现 缓存机制:不宜过大,要有淘汰机制 LRU SQL解析:SQL解析 日志管理:记录操作记录 binlog 权限划分: 容灾机制:处理异常 索引管理: 锁管理: 1. 为什么要使用索引? 避免全表扫描,快速查询数据 全表扫描 所有的数据分批次加载到内存 索引 - 对应字典的偏旁部首等 2. 什么样的信息能够成为索引 主键、唯一键、普通键等 3. 索引的数据结构 生成索引,建立二叉查找树今次那个二分查找 生成索引,建立B-Tree进行查找 生成索引,建立B+Tree结构进行查找 生成索引,建立Hash结构进行查找 2. 优化索引- 二叉查找树 二叉查找树 二叉查找树:左子节点小于 根节点, 右子节点大于根节点 平衡二叉树: 左右子树深度的差值不超过1 二叉查找树容易变为线性二叉树 即使使用数的旋转也会出现数的深度递增导致IO的次数增加 3. 优化索引- B-Tree 平衡多路查找树 每个节点有至多m个孩子, M阶B树 定义: 根节点至少包括两个孩子 树中每个节点最多含有有M个孩子(m>2) 除根节点和叶节点外,其他每个节点都至少有ceil(m/2)个孩子 所有的叶子节点都位于同一层 假设每个非终端节点中包含有n个关键字信息,其中 Ki(i=1,…n) 为关键字,且关键字顺序按升序排序Ki-1< Ki 关键字的个数n必须满足:[ceil(m/2) -1]<= n <= m-1 非叶子节点的指针:P[1],P[2],…P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其他P[i]指向关键字属于(K[i-1]K[i])的子树。 让每一个节点尽可能存储更多的信息,尽可能的减少数的深度,从而减少IO的次数