【linux】CGroup

基本原理

cgroup是Linux内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。通过cgroup可以将定额的资源分配给特定的一组进程。

默认情况下,编译内核时打开cgroup的系统中所有进程位于同一个cgroup,就是根,这个cgroup享有所有的系统资源。

可以通过cgroup文件系统建立一个新的cgroup,然后配置这个新的cgroup,配置的内容包括为其分配进程、分配资源等。这个创建和分配的所有过程都是cgroup文件系统通过shell echo写进文件完成的。

cgroup本身是分层的,一个根层下面就像一棵树一样可以分很多层。每一层的cgroup文件系统目录下都有该层对应的资源配置文件。这些可以配置的资源都是cgroup子系统。

阅读全文 »

【linux】文件系统与操作

文件系统

文件系统是用来管理硬件存储设备存储文件的方式,数据在外部存储设备上都是以二进制形式存储,那么何为文件、何为目录、何为可执行程序,怎么读写,怎么规划存储空间都是由文件系统决定,不同的文件系统管理方式不同。

文件系统的功能就是对存储设备的扇区进行管理,将这些扇区的访问变成了对目录和文件名的访问。我们在上层按照特定的目录和文件名去访问一个文件时,文件系统会将这个目录+文件名转换成对扇区号的访问。

根文件系统

内核刚启动时,磁盘设备、网络设备都还没有被驱动起来,所以无法访问磁盘,没法给磁盘启用对应的文件系统。那赶紧安装磁盘驱动程序,网络驱动程序呀,怎么不加载呢?因为磁盘种类太多了,没法把所有的驱动都编译到内核里头,那样内核得变得多大呀,所以就只能把这些驱动程序编译成模块的方式,在内核加载的时候现场判断当前用的是什么磁盘再加相应的磁盘驱动模块。但是还没文件系统,没有办法加载驱动模块。

阅读全文 »

【算法】动态规划

如果某一问题有很多重叠子问题。

动规中每一个状态一定是由上一个状态推导出来的,这一点区别于贪心。贪心没有推导状态,而是从局部直接选取最优的。

  1. 确定dp数组以及下标的含义
  2. 确定递推公式
  3. 阅读全文 »

【数据结构】【栈】单调栈

单调栈就是在栈的基础上保持了数的有序。

最常见的应用是用来求一个序列/数组中,每个数的左边/右边第一个比其小/大的数的位置。

例如找一个数组中每一个数的前面最近的比其小的数:

4, 6, 8, 7, 5

首先维护一个栈stk,从前往后找每个数的答案,在找7这个数的时候,此时栈中已经保存了4, 6, 8这三个数了,首先比较栈顶元素8,大于7,弹栈,以后8不会再是7后面的任意一个数的答案,因为7<8,而且7距离它们更近。然后比较下一个数6<7,即7的答案是6,然后将7入栈供后面的数比较。

阅读全文 »

【算法】KMP算法代码

问题:在一个字串中是否出现过另一个字串。

KMP算法的核心是找最长公共前后缀,两个字符串比较到第i个字符串时不相等了,那么模式串指针将会移动到该不相等字符的前面子字符串的最长公共前缀子串的后一个字符。

例如:

待匹配字符串:S=abdabababac
和模式字符串:P=abdabc

阅读全文 »

期刊、会议、出版商、作者之间的关系

  1. 研究人员向期刊或者会议投稿,交注册费和相应的审稿费等相关费用;
  2. 会议组织者和期刊联系出版社,交出版费用;
  3. 出版社将论文更新到自己的数据库中,然后将数据库卖给全世界各大高校或企业;
  4. 阅读全文 »

【算法】数学

质数

线性筛选质数:

出现一个数,则把已这个数为因子的数都标记为合数。