Http发展历史
1 缘起
有一次,听到有人在议论招聘面试的人员,
谈及应聘人员的知识深度,说:问了一些关于Http的问题,如Http相关结构、网络结构等,
然后又说,问没问相关原理、来源?
我也是有些困惑了,Http的相关原理、来源?
对于开发者而言有多少用处?
当然是有的,这是基础必备知识,即使在开发过程中不关注这些也能正常实现功能,
在知识交流和考核过程中,看似不起眼的基础知识,就是死穴了。
听到过这么一句很有分量的话:连这些基础(原理)都不知道?
说起来惭愧,计算机领域有多少基础知识是不知道的!!!以及究其一生仍无法知道以及不得不借鉴(抄袭)才能得来,
但是,又大言不惭地说是自主知识产权。
牢骚过后,
本文主要分享Http的变迁,帮助读者轻松应对知识交流与考核,以及当做论文素材。
英文文档为:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
2 Http
HTTP(超文本传输协议)是万维网的基础(底层)协议,由Tim Berners Lee及其团队于1989-1991年间开发,
HTTP经历多次变更,使得HTTP得以保持简单、灵活。
本文介绍HTTP是如何从实验室(仅为交换文件而设计的一种传输协议)演变为现代互联网宫殿的,可以通过HTTP携带高分辨率图片、视频和3D模型等。
HTTP的大事年表如下图所示,这里没有把RESTful API放进去,不过还是提一下,
RESTful API的出现,推动并规范了互联网的发展(总之很重要),
RESTful AP首次出现于Roy Thomas在2000年的博士论文https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm。
2.1 万维网的发明
1989年,Tim Berners-Lee在CERN(欧洲核子研究中心)工作期间提出基于互联网构建超文本系统的建议。
最初这套超文本系统称为Mesh,后来在1990年实施期间更名为万维网(World Wide Web)。
万维网基于TCP和IP协议构建,由4部分组成:
(1)HTML:超文本标记语言,以文本形式表示超文本文档;
(2)HTTP:超文本传输协议,交换超文本文档的简单协议;
(3)客户端:展示和编辑超文本文档,第一个网络浏览器称为WorldWideWeb;
(4) 服务端:为超文本文档提供接入服务,httpd的早期版本。
万维网的这4个部分于1990年年底完成构建,第一批服务器于1991年初在CERN外运行。
1991年8月6日,Tim Berners-Lee在公共alt.hypertext新闻组发帖,这被认为是万维网正式作为公共项目的开端。
早期HTTP协议非常简单,后来被称为HTTP/0.9,有时称为单行协议(one-line protocol)。
2.2 HTTP/0.9:单行协议
HTTP初始版是没有版本号的,后来称为0.9,以示与后来的版本区分。
HTTP/0.9非常简单,请求由一行组成,以GET方法开始,拼接资源路径。
由于连接到服务器后不需要协议、服务器和端口,因此不包含完整的URL。
单行HTTP请求如下:
GET /mypage.html
请求的响应同样非常简单,只包含文件本身。
<html>A very simple HTML page
</html>
与后续的HTTP不同的是,HTTP/0.9没有头部,意味着该协议只能传输HTML文件。
没有状态或错误代码,如果出现问题,将生成一个特定的HTML文件,包含问题的描述,供用户使用。
2.3 HTTP/1.0:构建可扩展性
HTTP/0.9功能非常有限,但是浏览器和服务器的发展是HTTP变得更加通用:
(1)每个请求中会发送版本信息(HTTP/1.0添加到GET请求行中);
(2)响应的起始部分会发送状态码,这样浏览器就可以根据响应识别成功或是失败,并调整处理逻辑,如可以更新或使用本地缓存;
(3)HTTP头的概念嵌入到请求和响应中,可以传输元数据,协议的灵活性和可扩展性均有增强;
(4)请求头中使用Content-Type参数,HTTP可以传输HTML之外的文档。
2.3.1 样例
- 请求
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
- 响应
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image<IMG SRC="/myimage.gif">
</HTML>
获取图像的样例:
- 请求
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
- 响应
200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(image content)
1991~1995年间,HTTP/1.0采用试看的方法,在服务器和浏览器中添加新功能,看看是否有吸引力。
交互问题是常见的问题,为解决这些问题,1996年出版了一份信息文档,用于描述通用处理方法,即RFC1945,定义了HTTP/1.0。
2.4 HTTP/1.1:标准化协议
与此同时,HTTP标准化火热进行中,与HTTP/1.0的相关实现并行进行,
第一个标准化的HTTP版本是1997年发布的HTTP/1.1,仅比HTTP/1.0晚了几个月。
HTTP/1.1阐明了引起歧义的地方并引入了诸多改进:
(1)可重用连接(节约时间)。无需多次打开嵌入到单个文档中的资源;
(2)添加管道。允许第一个请求收到响应前发送第二个请求,降低通信的延迟;
(3)支持分块响应;
(4)引入缓存控制机制;
(5)引入内容协商,包括语言、编码和类型。客户端和服务器现在可以根据交换的内容达成一致;
(6)由于主机头的存在,服务器具有从同一IP托管不同域的能力。
2.4.1 样例
- 请求
GET /en-US/docs/Glossary/Simple_header HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
- 响应
200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding(content)
- 请求
GET /static/img/header-background.png HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
- 响应
200 OK
Age: 9578461
Cache-Control: public, max-age=315360000
Connection: keep-alive
Content-Length: 3077
Content-Type: image/png
Date: Thu, 31 Mar 2016 13:34:46 GMT
Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT
Server: Apache(image content of 3077 bytes)
HTTP/1.1与1997年1月首次发表为RFC 2068。
2.5 15年的扩展期
HTTP的可扩展性使创建新的头和方法变得非常容易。
虽然HTTP/1.1经过两次修订(1999年6月发布的RFC2616和2014年6月【HTTP/2发布前】发布的RFC7230,RFC7235),
但是HTTP/1.1历经15年仍非常稳定。
2.5.1 建立安全传输
HTTP最大变更发生于1994年底,计算机服务公司Netscape Communications在HTTP上添加了加密传输层:SSL(Secure Socker Layer,安全套接字层),
而不是通过基本的TCP/IP栈发送HTTP。SSL1.0并没有向大众发布,但是SSL2.0和SSL3.0允许创建电子商务网站。
通过SSL加密,保证了服务器和客户端交换信息的真实性。SSL最终成为公认的标准,成为TLS(Transport Layer Security,传输层安全)。
与此同时,加密传输层是非常必要的。网络不再是一个主要的学术网络,而是一个丛林,广告商、个人和犯罪分子都在竭尽所能获取更多的私人数据。
随着基于HTTP构建的应用程序日益强大,并且需要访问地址簿、电子邮件和用户位置等私人信息,TLS在电子商务之外变得非常必要。
2.5.2 面向更复杂的应用
Tim Berners-Lee最初并不认为HTTP是只读介质。他想创建一个可以远程添加和移动文档的网络,一种分布式文件系统。
1996年左右,HTTP进入创作领域,并为之创建了一个名为WebDAV的标准,随着标准的推广,一些符合标准的应用程序涌现,如CardDAV处理通讯录,CalDAV处理日历。
但是,这些*DAV应用都有一个缺陷:只能在服务器实现后使用。
2000年,出现了一种新的打开HTTP方式:表示状态传输(或REST)。
API不是基于新的HTTP方法,而是依赖于HTTP/1.1的基础方法访问URI。
任何Web应用通过API可以检索和修改数据,而无需更新浏览器或服务器。
所有必要的信息都嵌入到网站通过HTTP/1.1提供的文件中。
REST模型的缺点是每个网站都定义了自己的非标准RESTful API,并完全的控制权。
与客户端和服务器可交互的*DAV不同,RESTful API在21世纪头10年非常通用。
自2005年以来,网页可用的API逐渐增多,一些API为了特殊的目的而扩展了HTTP协议:
(1)服务器发送事件,服务器可以将消息推送到浏览器;
(2)WebSocket,一种新的协议,以现有的HTTP连接进行升级。
2.5.3 宽松的网络安全模型
HTTP独立于Web安全模型,称为同源策略。
实际上,当前的Web安全模型是HTTP发明之后才产生的。
多年经验得知,某些限制条件下取消同源的限制是有用的,服务器使用一组新的HTTP头将解除此类限制的数量时间发送给客户端。
这些都是在跨源资源共享(CORS, Cross-Origin Resource Sharing)和内容安全策略(CSP,Content Security Policy)等规范中定义的。
除了这些大型拓展外,HTTP添加了许多其他头部(有时只是实验性质的)。
需要注意的头有:控制隐私的头、X-Frame-Options头和Upgrade-Insecure-Requests头等。
2.6 HTTP/2:更高性能的协议
经过多年发展,网页日趋复杂,其中一些甚至是自己的应用程序,
目前的网页可以展示更多的视觉媒体,但是增加互动性的脚本数量以及大小也随之增加。
通过大量的HTTP请求传输更多的数据,增加了HTTP/1.1的连接的复杂性和开销。
为解决这一问题,Google在2010年初实施了一项实验性协议SPDY。
这种在客户端和服务器之间交换数据的方案引起了使用浏览器和服务器开发人员的兴趣,
SPDY明确增加响应能力,并解决重复传输数据的问题,作为HTTP/2协议的基础。
HTTP/2协议与HTTP/1.1有如下几点不同:
(1)二进制协议而不是文本协议。无法手动读取和创建。虽然有这个障碍,但是可以通过改进进行优化;
(2)这是一个多路复用协议,同一连接可以接受并行请求,从而消除HTTP/1.1协议的限制;
(3)压缩头部。由于这些请求在一组请求中通常是相似的,压缩头部消除了数据传输的开销;
(4)允许使用服务器推送机制,即在客户端段缓存中填充数据。
2015年5月正式标准化,HTTP/2使用量在2022年1月达到峰值,
占所有网站的46.9%(统计数据https://w3techs.com/technologies/details/ce-http2)。
为节省数据传输开销和后续预算,高流量网站采用的速度最快。
这种快速拥抱HTTP/2的原因可能是因为不需要更改网站和应用程序。
使用HTTP/2只需要更新服务器,浏览器即可使用。
只需少量的组织来触发应用,随着浏览器和服务器的更新,使用量自然会增加,而Web开发者无需进行大量工作。
2.7 后HTTP/2时代的演变
HTTP的扩展仍在继续。引用2016年出现的HTTP扩展:
(1)支持Alt-Svc,允许分离给定资源的标识和位置,意味着更智能的CDN缓存机制;
(2)引入客户端提示,允许浏览器或客户端主动向服务器传输有关需求和硬件约束的信息;
(3)Cookie头中引入安全相关的前缀,有助于保证Cookie不会被更改。
2.8 HTTP/3:通过QUIC实现HTTP
HTTP的下一个主要版本HTTP/3,HTTP/3与早起的HTTP版本有相同的语义,
只是在传输层使用了QUIC,而不是TCP。
截至2022年10月,有26%的网站使用HTTP/3。
QUIC为HTTP连接提供更低的延迟。与HTTP/2一样,QUIC是一个多路复用协议,
但是HTTP/2运行在单个TCP连接上,因此,TCP在处理丢包检测和重传会阻塞所有流。
QUIC基于UDP运行多个流,并对每个流独立地执行丢包检测和重传,
如果发生错误,只会影响当前包的流。
相关文章:
Http发展历史
1 缘起 有一次,听到有人在议论招聘面试的人员, 谈及应聘人员的知识深度,说:问了一些关于Http的问题,如Http相关结构、网络结构等, 然后又说,问没问相关原理、来源? 我也是有些困惑了…...
高级Java程序员必备的技术点,你会了吗?
很多程序员在入行之后的前一两年,快速学习到了做项目常用的各种技术之后,便进入了技术很难寸进的平台期。反正手里掌握的一些技术对于应付普通项目来说,足够用了。因此也会缺入停滞,最终随着年龄的增长,竞争力不断下降…...
【暴力量化】查找最优均线
搜索逻辑 代码主要以支撑概率和压力概率来判断均线的优劣 判断为压力: 当日线与测试均线发生金叉或即将发生金叉后继续下行 判断为支撑: 当日线与测试均线发生死叉或即将发生死叉后继续上行 判断结果的天数: 小于6日均线,用金叉或…...
Java读取mysql导入的文件时中文字段出现�??的乱码如何解决
今天在写程序时遇到了一个乱码问题,困扰了好久,事情是这样的, 在Mapper层编写了查询语句,然后服务处调用,结果控制器返回一堆乱码 然后查看数据源头处: 由重新更改解码的字符集,在数据库中是正…...
k8s核心概念—Pod Controller Service介绍——20230213
文章目录一、Pod1. pod概述2. pod存在意义3. Pod实现机制4. pod镜像拉取策略5. pod资源限制6. pod重启机制7. pod健康检查8. 创建pod流程9. pod调度二、Controller1. 什么是Controller2. Pod和Controller关系3. deployment应用场景4. 使用deployment部署应用(yaml&a…...
Tensorflow的数学基础
Tensorflow的数学基础 在构建一个基本的TensorFlow程序之前,关键是要掌握TensorFlow所需的数学思想。任何机器学习算法的核心都被认为是数学。某种机器学习算法的策略或解决方案是借助于关键的数学原理建立的。让我们深入了解一下TensorFlow的数学基础。 Scalar 标…...
IT培训就是“包就业”吗?内行人这么看
大部分人毕业后选择参加职业技能培训,都是为了学完之后能找到好工作,而“就业服务”也成为各家培训机构对外宣传的重点内容。那么,所谓的“就业服务”就是“包就业”和“包底薪”吗?学完就一定能拿到offer吗?今天&…...
【算法】【数组与矩阵模块】顺时针旋转打印矩阵
目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 …...
Java中的锁概述
java中的锁java添加锁的两种方式:synchronized:关键字 修饰代码块,方法 自动获取锁、自动释放锁Reentrantlock:类 只能修饰代码块 手动加锁、释放锁java中锁的名词一些锁的名词指的是锁的特性,设计,状态&am…...
微电影行业痛点解决方案
在当下新媒体时代,微电影作为“微文化”的载体,具有“微”的特点,经过短短数年的快速发展,并获得了受众广泛的关注和喜爱,对人们的休闲娱乐方式也产生较大的影响。但在迅猛发展的同时也存在一些行业痛点,诸…...
使用Spring框架的好处是什么
使用Spring框架的好处是什么? 1、轻量:Spring 是轻量的,基本的版本大约2MB。 2、控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 3、面向切面的编程(AOP…...
【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成弹框修改数据
前言 这是继我另一个帖子就是单元格点击变成输入框后添加的功能 因为考虑到有些时候修改单元格的信息可能点击后要修改很多,那一个输入框不好用 所以这时候就需要一个弹框可以把所有表单都显示出来修改 所以这里就专门又写了一个demo,用于处理这种情况 …...
vue3.0 响应式数据
目录1.什么是响应式2. 选项式 API 的响应式数据3.组合式 API 的响应式数据3.1 reactive() 函数3.2 toref() 函数3.3 toRefs() 函数3.4ref() 函数总结1.什么是响应式 这个术语在今天的各种编程讨论中经常出现,但人们说它的时候究竟是想表达什么意思呢?本质…...
uni-app ①
文章目录一、uni-app简介学习 uniapp 本质uniapp 优势uni-app 和 vue 的关系uni-app 和小程序有什么关系uniapp 与 web 代码编写区别课程内容学习重点知识点一、uni-app 简介 uni-app 是一个使用 Vue.js 进行 开发所有前端应用的框架。开发者编写一套代码,即可发布…...
20个 Git 命令玩转版本控制
想要在团队中处理代码时有效协作并跟踪更改,版本控制发挥着至关重要的作用。Git 是一个版本控制系统,可以帮助开发人员跟踪修订、识别文件版本,并在必要的时候恢复旧版本。Git 对于有一定编程经验的用户来说虽然不算太难,但是想要…...
SAP NetWeaver版本和SAP Kernel版本的确定
SAP NetWeaver(SAP NW)描述了用于“业务启用”的所有软件和服务。SAP业务套件(如ERP中央组件(ECC)或供应商关系管理(SRM))包含该特定业务解决方案的软件组件。 以下是SAP NetWeaver…...
面试23K字节测试开发岗被血虐,到底具有怎样的技术才算高级水平?
前几天我朋友跟我吐苦水,这波面试又把他打击到了,做了6年软件测试。。。 下面这条招聘是在腾讯招聘官网截图下来的,首先我们对高级水平下一个定义吧,那它应该是对标这个职级该有的能力 什么样的工程师才能算高级?至少…...
智云通CRM:买对了吗——大客户采购的方案实施
一旦采购合同签署后,供应商就要履行合同,按时交付产品进场使用,或实施服务方案。不过,无论对供应商还是客户来说,双方的合作并没有就此结束。 在这个阶段,客户会评估此次合作的供应商做事是否靠谱&#x…...
前后端开发过程中的跨域问题总结
1.何为跨域问题 出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能不能使用。可以说web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。…...
爬虫:栖落的电影网站,利用requests和re模块
这是栖落的电影网站地址:https://xxx.xxx 进入网页,显示: 爬取目标:电影的名称、观影人数和评分。 易知本网站的url url "https://xxx.xxx" 本网站会识别出headers中的python请求而拒绝访问,所以需要更改…...
使用burpsuite抓包 + sql工具注入 dvwa靶场
使用burpsuite抓包 sql工具注入 dvwa靶场 记录一下自己重新开始学习web安全之路②。 一、准备工作 1.工具准备 sqlmap burpsuite 2.浏览器准备 火狐浏览器 设置代理。 首先,先设置一下火狐浏览器的代理 http代理地址为127.0.0.0.1 ,端口为8080 …...
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
一、AcWing 846. 树的重心1.1题目1.2思路分析题意:什么是树的重心?树的重心是指,删除某个结点后剩下的最大连通子树的结点数目最小,如下图是根据样列生成的树,若删除结点1,则剩下三个子树最大的是中间那颗结…...
从零开始学数据分析之数据分析概述
当今世界对信息技术的依赖程度在不断加深,每天都会有大量的数据产生,我们经常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。 这里所说的信息,可以理解为对数据集处理之后的结果,是从数据集中提炼出的可…...
十五载厚积薄发,电信级分布式数据库是这样炼成
所在论坛:数据库技术创新&云原生论坛 分享时段:2.18 10:00-10:30 分享主题:大规模并行处理:AntDB分布式演进之路 分享嘉宾:沈夺,亚信科技AntDB数据库内核开发工程师 由中国开源软件推进联盟Postgre…...
Centos调整分区存储大小
将/home下900G转移到/目录下 1、查看分区大小:df -hl 2、备份home文件:tar cvf /run/home.tar /home 3、终止home文件进程(切换到非home路径下执行这个命令):fuser -km /home 3.1、如果没有fuser,在线安装…...
华为OD机试真题JAVA实现【单词接龙】真题+解题思路+代码(20222023)
华为OD机试真题JAVA实现【单词接龙】真题+解题思路+代码(2022&2023) 🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输…...
Mapbox Style 规范
Mapbox致力于打造全球最漂亮的个性化地图。 中文官网经常打不开所以做下记录,方便查阅。 Web 端 API Mapbox GL JS 的地图样式规范 Style 的各个配置项: (必填项会加上 * ,方便根据目录进行查看) 配置项:1.…...
Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析
1、代码生成器原理分析 造句: 我们可以往空白内容进行填词造句,比如: 在比如: 观察我们之前写的代码,会发现其中也会有很多重复内容,比如: 那我们就想,如果我想做一个Book模块的开发,是不是只需要将红色部分的内容全部…...
HTML学习
文章目录基础知识什么是HTMLW3C标准在IDEA中创建一个html文件HTML的基本结构网页基本信息网页的基本标签图像标签链接标签文本链接图片链接图片格式锚链接功能性链接其他基本标签块元素和行内元素标签对照表列表HTML3种列表有序列表无序列表定义列表HTML学习中的误区表格标签基…...
Java最新学习路线
Java语言是目前流行的互联网等企业的开发语言,是市面上很多程序员喜欢并且在用的程序设计语言。关于学习java,有一部分人是为了就业或自己创业,而大多数人是希望使用java这个开发语言用来工作,开发出计算机后端系统,利…...
和林格尔网站制作/如何找客户资源
《奔跑吧linux內核》3.2筆記,不足之處還望大家批評指正進程大致可以分為交互式進程,批處理進程和實時進程。對於不同的進程采用不同的調度策略,目前Linux內核中默認實現了4種調度策略,分別是deadline、realtime、CFS和idle&#x…...
林州企业网站建设/连接交换
目录1.springboot简介2.REST风格1.简介2.RESTful3.复制工程4.属性配置1.application.properties2.application.yml、.yaml3.关于写配置文件的时候没有提示的解决方案4.yaml1.语法格式2.读取数据3.封装对象5.整合第三方技术1.整合Junit1.实现2.注意事项2.整合mybatis3.整合mybat…...
极简风格 网站/长尾关键词快速排名软件
持续交付指的是在短周期内完成软件产品,以保证软件保持在随时可以发布的状态。让每一个变更都经过一条自动化的检验流水线,来检查每一个变更的质量,通过就进入下一个阶段。其不是一种工具,而是一种实践!持续交付的共识…...
洛阳网站开发培训/网络舆情案例分析
MIUI7怎么打开usb调试?小米手机在连接电脑前,一般都要先设置开启USB调试,之后才可以正常连接电脑。有朋友反应MIUI7 usb调试怎么找不到,下面来教大家。 MIUI 7 usb调试在哪? 第一步:首先在小米手机桌面找到…...
手机app快速开发平台/seo日常工作
SHR(右移)指令使目的操作数逻辑右移一位,最高位用 0 填充。最低位复制到进位标志位,而进位标志位中原来的数值被丢弃:SHR 与《SHL指令》一节中介绍的 SHL 的指令格式相同。在下面的例子中,AL 中的最低位 0 被复制到进位标志位&…...
qq官网/seo的特点是什么
解决2次回调 <el-input v-model"input" placeholder"请输入内容" keyup.enter.native"getList" blur"getList" > </el-input>「背景」:想开开心心敲代码,没料到一不小心又写了个bug。。。正常的动…...