1、linux的zip命令居然是增量的
如果zip的文件已经存在(如zip -r test.zip test/ , 如果test.zip已经存在),那么zip命令不会先删除原有的文件(test.zip),而是会增量的添加文件(在原有的test.zip内容的基础上增量文件),zip更像是一个覆盖命令。
比如我现在目录有如下文件和文件夹
test目录(里面有a、b、c)
test.zip压缩包(里面有a、 b 、c三个文件)
我把test目录里的b文件删除并且创建一个文件d,(我不删除原来的test.zip)我再 zip -r test.zip test/ 压缩 test文件夹,我以为压缩完之后,压缩包里是(a、c、d),实际上 test.zip 里的文件是(a、b、c、d)
2、不同so库引用同一个.h文件问题
我做了两个so库,其中使用了同一个.h文件,然后这个.h文件里声明了一个全局变量,后来我发现这个全局变量并不能在两个so库共用,变量地址都不一样,相当于两个全局变量,并不是同一个全局变量。
3、没有 -x 执行权限的文件,可以使用 ${SHELL:-sh} 执行,如
${SHELL:-sh} xx.sh
4、Xvnc有个 -nolisten 选项和 -localhost 选项,其实Xvnc启动时会开启两个端口,一个是X11端口(60开头的端口),一个是VNC端口(59开头的端口),-nolisten作用于x11端口(如 -nolisten tcp,不监听X11的tcp端口,但是VNC端口还是照常监听),-localhost作用于VNC端口
-localhost binds all interfaces port 6000+displaynumber · Issue #115 · TigerVNC/tigervnc · GitHub
5、文件权限被篡改,我一开始chmod 777 的文件,我通过某些函数去修改文件内容的时候,可能会导致文件权限变成644
6、下面这段代码,如果不加上(int),就会打印 “aaaaa”,find的返回值是size_t,永远为正,实际上 find 不到的时候,应该返回 -1
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> res;
string i = "http://news.yahoo.com/news/topics/";
string cmp = "http://news.google.com";
if ((int)i.find(cmp) > 0)
cout << "aaaaa"<< endl;
return 0;
}
7、在力扣的关于图的解题中,下面这两种遍历 dirs 的方法,效率一个天上,一个地下
// 天上
void check(vector<vector<int>>& rooms, int i, int j) {
int m=rooms.size();
int n=rooms[0].size();
queue<pair<int, int>> q;
int dirs[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};
q.push({i,j});
while (!q.empty()) {
auto [x,y]=q.front();
q.pop();
for (auto &[dx, dy] : dirs) {
int posX=x+dx;
int posY=y+dy;
if(posX>=0 && posX<m && posY>=0 && posY<n && rooms[posX][posY]!=-1 && rooms[posX][posY]!=0) {
if(rooms[x][y]+1<rooms[posX][posY]) {
rooms[posX][posY]=rooms[x][y]+1;
q.push({posX,posY});
}
}
}
}
}
// 地下
void check(vector<vector<int>>& rooms, int i, int j) {
int m=rooms.size();
int n=rooms[0].size();
queue<pair<int, int>> q;
vector<vector<int>> dirs={{0,1},{1,0},{-1,0},{0,-1}};
q.push({i,j});
while (!q.empty()) {
auto [x,y]=q.front();
q.pop();
for(auto dir:dirs) {
int posX=x+dir[0];
int posY=y+dir[1];
if(posX>=0 && posX<m && posY>=0 && posY<n && rooms[posX][posY]!=-1 && rooms[posX][posY]!=0) {
if(rooms[x][y]+1<rooms[posX][posY]) {
rooms[posX][posY]=rooms[x][y]+1;
q.push({posX,posY});
}
}
}
}
}