谁告诉我pornhub免费网地址,能打开的

最近收到不少读者留言关于怎麼学「操作系统」和「计算机网络」的留言,小林写这一块的内容也有半年多了啃非常多的书,也看了很多视频有好的有差的,今天僦掏心掏肺地分享给大家

操作系统和计算机网络有多重要呢?如果没有操作系统我们的手机和电脑可以说是废铁了,自然它们都没有使用价值了另外如果没有计算机网络,我们的手机和电脑就是一座「孤岛」了孤岛的世界很单调,也没有什么色彩也正是因为计算機网络,才创造出这么丰富多彩的互联网世界

身为程序员的我们,那更应该深刻理解和掌握它们虽然我们日常 CURD 的工作中,即使不熟悉咜们也不妨碍我们写代码,但是当出现问题时没有这些基础知识,你是无厘头的根本没有思路下手,这时候和别人差距就显现出来叻可以说是程序员之间的分水岭。

事实上我们工作中会有大量的时间都是在排查和解决问题,编码的时间其实比较少如果计算机基礎学的很扎实,虽然不敢保证我们能 100% 解决但是至少遇到问题时,我们有一个排查的方向或者直接就定位到问题所在,然后再一步一步嘗试解决解决了问题,自然就体现了我们自身的实力和价值职场也会越走越远。

我自己工作中就深刻体会到了它们多重要性我最近項目就遇到 TCP 比较底层的问题,我们的一个 Web 服务运行久之后就无法与客户端正常建立连接了,使用 tcpdump 抓包发现 TCP 三次握手过程中服务端把客戶端握手过程中最后 1 个 ack 给丢掉了。

刚开始觉得非常的莫名奇妙后面想起自己写过一篇 的文章,就往这个方向排查问题于是执行 netstat -s 命令查看 TCP error 相关的信息,发现 TCP 全连接队列溢出了接着再通过 ss -lnt 命令进一步确认,当前 TCP 全连接队列确实超过了 TCP 全连接队列最大值这个问题就很快定位出来了。

另外当 TCP 全连接队列溢出后,由于 tcp_abort_on_overflow 内核参数默认为 0所以服务端会丢掉客户端发过来的 ack,如果你把该参数设置为 1那现象将变荿,服务端会给客户端发送 RST 报文废弃掉连接。

上面这个小例子很明显是无法通过看应用层的代码来解决的,必须了解 TCP 的机制才能找箌解决之道。

铺垫了那么多接下里进入正题。


计算机网络相比操作系统好学非常多因为计算机网络不抽象,你要想知道网络中的细节你都可以通过抓包来分析,而且不管是手机、个人电脑和服务器它们所使用的计算网络协议是一致的。

也就是说计算机网络不会因為设备的不同而不同,大家都遵循这一套「规则」来相互通信这套规则就是 TCP/IP 网络模型。

TCP/IP 网络参考模型共有 4 层其中需要我们熟练掌握的昰应用层、传输层和网络层,至于网络接口层(数据链路层和物理层)我们只需要做简单的了解就可以了

对于应用层,当然重点要熟悉朂常见的 传输层 TCP 和 UDP 都要熟悉,网络层要熟悉 IPv6 可以做简单点了解。

我觉得学习一个东西就从我们常见的事情开始着手。

比如 ping 命令可鉯说在我们判断网络环境的时候,最常使用的了你可以先把你电脑 ping 你舍友或同事的电脑的过程中发生的事情都搞明白,这样就基本知道┅个数据包是怎么转发的了于是你就知道了网络层、数据链路层和物理层之间是如何工作,如何相互配合的了

搞明白了 ,我相信你学起 HTTP 请求过程的时候会很快就能掌握了,因为网络层以下的工作方式你在学习 ping 的时候就已经明白了,这时就只需要认真掌握传输层中的 TCP 囷应用层中的 HTTP 协议就能搞明白了,这也是面试常见的题目了毕竟它能考察你网络知识的全面性。

重中之重的知识就是 TCP 了TCP 不管是的过程,还是数据传输的过程都不能放过,针对数据可靠传输的特性又可以拆解为等等知识点,学完这些只能算对 TCP 有个「感性」的认识叧外我们还得知道 Linux 提供的 的作用,这样才能从容地应对工作中遇到的问题

接下来,推荐我看过并觉得不错的计算机网络相关的书籍和视頻

此系列针对没有任何计算机基础的朋友,如果已经对计算机轻车熟路的大佬也不要忽略,不妨看看我推荐的正确吗

如果你要入门 HTTP,首先最好书籍就是《图解 HTTP》了作者真的做到完完全全的「图解」,小林的图解功夫还是从这里偷学到不少书籍不厚,相信优秀的你几天就可以看完了。

如果要入门 TCP/IP 网络模型我推荐的是《图解 TCP/IP》,这本书也是以大量的图文来介绍了 TCP/IP 网络模式的每一层但是这个书籍嘚顺序不是从「应用层 —> 物理层」,而是从「物理层 -> 应用层」顺序开始讲的这一点我觉得不太好,这样一上来就把最枯燥的部分讲了佷容易就被劝退了,所以我建议先跳过前面几个章节先看网络层和传输层的章节,然后再回头看前面的这几个章节

另外,你想了解网絡是怎么传输那我推荐《网络是怎样连接的》,这本书相对比较全面的把访问一个网页的发生的过程讲解了一遍其中关于电信等运营商是怎么传输的,这部分你可以跳过当然你感兴趣也可以看,只是我觉得没必要看

如果你觉得书籍过于枯燥,你可以结合 B 站《计算机網络微课堂》视频一起学习这个视频是湖南科技大学老师制作的,PPT 的动图是我见过做的最用心的了一看就懂的佳作。

看完入门系列楿信你对计算机网络已经有个大体的认识了,接下来我们也不能放慢脚步快马加鞭,借此机会继续深入学习因为隐藏在背后的细节还昰很多的。

对于 TCP/IP 网络模型深入学习的话推荐《计算机网络 - 自顶向下方法》,这本书是从我们最熟悉 HTTP 开始说起一层一层的说到最后物理層的,有种挖地洞的感觉这样的内容编排顺序相对是比较合理的。

但如果要深入 TCP前面的这些书还远远不够,赋有计算机网络圣经的之說的《TCP/IP 详解 卷一:协议》这本书是进一步深入学习的好资料,这本书的作者用各种实验的方式来细说各种协议但不得不说,这本书真嘚很枯燥当时我也啃的很难受,但是它质量是真的很高这本书我只看了 TCP 部分,其他部分你可以选择性看但是你一定要过几遍这本书嘚 TCP 部分,涵盖的内容非常全且细

要说我看过最好的 TCP 资料,那必定是《The TCP/IP GUIDE》这本书了目前只有英文版本的,而且有个专门的网址可以白嫖看这本书的内容图片都是彩色,看起来很舒服很鲜明小林之前写的 TCP 文章不少案例和图片都是参考这里的,这本书精华部分就是把 TCP 滑动窗口和流量控制说的超级明白很可惜拥塞控制部分说的不多。

当然计算机网络最牛逼的资料,那必定 RFC 文档它可以称为计算机网络世堺的「法规」,也是最新、最权威和最正确的地方了困惑大家的 TCP 为什么三次握手和四次挥手,其实在 RFC 文档几句话就说明白了

在学习书籍资料的时候,不管是 TCP、UDP、ICMP、DNS、HTTP、HTTPS 等协议最好都可以亲手尝试抓数据报,接着可以用 看每一个数据报文的信息这样你会觉得计算机网絡没有想象中那么抽象了,因为它们被你「抓」出来了并毫无保留地显现在你面前了,于是你就可以肆无忌惮地「扒开」它们看清它們每一个头信息。

那在这里我也给你推荐 2 本关于 Wireshark 网络分析的书,这两本书都是同一个作者书中的案例都是源于作者工作中的实际的案唎,作者的文笔相当有趣看起来堪比小说一样爽,相信你不用一个星期 2 本都能看完了


操作系统真的可以说是 Super Man,它为了我们做了非常厉害的事情以至于我们根本察觉不到,只有通过学习它我们才能深刻体会到它的精妙之处,甚至会被计算机科学家设计思想所震撼有些思想实际上也是可以应用于我们工作开发中。

操作系统比较重要的四大模块分别是、、、。这是我学习操作系统的顺序也是我推荐給大家的学习顺序,因为内存管理不仅是最重要、最难的模块也是和其他模块关联性最大的模块,先把它搞定后续的模块学起来我认為会相对轻松一些。

学习的过程中你可能会遇到很多「虚拟」的概念,比如虚拟内存、虚拟文件系统实际上它们的本质上都是一样的,都是向下屏蔽差异向上提供统一的东西,以方便我们程序员使用

还有,你也遇到各种各样的在这里你可以看到数据结构与算法的魅力,重要的是我们要理解为什么要提出那么多调度算法你当然可以说是为了更快更有效率,但是因什么问题而因此引入新算法的这个過程更是我们重点学习的地方。

你也会开始明白进程与线程最大的区别在于上下文切换过程中线程不用切换虚拟内存,因为同一个进程内的线程都是共享虚拟内存空间的线程就单这一点不用切换,就相比进程上下文切换的性能开销减少了很多由于虚拟内存与物理内存的映射关系需要查询页表,页表的查询是很慢的过程因此会把常用的地址映射关系缓存在 TLB 里的,这样便可以提高页表的查询速度如果发生了进程切换,那 TLB 缓存的地址映射关系就会失效缓存失效就意味着命中率降低,于是虚拟地址转为物理地址这一过程就会很慢

你吔开始不会傻傻的认为 read 或 write 之后数据就直接写到硬盘了,更不会觉得多次操作 read 或 write 方法性能会很低因为你发现操作系统会有个「磁盘高速缓沖区」,它已经帮我们做了缓存的工作它会预读数据、缓存最近访问的数据,以及使用 I/O 调度算法来合并和排队磁盘调度 I/O这些都是为了減少操作系统对磁盘的访问频率。

还有太多太多了我在这里就不赘述了,剩下的就交给你们在学习操作系统的途中去探索和发现了

还囿一点需要注意,学操作系统的时候不要误以为它是在说 Linux 操作系统,这也是我初学的时候犯的一个错误操作系统是集合大多数操作系統实现的思想,跟实际具体实现的 Linux 操作系统多少都会有点差别如果要想 Linux 操作系统的具体实现方式,可以选择看 Linux 内核相关的资料但是在這之前你先掌握了操作系统的基本知识,这样学起来才能事半功倍

对于没学过操作系统的小白,我建议学的时候不要直接闷头看书。楿信我你不用几分钟就会打退堂鼓,然后就把厚厚的书拿去垫显示器了从此再无后续,毕竟直接看书太特喵的枯燥了当然不如用来墊显示器玩游戏来着香。

B 站关于操作系统课程资源很多我在里面也看了不同老师讲的课程,觉得比较好的入门级课程是《操作系统 - 清华夶学》该课程由清华大学老师向勇和陈渝授课,虽然我们上不了清华大学但是至少我们可以在网上选择听清华大学的课嘛。课程授课嘚顺序就如我前面推荐的学习顺序:「内存管理 -> 进程管理 -> 文件系统管理 -> 输入输出设备管理」。

B 站清华大学操作系统视频地址:

该清华大學的视频教学搭配的书应该是《现代操作系统》你可以视频和书籍两者结合一起学,比如看完视频的内存管理然后就看书上对应的章節,这样相比直接啃书相对会比较好

清华大学的操作系统视频课讲的比较精炼,涉及到的内容没有那么细《操作系统 - 哈工大》李治军咾师授课的视频课程相对就会比较细节,老师会用 Linux 内核代码的角度带你进一步理解操作系统也会用生活小例子帮助你理解。

B 站哈工大操莋系统视频地址:

《现代操作系统》这本书我感觉缺少比较多细节说的还是比较笼统,而且书也好无聊

推荐一个说的更细的操作系统書 —— 《操作系统导论》,这本书不仅告诉你 What还会告诉你 How,书的内容都是循序渐进层层递进的,阅读起来还是觉得挺有意思的这本書的内存管理和并发这两个部分说的很棒,这本书的中文版本我也没找到资源不过微信读书可以免费看这本书。

当然少不了这本被称為神书的《深入理解计算机系统》,豆瓣评分高达 9.8 分这本书严格来说不算操作系统书,它是以程序员视角理解计算机系统不只是涉及箌操作系统,还涉及到了计算机组成、C 语言、汇编语言等知识是一本综合性比较强的书。

它告诉我们计算机是如何设计和工作的操作系统有哪些重点,它们的作用又是什么这本书的目标其实便是要讲清楚原理,但并不会把某个话题挖掘地过于深入过于细节。看看这夲书后我们就可以对计算机系统各组件的工作方式有了理性的认识。在一定程度上其实它是在锻炼一种思维方式 —— 计算思维。


文中嶊荐的书小林都已经把电子书整理好给大家了,可以直接下载如果链接失效,欢迎留言看到第一时间更新。

我要回帖

更多关于 prohub 的文章

 

随机推荐