关于keep-alive的几点疑惑

Spring Boot项目实战:如何用Druid的Keep-Alive机制解决数据库连接卡顿问题 本文针对Spring Boot应用在闲置后首次访问卡顿的问题,深入剖析了Druid连接池的Keep-Alive机制。通过实战配置详解,指导开发者如何正确启用和优化Keep-Alive参数,以维持数据库连接活性,避免因连接被数据库服务器回收而导致的性能延迟,从而保障应用响应速度。 阅读详情

一、http的keep-alive与tcp的keep-alive

http keep-alive:
在一次tcp连接中可以连续发送多次数据,即可以保持一段时间的tcp连接,在这个保持的通道上有多个request、多个response。而不用每发一次数据就要重新进行三次握手连接,发完一次数据就要立即进行四次挥手释放连接。 这样可以提高性能和吞吐率。

tcp keep-alive:
为了检测tcp的连接状况。经过设定的时间之后,服务器会发出检测包去确认tcp连接是否还在。如果出现了问题就关闭连接。

小结:http的keep-alive和tcp的keep-alive是完全不同的东西。

二、request header中的http keep-alive与tcp连接

在http1.1版本之后都会默认设置connection为keep-alive,如果想要关闭这条设置,需要在头信息中更改connection为close。

但是在实际使用中,http头部有了keep-alive这个值并不代表一定会使用长连接,客户端和服务器端都可以无视这个值,每一条TCP通道,只有一次GET,GET完之后,立即有TCP关闭的四次握手,这样写代码更简单。这时候虽然http头有connection: keep-alive,但不能说是长连接。所以是否用了长连接,还是得用抓包工具分析tcp流。

小结:正常情况下客户端浏览器、web服务端都有实现这个标准,因为它们的文件又小又多,保持长连接减少重新开TCP连接的开销很有价值。但是最终到底有没有实现keep-alive还是得看tcp流的情况。

三、http keep-alive的tcp复用与websocket长连接

http keep-alive:
http keep-alive只是一种为了达到复用tcp连接的“协商”行为,双方并没有建立正真的连接会话,服务端也可以不认可,也可以随时(在任何一次请求完成后)关闭掉。它是指在一次 TCP 连接中完成多个 http请求,但是对每个请求仍然要单独发 header,所以除了真正的数据部分外,服务器和客户端还要大量交换http header,信息交换效率很低,这样建立的“长连接”都是伪长连接。

websocket:
websocket不同,它本身就规定了是正真的、双工的长连接,两边都必须要维持住连接的状态。

小结:http协议决定了浏览器端总是主动发起方,http的服务端总是被动的接受、响应请求。http提供的长连接服务器可以不接受。而websocket协议,在连接之后,客户端、服务端是完全平等的。websocket是真正的长连接。

mqtt相关的jar包 mqtt.jar、org.eclipse.paho.android.service-1.1.1.jar、org.eclipse.paho.client.mqttv3-1.2.5.jar、wmqtt.jar。 这4个jar包打包赠送,需要的几乎都齐全了。积分只需要5个。 立即下载

相关推荐

mqtt-client:一个Java MQTT客户端

概述 MQTT是机器对机器(M2M)/“物联网”连接协议。 它被设计为一种非常轻量级的发布/订阅消息传递。 对于与需要较小代码占用和/或网络带宽非常宝贵的远程位置的连接很有用。 mqtt-client为MQTT提供了ASL 2.0许可的API。 如果发生任何网络故障,它将自动重新连接到MQTT服务器并还原您的客户端会话。 应用程序可以使用阻塞API样式,基于期货的API或回调/继续传递API样式。 从Maven使用 将以下内容添加到您的maven pom.xml文件中。 <dependency> <groupId>org.fusesource.mqtt-client</groupId> <artifactId>mqtt-client</artifactId> <version>1.12</version> </dependency> 从Gradle使用 将以下内容添加到您的

MQTT 官网和jar包下载地址

Github官网地址eclipse/paho.mqtt.java: Eclipse Paho Java MQTT client library.Paho是一个Eclipse物联网项目。 (github.com)jar包下载地址Index of /repositories/paho-releases/org/eclipse/paho

yxw331291779的博客 2814

mqtt jar包

客户端 服务器 所用到的jar 包 只用wmqtt jar 就可以进行发送与接收消息 但notification弹窗跳转有问题 所以客户端 改用org eclipse jar 服务器还用wmqtt jar 就可以 客户端有两个接受推送服务:第一个是pushservice 用的是wmqtt jar 第二个是Mqttservice 用到的是org eclipse 那个 这两个服务可以在pushactivity中切换 去掉注释即可 ">客户端 服务器 所用到的jar 包 只用wmqtt jar 就可以进行发送与接收消息 但notification弹窗跳转有问题 所以客户端 改用org eclipse jar 服务器还用wmqtt jar 就可以 客户端有两个接受推送服务:第一个是pushservice 用的是wmqtt jar 第 [更多]

mqttjar包_MQTT简单demo(java)

上次已经简单的谈了一些MQTT协议的一些知识,今天就来就上次的知识具体的Java实现。现在就来具体说说实现这一步吧。中间的时间也是有点久。MQTT消息的发送和订阅都是依赖MQTT服务器的,没有MQTT服务器,你的客户端是无法订阅和发送消息的。所以在最开始的时候,可以选择性的在你的电脑上面安装一个MQTT服务器。MQTT服务器有很多,大家也可以在网上去找一些安装教程,这里因为和我要讲内容关系不大,所...

weixin_39771791的博客 1814

MQTT订阅端jar包

mqtt订阅端jar包 org.eclipse.paho.client.mqttv3-1.2.5.jar

USB2.0信号完整性测试之眼图

名称线缆颜色引脚描述红色绿色白色GND黑色。

qq_53766840的博客 3288

vue中keep-alive、activated的探讨和使用

在修改公司的一个项目的时候发现了activated这个东西,一直觉得很疑惑,之前也没怎么用过啊!官网的生命周期那也没说过这东西啊!生命周期不就create mount update 和destory这几个东东么,怎么多了个activate出来。 百思不得其解,于是去问了下度娘和查了下文档!恍然大悟,原来这东东是结合keep-alive这东东使用的,下面顺便记录一下。   keep-ali.........

qq_38861711的博客 3万+

YOLOv11 网络结构详解:一文看懂 Backbone、Head、C3k2、SPPF 和 Detect 检测头

在使用 YOLOv11 进行目标检测时,我们经常会接触到或这样的模型配置文件。backbone和head分别是什么意思?ConvC3k2SPPFC2PSA这些模块分别起什么作用?P3/8、P4/16、P5/32 代表什么?为什么最后 Detect 要同时接收 3 个不同尺度的特征图?YOLOv11n、YOLOv11s、YOLOv11m、YOLOv11l、YOLOv11x 的区别在哪里?

learnerYC的博客 1816

彻底搞懂Vue中keep-alive

彻底搞懂Vue中keep-alive的魔法(上) 上一节最后稍微提到了Vue内置组件的相关内容,从这一节开始,将会对某个具体的内置组件进行分析。首先是keep-alive,它是我们日常开发中经常使用的组件,我们在不同组件间切换时,经常要求保持组件的状态,以避免重复渲染组件造成的性能损耗,而keep-alive经常和上一节介绍的动态组件结合起来使用。由于内容过多,keep-alive的源码分析将...

一只小白奔向大牛的故事 6982

告别手动标注!PDMS NakiToolkit插件安装与初体验:以Pipeline工具为例

本文详细介绍了PDMS NakiToolkit插件的安装与使用,特别是其Pipeline工具如何通过自动化标注和材料统计功能大幅提升三维工厂设计效率。从环境准备到实战演示,帮助工程师告别繁琐的手动标注工作,实现项目交付周期的大幅缩短。

weixin_30047059的博客 352

使用Intel编译器编译OpenFOAM

本文总结了使用INTEL编译器编译OpenFOAM的过程

姜蜉蝣的博客 1551

Connection: Keep-Alive

上午在实验室看书,师弟让我帮忙解决个项目上的问题,问题不难,于是我教他抓包解决,让他电脑下了fiddler不过却显示不出来请求,我尝试了一下也是如此,过滤器也没开,突然意识到可能是360的问题,因为fiddler是通过http代理的方式,360很可能阻止第三方软件对浏览器代理,于是关掉360,重启浏览器终于能愉快的抓包了。 调试过程中我让他F12勾上disablecache,然后眼睛...

a13305317115的博客 1884

Ta-Lib源码解析(三):蜡烛图指标 (Candlestick Indicator) #(附Python重构代码和示意图)(补充中)

蜡烛图指标为识别K线形态的指标,笔者认为重点在于定义方式所提供的思路,背后的投资逻辑可以借鉴但不建议直接参考文档的翻译内容和源码逻辑存在不一致的现象,笔者分别列出中文百科中的定义和源码实际逻辑,供大家参考技术分析理论中的一些模糊词,ta-lib中给出了精确的定义源码

量化就是探索生活 3254

彻底搞懂Vue中keep-alive的魔法

子组件在注册阶段会把父实例挂载到自身选项的parent属性上,在initLifecycle过程中,会反向拿到parent上的父组件vnode,并为其$children属性添加该子组件vnode,如果在反向找父组件的过程中,父组件拥有abstract属性,即可判定该组件为抽象组件,此时利用parent的链条往上寻找,直到组件不是抽象组件为止。答案是没有的,不管是内置的还是用户定义组件,本质上组件在模板编译成render函数的处理方式是一致的,这里的细节不展开分析,有疑惑的可以参考前几节的原理分析。

刘程云的博客 439

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 359

网络安全面试题

在当今社会网络安全行业越来越发达,也有越来越多的人去学习,为了更好地进行工作,除了学好知识外还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面试题,希望对大家有所帮助。 windows常见 1:描述tcp/udp的区别及优劣,及其发展前景 TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能...

fzx_hsaj的博客 6万+

vue中使用keep-alive无效以及include 和 exclude用法

👨 作者简介:Taro,前端领域创作者 最近在修改我司一款医疗类CMS系统,采用的技术栈是 ,用户提到了一个需求,希望在切换Tabs多页签时,能够在其他Tabs切换回来后,下方的分页器页码依然可以留在离开前的页数。 这里想到的是 使用 Vue中的 keep-alive,去包裹住 router-view,从而实现路由的缓存就像这样: 简单讲一下 是 Vue 提供给开发者的一个全局组件,被包裹住的组件,可以保留初始的......

唐璜Taro的博客 2138

第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

🥏第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3871

vue源码分析-keep-alive原理(上)

上一节最后稍微提到了Vue内置组件的相关内容,从这一节开始,将会对某个具体的内置组件进行分析。首先是keep-alive,它是我们日常开发中经常使用的组件,我们在不同组件间切换时,经常要求保持组件的状态,以避免重复渲染组件造成的性能损耗,而keep-alive经常和上一节介绍的动态组件结合起来使用。由于内容过多,keep-alive的源码分析将分为上下两部分,这一节主要围绕keep-alive的首次渲染展开。

yyzzabc123的博客 157

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【踩坑】掉进keep-alive 的 include的坑中

今天查看同事写的面包屑标签,发现其使用keep-alive来缓存路由组件,缓存组件输入内容和查询结果。后来我去测试,发现没有起到作用。查看代码,按需缓存逻辑没有错误,router上的name也是正确。于是产生疑惑,这是什么神奇的bug。 切记!include配置的name,是组件的name,而不是router上的name! 切记!include配置的name,是组件的name,而不是router上的name! 切记!include配置的name,是组件的name,而不是router上的name! 原来是na

及时行乐 2492

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

关于HTTP协议的一些疑惑

关于HTTP协议的一些疑惑 HTTP协议能实现服务器端主动push吗? http的keep-alive有什么作用? webSocket和http2之间的关系。 TCP已经实现了keep-alive,为什么应用层还是要实现自己的心跳包 ...

三云的技术博客 163

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

记面试中知识疑惑点

1. Http协议与TCP协议   Http协议是应用层协议,基于TCP协议实现。   与TCP不同的是:Http是一个无状态的协议,其遵循请求应答模型,由客户端发起请求,然后服务器回应请求。每一个请求应答称为一个事务。无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。   无状态的优缺

C_J_X的博客 709

http的长连接和短连接(史上最通俗!)

源: https://www.jianshu.com/p/3fc3646fad80 1.以前的误解 很久之前就听说过长连接的说法,而且还知道HTTP1.0协议不支持长连接,从HTTP1.1协议以后,连接默认都是长连接。但终究觉得对于长连接一直懵懵懂懂的,有种抓不到关键点的感觉。 今天通过一番研究,终于明白了这其中的奥秘。而之前,也看过长连接相关的内容,但一直都是云里雾里的。这次之所以能在这么...

maquealone的博客 1万+

HTTP GET 下载文件报文格式分析与应用

最近有个项目需要用无线模块下载文件,由于手头已经有一个HTTP GET的实现,那么就用HTTP来做了。做完之后我就在想,为什么一定要用HTTP呢,为何不能用FTP?当然,手头没有现成的实现,想想应该会复杂一些。 简单百度一下:FTP是专门用于文件传输的协议。HTTP只是超文本传输协议(他的传输功能最原始的目的仅仅只是为了将超文本的信息(包括图象视频等)传到你的机子上就行了) 网上还提到了FTP更加好管理。我只是下载一个100K的文件,而且项目环境之前也用了HTTP,就暂时用HTTP把。回过头有时间好好了解一

yiluang的博客 2904

vue底部导航点击切换图标及页面功能实现

功能需求:点击底部导航栏切换图片及页面(如下效果) (以下代码只展示重要部分,css等样式请自行编写) 父组件代码(导航栏页) <template> <div> <keep-alive> <router-view></router-view> </keep-alive> <!--...

一只程序喵 6861

TCP心跳的意义

    背景 最近面试了很多的学生,发现很多TCP的新手对于TCP的使用有一些误区,而这些坑也是当初我曾经疑惑过得地方。网上很少有文章对这些问题有过详细的解析,即是有也只是直接给出结论和做法,没有人将其中的来龙去脉讲解清楚,所以我将这些问题的来龙去脉在这一系列的文章中讲述出来,希望能让广大TCP的新手避开这些坑。   问题 我面试时经常会问的一个问题是当TCP两端A、B建立了连接后,如...

bemodesty的博客 986
上一篇: webdriver调用phantomJS报错
下一篇: 关于python+Selenium定位元素出错的问题
sssammmm
博客等级 码龄9年 369粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值