自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 239. 滑动窗口最大值

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。的思想,即队列中的元素是严格单调的。因为我们求的是滑动窗口的最大值。返回 滑动窗口中的最大值。

2025-04-04 17:48:20 306

原创 LeetCode 42.接雨水

解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。据说是很经典的一道面试题,某个大厂特别喜欢考察,属于是没见过基本想不出来,而见过又是秒杀的题型。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]

2025-03-12 15:47:04 213

原创 LeetCode 128. 最长连续序列

对于每一个num,从num-1开始遍历,以保证所有参与遍历的num 都是当前的连续数组的最小值,这与我的代码中。给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]循环中,遍历每个元素,并寻找和它连续的元组,已经找到的元素就置。输入:nums = [100,4,200,1,3,2]输入:nums = [1,0,1,2]为0,防止重复遍历。

2025-03-08 21:37:21 240

原创 LeetCode 49.字母异位词分组

同样也是哈希表的做法,判断是否是同一组字母异位词,可以对每个字符串进行排序,看排序后的结果是否在哈希表中,如果在哈希表中,就插入对应的分组中,否则在哈希表中添加一个新的分组。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]字母异位词 是由重新排列源单词的所有字母得到的一个新单词。输入: strs = [“a”]输出: [[“a”]]输出: [[“”]]

2025-03-06 21:55:58 264

原创 LeetCode 1.两数之和

这道题很显然不能简单地使用暴力枚举,注意到暴力法中对于每一个i,都会有j从i+1开始遍历,则存在元素的重复遍历,所以可以用哈希表记录之前遍历过的元素,一旦出现当前元素与已经遍历过的元素和为target的情况,则返回i和j,否则返回空数组。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。

2025-03-05 17:54:34 419

原创 HNU数据库-简答题复习-2022级

数据库的内容学习起来其实不难(至少对于我们学校的课程教学安排来说),对于期中和期末考试来说,复习的时候最麻烦的就是简答题部分,而且分值还不低,有个30分左右。所以复习的时候要背的内容很多,都是一些概念的内容,关键很多料想不到的定义都有可能考到,这里给出的是我在复习的时候重点收录的一些可能考的简答题。基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。

2025-01-17 20:56:17 993

原创 HNU编译原理lab0-环境配置+git提交

编译原理的实验平台是Linux环境,如果不想花费时间配环境的话直接用虚拟机Ubuntu 20.04就行,我们计算机系统和操作系统的实验用的也是Ubuntu。编译原理实验的代码还是很多的,我觉得还是用WSL更方便一点,下面是我安装WSL的方法。

2025-01-14 20:04:30 759

原创 HNU-编译原理lab4-2022级

在C++中创建LLVM IR常量的宏。用于创建常量浮点值,指定类型的零常量,创建常量整数等。这些宏用于简化在 LLVM IR 中创建常量整数以及获取整数和浮点数类型的操作。这里我们在原来的基础上,添加了一个创建int类型的宏。当然,这些宏起到的是简化代码的作用,也可以不用定义,只是多写几遍的问题。ConstantFP::getfloatmoduleget::getmoduleget::getintmoduleget函数没有返回值,故需要借助全局变量在上层或下层之间传递值。

2025-01-13 20:08:51 953

原创 HNU-编译原理lab3-2022级

实验代码的编写还是比较繁琐的,但是有些部分的内容是要重复编写的,也是慢慢熟练起来了。对于cpp文件中的BB块,如果想要做到类似汇编那样的严谨的话,可以主动添加return的分支,结构会更加完整,当然为了图方便可以直接返回。根据visit()函数中的实现,对于AddSubNode的访问,是先访问右子节点,然后访问左子节点,对于MulDivNode的访问,先访问左子节点,后访问右子节点。总而言之,这个实验花费的时间很长,也学到了一些LLVM的基础知识,初步了解了LightIR的用法和原理。其输出结果也为18。

2025-01-12 19:26:45 947

原创 HNU-编译原理lab2-2022级

文章目录实验要求主要工作实验难点1、Bison文件2、分析树的生成3、理解Bison 和 Flex 的关系①YYSTYPE②归约③%type④%token⑤`yylval`实验设计1、补充`lexical_analyzer.l`2、补充`syntax_analyzer.y`(1)union(2)%token与%type(4)%type的解析规则实验结果验证1、执行命令`make parser`进行编译2、test验证3、用diff 命令进行验证4、自测样例实验反馈实验要求本次实验需要各位同学首先将自己的

2025-01-11 20:05:14 1017

原创 HNU-编译原理lab1-2022级

test_lexer.py脚本将自动解析./tests/lab1/testcase下所有文件后缀为.cminus的文件,并将输出结果保存在./tests/lab1/token文件下,输出的结果就是类似以下表格的一个tokens文件;270178。

2025-01-10 15:04:49 1304

原创 HNU-操作系统实验lab9-2022级

这个函数的主要功能是初始化UART,包括禁用UART、清空中断状态、设置波特率、配置行控制寄存器、启用UART、配置GIC中断控制器和创建UART数据接收信号量。在 src/bsp/print.c 中的 PRT_UartInit 添加初始化代码,使其支持接收数据中断。函数实现了一个简单的命令行接口,通过UART接收用户输入的命令并执行相应的操作。这个函数用于处理UART接收中断,将接收到的数据存储到缓冲区中,并通知相关任务数据已经到达。函数检查命令缓冲区中的内容,并根据命令执行相应的操作。

2024-11-01 19:40:45 1422

原创 HNU-操作系统实验lab8-2022级

TTBR0指向整个虚拟空间下半部分通常用于应用程序的空间,TTBR1指向虚拟空间的上半部分通常用于内核的空间。其中TTBR0除了在EL1中存在外,也在EL2 and EL3中存在,但TTBR1只在EL1中存在。在涉及仅一级查找的简单地址转换中,我们假设使用的是64KB粒度和42位虚拟地址。MMU将虚拟地址转换如下:如果VA[63:42] = 1,则用TTBR1作为第一页表的基地址。当VA[63:42] = 0时,用TTBR0作为第一页表的基地址。

2024-10-31 17:03:37 1162 1

原创 HNU-操作系统实验lab7-2022级

为了模拟活锁,可以通过两个任务反复尝试获取对方持有的资源,并在每次失败后执行一些无效操作(例如打印日志或忙等待)后再次尝试获取资源。为了模拟死锁,可以创建两个任务,每个任务都持有一个信号量,然后尝试获取对方持有的信号量。这段代码会导致任务1和任务2不断地打印失败信息,并尝试重新获取信号量,但从未成功,使得两个任务陷入活锁状态。可以看到最后任务1卡在了获取信号量2,任务2卡在了获取信号量1中,程序无法继续运行下去。函数获取被挂起的任务,该函数会从信号量的等待队列中取出一个任务。

2024-10-30 20:05:09 1301

原创 HNU-操作系统实验lab6-2022级

在UniProton中,一个任务表示一个线程。任务控制块(Task Control Block, TCB)是操作系统内核中的一个数据结构,用于存储和管理任务(或线程)的信息。每个任务在创建时都会分配一个任务控制块,操作系统通过这些控制块来管理任务的调度、状态和执行。在理论课程中,我们知道当发生任务切换时会首先保存前一个任务的上下文到栈里,然后从栈中恢复下一个将运行任务的上下文。它首先从运行队列中获取第一个任务,如果这个任务是空闲任务,那么它会将这个任务移动到队列的末尾,并设置下一个任务为当前任务。

2024-10-29 11:53:24 1603

原创 HNU-操作系统实验Lab5-2022级

中断是一种硬件机制。借助于中断,CPU可以不必再采用轮询这种低效的方式访问外部设备。将所有的外部设备与CPU直接相连是不现实的,外部设备的中断请求一般经由中断控制器,由中断控制器仲裁后再转发给CPU。如下图所示Arm的中断系统。其中nIRQ是普通中断,nFIQ是快速中断。Arm采用的中断控制器叫做GIC,即general interrupt controller。gic包括多个版本,如GICv1(已弃用),GICv2,GICv3,GICv4。简单起见,我们实验将选用GICv2版本。

2024-10-27 18:55:14 1549

原创 HNU-操作系统实验Lab4-2022级

AArch64中共有4个异常级别,分别为EL0,EL1,EL2和EL3。在AArch64中,Interrupt是Exception的子类型,称为异常。Sync(Synchronous exceptions,同步异常),在执行时触发的异常,例如在尝试访问不存在的内存地址时。IRQ (Interrupt requests,中断请求),由外部设备产生的中断。

2024-10-26 20:47:26 1408

原创 HNU-操作系统实验Lab2-2022级

0x09000000// pl011 设备寄存器地址// 寄存器及其位定义参见:https://developer.arm.com/documentation/ddi0183/g/programmers-model/summary-of-registers0x00// UARTDR(Data Register) 寄存器0x18// UARTFR(Flag Register) 寄存器0x2c// UARTLCR_H(Line Control Register) 寄存器0x020。

2024-10-25 18:30:27 1751

原创 HNU-操作系统实验Lab1-2022级

​操作系统实验一环境配置

2024-10-24 22:58:35 2071

原创 HNU-计算机系统作业4-2022级

当处理程序还在处理第一个信号时,第二个信号就传送并添加到了待处理信号集合里。然而,因为SIGUSR2信号被SIGUSR2处理程序阻塞了,所以第二个信号就不会被接收。之后的 3 个信号便会被抛弃了。因为是连续发送,所以很可能是没等上下文切换,这 5 个信号就同时发送了。这里的 0x0 其实应该重定位为 xp 的地址,所以这应该是一 个绝对引用。在.data 节中,第一个 x 是不需要重定位的,第二个 xp 的值需要重定位为 x 的地址。:原始C源程序中的行号和.text节中机器指令之间的映射。

2024-10-22 13:34:13 514

原创 HNU-计算机系统作业3-2022级

A:B = 4, 则b(即CO) = 2,S=4,则s(即CI) = 2,所以0 1 位为CO,2 3位为CI,其余为CT。

2024-10-22 13:29:54 990

原创 HNU-计算机系统作业2-2022级

第四行%ebp+8中就是i,即%eax=i,第13行mov指令中的%eax存放的是函数第一行中计算的n,所以前面的第11和第12行中,%ebp+0xc存放的是 bp->left, %ebp+0xc+0xc8存放的是 bp->right,所以a_struct[CNT]共占196字节(200-4)。第13行,右边0x8(%ecx,%edx,4),也就是(4%edx+bp+8),实际上也就是是(bp+4+28i+4+4M[bp+4+28i])。寄存器%ebx保存参数x的值,即未被移位的x。%edx保存mask。

2024-10-22 13:24:23 419

原创 HNU-计算机系统实验-buflab-2022级

本实验的目的在于加深对IA-32函数调用规则和栈结构的具体理解。实验的主要内容是对一个可执行程序“bufbomb”实施一系列缓冲区溢出攻击(buffer overflow attacks),也就是设法通过造成缓冲区溢出来改变该可执行程序的运行内存映像,继而执行一些原来程序中没有的行为,例如将给定的字节序列插入到其本不应出现的内存位置等。本次实验需要你熟练运用gdb、objdump、gcc等工具完成。在这个实验中我们有三个主要文件bufbomb :这个是我们要进行攻击的,具有缓冲区漏洞的文件。

2024-10-22 12:52:15 924

原创 HNU-计算机系统实验-bombLab-2022级

这个实验对于汇编语言的理解的要求很大,除了要学会用GDB查看各个内存地址存放的内容外,还要理解函数的目的究竟是什么,整个实验耗费了不少的时间,有的炸弹光要看懂汇编是在干什么就要耗费很长一段时间,理解的时候一直是在烧脑和惊喜之间反复横跳,但是解决之后成就感是值得花费大量的时间的,这次实验令我对反汇编破解有了一些深入的理解。看到这个我们可以断定这里存储的是链表,因为每一组都有一个标号,从1到6,那么自然标号前的数是权重,后面的数是下一结点的地址,并且每个地址之间相差12也印证了我们的猜想。

2024-10-22 11:20:06 1572

原创 HNU-电路与电子学小测-某次

一次小测的整理,具体不记得是哪一次了。

2024-10-19 11:52:55 900

原创 HNU-电路与电子学-实验4-2022级

1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时学会使用 Verilog 语言编写简单电路。(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和时序仿真时花费时间过长。(3)解决方法:通过上网查询相关资料,与同学一起讨论,并请教老师。(4)经验教训:不懂的地方要多向老师请教,对于电路的搭建要多动手,要学会利用好软件工具,不仅是在实验中,在平时的学习中也要学会利用工具。

2024-10-19 00:15:42 2127

原创 HNU-电路与电子学模型机-2022级

关于这门电子电路学,其实就是电气院三大电路学的简化版,比他们学的要简单多了,可能最耗时间的就是最后的大作业了。对于整个工程来说,只要你理解了代码的逻辑,最后懂得各个模块该怎么去连接,那就基本上没什么大问题了。强烈建议大家每次连接一个模块都进行一次仿真验证,不然等到所有模块全都组装好了,再去调试,如果有错误那就很难追踪了。PS:教这门课的凌纯清老师真的是个很负责的老师,如果你在大作业期间有任何问题,都可以去找她,甚至于你的代码有问题,她都能帮你debug出来。

2024-10-18 21:13:28 1837

原创 HNU-电路与电子学-实验3-2022级

1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时学会使用 Verilog 语言编写简单电路。(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和 时序仿真时花费时间过长。(3)解决方法:通过上网查询相关资料,与同学一起讨论,并请教老师。

2024-10-18 19:58:08 2334

原创 HNU-电路与电子学-实验2-2022级

1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时学会使用 Verilog 语言编写简单电路。(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和时序仿真时花费时间过长。(3)解决方法:通过上网查询相关资料,与同学一起讨论,并请教老师。(4)经验教训:不懂的地方要多向老师请教,对于电路的搭建要多动手,要学会利用好软件工具,不仅是在实验中,在平时的学习中也要学会利用工具。

2024-10-18 18:59:15 2038

原创 HNU-电路与电子学-实验1-2022级

设计电桥。我们采用四个压控电阻的方案。设置步增按钮为 A 键,设计满 程为 100V,步长为 5%,即是 5V 每次理由是:采用四个压控电阻时,其输出电压没有误差,精确度搞。同时,我们考 虑灵敏度,发现相较于一个、两个、三个压控电阻的情况,四个有着更高的灵敏 度。由于这里是对两个节点的电压差进行放大,我们很容易想到用减法器来进行 放大。为了避免后面的放大电路干扰前面的电桥电路。我们采用电压跟随器 进行隔离。

2024-10-18 18:07:01 1783

空空如也

空空如也

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

TA关注的人

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