⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 麦叔编程 「小K」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

大家好,我是小K,在今天的话题开始之前,我想让大家猜一个问题:

问题:“/”这是正斜杠,还是反斜杠?

借一位大神的理解来说明:“/”是一个人站立着向前倾倒, 而“\”是一个人站立着向后倾倒。

为什么这俩货那么像,感觉用途也差不多,就不能统一下?

今天我们一起聊聊他们的前世今生:

正斜杠 “/”

早期的Unix系统设计中,正斜杠 “/”被选定作为目录分隔符。

/home/user/documents

这一选择主要是由于斜杠在ASCII字符集中位于更容易访问的位置,

并且早期计算机系统的键盘布局也使其易于输入。

反斜杠(\)在早期的键盘布局中通常需要使用Shift键或者位于较不显眼的位置,这使得它在当时的输入操作中不如斜杠方便。

随着互联网的发展,蒂姆·伯纳斯·李(Tim Berners-Lee)在设计URL(统一资源定位符)时也选择了使用正斜杠 “/”作为路径分隔符,以保持与Unix文件系统的兼容性。

反斜杠 “\”

然而在MS-DOS系统中,反斜杠“\”被选定为目录分隔符。

C:\Users\User\Documents

这一选择的一个原因是当时的操作系统需要与CP/M操作系统兼容,而CP/M使用反斜杠 “\”作为命令行参数的前缀。为了避免冲突,MS-DOS选择了反斜杠作为目录分隔符。

CP/M(Control Program for Microcomputers)是由Gary Kildall在1974年为Intel 8080/85基于Zilog Z80微处理器设计的一种早期操作系统。它在20世纪70年代末和80年代初非常流行,被广泛用于早期的微型计算机上。

实际使用中的区别

用作目录分割符

Unix(Linux、macOS和其他类Unix系统中),使用正斜杠 “/”;

/home/user/documents

在Windows操作系统中,使用反斜杠 “\”;

C:\Users\User\Documents

用作运算符号

正斜杠 “/”,表示除法,“//”表示取整除;

反斜杠 “\”,表示转义。比如 \n 是换行符。

包裹正则表达式

在Perl和JavaScript等语言中,正斜杠 “/” 用于包围正则表达式。例如:/regex/。

URL

在URL中,正斜杠 “/”用于分隔协议、域名和路径。

https://www.google.com/

资源路径(坑点!!)

在使用Windows环境开发时,出现在普通字符串的路径,如果是windows文件路径,则使用 正斜杠/ 和 反斜杠\ 是一样的;

如果是网络文件路径,则必须使用 正斜杠//。

1 <img src=".\Image/maishu/1.jpg" /> // 本地文件路径,/ 和 \ 是等效的
2 <img src="./Image\maishu\1.jpg" />
3 <img src="http://www.google.com/maishu/pic/1.jpg" /> // 网络文件路径,一定要使用 斜杆/

最后

斜杠(/) 和反斜杠(\) 在不同操作系统中被选择为目录分隔符,主要原因包括字符在ASCII字符集中的位置、键盘布局的便捷性,以及历史设计决策和兼容性需求。

我觉得让大家理解这些背景有助于更好地理解不同操作系统的设计选择和使用习惯。

文章目录
  1. 1. 正斜杠 “/”
  2. 2. 反斜杠 “\”
  3. 3. 实际使用中的区别
    1. 3.1. 用作目录分割符
    2. 3.2. 用作运算符号
    3. 3.3. 包裹正则表达式
    4. 3.4. URL
    5. 3.5. 资源路径(坑点!!)
  4. 4. 最后