笔记
文章平均质量分 66
freshhell
这个作者很懒,什么都没留下…
展开
-
lc算法题:动态规划dp
优美的排列假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?法1:状态dp出界的路径数给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上.原创 2021-08-16 19:56:28 · 265 阅读 · 0 评论 -
程序员自我修养笔记:第12章
第 12章 系统调用原理1.普通应用程序运行在用户态下,唯一进入内核态的方式就是通过系统中断。中断分硬件中断和软件中断,软件中断一般以int 0x80号进入系统中断处理程序。中断号很好,因此一般中断号与系统调用都是1对多的关系。而Linux下的都是通过0x80号中断来触发系统调用。而通过eax传递系统调用号,参数用其他寄存器传递。而中断的触发还伴随着用户栈到内核栈的转变,并且将ss,esp,eflags,cs,ip压入内核栈方便返回用户程序。这一切都是由int通过硬件自动完成。0x80号的中断处原创 2022-03-01 15:45:38 · 7683 阅读 · 0 评论 -
程序员自我修养笔记:第十一章
第11章 运行库1.一个典型的程序运行步骤如下:系统创建进程后,把控制权交给程序入口,而这个入口称为入口函数或入口点,这个入口往往是运行库中的某个入口函数。入口函数对运行库和程序运行环境进行初始化,包括堆、IO、线程、全局变量构造等等。入口函数完成初始化后,调用main函数正式执行程序主体部分。main函数执行完后,返回到入口函数,入口函数进行清理工作,包括全局变量析构、堆销毁,关闭IO等,然后进行系统调用(__exit)结束进程。2.glibc入口函数glibc的程序入口为_star原创 2022-03-01 15:44:43 · 1078 阅读 · 0 评论 -
程序员自我修养笔记:第十章
第十章 内存1.调用惯例一个调用惯例,一般会规定如下几方面的内容:函数参数的传递顺序和方式:参数的压栈顺序,有些惯例还允许使用寄存器传递参数。站的维护方式:参数的弹出工作是由函数的调用方还是函数本身来完成名字修饰策略函数返回值传递2.堆程序向操作系统申请一块适当大小的堆空间,然后由程序自己管理这块空间。这个程序往往是程序的运行库。3.Linux下的对空间分配方式有两个系统调用,一个是brk(),另外一个是mmap()。brk()就是设置进行数据段(bss+数据段)的结束地址,原创 2022-03-01 15:43:19 · 237 阅读 · 0 评论 -
程序员自我修养笔记:第八章
第八章:Linux共享库的组织1.共享库版本不同,可能引起ABI发生变化,从而影响程序的正常运行。因此各个系统会有自己的一套共享库版本命名规则。Linux的为libname.so.x.y.zx:主版本号,y:次版本号,z:发布版本号不同主版本之间共享库差异大,互不兼容。次版本之间仅是添加了新的符号,互相兼容。发布版本之间修改了接口的bug,互相兼容。2.程序依赖的共享库由.dynamic段指出,若指出完整版本(主次发布都有)的共享库名字,则每次更新共享库必须保存之前的版本,会造成磁盘和内存(会原创 2022-03-01 15:38:42 · 7795 阅读 · 0 评论 -
目标和问题
目标和」,难度为「中等」。Tag : 「DFS」、「记忆化搜索」、「背包 DP」、「01 背包」给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。282.给表达式添加运算符给定一个仅包含数.原创 2021-10-16 10:41:57 · 109 阅读 · 0 评论