随笔分类 -  课程

摘要:先来看看什么是中断?在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。 这样的解释可能过于学术了,容易云里雾里,我就举个生活中取外卖的例子。 小林中午搬完砖,肚子饿了,点了份白切鸡外卖,这次我带闪了,没有被 阅读全文
posted @ 2022-12-08 19:49 ImreW 阅读(235) 评论(0) 推荐(0)
摘要:我们想象中一个场景,大学期末准备考试了,你前去图书馆临时抱佛脚。那么,在看书的时候,我们的大脑会思考问题,也会记忆知识点,另外我们通常也会把常用的书放在自己的桌子上,当我们要找一本不常用的书,则会去图书馆的书架找。 就是这么一个小小的场景,已经把计算机的存储结构基本都涵盖了。 我们可以把 CPU 比 阅读全文
posted @ 2022-12-08 19:43 ImreW 阅读(177) 评论(0) 推荐(0)
摘要:在 1945 年冯诺依曼和其他计算机科学家们提出了计算机具体实现的报告,其遵循了图灵机的设计,而且还提出用电子元件构造计算机,并约定了用二进制进行计算和存储。 最重要的是定义计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备,这 5 个部分也被称为冯诺依曼模型。 运算器、 阅读全文
posted @ 2022-12-08 19:05 ImreW 阅读(711) 评论(0) 推荐(0)
摘要:发送方不能无脑的发数据给接收方,要考虑接收方处理能力。 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。 为了解决这种现象发生,TCP 提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。 下面举个栗子 阅读全文
posted @ 2022-12-08 10:26 ImreW 阅读(161) 评论(0) 推荐(0)
摘要:一、概念 门面模式(Facade Pattern),又被称之为外观模式。该模式提供一个统一的接口,用来访问相同子系统或者不同子系统之中的一群接口。使得子系统更加容易调用。 可以理解为:将多个接口功能组合到一个接口中,使得客户只要调用一个接口,而不用调用多个接口就能达到目的,避免外部直接访问具体的业务 阅读全文
posted @ 2022-12-08 09:53 ImreW 阅读(169) 评论(0) 推荐(0)
摘要:一、引入窗口概念的原因 我们都知道 TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了, 再发送下一个。 这个模式就有点像我和你面对面聊天,你一句我一句。但这种方式的缺点是效率比较低的。 如果你说完一句话,我在处理其他事情,没有及时回复你,那你不是要干等着我做完其他事情后,我 阅读全文
posted @ 2022-12-08 09:35 ImreW 阅读(53) 评论(0) 推荐(0)
摘要:一、概念 代理模式(Proxy Pattern)是指用一个代理类来包装具体实现类,由代理类代替目标类执行,从而为目标类增加一些额外的功能、处理。 简单说就是:在操作一个对象和对象中的方法时,不是直接操作这个对象,而是通过一个代理对象来操作这个目标对象,在调用代理方法前后或者抛出异常增加一些额外处理 阅读全文
posted @ 2022-12-08 09:03 ImreW 阅读(64) 评论(0) 推荐(0)
摘要:一、题目 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 二、思路 先序遍历树 A 中的每个节点 nA;(对应函数 isSubStructure(A, B)) 判断树 A中 以 nA为根节点的子树 是否包含树 阅读全文
posted @ 2022-12-08 08:24 ImreW 阅读(34) 评论(0) 推荐(0)
摘要:一、概念 装饰器模式(Decorator Pattern)指在不改变原有对象结构的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能)。符合开闭原则,对拓展开发,对修改关闭 模式动机:一般有2种方式可以实现给一个类或对象增加行为(方法) 继承:通过继承一个现有类可以使得 阅读全文
posted @ 2022-12-07 21:01 ImreW 阅读(47) 评论(0) 推荐(0)
摘要:一、题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 二、思路 利用双端队列的两端皆可添加元素的特性,设打印列表(双端队列) tmp ,并规定: 奇数层 则添加至 tmp 尾部 , 偶数层 则 阅读全文
posted @ 2022-12-07 18:28 ImreW 阅读(22) 评论(0) 推荐(0)
摘要:TCP 实现可靠传输的方式之一,是通过序列号与确认应答。 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。 但在错综复杂的网络,并不一定能如上图那么顺利能正常的数据传输,万一数据在传输过程中丢失了呢? 所以 TCP 针对数据包丢失的情况,会用重传机制解 阅读全文
posted @ 2022-12-06 22:14 ImreW 阅读(287) 评论(0) 推荐(0)
摘要:一、概念 (一)组合、聚合 聚合:就是说各个对象聚合在一起工作,但是我没有你也行,我照样可以正常运行。 组合呢,关系就比较密切,组合中的各个对象之间组成了一个整体,缺少了某一个对象就不能正常运行或者说功能会有很大缺陷。 也就是说聚合对象 "不具备相同生命周期",而组合对象 "具有相同的生命周期" ( 阅读全文
posted @ 2022-12-06 21:34 ImreW 阅读(105) 评论(0) 推荐(0)
摘要:一、TCP 四次挥手过程是怎样的? 天下没有不散的宴席,对于 TCP 连接也是这样, TCP 断开连接是通过四次挥手方式。 双方都可以主动断开连接,断开连接后主机中的「资源」将被释放,四次挥手的过程如下图: 客户端打算关闭连接,此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文,也即 F 阅读全文
posted @ 2022-12-06 11:12 ImreW 阅读(521) 评论(0) 推荐(0)
摘要:一、概念 适配器模式(Adapter Pattern)是指将一个类的接口转换成符合调用方规范的另一个接口,使原本的接口不兼容的类可以一起工作 适配器模式又叫做变压器模式,也叫做包装模式(Wrapper),但是包装模式可不止一个,还包括装饰者模式。 适配器模式有3种实现; 默认适配器 对象适配器 类适 阅读全文
posted @ 2022-12-06 09:37 ImreW 阅读(84) 评论(0) 推荐(0)
摘要:一、题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 二、思路 每一层打印到一行 。 三、代码 class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root: 阅读全文
posted @ 2022-12-06 09:05 ImreW 阅读(21) 评论(0) 推荐(0)
摘要:一、概念 我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),当直接创建对象的代价比较大时,我们可以采用原型模式(Prototype Pattern)。通过克隆已存在的对象,减少重新创建对象的时间开销 原型模式也称为"克隆模式", 即某个对象为原型克隆出来一个一模一样的 阅读全文
posted @ 2022-12-05 20:50 ImreW 阅读(22) 评论(0) 推荐(0)
摘要:一、TCP 三次握手过程是怎样的? TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图: 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号(client_is 阅读全文
posted @ 2022-12-05 20:34 ImreW 阅读(272) 评论(0) 推荐(0)
摘要:一、概念 建造者模式(Builder Pattern)也叫 “生成器模式”,”对象构建时非常复杂,且有很多步骤需要处理时,可以使用多个简单的对象一步一步组装成这个复杂对象。 建造模式的本质: 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的 阅读全文
posted @ 2022-12-05 19:46 ImreW 阅读(36) 评论(0) 推荐(0)
摘要:一、题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 二、思路 二叉树的 广度优先搜索(BFS)。 三、代码 class Solution { public int[] levelOrder(TreeNode root) { if(root == null) return 阅读全文
posted @ 2022-12-05 13:49 ImreW 阅读(20) 评论(0) 推荐(0)
摘要:一、TCP 头格式有哪些? 我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。 确认应答号: 阅读全文
posted @ 2022-12-04 15:52 ImreW 阅读(78) 评论(0) 推荐(0)