10 3 7分成5分的油
CPU Load

简单来说就是系统整体的进程数/单核CPU所能处理的最大进程数。链接
跟使用率还有一些区别:链接
Linux 常用命令
三剑客——awk、sed、grep
在awk的文本处理规则里,awk将文本文件视为由字段和记录组成的文本数据库。默认情况下,awk将每一行视为一个记录,也就是说记录的分隔符是\n,记录的分隔符可以通过内置变量RS更改。
在每一个记录中,又把记录分为若干个字段,即记录由字段组成,而字段的默认分隔符为空格或制表符。
ls 显示文件或目录-l 列出文件详细信息l(list)-a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录-p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件echo 创建带有内容的文件。cat 查看文件内容cp 拷贝mv 移动或重命名rm 删除文件-r 递归删除,可删除子目录及文件-f 强制删除find 在文件系统中搜索某文件wc 统计文本中行数、字数、字符数grep 在文本文件中查找某个字符串rmdir 删除空目录tree 树形结构显示目录,需要安装tree包pwd 显示当前目录ln 创建链接文件more、less 分页显示文本文件内容head、tail 显示文件头、尾内容
stat 显示指定文件的详细信息,比ls更详细who 显示在线登陆用户whoami 显示当前操作用户hostname 显示主机名uname 显示系统信息top 动态显示当前耗费资源最多进程信息ps 显示瞬间进程状态 ps -auxdu 查看目录大小 du -h /home带有单位显示目录信息df 查看磁盘大小 df -h 带有单位显示磁盘信息ifconfig 查看网络情况ping 测试网络连通netstat 显示网络状态信息man 命令不会用了,找男人 如:man lsclear 清屏alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeitkill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
//管道将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令对前一个命令的结果进行操作。例:grep -r "close" /home/* | more//在home目录下所有文件中查找,包括close的文件,并分页输出。
chmod命令是linux上用于改变权限的命令,-R 是递归遍历子目录,因为你要操作的文件使用的*通配符。
777,第一个7代表文件所属者的权限,第二个7代表文件所属者所在组的权限,第三个7代表其它用户的权限,7=4+2+1,在linux中权限是可以通过数字来描述的。具体表示如下:
分布式事务
相关面试题:链接
快速排序的优化
Sleep状态
sleep不占用系统资源,它会把cpu的控制权交换给内核,内核会再schedule到另一个进程。
LFU算法
最不经常使用(LFU)缓存算法,其实就是按照频率来进行继续排序。
解题思路:
unordered_map+set实现,set用来进行频率的自排序,unordered_map是实现节点的映射。
代码展示:
struct cachenode{int key;int value;int freq;long tick;//括号中的const表示参数a对象不会被修改,最后的const表明调用函数对象不会被修改!bool operator <(const cachenode& rhs) const{if(freq<rhs.freq) return true;if(freq==rhs.freq) return tick<rhs.tick;return false;}};class LFUCache {private:long tick_;//时钟int capasize_;//map大小unordered_map<int,cachenode> mp;set<cachenode> cache_;public:LFUCache(int capacity) {capasize_=capacity;tick_=0;}int get(int key) {auto it=mp.find(key);if(it==mp.end())return -1;int value=it->second.value;touch(it->second);//删除该节点->修改该节点->重新插入该节点return value;}void put(int key, int value) {if(capasize_==0) return;auto it=mp.find(key);if(it!=mp.end()){it->second.value=value;touch(it->second);return;}if(mp.size()==capasize_){const cachenode& node=*cache_.begin();//set自动排序,头部是频率最低的节点mp.erase(node.key);cache_.erase(node);}cachenode node{key,value,1,++tick_};mp[node.key]=node;cache_.insert(node);}void touch(cachenode& node)//这里要采用引用{cache_.erase(node);++node.freq;node.tick=++tick_;cache_.insert(node);}};

