主页

配置力扣的本地刷题环境之c++链表篇

写在前面 今天做一道关于链表交换节点的题(24. 两两交换链表中的节点 - 力扣(LeetCode)), 发现在力扣的调试环境中输出节点比较麻烦, 而且不是会员的话判题速度其实很慢, 那么就试试在本地环境中配置一套专为链表类型题打造的调试环境吧~ 基本头文件 #include <iostream> using namespace std; struct ListNode { int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListN...

阅读更多

汇编语言(王爽)寄存器部分(chap2,3)小结

写在前面 小结一下最近看的汇编语言王爽(第三版)的寄存器, 内存访问与基本汇编指令部分的内容. 其实学习操作系统, 熟悉一些基本的汇编语法即可, 但是要想读懂后面的程序链接等内容还是要好好研究一下汇编的实现细节. 毕竟这是探寻计算机底层的最好的工具. 下面的讨论均基于Intel的8086芯片. 寄存器部分参考1. 寄存器(register) 分类(共14个) 通用寄存器: AX, BX, CX, DX, 用于存放一般的数据, 每一个寄存器都是16位的(下同), 可以分成高位和低位两种情况(例如AX=AH+AL, 这里面的AH, AL等均为8位寄存器) 段(Segment)寄存器: 代码段寄存器(Code segment register): C...

阅读更多

Python的eval()和int()的几点区别和性能差异

写在前面 今天刷几道关于数的运算的题, 我发现了一个很匪夷所思的问题: 两段几乎完全一样的代码, 其运行时间差异怎么会如此之大呢?(题目:415. 字符串相加 - 力扣(LeetCode)) # 我的代码 class Solution: def addStrings(self, num1: str, num2: str) -> str: na,nb=len(num1)-1,len(num2)-1 add=0 ans='' while na>=0 or nb>=0 or add: a=eval(num1[na]) if na>=0 else 0 ...

阅读更多

在macos上使用dosbox X配置masm汇编环境

写在前面 学习OS, 不得不学的一门语言就是汇编了, 说起来这种语言应该是除机器语言外最接近计算机底层的语言了, 但是又不失可读性. 下面我在自己的电脑上配置了masm汇编环境, 并且给出了配置文件的使用方法(dosbox-x默认配置文件并不在其官网所述的目录中!) 包括字体的修改, 环境变量的配置等等. 下载安装 brew: brew install dosbox-x --cask 至于为什么没有使用dosbox呢? 当时好像是dosbox-x最先支持了m1, 并且有更多的功能, 就先体验了(后来发现确实比原版的dosbox要好用一些) 配置文件在哪里 关于这个默认的配置文件我找了好久, 因为官网说: (Windows) C:\Users\<...

阅读更多

C语言函数指针在形参列表和返回值中的函数声明写法

写在前面 最近看网络, 发现系统调用中的信号函数的声明有点奇怪, 如下: void (*signal(int sig, void (*func)(int)))(int); 虽然书中给出了解释, 但是奈何自己的C语言基础不好, 看着比较费劲, 下面就重新研究一下C语言中的函数指针, 包括以下的几种情况. 函数指针的声明(两种, 算上C++的话就是三种, 其实采用宏定义的方式也可以, 但是宏定义只是简单的变量替换, 不建议在这里使用); 函数指针作为函数返回值时函数的声明; 函数指针作为函数参数时函数的声明. 传统的这种写法(例如上面提到的signal()函数)看起来实在是不好理解, 特别是括号的嵌套法则很容易出错, 这里还是推荐先对函数指针进行声明之后再...

阅读更多

在类unix系统上学习os必须掌握的shell命令

写在前面 记录一些常用的shell命令(主要是系统层面), 我分别在两个平台下进行测试: MacOS 12.6(arm) Ubuntu(arm, multipass) 由于业界的标准还是Linux, 这里以Linux为主, 对于MacOS的话其实可以直接从GUI界面得到, 除非对于一些开发层面的内容需要命令行. Ubuntu版 系统基本信息 这部分参考了一篇博客1, 写的相当详细, 也是基于Ubuntu的. 给出了很多基本的系统信息, 主要是软件层面. # 查看系统内核版本, 系统名称 ubuntu@vm1:~$ cat /proc/version Linux version 5.4.0-126-generic (buildd@bos02-arm64-060)...

阅读更多

在neovim中配置基于事件触发的自动保存

配置 采用纯lua脚本的方式进行vim中自动保存的配置, 参考了 Stack Overflow 的一个回答1, 如下: vim.api.nvim_create_autocmd({ "InsertLeave" }, { callback = function() vim.fn.execute("silent! write") vim.notify("Autosaved!", vim.log.levels.INFO, {}) end, }) 事件采用了InsertLeave, 即当编辑器离开插入模式, 便触发保存, 通过Neovim的内置函数vim.fn.execute完成调用. 并且...

阅读更多

Python判断中使用多个and和or的优先级与踩坑

一个问题 最近刷力扣,想试试 Python 新支持的海象操作符, 其实就是能在语句中赋值, 类似下面这样: if (n:=len(nums)): return False 但是当出现下面这种情况的时候, 赋值就会失败: if True or (a:=1): print(a) ''' NameError: name 'a' is not defined ''' 出现这个错误的原因就是 Python 中and和or的优先级问题, 当语句中先出现or的时候, 如果or前面的值为True, 那这个语句就判断为真,而不会进行之后的判断了, 所以后面的赋值就不会执行. 那么问题来了, 当一条判断语句中同时出现and 和or, 这时候其优先级是如何呢? 根据以往的经验,...

阅读更多

Total views.
您是Zorch的第 个小伙伴
Hits