点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

我们在浏览网页的时候,需要在浏览器中输入http://或者https://开头的URL地址,类似http://honeypps.com,那么这里的"://"或者"//"有什么用呢?

说到URL就不得不提URI了。用什么来标记服务器上的资源呢?用的就是URI(Uniform Resource Identifier),即统一资源标识符。URI经常出现在浏览器的地址栏里,有时候也会称它为“网络地址”,简称“网址”。不过,严格意义上来讲,URI不完全等同于网址,它包含URL(Uniform Resource Locator,统一资源定位符)和URN(Uniform Resource Name, 统一资源命名)。

由于URL的普及性特别高,狭义上,我们可以简单地把URI和URL看做是相等的东东。

我们来看一下URI的格式:

URI = scheme:[//authority]path[?query][#fragment]
authority = [userinfo@]host[:port]

结构图如下:

第一部分,scheme,可以翻译成协议名,表示资源应该使用哪种协议来访问。最常见的就是http和https了,其它的如:ftp、file等。

在 scheme 之后,必须是三个特定的字符“://”,它把 scheme 和后面的部分分离开。这个是今天的主角,如果单单是用作区分,完全可以只使用“:”这1个字母,而不是“://”这3个字母。

在“://”之后,是被称为“authority”的部分,表示资源所在的主机名,通常的形式是“host:port”,即主机名加端口号。以前authority还会包含身份信息userinfo,即“user:passwd@”的形式,不过现在已经不流行了,可以忽略。在后面的内容代表什么含义,相信大家都已经很清楚了。

当有人问你://有什么用的时候,其实是在挖坑。我们在面试的时候,经常在回答完一个问题的时候,面试官会抓着你答案里的一个点进行“深层次挖掘”,也可以称之为“夺命连环问”,久而久之我们会形成一种习惯,总觉得问题的背后有什么深层次的东西,需要我们绞尽脑汁去思考。这里的://就是一个典型的反例。

在2009年10月,BBC中的一篇新闻讲述了"//"的用途。原文地址:http://news.bbc.co.uk/2/hi/technology/8306631.stm。这里我讲这篇报道截了一个图,如下所示:

In a Times article in October 2009, Berners-Lee admitted that the initial pair of slashes ("//") in a web address were "unnecessary". He told the newspaper that he easily could have designed web addresses without the slashes. "There you go, it seemed like a good idea at the time", he said in his lighthearted apology.

2009年10月,万维网之父蒂姆·伯纳斯·李承认,在网址前加上双斜线的做法是一个错误。他在美国首都华盛顿举行的一次研讨会上表示,他最初设计的在网址前面加上“//”的方案,既没有意义也没有必要。如果有机会再来一次,他会将双斜线去掉。

对的,你没有看错,URI里的“//”没啥diao用。

为什么蒂姆·伯纳斯·李说“//”没用就是没用呢?这里补充一下蒂姆·伯纳斯·李的介绍。

7月27日,在伦敦奥林匹克体育场举行的2012年伦敦奥运会开幕式上,一位英国科学家隆重登场,接受全场掌声,这个“感谢蒂姆”的场面惊动全球,成为开幕式的一个亮点。他就是互联网的发明者、被业界公认为“互联网之父”的英国人蒂姆•伯纳斯•李(Tim Berners-Lee)。在全世界的注目下,他在一台电脑前象征性地打出了一句话:“This is for Everyone”,含义是:互联网献给所有人。蒂姆•伯纳斯•李不仅被视为英国人的骄傲,他同样无可争辩地赢得了全世界的尊重。

不仅因为他的发明改变了人类生活方式,改变了全球信息交流的传统模式,带来了一个全新的信息时代;更伟大的是,为了互联网的全球普及,让所有人不受限制地使用互联网,他宣布放弃为“WWW”申请专利。本可以在金钱上与比尔•盖茨不相上下,但他决定把自己的互联网成就无偿向全世界开放,个人失去了天价财富,却让包括我们在内的全人类获得受益,今天我们点击几乎任何一个网址都少不了“WWW”,这意味着我们时时在分享着蒂姆的无私奉献。1980年蒂姆•伯纳斯•李写下的程序奠定了互联网的基础,到2007年10月,全球网站数已经突破了2.5亿个,可想而知,他的奉献让全球互联网迅猛发展,也让所有的网络运营商们赚了不计其数的钱。

1955年6月8日,蒂姆•伯纳斯•李出生于英格兰伦敦西南部。他的父母都是计算机科学家,都参与了世界上第一台商业电脑——曼切斯特1型(Manchester Mark I)的设计建造。1976年蒂姆在牛津大学物理系获得一级荣誉学位。1980年6月至9月,蒂姆在欧洲核子研究组织(CERN)时,提出了一个独到的构想:创建一个以超文本系统为基础的项目,使分布于各地的计算机得以分享及更新信息。同时,他创建了ENQUIRE原型系统。l990年,蒂姆在当时的NEXTSTEP网络系统上,开发出世界上第一个网络服务器和第一个客户端浏览器编辑程序,建立了全球第一个WWW网站。他当之无愧地成为全球互联网的创始人。今天,WWW、http已成为人们的日常词汇,互联网已经影响到我们的工作、娱乐、社交等几乎所有领域。然而蒂姆从不居功自傲,每谈到成就,他总是平静地说:“我没有发明互联网,我只是找到了一种更好的方法。”

今天的知识点,你GET到了嘛?

References

  1. https://en.wikipedia.org/wiki/Uniform_Resource_Identifier

  2. https://en.wikipedia.org/wiki/Tim_Berners-Lee

  3. http://blog.sina.com.cn/s/blog_3e4d3af301017fnr.html

往期推荐

8000 字 服务端高并发分布式架构 14 次演进之路

面试:给我说一下Spring MVC拦截器的原理?

一文带你搞懂 MySQL 中的分区!

《Effective Java 第三版》最新中文版开放下载。。。

万字长文:详解 Spring Boot 中操作 ElasticSearch

扫一扫,关注我

一起学习,一起进步

面试:URI中的 “//” 有什么用?相关推荐

  1. 总结前端面试过程中最容易出现的问题

    前言 之前在兴安得力的时候,我也出过前端的面试题.那么前端人员在外面面试的时候,一般技术人员都会考察我们那些地方呢?我在这里不妨总结一下!(PS:有点小邪恶,这个公开之后,对于面试者来说是方便了.但是 ...

  2. 编程面试过程中最常见的10大算法

    编程面试过程中最常见的10大算法 编程语言:C/C++ 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 A ...

  3. python程序员工作怎样-python程序员怎样在面试过程中展现自己的基本功

    原标题:python程序员怎样在面试过程中展现自己的基本功 当下我国人工智能招聘岗位需求不多,不过后期的发展潜力巨大,而且python程序员的薪资待遇并不比Java程序员的差,Python程序员往往都 ...

  4. tomcat temp 大量 upload 文件_原创 | 浅谈URI中的任意文件下载

    点击上方蓝字 关注我吧引言 文件下载是比较常见的业务.常见的接口格式为/download?fileName=xxx.png,整个过程若没过滤目录穿越符号-/或者未对下载的路径进行处理限制.当传入的fi ...

  5. 面试过程中千万不要犯这 5 点低级错误

    转载自   面试过程中千万不要犯这 5 点低级错误 最近你面了几家公司了?都拿到多少offer了?如果你还没有拿到心仪的offer的话,想想自己是不是在面试中犯了错误,踩中面试官雷区了. 姑且不说面试 ...

  6. 【Win 10 应用开发】分析 URI 中的查询字符串

    分析URI中的字符有K种方法(K >= 2),如果查询字符串中的参数比较简单,可以通过子字符串查找的方式来处理:如果查询字符串相对复杂,你可以使用正则表达式来匹配 key1=value1 ,  ...

  7. 记一次面试过程中的Python编程题

    这几天面试过程中遇到一道Python编程题,题目如下: 面试中遇到一个Python编程问题:一个字符串,将里面的数字取出来,如果第一个数字前面是+,表示整个数字为正数,如果第一个数字前面是-,表示数字 ...

  8. AndroidStudio_安卓原生开发_拍照存储在Uri中_利用图片后通过Uri获取文件真实路径_然后删除---Android原生开发工作笔记161

    程序中有拍照的需求,拍照的时候,照片存在uri中,然后这个时候,系统会自动保存一遍,拍摄的照片 由于利用完照片以后,这个照片,便不再需要了,所以可以删除掉,但删除的时候,我们只有uri,怎么通过 ur ...

  9. 大厂Java面试过程中如何介绍自己的项目经历?

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 .常见的问法是,说下你最近的(或最拿得出手的)一个项目. 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段 ...

  10. URI中有关@符号的一些猥琐idea

    "@"在URI中是个奇特的字符,在URI中用于分隔userinfo与host. 使用"@"符hack的优点: 1.在host前面. 2.大多数情况不影响访问逻辑 ...

最新文章

  1. linux 子系统 巡检,Linux 系统巡检
  2. ElasticSearch集成SpringData史上最全查询教程
  3. 用.netcore写一个简单redis驱动,调试windows版本的redis
  4. SpringBoot 启动报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no emb
  5. webjs求数组的中位数‘_算法:一道常见的数组题,但很多人却写不出来(JAVA)...
  6. Vue-Treeselect 的下拉菜单不出Table的框
  7. 重定向无法设置页面编码?
  8. 近期必读 ICLR 2021 【模型压缩】【预训练】相关论文】
  9. MessageBox用法大全
  10. java开发常用在线工具整理
  11. crontab 误删除恢复
  12. vc调用任何第三方库的一般方法
  13. 程序员如何告别肩颈疲劳
  14. CCKS-2017行业知识图谱构建与应用-上篇
  15. win10下的VMware还原网络设置,无法创建VMware网络适配器解决办法
  16. 如花搞笑图片集锦(转贴)
  17. <<视觉问答>>2022:SwapMix: Diagnosing and Regularizingthe Over-Reliance on Visual Context in VQA
  18. babylonjs 分部加载模型_基于babylon3D模型研究3D骨骼动画(1)
  19. 制造业MES生产管理系统程序代码 MES源码
  20. 虚拟同步发电机_湖南大学涂春鸣等:具备同步电机特性的级联型光伏发电系统...

热门文章

  1. http get 传参最大长度介绍
  2. python 依赖库管理 包管理 pipreqs、pigar、pip-tools、pipdeptree 简介
  3. nmap脚本(nse)原理和编写
  4. Libgcrypt实现AES加密
  5. SQL Server快捷键
  6. Paste模块的世界
  7. tcp connection setup的实现
  8. php过滤特殊字符mysql攻击_php – MySQL在特殊字符处切断字符串
  9. mysql主从复制延时性问题_MySQL主从同步延迟原因及解决办法
  10. 使用bpf 排查 fd 泄漏