spdy

Android之OkHttp详解(非原创)

狂风中的少年 提交于 2020-11-22 05:10:18
文章大纲 一、OkHttp简介 二、OkHttp简单使用 三、OkHttp封装 四、项目源码下载 一、OkHttp简介 1. 什么是OkHttp   一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网上的数据等。OKHttp与HttpClient类似,也是一个Http客户端,提供了对 HTTP/2 和 SPDY 的支持,并提供了连接池,GZIP 压缩和 HTTP 响应缓存功能。 2. OkHttp优点 (1)支持HTTP2/SPDY(SPDY是Google开发的基于TCP的传输层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验) (2)socket自动选择最好路线,并支持自动重连,拥有自动维护的socket连接池,减少握手次数,减少了请求延迟,共享Socket,减少对服务器的请求次数 (3)基于Headers的缓存策略减少重复的网络请求 (4)拥有Interceptors轻松处理请求与响应(自动处理GZip压缩) 3. OkHttp功能 (1)一般的get请求 (2)一般的post请求 (3)基于Http的文件上传 (4)文件下载 (5)上传下载的进度回调 (6)加载图片 (7)支持请求回调,直接返回对象

万人低头时代,如何保障APP无线网络性能?

痞子三分冷 提交于 2020-11-13 20:52:49
摘要: 在本次蚂蚁金服与阿里云联合举办的在线金融技术峰会上,嘉宾心武与大家分享了支付宝APP近几年在无线网络方面所做的实践。 本文整理自心武的分享,在这个万人低头时代,对于大型APP而言其无线网络性能足以决定其市场地位,在应对业务差异化需求,复杂的无线网络环境等问题上,支付宝APP是如何保障无线网络性能的呢? 1. 背景概述 首先看一个典型案例:用户用完餐后,使用支付宝扫码进行支付,但因网络不稳定导致数次支付失败,最终只能选择现金结账。很多用户会对这样的案例有一定的感触,可能在日常生活中经常遇到,而这对于无线网络的技术研发人员而言,却无法容忍的。设想一下,如果一个APP的无线移动网络失败率降低千分之一,会产生怎样的效应? 如果以每天一亿笔无线交易进行计算的话,失败率降低千分之一,那么每天成功交易数会增加10万笔,一年就能挽回3到4千万笔的交易,由此可以看出无线网络通讯对于APP的重要性。 在我们团队内部有一个很好的比喻 :将一个APP比作一棵树,把树根看做是整个Server端的业务服务,将树根和树枝比作是APP的业务功能,那么这棵树的树干就是无线网络通讯,它是端到端的连接,是用户服务触达的通道,也是用户体验的保障。 同时我们也意识到不同的APP对于无线网络的需求级别也不相同,所以给出的建议是按照用户量进行划分。 对于无线网络的挑战,出现在端到端的通讯过程

带你5分钟看懂 HTTP3

邮差的信 提交于 2020-11-08 13:50:56
你连 HTTP2 都还没搞明白,就有人开始谈 HTTP3 了,真让人火大。但 HTTP3 会受到关注也是有理由的:它速度很快。 1.很久以前 谈未来之前,咱们先讲讲现实。 你了解 HTTP 吗?这个定义于 1991 年的协议是用来管理 Web 的。它的全名是超文本传输协议,让你可以从网页中获取资源,网页数据从 Web 服务器传输到你的浏览器上。它基于较低级别的协议——TCP,这里是重点——而且它是无状态的。这意味着每个请求都是完全独立的。页面上显示的每个 GIF 图片都在互联网上独立存在,这对这些 GIF 图片本身来说是好事。但对我们来说,这样的一个系统是有些支离破碎的。 问题在于每个请求一次只会查找一个文件。每次都要创建一个昂贵的 TCP 连接。想象一下,如果你的页面上有 10,000 个小技巧,这会是多么沉重的负担啊。 我知道有很多人喜欢我上一篇文章中制作的图片,所以为了更好地向大家解释互联网的协议机制,这里我会再做一张图。 尽管浏览器可以同时发出六个不同的请求,但是 HTTP 仍然很慢,并且需要很多 TCP 连接。另外,我们开发人员通常不会在意这一点。我们喜欢在页面上塞满各种垃圾。比如说巨大的 jQuery 库,包含 300 个无用的 CSS 样式表,结尾是一个透明的 8 兆大 PNG 图。 当谷歌发现我们在互联网上到处倾倒垃圾后,他们就开始搞一个称为 SPDY 的东西了

Chrome正在启用HTTP/3,支持IETF QUIC

萝らか妹 提交于 2020-10-18 13:27:00
Chromium 官方宣布 Chrome 正在部署到 HTTP/3 与 IETF QUIC。 QUIC(Quick UDP Internet Connections)是 Google 推出的一个项目,旨在降低基于 TCP 通讯的 Web 延迟。QUIC 非常类似 TCP+TLS+SPDY ,但是基于 UDP 实现的。它是 HTTP/3 的基础协议。 2015 年,Google 将 QUIC 引入负责维护互联网协议的标准组织 IETF,并且 IETF 一直在对 QUIC 进行改进,目前有两个相似但不同的 QUIC 协议:Google QUIC 与 IETF QUIC。 Chrome 中使用的是 Google QUIC,同步地 Google 也在参与 IETF 对 QUIC 的改进,发展到现在最新的 Google QUIC 版本 Q050 与 IETF QUIC 有许多相似之处,不过大多数 Chrome 用户通常无法与 IETF QUIC 服务器进行通信。 Chromium 团队表示,其发现 IETF QUIC 的性能优势特别高,使得 Google 搜索延迟减少了 2% 以上,YouTube 的重新缓冲时间减少了 9% 以上,PC 客户端吞吐量增加了 3% 以上,移动设备的客户端吞吐量增加了 7% 以上,因此宣布 Chrome 即将引入对 IETF QUIC h3-29 版本的支持。

提升系统 10 倍性能的 10 个建议!

不羁岁月 提交于 2020-08-17 16:13:36
2020-06-02 09:41:00 译者:为之漫笔 来源: http://www.zcfy.cc/article/10-tips-for-10x-application-performance-nginx-22.html 原文: https://www.nginx.com/blog/10-tips-for-10x-application-performance/ 提 升Web应用的性能从未像今天这样刻不容缓。 在线经济活动的比例日益提高,就连发展中国家和地区的经济活动都已经有5%以上在线进行了(相关数据请参考本文后面的资源)。在这个超级链接、随时在线的现代世界,用户的期望也远非昔日可比。如果你的网站不能马上响应,你的应用不能立即运行,用户转身就会投奔你的竞争对手。 亚马逊大约10年前的一项研究表明,页面加载时间减少1/10秒,能够使其营收增长1%。另一项近期的调查也显示,一多半受访站点所有者提到因为自己应用的性能不佳导致了收入减少或者用户流失。 一个网站到底多快才行?页面加载每花1秒钟,就有大约4%的用户走掉。排名最靠前的电商站点的首次交互时间为1至3秒,这个区间的转换率最高。显而易见,Web应用性能的重要性与日俱增。 提升性能其实不难,难的是怎么看到结果。本文给出能够提升大约10倍网站性能的10个建议供大家参考。如此全面地涵盖各种性能优化技术,这还是头一回

这可能是我见过把HTTP解释的最通俗易懂的文章!

时间秒杀一切 提交于 2020-08-15 01:57:39
本文通过比喻的方式介绍了什么是HTTP,并阐述了从HTTP/1.0 到HTTP/3各个版本的区别和特点,值得一看。以下是原文: 周末一大早,我正在电脑前面浏览一些技术网站,突然女朋友大喊起来:哇,杭州又下大雪啦,快来看啊。我并没有理她,于是她跑过来拉我。  图,雪后杭州 由这次下雪将要介绍的HTTP和RPC也有点关系,都是通信方式。 什么是HTTP协议 HTTP是HyperText Transfer Protocol的缩写,中文翻译为 超文本传输协议 。他是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 说的简单点, 其实HTTP协议主要就是用来进行客户端和服务器之间进行通信的标准协议 。HTTP主要规定了客户端如何与服务器建立 链接 、客户端如何从服务器请求数据、服务器如何响应请求,以及最后连接如何关闭。 当我们在浏览器中输入一个url,如http://www.taobao.com ,然后按下回车,一直到页面显示淘宝网的首页的过程就是一次HTTP的网络通信。 这次通信过程中,我们查看淘宝使用的电脑就是 客户端 ,而搭建淘宝网的那些计算机机器就是 服务器 。 这个过程有点像老板通过电话给员工下达命令。当我们在浏览器输入网址并按下回车之后,共发生了以下四件事: 1、建立连接:老板拨通手下员工的电话 2、进行请求:老板提出自己的要求 3、响应

前端面试必备技巧(二)重难点梳理

放肆的年华 提交于 2020-08-10 22:12:22
针对面试中出镜率比较高的重难点知识梳理。 相比于第一篇 前端面试必备技巧 ,本篇文章更贴合今年的面试实际。第一篇比较全面,也比较基础,建议先看一遍上一篇再看本篇会更容易理解。 一、ES6常见用法 关于 ES6(泛指 ECMAScript 2015 及以后的版本)几乎是面试必问的,一般的问法是:“平常会使用 ES6 吗?列举几个 ES6 的用法”。 回答出来三四个就差不多了,但回答的每一个都要弄清楚,有的面试官会延伸着追问。 如果时间充足,还是建议看看 阮一峰的 ES6 入门教程 。 1.1 let 和 const let 在块级作用域内有效,不会污染全局变量 const 一经声明不能改变。注意保证的是它指向的内存地址不能改变,如果是对象或者数组里面的属性或元素可以改变的。 存在暂时性死区,不能变量提升。 只能先声明再使用,且不能重复声明 1.2 字符模板 用作字符串拼接: 你好,${name} 1.3 变量的解构赋值 let [a,b,c] = [1,2,3] 交换变量的值:[a,b] = [b,a] 提取 JSON 数据,获取服务器返回数据时有用:let {data, code} = res 输入模块的指定方法: const { SourceMapConsumer, SourceNode } = require( "source-map" ); 复制代码 从函数返回多个值:

计算机网络常考知识点整合

大兔子大兔子 提交于 2020-07-28 06:06:02
这里跟大家分享下我复习时整理的计算机网络常考知识点。 网络协议 OSI7层模型 物理层:传输物理比特 数据链路层:将比特封装成帧 网络层:将网络地址翻译成物理地址,路由选择。路由器。分组:数据报。IP协议 传输层:将大数据分割传给网络层,流量控制。TCP,UDP协议 会话层:建立应用程序的通讯 表示层:解决不同系统间通信语法问题 应用层:通过应用进程间的交互来完成特定网络应用,报文 TCP/IP4层模型(相比5层少一个物理层) 物理层: 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 链路层: 两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。数据报组装成帧。 网络层: 网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。数据报, IP 传输层: 负责向两台主机进程之间的通信提供通用的数据传输服务,TCP/UDP 应用层: 通过应用进程间的交互来完成特定网络应用,报文,HTTP,DNS,SMTP 三次握手 tcp报文头: Sqquence Number:4字节,报文序号,若当前107带了100字节,则下一次序号207。 Acknowledgment Number:4字节,期望收到下一个报文的下一个字节序好,B发送了201序号300字节的数据

基本使用——OkHttp3详细使用教程

浪尽此生 提交于 2020-05-05 16:19:48
基本使用——OkHttp3详细使用教程 转 https://blog.csdn.net/xx326664162/article/details/77714126 概述 OkHttp现在应该算是最火的Http第三方库,Retrofit底层也是使用OkHttp,网上很多教程都写的不错,但是有些我认为重要的知识,大多一笔带过,所以我决定写一篇入门文章 OkHttp官网地址: http://square.github.io/okhttp/ OkHttp GitHub地址: https://github.com/square/okhttp 出现背景 网络访问的高效性要求,可以说是为高效而生 解决思路 提供了对 HTTP/2 和 SPDY 的支持,这使得对同一个主机发出的所有请求都可以共享相同的套接字连接 如果 HTTP/2 和 SPDY 不可用,OkHttp 会使用连接池来复用连接以提高效率 提供了对 GZIP 的默认支持来降低传输内容的大小 提供了对 HTTP 响应的缓存机制,可以避免不必要的网络请求 当网络出现问题时,OkHttp 会自动重试一个主机的多个 IP 地址 OkHttp3设计思路 Requests(请求) 每一个HTTP请求中都应该包含一个URL,一个GET或POST方法以及Header或其他参数,当然还可以含特定内容类型的数据流。 Responses(响应)

一文读懂 HTTP/2 特性

混江龙づ霸主 提交于 2020-04-18 04:04:11
今天,HTTP 1.1 已经变成互联网中主要的协议。但是在 HTTP 协议诞生初期却被认为是简单直接的协议。1996 年在 RFC 1945 中定义了 HTTP 1.0 规范,仅 60 页,到 1999 年在 RFC 2616 定义了 HTTP 1.1,增长到了 176 页。但是,随着 web 技术的飞速发展。 HTTP 1.1 已经无法满足用户对性能的要求,此后 Google 推出协议 SPDY,意在解决 HTTP 1.1 中广为人知的性能问题。SPDY 得到了 Chrome、Firefox 和 Opera 的支持,很多大型网站(如谷歌、Twitter、Facebook)都对兼容客户端使用 SPDY。SPDY 在被行业采用并证明能够大幅提升性能之后,已经具备了成为一个标准的条件。 HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议。它由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发。该组织于2014年12月将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。HTTP/2标准于2015年5月以RFC 7540正式发表。 那 HTTP /2 到底有哪些具体变化呢? 二进制分帧 先来理解几个概念: 帧(帧):HTTP