20 HTTP 长连接与短连接

每日一句

纸上得来终觉浅,绝知此事要躬行。

每日一句

Never give up until the fight is over.

永远不要放弃,要一直战斗到最后一秒。

概念

长连接

指在一个TCP连接上可以连续发送多个数据包。

在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。

短连接

指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接。

HTTP的长连接和短连接本质上是TCP长连接和短连接。

HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。

IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包。

从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive

连接过程

短连接操作步骤是:

连接→数据传输→关闭连接;

长连接通常就是:

连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接

使用场景

长连接:

多用于操作频繁,点对点的通讯,而且连接数不能太多情况.

如数据库连接

短连接

web网站的http服务。长连接更加耗费服务器资源。bulabula..

美文佳句

把握分寸,是一种难得的智慧。那些能看到别人优点的人,往往懂得把别人放在心上,时刻照顾别人的感受。他们会在一言一语中放低自己的姿态,让别人感受到关心和尊重。

人与人之间,不过一场以心换心。学会欣赏别人,别人才会欣赏你。对他人适时地赞美,不需要多么高超的说话技巧,比技巧更重要的是真诚。真心实意、以诚相待,永远是人际交往中最基本的准则。

面试题

HashMap、ConcurrentHashMap 和Hashtable有什么区别?

HashMap ConcurrentHashMap Hashtable
线程是否安全,以及实现线程安全的方式 HashMap不安全 线程安全,ConcurrentHashMap
JDK1.7底层采用分段锁,对整个桶数进行了分割分段(segment),
每一把锁只锁容器其中一部分数据,提高并发访问率。
JDK 1.8 底层采用 Node数组 + 链表 + 红黑树的结构实现,
并发控制使用了 synchronized 和 CAS 操作。
线程安全,底层采用synchronized 来保证线程安全,
直接是方法级别的加锁, ConcurrentHashMap 虽然也是 synchronized
但它是对链表或者红黑树的头节点进行加锁,锁的粒度更小
底层工作原理 底层采用的是 数组 + 链表 ConcurrentHashMap
JDK 1.7 底层采用 分段的数组 + 链表实现。
JDK 1.8 采用的是 数组 + 链表/红黑树
底层采用的是 数组 + 链表
空值问题 HashMap允许使用null值(key和value)都可以。
但是这样的键只有一个,可以有一个或多个键所对应的值为null
HashTable不允许null值(key和value都不可以)
初始容量、扩容与默认负载因子 HashMap 默认初始大小 16,每次扩容 2n,默认负载因子是0。75 HashTable 默认初始大小为11,每次扩容 2n+1

你都知道哪些常用的Map集合?

HashMap、HashTable、TreeMap、LinkedHashMap、ConcurrentHashMap

@RequestMapping 注解有什么用?

@RequestMapping 注解,用于将特定 HTTP 请求方法映射到将处理相应请求的控制器中的特定类/方法。此注释可应用于两个级别:

  • 类级别:映射请求的 URL。
  • 方法级别:映射 URL 以及 HTTP 请求方法。

你好,我是yltrcc,日常分享技术点滴,欢迎关注我:ylcoder

20 HTTP 长连接与短连接的更多相关文章

  1. HTTP的长连接和短连接

        本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规定了默认保持长连接(HTT ...

  2. HTTP 的长连接和短连接

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

  3. Socket的长连接和短连接

    讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...

  4. 6.1 socket 长连接、短连接

    一般情况下,服务器的长连接和短连接不是服务器说了算,而是客户端说了算.因为服务器是给别人提供业务的,一旦连接建立起来之后,服务器端不会主动把连接给close掉. 客户端发送一笔业务,没有关闭连接,然后 ...

  5. java如何实现Socket的长连接和短连接

    讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...

  6. 网络编程-TCP长连接和短连接

    TCP是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.下面会介绍一个TCP连接是如何建立的以及通信结束后是如何终止的. 一.TCP连接的建立与终止 1.1 建立连 ...

  7. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

  8. HTTP的长连接和短连接——Node上的测试

        本文主要从实践角度介绍长.短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP.Ajax做客户端请求测试,最后简单涉及WebSocket.     关键字:长连接.短连 ...

  9. (转)HTTP 长连接和短连接

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

随机推荐

  1. js 简易模块加载器 示例分析

    前端模块化 关注前端技术发展的各位亲们,肯定对模块化开发这个名词不陌生.随着前端工程越来越复杂,代码越来越多,模块化成了必不可免的趋势. 各种标准 由于javascript本身并没有制定相关标准(当然 ...

  2. java中封装encapsulate的概念

    封装encapsulate的概念:就是把一部分属性和方法非公有化,从而控制谁可以访问他们. https://blog.csdn.net/qq_44639795/article/details/1018 ...

  3. 牛客网-剑指Offer 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  4. uni-app中 未收藏和已收藏功能展示

    效果图如下: 未收藏: 已收藏: 代码实现: 1 <view class="jichu"> 2 <view class="name">x ...

  5. IP和静态路由技术概述

    1. IP地址的构成 IP地址:32比特的二进制数字,通常采用点分十进制方式表示. IP地址由两部分组成. 网络号码字段(Net-id)用于区分不同的网络.网络号码字段的前几位成为类别字段(又称为类别 ...

  6. python---100以内所有素数

    def get_primes(): """ 100以内的所有素数:每个数都对从2到其本身前一个数做整除, 遇到能整除就换下一个数. 如果从2到去本身前一个数都没有整除,则 ...

  7. Spring-JdbcTemplate(注入到spring容器)-01

    1.导入spring-jdbc和spring-tx坐标 <dependency> <groupId>junit</groupId> <artifactId&g ...

  8. Java对象和多态

    Java对象和多态 (面向对象) 面向对象基础 面向对象程序设计(Object Oriented Programming) 对象基于类创建,类相当于一个模板,对象就是根据模板创建出来的实体(就像做月饼 ...

  9. Docker引擎核心组件

    Docker Engine(Docker引擎)是Docker的核心部分,使用的是客户端-服务器(C/S)架构模式,其主要组成部分如下图所示. 从上图中可以看出,Docker Engine中包含了三个核 ...

  10. HttpRunner的PB序列化工具类解决方案(python3)

    背景 年初的时候团队内落地了HttpRunner3框架,简单介绍下:HttpRunner 是一款由python开发的面向 HTTP(S) 协议的开源通用测试框架,用例脚本为 YAML/JSON 格式, ...