linux常问命令
查询端口是否被占用: lsof -i:80
查看cpu使用情况: top
查看某个进程:ps -ef|grep XX
- -ef 是用标准的格式显示进程的
- aux 是用BSD的格式来显示
查看文件夹大小:du -sh XXX/
-
-s或–summarize 仅显示总计,只列出最后加总的值。
-
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
查看历史命令占用情况: history|grep XX
netstat -an |grep tcp | grep 5188
- 查看已连接网络状态 tcp 端口518的
-a
:显示所有socket,包括正在监听的。-n
:以网络IP地址代替名称,显示出网络连接情形。
kill -9 完全杀死进程
- -l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称。
- 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
ulimit -n
- 查看文件能打开的文件描述符数量的最大值
od -c xx
- 以ascii码查看文件
自定义优先级队列
bool operator<(const Node &n) const {
return val>n.val;
find用来找文件
用find修改所有文件权限
find . -name *.txt -type f -mtime -1 -size +5M -exec chmod -R 644 {} \;
grep扩展命令,匹配行
egrep -n -v '([0-9]{1,3}\.){3}\.[0-9]{1,3}' 123.txt
su
切换命令
反引号 代表命令
awk分割文本
awk -F 'addr:' "{print $1}"
sed替换
sed -i '#is pp#not he#2'
const在函数前后
当const在函数名前面的时候修饰的是函数返回值,在函数名后面表示是常成员函数,该函数不能修改对象内的任何成员,只能发生读操作,不能发生写操作。
去除字符串前后空格
s.erase(0,s.find_first_not_of(' '));
s.erase(s.finde_last_not_of(' ')+1);
用流输入输出
istringstream input(data)
input>>val;
ostringstream out;
out<<'eee';
内存屏障
内存屏障(英语:Memory barrier),也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,它使得 CPU 或编译器在对内存进行操作的时候, 严格按照一定的顺序来执行, 也就是说在memory barrier 之前的指令和memory barrier之后的指令不会由于系统优化等原因而导致乱序。
//向上取整
n/i 的向上取整 为 (n+i-1)/i;
while(x>>k&1) k++; //x第k位不等于1
304状态码
如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。 简单的表达就是:服务端已经执行了GET,但文件未变化
500系列状态码
500 服务器内部错误
502 Bad Gateway错误
503 服务器目前无法使用(由于超载或停机维护)这只是暂时状态。(服务不可用)
504 Bad Gateway timeout 网关超时
505 服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)
判断是否同时为空,一个为空就是false,两个都为空时true
if (!p || !q) return !q &&!p
python cmp函数自定义
def cmp(a, b):
return (a > b) - (a < b)
python 自定义排序方式
class Solution:
def minNumber(self, nums: List[int]) -> str:
def sort_rule(x, y):
a, b = x + y, y + x
if a > b: return 1
elif a < b: return -1
else: return 0
strs = [str(num) for num in nums]
strs.sort(key = functools.cmp_to_key(sort_rule))
return ''.join(strs)
python lamda
a={2:1,3:3,5:4}
sorted(a.items(), key=lambda x:x[1])
print(a)
python 二维数组最大值
res = max(map(max,dp))
nonlacal
nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
异或
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
reduce
from functools import reduce
lst=[1,2,3,4]
print(reduce(lambda x,y: x+y, lst,5))
# 5是初始值,也可以理解为第三个参数
# 计算呢过程
-->5+1=6
-->6+2=8
-->8+3=11
-->11+4=15
python cmp
from functools import cmp_to_key
strs.sort(key = functools.cmp_to_key(sort_rule))
当cmp返回是正数时 交换两元素
二分
找满足条件的 和另一半有区别的边界的那个值,
就是如何区分的那个值
节点放进堆
heappush(node)怎么排序呢
python replace
a="adffasd"
print(a.replace('a','')
print(a)
结果:
dffsd
adffasd
isdigit
t.isdigit():# 负数 返回的是false
int 是向0取整, 而整除//是向下取整
低向高
byte<char<short<int<float<long<double
由低到高的顺序排列,如果由高到低转化必须要强转,因为这样会丢失精度。
由低到高则可以自动转化因为大的里面基本包含小的数
ascii
A:65 a:97
转义字符
python 去重
return list(set(array))
c++ 去重
return nums.erase(nums.unique(nums.begin(),nums.end()),nums.end())
memset
memset会把每个字节都写成0x3f
,dist[n]是int型变量,包含4个字节,所以一定要写成0x3f3f3f3f
vector B 连在A后面
A.insert(A.end(),B.begin(),B.end())
char 和 string 互相转化
char转化为string:string(1,'a'+3)
string转化为char:s.c_str()
判断map中key值是否存在
if (mymap.find(key) == mymap.end())
cout << "没有这个key" << endl;
** 如果key存在,则find返回key对应的迭代器,如果key不存在,则find返回尾后迭代器 .end()。可以参考下面的示例来判断key值是否存在 **
if (mymap.count(key) == 0)
cout << "no this key" << endl;
** count函数用于统计key值在map中出现的次数,map的key不允许重复,因此如果key存在返回1,不存在返回0 **
c++ lamda函数,要用变量的话,用[=]用来捕获变量,要引用的话,[&]就不需要再加&了
//leetcode1030
class Solution {
public:
vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
vector<vector<int>> res;
for(int i=0;i<R;i++)
for(int j=0;j<C;j++){
res.push_back({i,j});
}
sort(res.bebin(),res.end(),[=](vector<int> a, vector<int> b){
return abs(r0-a[0])+abs(c0-a[1])<abs(r0-b[0])+abs(c0-b[1]);
});
return res;
}
};
优先级队列默认是大根堆
C++优先级队列 https://www.cnblogs.com/huashanqingzhu/p/11040390.html