「建站笔记Ⅰ」配置虚拟主机实现一服务器多站点

一、前言


这是第一个建站笔记。当然之前建站过程中也不是没遇见值得记录与思考的问题。
不过博主身患多年的懒癌晚期,咳咳,等哪天太无聊了再来回忆吧!我就不随便挖坑了。。

在受到了别人博客设计的启发下,我希望有一个不是套用WordPress主题页面来编辑,而是自己写的一个独立的个人简介页面。这样,只有一个服务器和域名的我就需要直面两个问题:

  1. 网页的域名是什么,怎么解析。
  2. 网页文件放在哪。怎样和域名绑定。

在观摩了不少相关博文之后,还是比较顺利地解决了问题,并且得到了相对简单的有针对性的办法。

Read More

Begin the Git tour

从开始git到提交文件

git安装后用户信息配置:

git config --global user.name "Your Name"
git config --global user.email "Your Email"

global参数表示设备上所有的repository均使用该用户名与邮箱

版本库 (仓库) 创建:

(cd到仓库的目录后)

git init

文件的上传:

git add <file>

git commit -m "注释"

git remote add origin git@git.oschina.net:chevalierys/Git_First.git

git push origin master

Read More

中缀表达式转后缀表达式

相关要点:

  1. 数字(字母)直接输出
  2. 前括号直接入栈
  3. 后括号不入栈,然后输出栈中元素直到最近的与当前后括号匹配的前括号出栈(括号不输出)。
  4. 运算符优先级:当栈顶元素优先级最高时,先输出栈顶元素,再让当前元素入栈
  5. 最后需要检查栈是否为空,依次输出栈中元素,直到栈空。

Read More

树对森林说:来相互伤(zhuan)害(huan)啊!

一、二叉树转换为森林

  1. 某一根节点的左子结点不变
  2. 某一根节点的右子结点连接到该根结点的父节点(如果该根结点的父节点为NULL,则说明该结点将独立成树)

 

SWUSToj例题:0981

统计利用二叉树存储的森林中树的棵数(0981)

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<algorithm>
#define MAX 51005
#define INF 0x3f3f3f
using namespace std;
typedef int Elemtype;
typedef struct node{
    Elemtype data;
    struct node *lchild;
    struct node *rchild;
}BINTREE;
void Creat_Bintree(BINTREE *&Root){
    char TmpStr;
    scanf("%c",&TmpStr);
    if(TmpStr == '#')   {Root = NULL;return;}
    Root = (BINTREE *)malloc(sizeof(BINTREE));
    Root->data = TmpStr;
    Creat_Bintree(Root->lchild);
    Creat_Bintree(Root->rchild);
}
int ans=1;  //用于保存树的棵数
/*
由以上二叉树转森林的规律可知,要从二叉树表示的森林中独
立出一颗树,需要当前递归层次中的二叉树的根节点有右子树,
且该右子树便是这颗树。故只需遍历二叉树的右子树来记录树的棵树。
*/
void PreOrderTravel(BINTREE *Root){
    if(Root->rchild!=NULL){
        ans++;
        PreOrderTravel(Root->rchild);
    }
}
int main(){
    BINTREE *BinTree01;
    Creat_Bintree(BinTree01);
    PreOrderTravel(BinTree01);
    cout<<ans;
    return 0;
}

vector容器的常见用法

  1. 包含头文件:#include<vector>
  2. 建立vector:vector<int>vec
  3. 向vec尾部插入一个值i:vec.push_back(i);
  4. 使用下标来访问vector元素:cout<<vec[0]<<endl;(可看出vector是从0开始计算下标的)
  5. 向vec的第i+1个元素之前插入一个a:vec.insert(vec.begin()+i,a);
  6. 删除vec的第i+1个元素:vec.erase(vec.begin()+i);
  7. 删除vec的[i,j-1]区间的所有元素:vec.erase(vec.begin()+i,vec.begin()+j);(erase函数的形参是一个地址)
  8. 求vec的元素个数:vec.size();
  9. 清空vec:vec.clear;

Vector使用简单实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int>q;
    int n=10;
    int i;
    for(i=0;i<n;i++){
        q.push_back(i);
    }
    q.erase(q.begin()+1,q.begin()+2);
    cout<<"size:"<<q.size()<<endl;
    i=0;
    while(!q.empty()){
        cout<<q[i]<<" ";
        q.pop_back();
        i++;
    }
    cout<<endl;
    return 0;
}