记录一些发现

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});
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值