摘要:
引子 前文介绍了使用为了解决外部碎片,使用Buddy System进行连续内存页面的分配,但对于使用内存的程序而言,Buddy System分配的内存粒度过大,假如我们需要动态申请一个内核结构体(占 20 字节),若仍然分配一页内存,这将严重浪费内存。那么该如何分配呢?slab 分配器专为小内存分配 阅读全文
摘要:
引子 在linux的内存管理中,由于不同程序频繁的使用和释放内存,必然会导致内存碎片的产生。 所谓内存碎片就是内存被分割成很小很小的一些块,这些块虽然是空闲的,但是却小到无法使用。随着申请和释放次数的增加,内存将变得越来越不连续。最后,整个内存将只剩下碎片,即使有足够的空闲页框可以满足请求,但要分配 阅读全文
摘要:
直接上结论:deque的insert_aux中插入开始会push back或front一个和最末尾或最前面值相同的值是为了看是否需要扩充deque内存,选这个值应该是顺手。 stl中deque的实现是通过一个存储指向各个存储区域指针的map(注意就是个指针地图,不是stl的map数据结构),里面再指 阅读全文
摘要:
参考链接:https://www.zhangxinxu.com/wordpress/2020/07/css-cross-fade-background-image-opacity/ 引子 在开发过程中,碰到了一个比较特别的情况,就是使用url()背景图像,同时又希望background-image背 阅读全文
摘要:
Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。以下是Linux的修改swap虚拟内存方法记录。 一、增加swap空间 1.查看当前系统swap空间 root@VM-4-10-ubuntu:~/d 阅读全文
摘要:
给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例 2: 输入:n = 0 输出:0 示例 3: 输入:n = 1 输出:0 先上本题做法:(直接用2到sqrt的是过 阅读全文
摘要:
注:这题思路就是stl的algorithm中next_permutation的实现思路 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 阅读全文
摘要:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2核心理念为票数正负抵消 。此方法时间和空间复杂度分别为O(N)和 O(1),本题的最佳解法。 阅读全文
摘要:
介绍 线段树的题目,起步基本就是hard。 其实线段树就是一种经典空间换时间,用一维度的空间降了一维度的时间。当然,使用线段树也要满足一些条件,即数据的组织结构要有特点。 一个不错的讲解可以看:https://www.acwing.com/blog/content/3369/ 线段树之所以称为“树” 阅读全文
摘要:
给定一个 N 叉树,找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。 示例 1: 输入:root = [1,null,3,2,4,null,5,6] 输出:3 示例 2: 输入:root = [1,n 阅读全文