菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累

文章目录

  • 数据结构与算法之美
  • 趣谈网络原理
  • 深入浅出计算机组成原理
    • 导图解析(按顺序学习)
      • 1、计算机的基本组成
      • 2、计算机的指令和计算
      • 3、处理器设计(CPU设计)
      • 4、存储器的原理

数据结构与算法之美

入门二知识点:
1、数据结构服务于算法;算法也是作用在特定的数据结构
2、算法学习核心:复杂度分析
3、20个最基础最常用的数据结构和算法
10个数据结构:数组,队列,栈,堆,链表,散列表,二叉树,跳表,图,树;
10个算法:递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,动态规划,回溯算法,字符串匹配算法
(知识是一点一点积累,我也很想快点知道这些具体的东西,但是先确定好框架,知道要学什么,再来学习也只不过是:磨刀不误砍柴工)

趣谈网络原理

第一板块二知识点:
1、网络上跑的包都是完整的,可以有下层没上层,但不可能有上层没下层
2、二层、三层设备:这些设备处理的也是完整的包,只是程序不同,二层设备解析MAC层,看看是转发、丢弃还是自己留着,三层设备就是处理二层设备处理之后的包,然后解析IP层,看看是留下,丢弃还是转发
3、不能比喻为层层封装的比喻都是不恰当的,自己想一个贴切的例子:MAC(IP(TCP(HTTP(正文))))像俄罗斯套娃一样,越高层越在里面
4、评论精华+自己总结:
包在到达目的地址(国家)时,是不知道目标的MAC地址的,而是大吼谁的IP是XXXX,然后目标IP返回一个MAC地址(ARP协议),所以包在传递过程中MAC会变,但目的IP不会;如果是本地通信,则可以自己在自己的网络范围大吼目标IP(ARP协议),或者甚至可以直接靠MAC直接通信

最后配上极客时间的图文解析(大家有理解得不一样的,欢迎评论):

讲解:
当一个网络包从一个网口经过的时候,你看到了,首先先看看要不要请进来,处理一把。的网口配置了混杂模式,凡是经过的,全部拿进来。

拿进来以后,就要交给一段程序来处理。于是,你调用process_layer2(buffer)。当然,这是一个假的函数。但是你明白其中的意思,知道肯定是有这么个函数的。那这个函数是干什么的呢?从 Buffer 中,摘掉二层的头,看一看,应该根据头里面的内容做什么操作。

假设你发现这个包的 MAC 地址和你的相符,那说明就是发给你的,于是需要调用process_layer3(buffer)。这个时候,Buffer 里面往往就没有二层的头了,因为已经在上一个函数的处理过程中拿掉了,或者将开始的偏移量移动了一下。在这个函数里面,摘掉三层的头,看看到底是发送给自己的,还是希望自己转发出去的。

如何判断呢?如果 IP 地址不是自己的,那就应该转发出去;如果 IP 地址是自己的,那就是发给自己的。根据 IP 头里面的标示,拿掉三层的头,进行下一层的处理,到底是调用process_tcp(buffer) 呢,还是调用 process_udp(buffer) 呢?

假设这个地址是 TCP 的,则会调用process_tcp(buffer)。这时候,Buffer 里面没有三层的头,就需要查看四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复
包;如果是一个正常的数据包,就需要交给上层了。交给谁呢?是不是有process_http(buffer) 函数呢?

没有的,如果你是一个网络包处理程序,你不需要有process_http(buffer),而是应该交给应用去处理。交给哪个应用呢?在四层的头里面有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那你发给浏览器就行了。至于浏览器怎么处理,和你没有关系。

浏览器自然是解析 HTML,显示出页面来。电脑的主人看到页面很开心,就点了鼠标。点击鼠标的动作被浏览器捕获。浏览器知道,又要发起另一个 HTTP 请求了,于是使用端口号,将请求发给了你。

你应该调用send_tcp(buffer)。不用说,Buffer 里面就是 HTTP 请求的内容。这个函数里面加一个 TCP 的头,记录下源端口号。浏览器会给你目的端口号,一般为 80 端口。

然后调send_layer3(buffer)。Buffer 里面已经有了 HTTP 的头和内容,以及 TCP 的头。在这个函数里面加一个 IP 的头,记录下源 IP 的地址和目标 IP 的地址。

然后调用send_layer2(buffer)。Buffer 里面已经有了 HTTP 的头和内容、TCP 的头,以及 IP 的头。这个函数里面要加一下 MAC 的头,记录下源 MAC 地址,得到的就是本机器的 MAC 地址和目标的 MAC 地址。不过,这个还要看当前知道不知道,知道就直接加上;不知道的话,就要通过一定的协议处理过程,找到 MAC 地址。反正要填一个,不能空着。

万事俱备,只要 Buffer 里面的内容完整,就可以从网口发出去了,你作为一个程序的任务就算告一段落了。

深入浅出计算机组成原理

入门三知识点:
首先附上一张极客时间老师的思维导图

导图解析(按顺序学习)

1、计算机的基本组成

学习计算机的硬件组成,是如何应用在冯.诺依曼体系结构上的,也就是:运算器,控制器,存储器,输入设备和输出设备,还需要了解计算机的两大核心指标:性能和功耗

2、计算机的指令和计算

指令部分:搞明白我们每天撰写的代码是如何在计算机上运行起来的,而这一条条指令执行的控制过程,就是由控制器完成的。
计算部分:从二进制和编码入手,理解数据在计算机里面的表示,以及怎么从数字电路层面,实现加法、乘法,实现运算功能的ALU其实就是运算器。

3、处理器设计(CPU设计)

CPU时钟可以构造寄存器和内存的锁存器和触发器,搞明白为什么需要CPU时钟,以及寄存器和内存是由什么硬件组成,之后就可以看看数据通路——连接了整个运算器和控制器,并最终组成了CPU

4、存储器的原理

通过存储器的层次结构作为基础的框架引导,你需要掌握从上到下的 CPU 高速缓存、内存、SSD 硬盘和机械硬盘的工作原理,它们之间的性能差异,以及实际应用中利用这些设备会遇到的挑战。存储器其实很多时候又扮演了输入输出设备的角色,所以你需要进一步了解,CPU 和这些存储器之间是如何进行通信的,以及我们最重视的性能问题是怎么一回事;理解什么是IO_WAIT,如何通过 DMA 来提升程序性能。对于存储器,我们不仅需要它们能够正常工作,还要确保里面的数据不能丢失。于是你要掌握我们是如何通过 RAID、Erasure Code、ECC 以及分布式 HDFS,这些不同的技术,来确保数据的完整性和访问性能。

这只是一份单纯的导图,菜鸟看完也是一脸懵逼,很多名词完全不认识,但是我相信在后面一步一步的学习中,这个导图会越来越清晰的出现在各位以及菜鸟的脑海之中。(知识是一点一点积累,我也很想快点知道这些具体的东西,但是先确定好框架,知道要学什么,再来学习也只不过是:磨刀不误砍柴工)

极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图相关推荐

  1. 极客时间 自我提升第一天

    菜鸟又多日与大家未见,甚是想念,在回顾自己的大学生涯中,发现了自己根本没有学好任何东西,所以趁疫情不用归校,好好的查漏补缺,于是规划了3个月学习目标,我会将所看重点全部记录,越学习写的东西自然会慢慢深 ...

  2. 趣谈网络原理 网关(自我提升第二十四天)

    第一,菜鸟感觉这个极客时间的专栏因为是每天挑一个学,然后写博客,感觉顺序比较乱,我今天整理了一下. 第二,菜鸟感觉这些东西真的是:一天不学,等于白学.我才几天没看这个趣谈网络原理?完全不记得了,可能是 ...

  3. 考研总结(算法、数据结构、TP框架、操作系统、网络原理、计算机组成原理)

    ##数据结构: 逻辑结构:线性表,树形结构,图形结构,集合 物理结构:顺序存储,链接存储,散列存储,索引存储. 数组和链表的区别: 数组是从栈中分配空间的,具有固定的长度,方便读取记录,不易增删:链表 ...

  4. 趣谈网络原理 多交换机和VLAN(自我提升第十七天)

    经过了 反思 的小插曲,现在进入正题,现在已经是6月22日18:05了,那么话不多说,开始学习之旅吧! (因为要早睡,没写完,明天发,今天是6月23日8点44,其实菜鸟一直在纠结上一篇的交换机和ARP ...

  5. 思维导图学习(辣鸡浪费时间的一次学习)

    散了吧,后悔浪费了4h津津有味地看了这个东西,并没有得到我想要的东西. <你的第一本思维到图书> 总结一下:多联想.多思考(打破僵硬的思维).化关键词.运用分类 .用思维导图的方式来指导生 ...

  6. 宏观经济学思维导图_巧用思维导图,提升初三化学专题复习课实效

    旭东化学,你的教学助手  你关注的  正是我们专注的      关注教育 |  关注教学 | 关注化学 立即关注      初中化学知识分布比较零散,内容较为抽象,学生复习记忆比较困难.而思维导图作为 ...

  7. 宏观经济学第四章思维导图_宏观经济学思维导图_宏观分析师的自我修养手册:资深从业者万字方法论总结...

    宏观分析师的自我修养手册:资深从业者万字方法论总结 在我印象中,宏观经济学家大概分为两种,一种是三好学生经济学家,典型的英美牛... 你应该可以画出下面这张思维导图,并且如果在其中一个变量里给一个冲击 ...

  8. 本人亲自整理的极客时间设计模式之美的硬核笔记

    由于笔记内容过多,我把它放到语雀上了. 点击我 以下内容是为了让搜索引擎,检测到这篇文章.要阅读体验,请点击上面的连接"点击我",去我的语雀看.对了,我看到语雀那里有投诉的功能,请 ...

  9. 【极客时间】左耳听风

    极客时间-左耳朵耗子 01程序员如何用技术变现 上 02 程序员如何用技术变现下(2022/9/25) 10 渴望.热情和选择(2022/10月5日) 02 程序员如何用技术变现下 如何让自己的技能变 ...

最新文章

  1. Xcode iOS9.3 配置包 iOS10.0 配置包 iOS10.2 配置包 could not find developer disk image
  2. 【翻译】SQL Server索引进阶:第八级,唯一索引
  3. python3官方文档 中文-Python 3.7 官方文档中文翻译召集
  4. Docker使用Link在容器之间建立连接
  5. 【Spring学习】使用Spring的jdbcTemplate简化JDBC操作
  6. Java---线程多(工作内存)和内存模型(主内存)分析
  7. 使用apache的HttpClient进行http通讯,隐藏的HTTP请求头部字段是如何自动被添加的
  8. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (9) - 流水线前端/微指令队列循环流侦测器LSD
  9. 蓝桥杯 基础练习 回形取数
  10. CI中写原生SQL(封装查询)
  11. PMP试题 | 每日一练,快速提分 9.8
  12. 兄弟打印机内存已满清零方法_打印机是如何清零的?兄弟打印机清零方法
  13. GB28181国标错误码整理
  14. Horizontalscrollview
  15. NetApp 数据存储阵列 EF 系列——用于大数据分析和高性能计算
  16. 使用AdoptOpenJDK替代Oracle JDK
  17. 百度竞价的五个基本特征!
  18. 鬼谷八荒逆天改命词条通过C++代码制作
  19. Google Earth Engine ——边界线识别!
  20. EasyExcel合并单元格策略样例

热门文章

  1. 如何计算伺服电机的功率?
  2. Python可以做哪些神奇好玩的事情?
  3. CSS学习笔记(十)对表单和数据表格使用样式
  4. 学习笔记----层次分析法
  5. Excel-移动平均分析及预测分析
  6. J2V8 -- 开始使用J2V8
  7. Asterisk[1]
  8. 服务器响应551,为什么输出fi上的ftp响应551错误
  9. 【java学习】系统错误处理机制:异常(Exception)、断言(assert)和日志(log)
  10. 保留两位小数的四舍五入