0.0.0.0 和 127.0.0.1 是两个不同的 IP 地址,它们在网络配置和功能上有显著的区别。这些区别不仅适用于 Windows 和 Linux 系统,实际上是在所有操作系统中通用的。下面我们将详细解释这两个地址的意义及其在不同操作系统中的行为
127.0.0.1 - 本地回环地址(Loopback Address)
127.0.0.1 是一个特殊的 IPv4 地址,称为本地回环地址或简称为“localhost”。它用于标识本机上的网络服务,而不会真正通过物理网络接口发送数据包
开发人员经常使用 127.0.0.1 来测试服务器软件,因为它允许客户端和服务端都在同一台机器上运行。内部通信:操作系统内部组件之间的通信也会用到这个地址
Rust 由 Mozila 一位工程师创造,他对这个语言的期望是:安全,性能,特性广泛,以内存安全为第一原则,注重并发安全,持续提升性能,现代化语言特性,拥抱开源社区。Rust 是通用型语言,适用所有领域绝大数场景,但本质是弥补 C 的内存安全问题,因为百分之 70 的安全漏洞都是非法访问内存引起。Rust 将会为各领域的基础设施做出贡献,但也有可能会出现杀手级应用
安装 && 编译 && 运行
一般不单独安装 Rust 的编译器,而是使用 rustup 安装 Rust 相关的一整套工具链:编译器,标准库,Cargo 等
前置知识
- 编程语言
数据结构与算法是一个云里雾里的概念,在学习的过程中,没有必要去了解这些,尤其是在应用层面上面,数据结构与算法就显得不是特别重要,但是如果要了解设计层面上的东西,那么数据结构与算法就显得非常重要。可以不用,但是必须了解
数据结构就是在计算机中,存储和组织数据的方式,好比在图书馆中如何排列组织一些书,在如何取出书之前,应该先想一想如何摆放一些书籍。在计算机中解决问题的效率往往取决于数据的组织方式,计算机存储的数据量更大,种类更多,以什么样的方式来组织数据就是数据结构需要考虑的问题
JavaScript 的对象有一个非常特殊的隐藏属性,它要么为null
,要么就是对另一个对象的引用,这个对象叫做原型对象。当从一个对象中读取一个它没有的属性时,会从原型对象中获取该属性,这种行为叫做原型继承
使用对象的__proto__
属性访问原型对象
let A = { name: 'A' };
let B = {};
// B 的原型没有指向 A
console.log(B.name); // undefined
// B 的原型指向了 A
B.__proto__ = A;
console.log(B.name); // 'A'
Git 是一套程序源代码的分布式版本管理系统,最初用于管理 Linux 核心代码的开发,后来被多个开源工程使用,如今已经成为互联网协作开发的标准源代码管理工具。从开发者的角度上来看,Git 有以下功能:
- 从服务器上克隆代码到自己的机器上
- 在自己的机器上创建分支,修改代码
- 将自己机器上的代码提交到服务器上
- 合并分支
- .....
主要的竞争对手:
- SVN
- CVS
- Mercurial
这是使用 Git 的流程:
SSL 证书相关基础
一般来说,申请证书的步骤是:
- 创建一个私钥(key)文件
- 根据私钥生成一个证书签名请求(csr, Certificate Signing Request)文件
- 把请求文件提交给权威的证书颁发机构,颁发机构审核通过之后,再根据这些申请信息生成相应的证书(crt, certificate 文件)
证书颁发机构用于给别人签署的证书属于 CA 证书,只要 CA 证书受信任,则 CA 证书签署过的证书也会受信任
而自己给自己签署的证书称为自签署证书,可以当作 CA 证书来使用。只是使用前需要手动加入浏览器等软件的证书信任列表中,否则浏览器会不信任
前置知识
- HTML
- CSS
- JavaScript
DOM 树
由于 HTML 最主要的部分是标签,根据 DOM 规范,每个标签都是一个对象,标签中的内容也是一个对象
<!DOCTYPE HTML>
<html>
<head>
<title>JQiue's notes</title>
</head>
<body>
Hello,HTML
</body>
</html>
作为万维网 Web 前端最重要的编程语言,JavaScript 的出现使网页和用户之间实现了实时和动态的交互关系,所有的浏览器都嵌入了 JavaScript 解释引擎
JavaScript 在刚诞生时,它的名字叫做“LiveScript”,在当时 Java 很流行,所以碰瓷一下 Java 会有助于它流行。现在 JavaScript 完全成为了一门独立的语言,也拥有了自己的语言规范 ECMAScript
ECMAScript 通常被称为 JavaScript,但后者为更多人所认知。真正的标准其实是 ECMAScript,而 JavaScript 只是其中的一个实现,大部分浏览器厂商都有自己的 ECMAScript 标准实现,比如谷歌的 V8,苹果的 JavaScriptCore,Mozilla 的 JavaScript。学习 JavaScript,实际上学习的是 ECMAScript,对于开发者来说基本不会感知到不同实现的区别
每一种语言都有根据自己的特性量身定做的规范
标识符命名
标识符不但是程序中的语法单位,也可以认为是程序员之间交流的一种"行话"。如果随心所欲的命名,那么形成的很可能不是"行话",而是密码,对于团队开发是一种噩梦。所以,标识符的命名一定要清晰且有明确的含义,通常使用完整单词或者众所周知的单词缩写构成
- 驼峰命名法:如果一个标识符由多个完整单词或者单词缩写构成,如果统一大写或者小写形式并不有利于阅读,规则很简单,就是将构成标识符的单词或单词缩写的首字符大写,也叫小驼峰
- 帕斯卡命名法:帕斯卡命名法也叫大驼峰命名法,和小驼峰区别就是所有的首字符全部大写
- 匈牙利命名法:此命名法对标识符进行了更为精细的划分,传达给阅读者的信息也会更多,标识符的名称构成:属性+类型+功能描述的顺序组合起,表示属性和类型的部分采用小写,功能描述部分首字母大写的一个单词或多个单词组合