编程我只用CPP 发布的文章
linux sort命令的用法
一、基本用法
sort命令用于对文件和标准输入进行排序,默认以行为单位,根据字典序排序。
$ cat test # 测试文件
tencent 100 1000
baidu 200 500
alibaba 150 800
huawei 130 700
baidu 200 500
$ sort test # 排序
alibaba 150 800
baidu 200 500
baidu 200 500
huawei 130 700
tencent 100 1000 C++构造函数的执行顺序
一、构造函数的执行规则
C++构造函数的调用顺序为:
- 如果类中包含静态成员变量,先执行静态成员变量的构造函数。
- 如果类是派生类,则先执行基类的构造函数。同样如果基类也是一个派生类,也要先执行基类的构造函数。
- 执行成员变量中的构造函数,根据定义的顺序来,先执行类内初始化,再执行列表初始化。
- 执行本类的构造函数。
C++全局变量和静态变量的区别
一、全局变量
全局变量默认是静态的,通过extern关键字声明后可以在多个文件中使用。
具体可参考:C++变量的声明、定义和extern关键字
header.h
#pragma once
extern int gCnt;
int f1();
int f2(); C++变量的声明、定义和extern关键字
一、变量的声明和定义
C++的分离编译机制允许程序拆分成多个文件来写,最常见的是在头文件中进行声明,源文件中进行定义,然后一起编译:
gcc a.h a.cpp -o a.o声明使得函数或者变量被程序所知,定义负责创建与声明相关联的实体。变量只能被定义一次,但能多次声明。
逗号表达式
逗号表达式时c语言提供一种特殊的运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。
例如:
#include <iostream>
using namespace std;
int main() {
int a = (1 + 2, 2 + 3);
cout << a << endl;
a = (a * 5, a + 6);
return 0;
}输出的结果为:
5
11 c++中的变量初始化
一、默认初始化
C++中,对于定义时没有指定初值的变量,将会被默认初始化,此时变量将被赋予“默认值”,默认值是具体是什么将由变量的类型和位置决定。
对于内置类型来说,它的默认值由定义的位置决定,定义于函数体外的变量(即全局变量)被初始化为0,定义于函数体内的局部变量将不被初始化,值是未定义的。
visual assist x没有智能提示的解决方案
nginx隐藏版本号及修改软件名
一、概述
nginx作为当前最流行的开源web服务器之一,被无数公司或个人在使用。正因为开源,所以任何人都可以获取到它的源码,这其中就包含了世界各地的黑客。他们无时无刻不在想着如何找出nginx的漏洞,以至于在网上随便一搜都能找到无数nginx相关的漏洞:

默认情况下,http响应的Server头部都会携带上服务器的名字和版本信息:
> curl -I http://127.0.0.1
HTTP/1.1 502 Bad Gateway
Server: nginx/1.12.2 # 携带有服务端和版本号
Date: Mon, 12 Mar 2018 01:25:00 GMT
...而一旦黑客知道了服务端软件的版本信息,很容易就能通过对应版本的漏洞来攻击服务器,引发安全问题。所以针对生产环境的服务器,有必要隐藏或者修改软件版本信息,以避免黑客的指向性攻击。
nginx配置https
配置https之前首先要确保已经有
http证书和私钥文件,证书是*.crt文件,私钥是*.key文件。怎么申请证书这里不再说明,很多机构都可以免费发放证书,在腾讯云,阿里云或者七牛等等随便找个机构申请一个即可。
假设域名和证书的对应关系如下:
www.maqian.io
/etc/conf/ssl/1_www.maqian.io_bundle.crt
/etc/conf/ssl/2_www.maqian.io.keymaqian.io
/etc/conf/ssl/1_maqian.io_bundle.crt
/etc/conf/ssl/2_maqian.io.key 