自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【java】【python】leetcode刷题记录--二叉树

例如,一棵树为1、2、3、4、5(数组表示),那么第一次是1入队,处理完1后,1的子节点也就是2、3入队。处理完2,也就是2的子节点入队,即4、5。如果是要求返回的是一个列表,没有嵌套结构,那就会好做很多,我们就按照上面的流程构造队列然后不断处理即可。前序则是将根节点入栈,后续的结点是按照先右边再左边的顺序入栈(因为我们要先处理左子,因此左子后入栈可以先被pop)。层序遍历用的是队列,每次将一个节点入队,处理完当前节点,则其子节点分别入队,下一轮再处理子节点,也就是下一层的内容。

2024-06-12 22:47:52 545 4

原创 【java】【python】leetcode刷题记录--栈与队列

在Python中,对于整数除法,/ 操作符执行的是真除法(返回浮点结果),而 // 操作符执行的是地板除(即对结果向下取整到最近的整数)。出队操作(使用stackOut):当需要进行出队操作(即移除队列的最前端元素)时,我们先检查stackOut:如果stackOut为空,则将stackIn中所有元素逐一弹出并推入stackOut。queue2是辅助队列,queue1存放进入栈的元素,当想要得到栈顶(队尾)元素,即把queue1的元素放入queue2,知道queue1只剩一个元素,该元素则为栈顶元素。

2024-06-02 22:36:06 822 4

原创 【Java】【python】leetcode刷题记录--双指针

双指针也一般称为快慢指针,主要用于处理链表和数组等线性数据结构。这种技巧主要涉及到两个指针,一个快指针(通常每次移动两步)和一个慢指针(通常每次移动一步)。快指针可以起到’探路‘的作用,给慢指针修改。

2024-05-28 09:55:21 893 2

原创 【Java】【更新中】java常用操作以及数据结构

【代码】【Java】【更新中】java常用操作以及数据结构。

2024-05-15 21:15:17 279 1

原创 【Java】【python】【数据结构与算法】leetcode刷题记录--哈希表

从上文得知,哈希为我们提供了快速的增删改查的操作,在使用相关的数据结构中,我们不需要考虑hash实际的实现是怎么样的。同时,尽管不同的输入可能会产生相同的输出(这种情况称为哈希冲突),但是在理想情况下,哈希函数应该尽量使这种情况发生的概率最小。哈希是一种将大量信息压缩到较小空间的技术,本质上就是一种映射关系,将复杂的信息映射到对应的哈希表的位置,因此可以提供快速的查找。哈希会提供特点的映射函数(散列函数),例如有大小为5的哈希表,分别为0、1、2、3、4,而每个位置存储的值是模除5等于对应下标的值。

2024-05-14 10:08:14 404

原创 【Java】【数据结构与算法】【华为】leetcode刷题记录--数组、双指针和滑动窗口

本篇博客适用于对于数据结构和算法有一定基础,懂得计算机基础概念(例如内存分配)的人阅读和学习,且本文内容的语言仅有java,如果有需求可以再加上python版本。

2024-05-12 19:49:59 847 3

原创 【python】函数、闭包以及装饰器

而里面的inner可以使用外部函数outer的x变量,这样可以防止全局变量的滥用,而最外层的add_five则是一个闭包。在使用flask框架时,总能发现一个叫route的装饰器,它的主要作用是将函数绑定到一个URL,当flask处理请求的时候,会检查其请求的URL,然后调用与这个URL关联的函数。然而,它们用于解决的问题是不同的:装饰器用于修改函数或类的行为,而闭包用于记住函数的状态。首先,装饰器和闭包都是高阶函数,即它们都是接收函数作为参数或返回函数的函数。是一种简单的表示装饰器的方法。

2024-04-05 18:38:43 279

原创 【数据结构】【python】迭代器及其优点

迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器不仅可以用于已知的数据结构,还可以自己构造迭代器。例如,ist 是可迭代对象,dict 也是可迭代对象。print(i)实际上,list是一个可迭代对象,其内部使用python内置函数iter()调用遍历对象的__iter__()获得一个迭代器,之后再循环对这个迭代器使用next()调用迭代器对象的__next__()。iter。

2024-01-30 14:46:01 417 1

原创 【数据结构】【树的遍历算法】【python】树的各种遍历算法

先将根节点入队,再对队列进行循环操作:如果队列未空,则将队头元素弹出,对队头元素操作,并将其子节点放入对内。如果遇到节点不存在的情况,返回值为0,代表深度为0,否则就返回的是左子树和右子树中深度的最大值。,即以当前节点为例,先遍历左子节点,再是当前节点,再是右子节点。的信息,然后再判断是否有右子节点,并再次递归调用,将函数压入栈。的信息,第三个递归函数执行完成,退栈。

2024-01-28 12:01:16 1284 1

原创 【数据结构】【更新中】【python】leetcode刷题记录:热题100答案 + 每日一题(附文字说明)

题目为leetcode的热题100.仅作学习用,且题目为节选。

2024-01-27 12:28:59 1943 2

原创 【计算机组成原理】中断排队次序、中断处理次序和多重中断

中断可以分为硬中断和软中断,一般是外部中断,例如在指令执行到中断周期时检测到有外设的中断请求,则会执行中断隐指令、中断服务程序等一些列操作。(因为上一条指令已经执行完成,中断的部分是由于外部请求)。一般是内部中断,例如缺页,则在指令执行的过程中就可以产生中断,去执行缺页程序。因此,中断在执行完中断隐指令后,需要执行中断服务程序,即。那么如何得到中断服务程序的地址呢?这里需要用到硬件。

2023-12-17 20:30:12 702 1

原创 【计算机组成原理】【考试速通】第二章数据的运算和表示

每次取Y的最后一位(或者说最低位)乘X内的被乘数,乘积结果的值加到P上,然后P和Y的值整体右移一位,P右移是因为乘法列竖式时,下一次运算的结果比当前的运算结果要高一位,而Y右移不仅是给P腾出空间,也是将下一次和被乘数做乘积的数更新。IEEE的浮点数除去阶码的表示和上面不同之外,其尾数前也加1,这是因为对于规格化的二进制浮点数,尾数的最高位总是1,故1就当作隐藏位,不写在尾数中,最后计算真值的时候加上1即可(前提是阶码不为全0、全1这种特殊情况)。规格化的方法:若是最高位不是1,则需要左移,直到最高位为1。

2023-10-03 17:49:21 598 1

原创 【计算机组成原理】【考试速通】性能衡量标准、机器字长存储字长指令字长、透明性问题

例如,应用程序程序员不需要了解操作系统的内部实现逻辑,那么操作系统对应用程序程序员来说就是透明的(可忽略的)。再或者,计算机系统结构是指对OS程序员、汇编程序员、机器语言程序员不透明的,因为系统结构是和上述程序员的工作相关的。但有一定的缺陷,例如开发人员可以根据测试程序做专门的优化,因此导致测试结果并不能反映实际的处理能力。(4)主频和CPU周期,互为相反数。例如指令执行需要2个时钟周期,而主频高,则周期短,指令执行更快。(1)字长,即一次整数运算能处理的二进制数据的位数,通常和CPU的ALU长度相同。

2023-10-02 21:14:23 175 1

原创 【计算机组成原理】【考试速通】第一章 计算机系统概述

计算机硬件、软件、程序编译、翻译、连接、重定位、冯诺依曼

2023-10-02 18:16:15 115 1

原创 【操作系统】【计算机组成原理】从总线理解IO子系统

本文设计总线、操作系统、计算机组成原理、IO子系统、文件系统、中断、DMA、直接内存访问、IO接口

2023-09-19 22:28:07 212 1

原创 【计算机系统结构】【延迟槽技术】分支延迟、分支预测和MIPS延迟槽

注:本文从系统结构的角度去看待延迟槽这一技术,故不会涉及到代码细节,仅仅描述延迟槽的工作原理。且该文字描述的流水线基于的是经典的MIPS五段流水,即IF、ID、EX、MEM、WB。

2023-06-18 21:35:52 4654 4

原创 文件描述符表、文件打开表和inode表 硬链接与软连接

文件描述符表 文件打开表 inode 文件系统 硬链接 软连接

2023-05-22 15:31:36 533 1

原创 从Ucore分析OS文件系统

文件系统 linux操作系统 ucore 文件管理

2023-05-22 15:16:07 288 1

原创 【LINUX】【北邮】第七章 文件和目录权限、shell的基本机制

文件的权限是用于控制进程对系统中的文件和目录的访问。权限中的写很特殊:不可写但是可以被删除。因为删除文件并不需要写文件。可执行文件一般分为两类:程序文件和脚本文件。程序文件实际上就是CPU指令的集合,例如现在使用的LS等命令实际上就是一些可执行文件。脚本文件存的不是指令,那CPU就不能执行。具体运行的时候是每读取一行就进行一次解释。

2023-04-22 21:57:26 121

原创 【计算机系统结构】 【北邮】第五章 指令并行及其开发——硬件方法 上

MIPS五段流水 硬件方法

2023-04-18 21:46:11 2612

原创 UCORE实验二 物理内存管理(动态分区分配、分页、页表)

此函数找到一个线性地址对应的二级页表项的内核虚地址,如果此二级页表项不存在,则分配一个包含此项的二级页表。但与单纯的动态分区分配不同,由于是基于分页的,所以当搜索的分区大小大于所需的内存时,就可以将分区分成两部分,一部分提供给申请的部分,剩下的则形成新的空闲区。应该将操作移至循环内。下图为二级页表结构,在进行地址转换的过程中,先通过线性地址的前10位找到一级页表的entry,内含二级页表的基址,加上中间十位作为偏移量,即可得到二级页表的表项,内含物理页的基址,再加上offset即可得到具体的虚拟地址。

2023-04-17 21:32:15 372 1

原创 UCORE实验一思路 BIOS 段机制 函数调用栈机制 中断机制

关于UCORE BIOS bootloader 段机制 函数调用

2023-04-17 21:05:04 220 1

原创 【北邮面对对象程序设计】 面对对象的主要概念

对象 定义:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组**属性**和对这组属性进行操作的一组**服务**构成。简单来说,一位计算机老师就可以是一个对象,他/她是现实中存在的人,他具有自己的属性:例如180的身高,75kg的体重,熟练java代码等等,可以理解为**静态特征**。而他由于他的属性(写代码),他可以去进行一系列的服务(操作),比如去写一个java的小程序,这是他的**动态特征**。抽象和类继承、消息和聚合抽象类与接口...

2022-03-03 20:31:44 347

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除