• nobody
1
2
3
4
5
此处填入服务端要监听的端口。需要选择 1024 或以上的端口号,否则启动 ss-server 时将会需要 root 权限,而默认的服务文件则是以 nobody 用户启动 Shadowsocks 的。

如需选用低于 1024 的端口,也可执行命令 sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server 赋予相应权限,后续就可以使用 nobody 用户或普通用户启动 Shadowsocks。

或执行 systemctl edit shadowsocks-libev 命令,并输入以下内容:

Why are ports below 1024 privileged? [closed]

  1. 用root打开vscode

code –user-data-dir=”~/.vscode-root”

  1. C++动态库编译连接一个C语言静态库,调用崩溃
    解决:
    在C静态库,每个函数逐个再封装一层函数,并且在外面嵌套一层extern c

===

what ever

类指针

  1. 指针对象为NULL,为什么仍然可以调用成员函数

参考文章1_对象指针为NULL,为什么还是可以调用成员函数

参考文章2——值为NULL的对象指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#include<iostream>
#include<string.h>
using namespace std;
class A
{
public:
static void f1(){ cout<<"f1"<<endl; }
void f2(){ cout<<"f2"<<endl; }
void f3(){ cout<<num<<endl; }
virtual void f4() {cout<<"f4"<<endl; }
public:
int num;
};

int main(int argc,char* argv[])
{

A* pa = NULL;
pa->f1(); //正常
pa->f2(); //正常
pa->f3(); //错误,提示段错误
pa->f4(); //错误,提示段错误
return 0;

}

类的成员函数并不与具体对象绑定,所有的对象共用同一份成员函数体,当程序被编译后,成员函数的地址即已确定,这份共有的成员函数体之所以能够把不同对象的数据区分开来,靠的是隐式传递给成员函数的this指针,成员函数中对成员变量的访问都是转化成”this->数据成员”的方式。因此,从这一角度说,成员函数与普通函数一样,只是多了一个隐式参数,即指向对象的this指针。而类的静态成员函数只能访问静态成员变量,不能访问非静态成员变量,所以静态成员函数不需要指向对象的this指针作为隐式参数。

指针不是基础类型

指针是

Fork me on GitHub