git push每次都要输入帐号密码的解决方法
问题描述
github每次push代码,都要输入密码,很麻烦。
这是因为clone 的时候是用的https 地址,导致push 的时候默认也是https 方式,所以每次都要输入密码。改成ssh 方式就不用每次都输入密码了。
在终端中输入git remote -v 可以看到远程连接方式:
github每次push代码,都要输入密码,很麻烦。
这是因为clone 的时候是用的https 地址,导致push 的时候默认也是https 方式,所以每次都要输入密码。改成ssh 方式就不用每次都输入密码了。
在终端中输入git remote -v 可以看到远程连接方式:
所有的安装包可在http://mirror.team-cymru.com/gnu/找到。
GCC下载地址:GCC7.2.0,三个主要依赖组件下载地址:mpfr-4.0.1,mpc-1.0.3,gmp-6.1.2。
使用yum安装的依赖项:yum install -y glibc-headers gcc-c++ automake autoconf。
对于gmp, mpfr和mpc三个依赖包,如果想偷懒就使用下面的命令一键安装:
sudo yum install -y gmp-devel mpfr-devel libmpc-devel建议使用yum自动安装,手动安装麻烦且费时。
这三个组件还可以使用官方提供的安装脚本安装:./contrib/download_prerequisite,比较耗时。
安装gmp
wget http://mirror.team-cymru.com/gnu/gmp/gmp-6.1.2.tar.xz
tar -Jxvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp-6.1.2
make && make check
sudo make install
sudo ln -s /usr/local/gmp-6.1.2 /usr/local/gmp安装mpfr
wget http://mirror.team-cymru.com/gnu/mpfr/mpfr-3.1.6.tar.xz
tar -Jxvf mpfr-3.1.6.tar.xz
cd mpfr-3.1.6
./configure --prefix=/usr/local/mpfr-3.1.6 --with-gmp=/usr/local/gmp
make && make check
sudo make install
sudo ln -s /usr/local/mpfr-3.1.6 /usr/local/mpfr安装mpc
wget http://mirror.team-cymru.com/gnu/mpc/mpc-1.0.3.tar.gz
tar -zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make && make check
sudo make install
sudo ln -s /usr/local/mpc-1.0.3 /usr/local/mpc添加动态库到系统搜索路径
动态库的默认搜索路径都在/etc/ld.so.conf文件中,这个文件里面包含了/etc/ld.so.conf.d/目录下的所有文件。所以只要在这个目录下创建一个gcc的文件作为库的搜索路径就可以了。
sudo echo "usr/local/mpc/lib" > /etc/ld.so.conf.d/gcc.conf
sudo echo "/usr/local/mpfr/lib" > /etc/ld.so.conf.d/gcc.conf
sudo echo "/usr/local/gmp/lib" > /etc/ld.so.conf.d/gcc.conf
sudo ldconfig 经常我们都会被“常量是指针还是指针所指向的对象”这个问题所困扰。
因为在使用const 修饰指针时,指针的属性有三种状态:const int * ,int * const , const int * const ,三个状态很容易混淆。
通常,我们用名词顶层const 表示指针本身是个常量,名词底层const 表示指针所指向的对象是一个常量。
例如:
int i = 0;
const int * p1 = &i;
int *x = p1; // 错误,*x不具备底层const资格
const int *x2 = p1; // 正确,具备底层const资格
const int *x3 = &i; // 正确,&i是int *,可以转成const int * 和引用一样,指针也可以和const 组合,它们组合后使得指针不能用于改变其所指对象的值。
const double p1 = 3.14;
double *ptr = &p1; //错误,ptr是一个普通的指针,不能指向常量的地址。
const double *cptr = &p1;
*cptr = 3.14159; //错误,不能修改*cptr的值const 和指针组合有以下三种方式:
对const 的引用通常被称为常量引用 ,它和非常量引用的区别为:
非常量引用可以修改绑定对象的值,常量引用不能修改绑定对象的值。非常量引用时绑定对象的类型必须严格匹配,常量引用只要绑定的对象可以转换成引用的类型即可,即它的绑定值可以是表达式等等。非常量引用不能引用常量和常量引用对象,常量引用可以引用普通的常量和常量引用对象。非常量引用不能引用字面量,常量引用可以引用字面量。C/C++ 使用const 关键字修饰的变量叫做常量,常量的值无法改变,在整个程序的运行期间,不会(同时也不能)被任何代码所改变。
由于常量无法改变,所以在定义时就必须被初始化,它的初始值可以是任何复杂的表达式,但不能是一个未经初始化的变量。
const int i = 1;
const int j = 2 *3;
const int k = get_max();
const int err = x; //错误,x是一个没有初始化的变量。 grep全称是Global Regular Expression Print,表示使用正则表达式匹配文本。
命令格式:grep pattern file
-c:输出匹配到的数量。-i:不区分大小写。-h:不显示文件名。-n:显示匹配行和行号。-b:显示匹配到的字符串偏移。-o:只输出匹配到的内容,一般与-b一起使用。-v:反向输出,输出所有不匹配的行。-E:正则匹配。tail用于输出文件尾部的内容,命令用法:tail [选项] file,默认显示最后10行。
-c <N>:显示尾部指定数量的字符内容。-n <N>:显示尾部指定行数的内容。-f:实时刷新文件尾部信息,常用于日志信息监测。--pid:和-f选项连用,表示当指定pid进程终止后,退出tail命令。-v -q:输出和隐藏文件名,和head命令中的-v -q选项功能一致。head命令用于显示文件的开头内容,命令格式为:head file。
-n <行数>:显示开头指定行的文件内容,默认为10。-c <字符数>:显示开头指定个数的字符数。-q:不显示文件名字信息,适用于多个文件,多文件时默认会显示文件名。-v:显示文件名信息,适用于单个文件,单文件时默认不显示文件名。