首页 > 数据库 >高频面试题 - 数据库优化方案

高频面试题 - 数据库优化方案

时间:2023-07-20 10:48:42浏览次数:40  
标签:协议 面试题 HTTP 数据库 TCP 服务器 高频 连接 客户端

一. 考题再现

最近很多小伙伴在跳槽面试,遇到了各种奇奇怪怪的问题。比如健哥的一个学生,在面试时被面试官问到如下问题:

“我们做web开发都离不开http协议, 那你了解http协议吗?”

这时大家一般都是回答了解。

然后面试官会接着对这个问题展开三连击,“Http协议是长连接还是短连接? 具体如何实现的?......”

然后有些小伙伴就开始支支吾吾答不出来了,然后这次面试就over了........

那如果你也遇到了这些问题,该怎么回答呢?今天健哥就在这里为大家来统一讲解这些问题该怎么回答,带你轻松破解面试官的无情三连!

二. 题目剖析

其实面试就是考试,我们要摸清对方的考察意图!如果面试官是千锋健哥的话,那么我想考的就是看看候选人对计算机网络的了解程度,网络基础是否扎实,本题的主要考点如下:

  1. Http协议处于OSI网络模型的哪一层?
  2. Http协议底层是如何实现的?
  3. 位于传输层用的是什么协议?
  4. Http协议到底是长连接还是短连接?
  5. TCP协议的三次握手和四次挥手过程?

三. 分析破解

针对上面健哥为大家抽离出的考察要点,接下来我就为大家针对上述考点一一分析破解,下面就是这个问题的解题思路与过程:

3.1 HTTP协议与TCP/IP协议的关系

所谓的HTTP协议的长连接和短连接,本质上其实是TCP协议的长连接和短连接!我们知道,HTTP协议属于应用层协议,在传输层使用TCP协议,而在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上创建可靠的传递数据包,使得在网络上的另一端可以收到发送端发出的所有数据包,并且顺序还要与发出的顺序一致。所以TCP必须具有可靠,面向连接的特点。

3.2 如何理解HTTP协议是无状态的

很多人都知道HTTP协议是无状态的,这里的无状态,指的是协议对于事务处理没有记忆的能力,服务器不知道客户端是什么状态。也就是说,这次打开一个服务器上的网页,和你之前打开这个服务器上的网页之间没有任何联系。HTTP虽然是一个无状态的面向连接的协议,但无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

3.3 什么是长连接、短连接?

那我们前面说的长连接、短连接又是什么呢?

  • 在HTTP/1.0中,默认使用的其实是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就要建立一次连接,但任务结束后就会中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话;
  • 但从HTTP/1.1起,默认使用长连接,用以保持会话的连接特性。使用长连接的HTTP协议,会在响应头中加入这行代码:Connection:keep-alive;
  • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立好的连接。但Keep-Alive也不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。我们要注意,实现长连接要客户端和服务端都支持长连接。

3.4 HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接

我们所谓的HTTP协议的长连接和短连接,实质上是指TCP协议的长连接和短连接!所以这里健哥要跟大家再唠唠TCP连接是怎么回事。

TCP连接:当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接。当读写操作完成后,双方不再需要这个连接时,它们就可以释放这个连接,而连接的建立是需要进行3次握手的,释放则需要进行4次挥手,所以每个连接的建立都是需要消耗资源和时间的。

3.5 TCP三次握手和四次挥手过程

既然上面我们说到了三次握手和四次挥手,健哥就再扩展一下说说这两个操作的实现过程。

三次握手:先向HTTP服务器发起TCP的确认请求

  • 客户端 --> SYN --> 服务器
  • 服务器 --> SYN+ACK --->客户端
  • 客户端 --> ACK --> 服务器

四次挥手:客户端要和服务器断开TCP连接

  • 客户端 --> FIN +ACK ---> 服务器
  • 服务器 --> FIN ---> 客户端
  • 服务器 --> ACK --> 客户端
  • 客户端 --> ACK ---> 服务器

四. 总结

经过上面的分析,最后千锋健哥来给大家总结下这个问题的完整答案 :

  • Http协议到底是长连接还是短连接,要看HTTP协议的版本,Http1.0中默认是短连接,Http1.1中默认是长连接;
  • Http协议位于OSI网络模型的应用层;
  • Http协议底层在传输层上使用的是TCP协议,在网络层使用的是IP协议;
  • TCP协议具有三次握手和四次挥手的过程,传输数据安全稳定。

标签:协议,面试题,HTTP,数据库,TCP,服务器,高频,连接,客户端
From: https://www.cnblogs.com/qian-fen/p/17567666.html

相关文章

  • 19c(19.3) 单机数据库安装
                  19c(19.3) 单机数据库安装 一、           环境介绍操作系统RedHatEnterpriseLinuxServerrelease 7.7(Maipo)数据库版本Oracledatabase19.3主机名adg19cIP地址192.168.84.99安装目录/DBSoft/oracle/product/19.......
  • 代码生成器-根据数据库表
    publicstaticvoidmain(String[]args){//1、创建代码生成器AutoGeneratormpg=newAutoGenerator();//2、全局配置GlobalConfiggc=newGlobalConfig();StringprojectPath=System.getProperty("user.dir");......
  • 数据库高效批量更新操作 MERGE INTO
    使用UPDATE批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用MERGEINTO代替UPDATE执行批量更新,会提升执行效率。原理:因为UPDATE关联子查询写法,是选到一条做一次子查询,这种写法得更新少,走好的索引才行,MERGE写法是执行完ON后一次性更新,效率会好点。......
  • 数据库管理
    1.数据库实例管理  启动数据库startup    关闭数据库shutdown     关闭数据库三种语句  shutdownimmediate   shutdownnormal  shutdowntransactional  1.数据库高速缓冲区数据写入数据文件  2.未提交的事务回滚  3.释放资源2.通过检查......
  • 在 Amazon 上以高可用性模式实现 Microsoft SQL 数据库服务现代化的注意事项
    许多企业都有需要MicrosoftSQLServer来运行关系数据库工作负载的应用程序:一些应用程序可能是专有软件,供应商可使用它强制MicrosoftSQLServer运行数据库服务;其他应用程序可能是长期存在的、自主开发的应用程序,它们在最初开发时便已包含MicrosoftSQLServer。当企业将应用......
  • PHP测试数据库连接是否成功
    <?php$host='数据库主机';//例如:localhost$username='数据库用户名';//例如:root$password='数据库密码';//例如:mypassword$database='数据库名';//例如:mydatabase//创建数据库连接$connection=newmysqli($host,$username,$password,......
  • 错误连接数据库 [mysql] : org.pentaho.di.core.exception.KettleDatabaseExcepti
    错误连接数据库[mysql]:org.pentaho.di.core.exception.KettleDatabaseException是一种常见的错误,通常在使用PentahoDataIntegration(PDI)工具连接到MySQL数据库时出现。本文将介绍这个错误的原因,以及如何解决它。在使用PDI工具连接到MySQL数据库时,经常会遇到数据库连接失败的......
  • 观看视频历史记录放数据库还是redis
    观看视频历史记录放数据库还是Redis?随着互联网的飞速发展,视频网站逐渐成为人们获取信息、娱乐和学习的主要平台之一。在视频网站上观看的视频数量非常庞大,而用户观看的视频历史记录也具有一定的价值。那么,我们应该将观看视频历史记录放在数据库中还是Redis中呢?本文将从数据特点、......
  • 服务器上java项目数据库配置文件
    在服务器上配置Java项目数据库配置文件的流程概述在服务器上配置Java项目的数据库配置文件是非常重要的一步,它决定了项目与数据库的连接方式和相关配置信息。下面我将介绍整个配置流程,并附上相应的代码和注释,以便你能够顺利进行配置。配置步骤步骤操作1进入服务器......
  • 电脑安装两个MySQL数据库怎么查看指定
    电脑安装两个MySQL数据库的问题解决方案在某些情况下,我们可能需要在一台电脑上安装并运行两个独立的MySQL数据库实例。这可能是因为需要同时管理不同的项目,或者进行开发和测试等工作。本文将介绍如何在一台电脑上安装并运行两个MySQL数据库,并演示如何查看指定的数据库。安装和配......