前言
Hexo
是一个快速、简洁且高效的博客框架。Hexo
使用Markdown
(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。即把用户的markdown
文件,按照指定的主题解析成静态网页。安装
hexo
安装使用
hexo
之前需要先安装Node.js
和Git
,当已经安装了Node.js
和npm
(npm
是node.js
的包管理工具),可以通过以下命令安装hexo
$ npm install -g hexo-cli
可以通过以下命令查看主机中是否安装了
node.js
和npm
$ node --version #检查是否安装了node.js $ npm --version #检查是否安装了npm
如下所示表示已经安装了node.js和npm
root@***:~# node --version v8.11.3 root@***:~# npm --version 6.7.0
建站
安装完Hexo之后,执行下列命令,Hexo将会在指定目录中新建所需要的文件,指定的目录即为Hexo的工作站
$ hexo init <folder> $ cd <folder> $ npm install
新建完成之后,指定目录中的情况如下
. ├── _config.yml ├── package.json ├── scaffolds ├── source | ├── _drafts | └── _posts └── themes
_config.yml
网站的配置信息,您可以在此配置大部分的参数。 配置参数讲解
package.json
应用程序的信息,以及需要安装的模块信息。
scaffolds
模版文件夹。新建文章时,Hexo 会根据 scaffold 中的模板文件来建立新的文件。Hexo的模板是指在新建的markdown文件中默认填充的内容。例如,如果修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。也就是说,通过hexo命令每新建一个文章,都会包含指定模板文件中的内容。
官网模板详述
source
资源文件夹是存放用户资源的地方,如markdown文章。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
注意:除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。
themes
主题文件夹。Hexo 会根据主题来解析source目录中的markdown文件生成静态页面。官网主题详述
写作
可以执行下列命令来创建一篇新文章。
$ hexo new [layout] <title>
可以在命令中指定文章的布局(
layout
),不指定默认为post
,也可以通过修改_config.yml
中的default_layout
参数来指定默认布局。创建的新文章会自动加上指定布局对应的模板文件中的内容。布局(Layout)
Hexo 有三种默认布局:post、page 和 draft,它们分别对应不同的路径,而自定义的其他布局和 post 相同,都将储存到 source/_posts 文件夹。
布局路径postsource/_postspagesourcedraftsource/_drafts
如果你不想你的文章被处理,你可以将 Front-Matter 中的layout: 设为 false 。
模版(
Scaffold
)在新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件,例如:
$ hexo new photo "My Gallery"
在执行这行指令时,Hexo 会尝试在 scaffolds 文件夹中寻找 photo.md,并根据其内容建立文章,以下是您可以在模版中使用的变量:
变量描述layout布局title标题date文件建立日期
Front-matter
Front-matter
是文件最上方以---
分隔的区域,用于指定个别文件的变量,举例来说:--- title: Hello World date: 2013/7/13 20:46:25 ---
注意:一般
Front-matter
使用的yaml
语法,yaml
语法需要注意空格,如title: Hello World
冒号需要有一个空格,当然除YAML
外,你也可以使用JSON
来编写Front-matter
。
以下是预先定义的参数,您可在模板中使用这些参数值并加以利用。参数描述默认值
layout
布局title
标题date
建立日期文件建立日updated
更新日期文件更新日期comments
开启文章的评论功能truetags
标签(不适用于分页)categories
分类(不适用于分页)permalink
覆盖文章网址
分类和标签
只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性而标签没有顺序和层次。
categories: - Diary tags: - PS3 - Games
WordPress
支持对一篇文章设置多个分类,而且这些分类可以是同级的,也可以是父子分类。但是Hexo
不支持指定多个同级分类。下面的指定方法:categories: Diary Life
会使分类
Life
成为Diary
的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类.文章摘要
设置文章摘要,我们只需在想显示为摘要的内容之后添
<!-- more -->
即可。高亮
//2-st #include<bits/stdc++.h> using namespace std; const int maxn = 1e6+5; #define cts const int& #define nt(a) ((a)+n) #define int long long int n,m,i,j,cnt,clrs,dfns,dfn[maxn],low[maxn],hd[maxn<<1],clr[maxn]; bool ins[maxn],a,b; stack<int> sc; struct edge{ int u, v, nxt; }dg[maxn<<1]; inline void lineto(cts u, cts v) { dg[++cnt] = { .u = u,.v = v,.nxt = hd[u] }; hd[u] = cnt; } void tarjan(cts u) { sc.push(u), ins[u] = 1; dfn[u] = low[u] = ++dfns; for (auto i = hd[u]; i; i = dg[i].nxt) if (const auto& v = dg[i].v;!dfn[v]) tarjan(v), low[u] = min(low[u], low[v]); else if(ins[v]) low[u] = min(low[u], dfn[v]); if (dfn[u] == low[u]) { clr[u]=++clrs; while (sc.top() != u){ clr[sc.top()] = clrs; ins[sc.top()] = 0; sc.pop(); } clr[sc.top()] = clrs; ins[sc.top()] = 0; sc.pop(); } } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin >> n >> m; while (m--) { cin >> i >> a >> j >> b; lineto(i + n * (a & 1), j + n * (b ^ 1)); lineto(j + n * (b & 1), i + n * (a ^ 1)); } for (int i = 1; i <= (n << 1); ++i) if (!dfn[i]) tarjan(i); for (int i = 1; i <= n; ++i) if (clr[i] == clr[i + n]) { return cout<<"IMPOSSIBLE",0; } cout<<"POSSIBLE\n"; for (int i = 1; i <= n; ++i) cout << (clr[i] > clr[i + n]) << ' '; }