12 2022 档案

摘要:一、题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 二、思路 遍历一次 hash 数组,统计奇数的个数,然后做一次减法即可。 三、代码 class Solution { p 阅读全文
posted @ 2022-12-31 19:02 ImreW 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 二、思路 当前节点的值是其左子树的值的上界(最大值) 当前节点 阅读全文
posted @ 2022-12-29 15:34 ImreW 阅读(17) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 二、思路 使用颜色标记节点的状态,新节点为白色,已访问的节点为灰色。 如果遇到的节点为白色,则将其标记为灰色,然后将其右子节点、自身、左子节点依次入栈。 如果遇到的节点为灰色,则将节点的值输出。 三、代码 class Solu 阅读全文
posted @ 2022-12-28 13:18 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:第一章 概述 什么是协议和体系结构? 了解网络应用的两种模型:C/S和P2P模型 什么是资源子网和通信子网?各种网络设备(转发器、集线器、网桥、路由器等)所工作的层次和基本特性 了解计算机网络的分类方式:拓扑结构/传输媒体/地理范围等 计算机网络的度量:带宽、延迟、RTT和吞吐率,掌握如何计算延迟, 阅读全文
posted @ 2022-12-27 21:14 ImreW 阅读(69) 评论(0) 推荐(0) 编辑
摘要:一、传输媒体:了解双绞线、同轴电缆、光纤等导向媒体的基本特性,了解无线媒体中无线电波的传播方式,了解影响无线传输的衰减、噪声和多径传输等因素 1.传输媒体 传输媒体(Transmission Medium):相邻节点间实际传送信息的物理载体 传输媒体具有不同的带宽和抗干扰能力,限制了在其上传输的信息 阅读全文
posted @ 2022-12-27 13:41 ImreW 阅读(76) 评论(0) 推荐(0) 编辑
摘要:一、网桥 网桥又称桥接器,英文名Network Bridge,数据链路层设备。它也是转发数据包的设备,但和集线器(HUB)不一样的是,它工作在数据链路层。 在以太网构造的局域网上,最终的寻址是以数据链路层的MAC地址作为标识的(就是用MAC地址可以在局域网上找到一台唯一的机器),网桥能从发来的数据包 阅读全文
posted @ 2022-12-26 11:35 ImreW 阅读(342) 评论(0) 推荐(0) 编辑
摘要:一、帧同步:了解有哪些同步机制,掌握字符填充和比特填充机制 1.帧同步 帧同步:帧(Frame)的起始和结束定位 传输过程中可能有差错(只需要重传那些出错的帧);更有效地利用链路 异步协议,以字符为单位进行同步 传输字符,在字符起始处进行同步 发送方和接收方采用近似同一频率的时钟,短时间内时钟的偏移 阅读全文
posted @ 2022-12-26 09:23 ImreW 阅读(214) 评论(0) 推荐(0) 编辑
摘要:一、了解自治系统的概念,自治系统间和自治系统内部路由的区别 1.自治系统 自治系统 (Autonomous System, AS)由一个或者多个独立的管理实体控制的采用相同路由策略的网络和路由器组成 2.自治系统间和自治系统内部路由的区别 自治系统内部选择各自的内部路由协议(IGP) 可以采用不同的 阅读全文
posted @ 2022-12-25 14:20 ImreW 阅读(161) 评论(0) 推荐(0) 编辑
摘要:一、交换和路由 交换机(Switch):主要用于将一栋大厦或一个校园里的多台设备连接到同一个网络上。 路由器(Router):主要用于将多个网络连接起来。 交换技术和路由技术的最大区别在于他们寻址的方式以及报文的转发方式上 交换技术是发生在2层也就是数据链路层上,是直接利用mac地址建立会话;路由技 阅读全文
posted @ 2022-12-25 11:19 ImreW 阅读(126) 评论(0) 推荐(0) 编辑
摘要:一、TCP概述和TCP段格式 1.TCP概述 TCP(Transmission Control Protocol), 面向连接的, 可靠的, 基于字节流的传输层控制协议 特点 描述 面向连接 应用程序在使用 TCP协议之前,必须先建立TCP连接。在传输数据完毕后,必须释放已经建立的 TCP连接。 每 阅读全文
posted @ 2022-12-24 16:39 ImreW 阅读(125) 评论(0) 推荐(0) 编辑
摘要:一、DNS(Domain Name System)域名系统 DNS是 Domain Name System 的缩写,也就是 域名解析系统,它的作用非常简单,就是根据域名查出对应的 IP地址。 DNS是: 一个由分层的DNS服务器实现的分布式数据库; 一个使得主机能够查询分布式数据库的应用层协议。 ( 阅读全文
posted @ 2022-12-22 22:02 ImreW 阅读(40) 评论(0) 推荐(0) 编辑
摘要:(一)什么是协议和体系结构? 协议(protocol):计算机(节点)通信时对信息内容、信息表示以及交换过程遵循的共同约定 体系结构(architecture):计算机网络非常复杂,一般被分成多个层次,如何分层以及各层采用的协议总和称为体系结构 (二)了解网络应用的两种模型:C/S和P2P模型 1. 阅读全文
posted @ 2022-12-22 18:41 ImreW 阅读(35) 评论(0) 推荐(0) 编辑
摘要:一、基本概念 头文件: stdlib.h 函数功能: 执行dos命令(windows系统)或shell命令(Linux/Unix系统),参数字符串command为命令名。 注意: (1) windows系统下参数字符串不区分大小写; (2) 在window系统中,system()直接在控制台调用一个 阅读全文
posted @ 2022-12-21 22:06 ImreW 阅读(24) 评论(0) 推荐(0) 编辑
摘要:to do 阅读全文
posted @ 2022-12-21 21:31 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一、题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 二、思路 构建双指针距离: 前指针 former 先向前走 k 步(结束后,双指针 former 和 latter 间相距 k 步)。 三、代码 class Solutio 阅读全文
posted @ 2022-12-19 09:26 ImreW 阅读(11) 评论(0) 推荐(0) 编辑
摘要:一、MVC模型 MVC模型是(model模型 view视图 controller控制器)是一种软件设计的框架模式,它采用model-view-controller的方法把业务逻辑,数据与视图显示分离,把众多的业务逻辑集合在一个部件里。当然这样并不能让我们理解它,简单的说,就是一种把数据模型,视图显示 阅读全文
posted @ 2022-12-18 21:50 ImreW 阅读(64) 评论(0) 推荐(0) 编辑
摘要:to do 阅读全文
posted @ 2022-12-18 20:36 ImreW 阅读(34) 评论(0) 推荐(0) 编辑
摘要:DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议? DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。 (一)TCP与UDP简介 TCP 传输控制协议,是一种面向连接的协议,提供可靠的数据传输,一般服务质量要求比较高的情况,使用这个协议。 UDP 用 阅读全文
posted @ 2022-12-18 20:36 ImreW 阅读(857) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 二、思路 定位节点: 遍历链表,直到 head.val == val 时跳出,即可定位目标节点。修改引用: 设节点 cur 的前驱节点为 pre ,后继节点为 cur.next ;则执行 pr 阅读全文
posted @ 2022-12-18 13:25 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一、HTTP 缓存技术 (一)HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了,这样的话 HTTP/1.1 的性能肯定肉眼可见的提升。 阅读全文
posted @ 2022-12-17 11:01 ImreW 阅读(8) 评论(0) 推荐(0) 编辑
摘要:键盘可以说是我们最常使用的输入硬件设备了,但身为程序员的你,你知道「键盘敲入A 字母时,操作系统期间发生了什么吗」? 那要想知道这个发生的过程,我们得先了解了解「操作系统是如何管理多种多样的的输入输出设备」的,等了解完这个后,我们再来看看这个问题,你就会发现问题已经被迎刃而解了。 一、设备控制器 我 阅读全文
posted @ 2022-12-17 10:47 ImreW 阅读(50) 评论(0) 推荐(0) 编辑
摘要:一、题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 二、思路 三、代码 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: dic = {} res = tmp = 0 for j 阅读全文
posted @ 2022-12-17 10:17 ImreW 阅读(11) 评论(0) 推荐(0) 编辑
摘要:(一)vs2019 0.使用到的软件: 编译器:Visual Studio 2019 数据库软件:MySQL 8.0 1.第一步 打开MySQL的安装目录,默认的安装路径为:C:\Program Files\MySQL\MySQL Server 8.0,查看其中是否有lib和include目录,如果 阅读全文
posted @ 2022-12-17 00:41 ImreW 阅读(264) 评论(0) 推荐(0) 编辑
摘要:to do 阅读全文
posted @ 2022-12-16 21:37 ImreW 阅读(18) 评论(0) 推荐(0) 编辑
摘要:(一)GET 和 POST 有什么区别? 根据 RFC 规范,GET 的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 阅读全文
posted @ 2022-12-16 20:33 ImreW 阅读(34) 评论(0) 推荐(0) 编辑
摘要:一、设计模式概括 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。,其中最出名的当属Gang of Four (GoF) 的分类了,他们将设计模式分类为23 种经典的模式,根据用途我们又可以分为三大类 创 阅读全文
posted @ 2022-12-16 17:19 ImreW 阅读(43) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 二、思路 三、代码 class Solution: def 阅读全文
posted @ 2022-12-16 11:32 ImreW 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一、空闲空间管理 前面说到的文件的存储是针对已经被占用的数据块组织和管理,接下来的问题是,如果我要保存一个数据块,我应该放在硬盘上的哪个位置呢?难道需要将所有的块扫描一遍,找个空的地方随便放吗? 那这种方式效率就太低了,所以针对磁盘的空闲空间也是要引入管理的机制,接下来介绍几种常见的方法: 空闲表法 阅读全文
posted @ 2022-12-15 15:56 ImreW 阅读(32) 评论(0) 推荐(0) 编辑
摘要:一、概念 中介者模式(Mediator Pattern)又称为调节者模式或者调停者模式,定义了一个中介对象来封装一系列对象之间的交互关系,从而使各个对象之间不需要显式地相互引用,达到松耦合的目的。使得当某些对象之间的功能发生改变时,不会立刻影响其他的一些对象之间的功能。 核心思想:通过中介者对象解耦 阅读全文
posted @ 2022-12-15 14:01 ImreW 阅读(61) 评论(0) 推荐(0) 编辑
摘要:一、网关 (一)说法一 计算机的网关(Gateway)就是到其他网段的出口,也就是路由器接口IP地址。路由器接口使用的IP地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用的地址或最后一个可用的地址,这是为了尽可能避免和本网段中的主机地址冲突。 在如下拓扑图示例中,A与B,C与D,都可以 阅读全文
posted @ 2022-12-15 12:00 ImreW 阅读(339) 评论(0) 推荐(1) 编辑
摘要:文件的数据是要存储在硬盘上面的,数据在磁盘上的存放方式,就像程序在内存中存放的方式那样,有以下两种: 连续空间存放方式 非连续空间存放方式 其中,非连续空间存放方式又可以分为「链表方式」和「索引方式」。 不同的存储方式,有各自的特点,重点是要分析它们的存储效率和读写性能,接下来分别对每种存储方式说一 阅读全文
posted @ 2022-12-15 10:44 ImreW 阅读(968) 评论(0) 推荐(0) 编辑
摘要:一、概念 访问者模式(Vistor Pattern)是用于数据结构与数据操作分离的一种设计模式。是指封装一些作用于某种数据结构中的各种元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新操作。 模式动机:对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集 阅读全文
posted @ 2022-12-15 08:51 ImreW 阅读(67) 评论(0) 推荐(0) 编辑
摘要:一、题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 二、思路 设 f(i,j)为从棋盘左上角走至 阅读全文
posted @ 2022-12-15 08:29 ImreW 阅读(16) 评论(0) 推荐(0) 编辑
摘要:我们从用户角度来看文件的话,就是我们要怎么使用文件?首先,我们得通过系统调用来打开一个文件。 fd = open(name, flag); # 打开文件 ... write(fd,...); # 写数据 ... close(fd); # 关闭文件 上面简单的代码是读取一个文件的过程: 首先用 ope 阅读全文
posted @ 2022-12-14 21:54 ImreW 阅读(55) 评论(0) 推荐(0) 编辑
摘要:文件系统的种类众多,而操作系统希望对用户提供一个统一的接口,于是在用户层与文件系统层引入了中间层,这个中间层就称为虚拟文件系统(Virtual File System,VFS)。 VFS 定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员不需要了解文件系统的工作原理,只需要了解 VFS 提 阅读全文
posted @ 2022-12-14 21:48 ImreW 阅读(59) 评论(0) 推荐(0) 编辑
摘要:文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘里的数据并不会丢失,所以可以持久化的保存文件。 文件系统的基本数据单位是文件,它的目的是对磁盘上的文件进行组织管理,那组织的方式不同,就会形成不同的文件系统。 Linux 最经典的一 阅读全文
posted @ 2022-12-14 21:43 ImreW 阅读(167) 评论(0) 推荐(0) 编辑
摘要:一、题目 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 二、思路 若 dp[i−1]≤0,说明 dp[i−1]对 dp[i]产生负贡献,即 dp[i−1]+nums[i]还不如 nums[i]本身大。 当 dp[i−1]>0时:执 阅读全文
posted @ 2022-12-14 12:39 ImreW 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、概念 状态模式(State Pattern)也称为状态机模式(State Machine Pattern),当控制一个对象状态的条件表达式过于复杂的时候,就可以考虑使用状态模式,通过把状态的判断逻辑转移到表示不同状态的一系列类中,这样就可以把复杂的逻辑简单化,使得对象的行为依赖于它的状态,并且会 阅读全文
posted @ 2022-12-14 11:34 ImreW 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、概念 备忘录模式(Memento Pattern)又称之为快照模式(Snapshop Pattern)或者令牌模式(Token Pattern),是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样我们就可以在需要的时候将该对象恢复到原先保存的状态了 大白话: 备忘录 阅读全文
posted @ 2022-12-13 16:35 ImreW 阅读(82) 评论(0) 推荐(0) 编辑
摘要:跟 IP 协议相关的技术也不少,接下来说说与 IP 协议相关的重要且常见的技术。 DNS 域名解析 ARP 与 RARP 协议 DHCP 动态获取 IP 地址 NAT 网络地址转换 ICMP 互联网控制报文协议 IGMP 因特网组管理协 一、DNS 我们在上网的时候,通常使用的方式是域名,而不是 I 阅读全文
posted @ 2022-12-13 15:21 ImreW 阅读(64) 评论(0) 推荐(0) 编辑
摘要:我们来看看磁盘的结构,如下图: 常见的机械磁盘是上图左边的样子,中间圆的部分是磁盘的盘片,一般会有多个盘片,每个盘面都有自己的磁头。右边的图就是一个盘片的结构,盘片中的每一层分为多个磁道,每个磁道分多个扇区,每个扇区是 512 字节。那么,多个具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面,如上图 阅读全文
posted @ 2022-12-13 15:00 ImreW 阅读(347) 评论(0) 推荐(1) 编辑
摘要:一、GetAsyncKeyState GetAsyncKeyState()可以异步获取按键输入,GetAsyncKeyState(某个键的虚拟键码) 可以得到这个键的状态,然后判断返回值最高位是不是1,如果是1表示该键处于按下状态。 异步输入函数GetAsyncKeyState(),其可以同时识别两 阅读全文
posted @ 2022-12-13 11:43 ImreW 阅读(92) 评论(0) 推荐(0) 编辑
摘要:一、概念 命令模式(Command Pattern)是对命令的封装,每一个命令都是一个操作。首先请求的一方发出请求要求执行一个操作,然后接收的一方收到请求,并执行操作。 命令模式解耦了请求方和接收方,请求方只需要发送命令而不需要关心命令是如何被接收的,不关心命令怎么操作,也不关心命令是否被执行等。 阅读全文
posted @ 2022-12-13 08:25 ImreW 阅读(53) 评论(0) 推荐(0) 编辑
摘要:to do 阅读全文
posted @ 2022-12-12 22:42 ImreW 阅读(24) 评论(0) 推荐(0) 编辑
摘要:一、概念 责任链模式(Chain of Responsibility Pattern)是指将链中的每一个节点看作是一个对象,每个节点处理的请求均不同,且每个节点内部自动维护了一个下一个节点对象。当一个请求在链路的头部发出时,会沿着链的路径依次传递给每一个节点对象,直到有对象处理这个请求为止。 责任链 阅读全文
posted @ 2022-12-12 14:30 ImreW 阅读(73) 评论(0) 推荐(0) 编辑
摘要:一、题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 二、思路 原理: 以斐波那契数列性质 f(n+1)=f(n)+f(n−1)为转移方程 阅读全文
posted @ 2022-12-12 14:12 ImreW 阅读(21) 评论(0) 推荐(0) 编辑
摘要:在了解内存页面置换算法前,我们得先谈一下缺页异常(缺页中断)。 当 CPU 访问的页面不在物理内存时,便会产生一个缺页中断,请求操作系统将所缺页调入到物理内存。那它与一般中断的主要区别在于: 缺页中断在指令执行「期间」产生和处理中断信号,而一般中断在一条指令执行「完成」后检查和处理中断信号。 缺页中 阅读全文
posted @ 2022-12-12 14:05 ImreW 阅读(111) 评论(0) 推荐(0) 编辑
摘要:一、概念 迭代器模式,最常见的就是开发中使用JDK自带的Iterator 遍历集合。这个模式在我们实际开发中用的场景并不多。另外增强的for循环虽然是循环输出数据,但是他不是迭代器模式, 迭代器具备对元素的删除等操作。而增强for循环是不可以的。 迭代器模式(Iterator Pattern)又称为 阅读全文
posted @ 2022-12-12 13:35 ImreW 阅读(155) 评论(0) 推荐(0) 编辑
摘要:进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。 当 CPU 空闲时,操作系统就选择内存中的某个「就绪状态」的进程,并给其分配 CPU。 什么时候会发生 CPU 调度呢?通常有以下情况: 当进程从运行状态转到等待状态;(阻塞状态) 当进程从运行状态转到就绪状态; 当进程从等待状态转 阅读全文
posted @ 2022-12-11 22:05 ImreW 阅读(42) 评论(0) 推荐(0) 编辑
摘要:一、题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前 阅读全文
posted @ 2022-12-11 18:31 ImreW 阅读(14) 评论(0) 推荐(0) 编辑
摘要:在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程就只能等待,直到锁被释放。 那么,当两个线程为了保护两个不同的共享资源而使用了两个互斥锁,那么这两个互斥锁应用不当的时候,可能会造成两个线程都在等 阅读全文
posted @ 2022-12-11 16:29 ImreW 阅读(23) 评论(0) 推荐(0) 编辑
摘要:一、哲学家就餐问题 先来看看哲学家就餐的问题描述: 5 个老大哥哲学家,闲着没事做,围绕着一张圆桌吃面; 巧就巧在,这个桌子只有 5 支叉子,每两个哲学家之间放一支叉子; 哲学家围在一起先思考,思考中途饿了就会想进餐; 奇葩的是,这些哲学家要两支叉子才愿意吃面,也就是需要拿到左右两边的叉子才进餐; 阅读全文
posted @ 2022-12-11 13:02 ImreW 阅读(46) 评论(0) 推荐(0) 编辑
摘要:在进程/线程并发执行的过程中,进程/线程之间存在协作的关系,例如有互斥、同步的关系。 为了实现进程/线程间正确的协作,操作系统必须提供实现进程协作的措施和方法,主要的方法有两种: 锁:加锁、解锁操作; 信号量:P、V 操作; 这两个都可以方便地实现进程/线程互斥,而信号量比锁的功能更强一些,它还可以 阅读全文
posted @ 2022-12-11 11:23 ImreW 阅读(112) 评论(0) 推荐(0) 编辑
摘要:一、概念 观察者模式(Observer Pattern)又称为发布/订阅(Publish/Subscribe)模式,在对象之间定义了一对多的依赖关系,当一个对象改变状态,依赖它的对象会收到通知并自动更新. 观察者模式无外乎2个操作,观察者订阅自己关心的主题(Subject)和主题有数据变化后通知观察 阅读全文
posted @ 2022-12-11 10:50 ImreW 阅读(37) 评论(0) 推荐(0) 编辑
摘要:在单核 CPU 系统里,为了实现多个程序同时运行的假象,操作系统通常以时间片调度的方式,让每个进程执行每次执行一个时间片,时间片用完了,就切换下一个进程运行,由于这个时间片的时间很短,于是就造成了「并发」的现象。 另外,操作系统也为每个进程创建巨大、私有的虚拟内存的假象,这种地址空间的抽象让每个程序 阅读全文
posted @ 2022-12-10 18:23 ImreW 阅读(23) 评论(0) 推荐(0) 编辑
摘要:直接开讲! 每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。 Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些? 一、管道 如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。 $ ps auxf | 阅读全文
posted @ 2022-12-10 16:56 ImreW 阅读(48) 评论(0) 推荐(0) 编辑
摘要:一、概念 模板模式(Template Pattern)也叫模板方法模式,指在抽象类中将业务逻辑划分为多个方法,通过模板方法中调用这些方法后,组成完整的业务处理流程。子类只需重写相关方法实现,即可实现同一流程的不同处理方式 核心思想:定义一个抽象模板类,提供子类实现。 模式动机:许多业务有着相同的执行 阅读全文
posted @ 2022-12-10 15:59 ImreW 阅读(45) 评论(0) 推荐(0) 编辑
摘要:进程都希望自己能够占用 CPU 进行工作,那么这涉及到前面说过的进程上下文切换。 一旦操作系统把进程切换到运行状态,也就意味着该进程占用着 CPU 在执行,但是当操作系统把进程切换到其他状态时,那就不能在 CPU 中执行了,于是操作系统会选择下一个要运行的进程。 选择一个进程运行这一功能是在操作系统 阅读全文
posted @ 2022-12-10 14:50 ImreW 阅读(106) 评论(0) 推荐(0) 编辑
摘要:一、题目 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 二、思路 考虑从顶至底递归,判断每对节点是否对称,从而判断树是否为对称二叉树。 三、代码 class Solution: def isSymmetric(self, root: TreeNode 阅读全文
posted @ 2022-12-10 14:16 ImreW 阅读(11) 评论(0) 推荐(0) 编辑
摘要:一、概念 享元模式(Flyweight Pattern)是 "资源池技术"实现方式,主要用于减少创建对象的数量,以减少内存占用和提高性能。 模式动机:在创建大量对象时,有可能会造成内存溢出,享元模式把其中共同的部分抽象出来,保存在内存中,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建 阅读全文
posted @ 2022-12-10 13:55 ImreW 阅读(213) 评论(0) 推荐(0) 编辑
摘要:在 TCP/IP 网络通信时,为了保证能正常通信,每个设备都需要配置正确的 IP 地址,否则无法实现正常的通信。 IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处理的。 而人类为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位 阅读全文
posted @ 2022-12-09 21:58 ImreW 阅读(288) 评论(0) 推荐(0) 编辑
摘要:在早期的操作系统中都是以进程作为独立运行的基本单位,直到后面,计算机科学家们又提出了更小的能独立运行的基本单位,也就是线程。 一、为什么使用线程? 我们举个例子,假设你要编写一个视频播放器软件,那么该软件功能的核心模块有三个: 从视频文件当中读取数据; 对读取的数据进行解压缩; 把解压缩后的视频数据 阅读全文
posted @ 2022-12-09 21:42 ImreW 阅读(34) 评论(0) 推荐(0) 编辑
摘要:一、概念 组合模式(Composite Pattern)也称之为整体-部分(Part-Whole)模式。核心是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,组合成树形结构,使得单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。 它将对象以树形结构表示,最顶层的节 阅读全文
posted @ 2022-12-09 21:03 ImreW 阅读(10) 评论(0) 推荐(0) 编辑
摘要:IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。 1.网络层与数据链路层有什么关系呢? 有的小伙伴分不清 IP(网络层) 和 MAC (数据链路层)之间的区别和关系。 其实很容易区分,在上面我们知道 阅读全文
posted @ 2022-12-09 16:36 ImreW 阅读(107) 评论(0) 推荐(0) 编辑
摘要:我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称为「进程」(Process)。 现在我们考虑有一个会读取硬盘文件数据的程序被执行了,那么当运行到读取文件 阅读全文
posted @ 2022-12-09 15:52 ImreW 阅读(55) 评论(0) 推荐(0) 编辑
摘要:一、题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 二、思路 根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像。 三、代码 class Solution: def mirrorTree(self, root: TreeNode) - 阅读全文
posted @ 2022-12-09 11:09 ImreW 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.为什么要有拥塞控制呀,不是有流量控制了吗? 前面的流量控制是避免「发送方」的数据填满「接收方」的缓存,但是并不知道网络的中发生了什么。 一般来说,计算机网络都处在一个共享的环境。因此也有可能会因为其他主机之间的通信使得网络拥堵。 在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢 阅读全文
posted @ 2022-12-08 21:52 ImreW 阅读(73) 评论(0) 推荐(0) 编辑
摘要:本篇跟大家说说内存管理,内存管理还是比较重要的一个环节,理解了它,至少对整个操作系统的工作会有一个初步的轮廓,这也难怪面试的时候常问内存管理。 干就完事,本文的提纲: 一、虚拟内存 如果你是电子相关专业的,肯定在大学里捣鼓过单片机。 单片机是没有操作系统的,所以每次写完代码,都需要借助工具把程序烧录 阅读全文
posted @ 2022-12-08 21:27 ImreW 阅读(251) 评论(0) 推荐(0) 编辑
摘要:什么是内核呢? 计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。 内核有哪些能力呢? 现代操作系统,内核一般会提供 4 阅读全文
posted @ 2022-12-08 19:56 ImreW 阅读(69) 评论(0) 推荐(0) 编辑
摘要:前面我们也提到了,中断请求的处理程序应该要短且快,这样才能减少对正常进程运行调度地影响,而且中断处理程序可能会暂时关闭中断,这时如果中断处理程序执行时间过长,可能在还未执行完中断处理程序前,会丢失当前其他设备的中断请求。 那 Linux 系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分 阅读全文
posted @ 2022-12-08 19:54 ImreW 阅读(76) 评论(0) 推荐(0) 编辑
摘要:先来看看什么是中断?在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。 这样的解释可能过于学术了,容易云里雾里,我就举个生活中取外卖的例子。 小林中午搬完砖,肚子饿了,点了份白切鸡外卖,这次我带闪了,没有被 阅读全文
posted @ 2022-12-08 19:49 ImreW 阅读(209) 评论(0) 推荐(0) 编辑
摘要:我们想象中一个场景,大学期末准备考试了,你前去图书馆临时抱佛脚。那么,在看书的时候,我们的大脑会思考问题,也会记忆知识点,另外我们通常也会把常用的书放在自己的桌子上,当我们要找一本不常用的书,则会去图书馆的书架找。 就是这么一个小小的场景,已经把计算机的存储结构基本都涵盖了。 我们可以把 CPU 比 阅读全文
posted @ 2022-12-08 19:43 ImreW 阅读(158) 评论(0) 推荐(0) 编辑
摘要:在 1945 年冯诺依曼和其他计算机科学家们提出了计算机具体实现的报告,其遵循了图灵机的设计,而且还提出用电子元件构造计算机,并约定了用二进制进行计算和存储。 最重要的是定义计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备,这 5 个部分也被称为冯诺依曼模型。 运算器、 阅读全文
posted @ 2022-12-08 19:05 ImreW 阅读(629) 评论(0) 推荐(0) 编辑
摘要:发送方不能无脑的发数据给接收方,要考虑接收方处理能力。 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。 为了解决这种现象发生,TCP 提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。 下面举个栗子 阅读全文
posted @ 2022-12-08 10:26 ImreW 阅读(144) 评论(0) 推荐(0) 编辑
摘要:一、概念 门面模式(Facade Pattern),又被称之为外观模式。该模式提供一个统一的接口,用来访问相同子系统或者不同子系统之中的一群接口。使得子系统更加容易调用。 可以理解为:将多个接口功能组合到一个接口中,使得客户只要调用一个接口,而不用调用多个接口就能达到目的,避免外部直接访问具体的业务 阅读全文
posted @ 2022-12-08 09:53 ImreW 阅读(139) 评论(0) 推荐(0) 编辑
摘要:一、引入窗口概念的原因 我们都知道 TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了, 再发送下一个。 这个模式就有点像我和你面对面聊天,你一句我一句。但这种方式的缺点是效率比较低的。 如果你说完一句话,我在处理其他事情,没有及时回复你,那你不是要干等着我做完其他事情后,我 阅读全文
posted @ 2022-12-08 09:35 ImreW 阅读(40) 评论(0) 推荐(0) 编辑
摘要:一、概念 代理模式(Proxy Pattern)是指用一个代理类来包装具体实现类,由代理类代替目标类执行,从而为目标类增加一些额外的功能、处理。 简单说就是:在操作一个对象和对象中的方法时,不是直接操作这个对象,而是通过一个代理对象来操作这个目标对象,在调用代理方法前后或者抛出异常增加一些额外处理 阅读全文
posted @ 2022-12-08 09:03 ImreW 阅读(47) 评论(0) 推荐(0) 编辑
摘要:一、题目 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 二、思路 先序遍历树 A 中的每个节点 nA;(对应函数 isSubStructure(A, B)) 判断树 A中 以 nA为根节点的子树 是否包含树 阅读全文
posted @ 2022-12-08 08:24 ImreW 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一、概念 装饰器模式(Decorator Pattern)指在不改变原有对象结构的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能)。符合开闭原则,对拓展开发,对修改关闭 模式动机:一般有2种方式可以实现给一个类或对象增加行为(方法) 继承:通过继承一个现有类可以使得 阅读全文
posted @ 2022-12-07 21:01 ImreW 阅读(32) 评论(0) 推荐(0) 编辑
摘要:一、题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 二、思路 利用双端队列的两端皆可添加元素的特性,设打印列表(双端队列) tmp ,并规定: 奇数层 则添加至 tmp 尾部 , 偶数层 则 阅读全文
posted @ 2022-12-07 18:28 ImreW 阅读(16) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/engineerLF/p/5393006.html to do 阅读全文
posted @ 2022-12-07 17:59 ImreW 阅读(39) 评论(0) 推荐(0) 编辑
摘要:TCP 实现可靠传输的方式之一,是通过序列号与确认应答。 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。 但在错综复杂的网络,并不一定能如上图那么顺利能正常的数据传输,万一数据在传输过程中丢失了呢? 所以 TCP 针对数据包丢失的情况,会用重传机制解 阅读全文
posted @ 2022-12-06 22:14 ImreW 阅读(200) 评论(0) 推荐(0) 编辑
摘要:一、概念 (一)组合、聚合 聚合:就是说各个对象聚合在一起工作,但是我没有你也行,我照样可以正常运行。 组合呢,关系就比较密切,组合中的各个对象之间组成了一个整体,缺少了某一个对象就不能正常运行或者说功能会有很大缺陷。 也就是说聚合对象 "不具备相同生命周期",而组合对象 "具有相同的生命周期" ( 阅读全文
posted @ 2022-12-06 21:34 ImreW 阅读(80) 评论(0) 推荐(0) 编辑
摘要:一、TCP 四次挥手过程是怎样的? 天下没有不散的宴席,对于 TCP 连接也是这样, TCP 断开连接是通过四次挥手方式。 双方都可以主动断开连接,断开连接后主机中的「资源」将被释放,四次挥手的过程如下图: 客户端打算关闭连接,此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文,也即 F 阅读全文
posted @ 2022-12-06 11:12 ImreW 阅读(461) 评论(0) 推荐(0) 编辑
摘要:一、概念 适配器模式(Adapter Pattern)是指将一个类的接口转换成符合调用方规范的另一个接口,使原本的接口不兼容的类可以一起工作 适配器模式又叫做变压器模式,也叫做包装模式(Wrapper),但是包装模式可不止一个,还包括装饰者模式。 适配器模式有3种实现; 默认适配器 对象适配器 类适 阅读全文
posted @ 2022-12-06 09:37 ImreW 阅读(68) 评论(0) 推荐(0) 编辑
摘要:一、题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 二、思路 每一层打印到一行 。 三、代码 class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root: 阅读全文
posted @ 2022-12-06 09:05 ImreW 阅读(14) 评论(0) 推荐(0) 编辑
摘要:一、概念 我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),当直接创建对象的代价比较大时,我们可以采用原型模式(Prototype Pattern)。通过克隆已存在的对象,减少重新创建对象的时间开销 原型模式也称为"克隆模式", 即某个对象为原型克隆出来一个一模一样的 阅读全文
posted @ 2022-12-05 20:50 ImreW 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一、TCP 三次握手过程是怎样的? TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图: 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号(client_is 阅读全文
posted @ 2022-12-05 20:34 ImreW 阅读(213) 评论(0) 推荐(0) 编辑
摘要:一、概念 建造者模式(Builder Pattern)也叫 “生成器模式”,”对象构建时非常复杂,且有很多步骤需要处理时,可以使用多个简单的对象一步一步组装成这个复杂对象。 建造模式的本质: 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的 阅读全文
posted @ 2022-12-05 19:46 ImreW 阅读(30) 评论(0) 推荐(0) 编辑
摘要:一、题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 二、思路 二叉树的 广度优先搜索(BFS)。 三、代码 class Solution { public int[] levelOrder(TreeNode root) { if(root == null) return 阅读全文
posted @ 2022-12-05 13:49 ImreW 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、TCP 头格式有哪些? 我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。 确认应答号: 阅读全文
posted @ 2022-12-04 15:52 ImreW 阅读(52) 评论(0) 推荐(0) 编辑
摘要:一、HTTP 是什么? HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。 (一)能否详细解释「超文本传输协议」? HTTP的名字「超文本协议传输」,它可以拆成三个部分: 超文本 传输 协议 1. 「协议」 在生活中,我们也能随处可见「协议」,例如: 刚毕业时 阅读全文
posted @ 2022-12-03 21:07 ImreW 阅读(124) 评论(0) 推荐(0) 编辑
摘要:一、概念 单例模式的核心是保证一个单例对象的全局唯一性,并且提供给外部一个访问该唯一对象的接口。 解决问题:避免一个全局使用的类频繁地创建与销毁 如何解决:判断是否已经有这个单例,如果有则返回,如果没有则创建。 二、参与者 Singleton 单例类,负责创建自己的唯一实例,并提供外部访问接口。 C 阅读全文
posted @ 2022-12-03 18:25 ImreW 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一、题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的 阅读全文
posted @ 2022-12-03 12:43 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一、概念 前面2种模式(简单工厂模式和工厂模式)都是创建单一的产品,即一个工厂只生产一种产品,但是大部分的工厂都是多元产品的, 譬如:美的工厂生产空调,风扇,电饭煲,机器人;格力工厂: 空调,冰箱,电饭煲。以上两种模式都不可以实现。抽象工厂模式就是解决此类问题的; 抽象工厂模式(Abstract F 阅读全文
posted @ 2022-12-02 11:43 ImreW 阅读(455) 评论(0) 推荐(0) 编辑
摘要:一、题目 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 二、思路 若 flag > target ,则 target 一定在 flag 所在 行 阅读全文
posted @ 2022-12-02 11:21 ImreW 阅读(20) 评论(0) 推荐(0) 编辑
摘要:一、概念 工厂方法模式,又被称为· ”多态工厂模式“·,是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。 工厂方法模式抽象出工厂接口,声明具体工厂子类必须实现的方法。将对象实际创建工作交由工厂的具体实现类完成。这样进一步抽象化的好处是 每添加一 阅读全文
posted @ 2022-12-01 21:35 ImreW 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一、题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 二、思路 循环二分: 当 left ≤ right 时循环 (即当闭区间 [left, j] 为空时跳出) ; 三、代码 阅读全文
posted @ 2022-12-01 19:17 ImreW 阅读(14) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示