互联网基础思维
文章旨在提供互联网基础思维,其中每个小结后面都有可拓展的知识点,可自行学习。
一、搜索引擎
1. 搜索规则
比如:现在有两个网站内容分别为“唯美的书签”,“出版书的签名”。你通过Google搜索关键字 “书签”获得相关网站的大概流程是什么样呢?
- 首先,Google会将所有网站下载到本地(全国数据量真的很大),对内容进行词法解析,并对每个词按照【网页编号】-【文章中所在位置】记录。
- 网站一,编号为1。分词:唯美、的、书签
- 网站二,编号为2:分词:出版书、的、签名
- 汇总记录,唯美:[1-1]、的:[1-2] [2-2]、书签:[1-3]、出版书:[2-1]、签名:[2-3]
- 搜索“书签”,精准匹配到[1-3],“唯美的书签”被命中。“出版书的签名”因为中间夹杂“的”,没有被命中。
第一步会耗费大量内存存储数据,以便用户搜索关键词能够尽可能快的回应,这就是空间换时间。其中词法解析只是按照最简单的方式以便于理解,每个搜索引擎的都不一样。
可拓展:空间/时间复杂度算法、词法解析、SEO优化
2. 搜索结果排序
根据人类社会运作方式,通过图(一种数据结构)来模拟,并根据 被引用次数+1、被引用的权重+N、引用别人次数-1等因素决定网站的权重。
网站A被1个引用 +1 = 权重1、网站B被100个引用,引用别人1个,+100-1 = 权重99、网站C被网站B引用 +1+99 = 权重100。最终排序:C > B > A > …
可拓展:图(数据机构)、权重的诸多因素(被用户点开次数、建立新鲜感等)
二、数据传输
1. 避免传输错误
一般在开发时会提倡避免冗余代码,但是冗余合理的数据可以实现纠错功能。
比如传输的数据是A,通过某种计算B = f(A),同时传输数据A以及冗余B。接收到数据算出B’ = f(A),如果B’=B则数据正确,B’!=B则数据错误再要求重传。
只是函数f的计算形式不同罢了,最简单的奇偶校验,【0 1 0 0 1 1 0 1】八位二进制前7位存储数据,最后一位用于校验(1的总数为基数=1,1的总数为偶数=0)。可使用更为复杂方式,校验具体什么位置出了错,这里就不做过多赘述。
可拓展:TCP/IP协议
三、加密算法
在传输过程中,使用明文会再各个节点都有可能被篡改,电脑端木马病毒、不安全的局域网、运营商注入内容。解决办法就是使用加密算法。
有两种加密方式:AES对称加密、RSA非对称加密。
对称加密的使用会更广泛一些,而且加解密会更快,但有个问题是对称加密的密钥怎么传输给双方,网络本就有被窃听的风险。所以诞生了非对称加密,会有一对密钥(公钥、私钥),把公钥分发给所有人传输数据时进行加密,接收到只能用私钥进行解密。
可拓展:HTTPS