C++概况

C++语言应用广泛,凡是要求大型的、对性能要求很高的程序,以及物联网应用上,都会用到C++语言。

C++历史

  • C++编程语言可追溯到1979年,Bjarne Stroustrup创立了带类的C,这就是C语言的超集。1983年,这个语言被命名为C++;
  • C++最开始仅仅是C语言的增强版,但是后来又引入了很多功能。1998年伴随着STL标准库的诞生,一堆新功能和特性的产生,C++标准委员会发布了第一个国际标准C++ + ISO/IEC 1488:称为C++ 98;
  • 2011年中期,C++标准(被称作C++ 11)完成了新的标准。Boost库项目对新标准产生了相当大的影响,一些新模块直接从响应的Boost库中派生出来;
  • C++ 11之后,每三年C++都会发布新的语言标准,每一版都在基本保留向后兼容性的同时,提供着改进和新功能;

C++特点

优点:

  1. 强大的抽象封装能力:这让C++语言具备了强大的开发工程能力;
  2. 高性能:运行快,占用资源少;
  3. 低功耗:特别适合在各种微型嵌入式设备中高效运行程序;

缺点:

  1. 语法相对复杂,细节比较多;
  2. 需要一些好的规范和范式,否则代码很难维护;

C++的应用

  • 大型桌面应用程序(如Google Chrome、Miscrosoft Office)
  • 大型网站的后台(Google的搜索引擎)
  • 游戏和游戏引擎(Unity)
  • 视觉库和AI引擎(Opencv和Tensorflow)
  • 数据库(Mircrosoft SQL Server)
  • 嵌入式领域

总的来说,在开发成本比较高,对于内存和CPU要求很高,低功耗并且程序被调用非常频繁等场景中,目前C++是最合适的语言。

Hexo博客要求必须使用Github风格的Markdown语言编辑。所以需要了解具体的编写格式。

一、编辑器

市面上有很多的Markdown编辑器,之前很多人喜欢用Typora,但目前这个已经没有免费版可以用了。干脆直接用VSCode。

使用VSCode需要下载两个插件,第一个是【Markdown All in One】,是一个组合包,把最常用的markdown优化都安装好;第二个是【Markdown Preview Github Styling】,是Github使用的Markdown渲染样式。使用这个样式,在本地就能预览Markdown文件最终在Github Pages中显示的效果。

二、常用语法

标题

利用#设置标题,一个表示一级,两个表示二级,依次类推

1
2
3
#      一级标题
## 二级标题
……………… 以此类推

引用

利用>可以创建引用块

文本高亮

利用一组反引号`来把文本包起来。

1
`这里面是需要高亮的字符`

代码块

利用三个反引号`把内容扩起来即可。在上面的那个反引号后面还可以加上语言名称来进行自适应。

斜体

可以用一组*号来把文字包起来,也可以直接用快捷键Ctrl+I

加粗

k可以用一组**来把文字包起来,也可以用快捷键Ctrl+B

删除线

用一组~~把文字包起来

下划线

下划线可以用<u> </u>把文字包起来

按键效果

可以用一组<kbd> </kbd>把文字包起来,实现按键效果。

列表

列表分为有序列表和无序列表

1
2
3
4
5
6
7
无序列表:用-加空格
- 第一
- 第二

有序列表:用数字加.加空格
1. 第一
2. 第二

三、链接与图片

图片其实是一种超链接,所以把图片归类为链接里面。

1、跳转链接

普通的网站跳转都属于跳转链接,语法很简单:

1
[网站说明](跳转链接)

2、图片链接

图片链接的markdown语法和跳转链接类似:

1
![](图片链接)

3、图片存储

网上很多教程都是利用相对路径来存储图片,操作如下: 1. 安装图片插件

1
npm install hexo-asset-image --save

  1. _config.yml配置文件中,修改为 post_asset_folder: true

其中第二步可以忽略,第二步的意义在于我们新建文章的时候,会在soruce目录下生成文章同名文件夹供我们存储图片,我们也可以手动创建文件夹。

但是对于GitPages或者云服务器来说,其提供的免费存储空间都是有上限的,这样操作只适用于图片较少的情况。我们可以利用云服务器对象存储功能实现图床。

我的域名使用的是腾讯的,那就用腾讯的COS来操作,并且腾讯提供可视化工具COSBrowser,很方便。 参考博客: Hexo 博客图片添加至图床---腾讯云COS图床使用

一个图片测试:

四、公式

公式使用的是Latex语法。但需要注意,Hexo并不支持Laxte语法,所以我们需要开启相关的开关。有些主题就自带这个功能。 Markdown使用$包裹实现行内公式,使用$$包裹实现行间公式。 Latex语法可以不掌握,借助工具即可: HostMath 不过Hexo显示数学公式还需要一些其他设置,Hexo默认使用 hexo-renderer-marked 引擎渲染网页,该引擎会把一些特殊的 markdown 符号转换为相应的 html 标签,导致公式不显示。

五、表格

1
2
3
4
5
6
|     1   |      T2       |  T3   |
|----------|:-------------:|------:|
| 1 | 1 | 1 |
| 22 | 22 | 22 |
| 333 | 333 | 333 |

1 T2 T3
1 1 1
22 22 22
333 333 333

------表示左对齐,:------:表示居中,-----:表示右对齐 Hexo的表格必须和正文之间有空行,否则不能正常显示

六、流程图

Hexo里流程图限制多多,直接在其他软件画完截图吧。我也懒得学了。【流汗黄豆】

七、特殊字符

常见转义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
! &#33; — 惊叹号 Exclamation mark
” &#34; &quot; 双引号 Quotation mark
# &#35; — 数字标志 Number sign
$ &#36; — 美元标志 Dollar sign
% &#37; — 百分号 Percent sign
& &#38; &amp; Ampersand
‘ &#39; — 单引号 Apostrophe
( &#40; — 小括号左边部分 Left parenthesis
) &#41; — 小括号右边部分 Right parenthesis
* &#42; — 星号 Asterisk
+ &#43; — 加号 Plus sign
< &#60; &lt; 小于号 Less than
= &#61; — 等于符号 Equals sign
- &#45; &minus; — 减号
> &#62; &gt; 大于号 Greater than
? &#63; — 问号 Question mark
@ &#64; — Commercial at
[ &#91; --- 中括号左边部分 Left square bracket
\ &#92; --- 反斜杠 Reverse solidus (backslash)
] &#93; — 中括号右边部分 Right square bracket
{ &#123; — 大括号左边部分 Left curly brace
| &#124; — 竖线Vertical bar
} &#125; — 大括号右边部分 Right curly brace

八、hexo模板

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# !!!!!!!!!!
# 每一项的 : 后面均有一个空格
# 且 : 为英文符号
# !!!!!!!!!!

title:
# 文章标题,可以为中文

date:
# 建立日期,如果自己手动添加,请按固定格式
# 就算不写,页面每篇文章顶部的发表于……也能显示
# 只要在主题配置文件中,配置了 created_at 就行
# 那为什么还要自己加上?
# 自定义文章发布的时间

updated:
# 更新日期,其它与上面的建立日期类似
# 不过在页面每篇文章顶部,是更新于……
# 在主题配置文件中,是 updated_at

permalink:
# 若站点配置文件下的 permalink 配置了 title
# 则可以替换文章 URL 里面的 title(文章标题)

categories:
# 分类,支持多级,比如:
# - technology
# - computer
# - computer-aided-art
# 则为 technology/computer/computer-aided-art
# (不适用于 layout: page)

tags:
# 标签
# 多个可以这样写 [标签1,标签2,标签3]
# (不适用于 layout: page)

description:
# 文章的描述,在每篇文章标题下方显示
# 并且作为网页的 description 元数据
# 如果不写,则自动取 <!-- more -->
# 之前的文字作为网页的 description 元数据

keywords:
# 关键字,并且作为网页的 keywords 元数据
# 如果不写,则自动取 tags 里的项
# 作为网页的 keywords 元数据

comments:
# 是否开启评论
# 默认值是 true
# 要关闭写 false

layout:
# 页面布局,默认值是 post,默认值可以在
# 站点配置文件中修改 default_layout
# 另:404 页面可能用到,将其值改为 false

type:
# categories,目录页面
# tags,标签页面
# picture,用来生成 group-pictures
# quote?
# https://io-oi.me/tech/test/

photos:
# Gallery support,用来支持画廊╱相册,用法如下:
# - photo_url_1
# - photo_url_2
# - photo_url_3
# https://io-oi.me/tech/test/

link:
# 文章的外部链接
# https://io-oi.me/tech/test/

image:
# 自定义的文章摘要图片,只在页面展示,文章内消失
# 此项只有参考本文 5.14 节配置好,否则请勿添加!

sticky:
# 文章置顶
# 此项只有参考本文 5.15 节配置好,否则请勿添加!

password:
# 文章密码,此项只有参考教程:
# http://shenzekun.cn/hexo的next主题个性化配置教程.html
# 第 24 节,配置好,否则请勿添加!
# 发现还是有 bug 的,就是右键在新标签中打开
# 然后无论是否输入密码,都能看到内容

由于Hexo属于静态博客,文章内容都是本地存储,只有静态页面(public文件夹)会push到git上面。如果我们更换电脑的话,配置相同的环境、依赖和博客文件,如果用U盘拷贝就太low了。所以我们可以利用Github远程仓库来实现多台终端的博客更新部署。

主要思路是利用git的分支,把静态博客页面文件放在master主分支,把hexo的部署环境文件和博客原文放在新建的Hexo分支上。

# 一、Hexo的原理和依赖

1、环境

Hexo需要有Node.js环境和Git环境,这在哪个电脑都必须有的。

2、资源配置依赖

首先要安装Hexo

1
npm install -g hexo-cli 

hexo所需要的包信息都已经存储在package.json文件中了,我们可以直接利用这个文件,执行命令行安装所需资源:

1
npm install

3、博客内容

博客的内容主要就是主题文件和博客文件

  • node_modules: hexo所需要的文件,这个文件不需要上传git
  • themes:主题文件
  • source:博文的md文件
  • public:生成的静态页面,这个一般都clean掉
  • _config.yml:全局配置文件
  • .gitignore:hexo自动生成的,里面一般会记录node_modules,我们不许要改,这个文件就会被忽略掉

二、Git仓库修改

对我们之前创建的username.github.io仓库,创建一个新的hexo分支,并在仓库->Settings->Branches->Default branch中把这个分支设置为默认分支。clone到本地,此时本地应该是Hexo分支。

之后我们把我们之前写的博客目录下的文件,全部拷贝到这个本地仓库中【注意要把之前themes目录中的.git文件删掉。因为一个git目录下不能有另一个git仓库。如果我们需要更新主题文件,只能把主题clone到本地后进行拷贝覆盖】。然后提交git到Hexo分支:

1
2
3
git add .
git commit -m 'update'
git push

此时我们观察github,可以看到,master分支里面保存着静态博客资源(在_config.yml中的Deployment配置的),Hexo分支备份博客部署文件,供我们维护更新。两者在一个仓库中互不干扰。

三、新的提交操作

目前我们在写博客时,就要在提交前做git更新了

1
2
3
4
5
6
7
8
9
10
11
git pull     //提交前最好更新最新


git add .
git commit -m 'update'
git push


hexo clean
hexo g
hexo d

Hexo是一个快速,简单而强大的博客框架,使用Markdown语言编写文章,Hexo可以在几秒钟内生成具有美丽主题的静态页面文件。

一、环境搭建

1、Node.js

Node.js是基于Chrome JavaScript运行时建立的一个平台,npm是node.js的包管理工具。Hexo是基于Node.js的,使用Hexo搭建博客,就需要本地有Node.js环境。Node.js环境点击这里,一路next。安装完成后可以用命令行查看版本号。

1
2
3
node -v //查看node.js的版本

npm -v //查看包管理器的版本

由于国内环境使用npm速度感人,可以安装cnpm,把镜像源换成淘宝的

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

之后可以命令行输入cnpm,如果能打出帮助界面表示安装成功。

2、Git

git的相关配置不在此赘述。hexo的很多操作都要依赖于git

3、Hexo

Hexo依托于npm包管理器,我们可以直接下载

1
cnpm install -g hexo-cli
-g命令是在全局安装Hexo命令行工具。当安装完成后,我们可以查看hexo版本来检查是否安装成功
1
hexo -v    //查看Hexo版本

二、博客搭建

首先我们新建一个存放博客的文件目录。之后我们的操作全部在此目录下。如果之后我们搭建错误想要从头再来,直接删掉这个目录新建一个即可。

然后我们初始化hexo

1
hexo init
初始化后,文件目录下面就会自动生成hexo的基础框架,后续博客都是基于这个框架来做。

之后安装hexo的依赖组件

1
cnpm install

目前目录下面有如下几个部分:

  • node_modules:存的是利用【npm install --save】下载安装的组件
  • scaffolds:存放模板文件,可以创建post、page、draft三种页面
  • source:存放用户资源,即我们的待发布文档
  • themes:存放主题文件夹,默认landspace
  • _config.yml:此文件很重要,是我们网站的配置信息
  • package.json:应用程序的信息

此时会自动生成一篇Helloworld的博客,我们可以启动博客来看看效果。

1
2
3
hexo clean      //清空缓存,即清空我们的public文件夹
hexo g //hexo generate命令,在本地生成静态页面,即pubilc文件夹
hexo s //hexo server命令,开启本地服务器,可供我们本地预览
本地服务器开启后,我们可以访问localhost:4000来本地预览,输入Ctrl+C关闭本地服务器

三、写博客

1
2
3
4
5
6
7
hexo n "第一篇文章"
//hexo new [layout] <title>
//hexo new命令,不设置layout会根据_config.yml中的default_layout在source\\_posts目录下生成一篇博客文章
//如果标题包含空格,使用引号括起来

//-p 自定义路径
hexo new page --path about/me "About me"

生成博客还是老三样

1
2
3
hexo clean
hexo g
hexo s

四、部署到github

执行完上述步骤,我们的博客只能在本地看,我们必须部署到网上才能通过网络来看。Github提供GitPages免费站点服务,自带域名和1G免费空间,存放博客资源和网页信息足够。

git本地配置和ssh公钥配不再赘述

1、新建git仓库

要注意仓库名必须要符合规则,即【用户名.github.io】格式。git会跟进这个仓库来创建域名。

2、hexo配置git插件

1
cnpm install --save hexo-deployer-git

安装完成后我们需要修改_config.yml文件中的Deployment信息(最下面)

1
2
3
4
deploy:
type: git
repo: git@github.com:Liuqianci/Liuqianci.github.io.git
branch: master

3、部署远端

在之前的基础上,可以把本地文章部署到远端了

1
2
3
4
5
hexo clean
hexo g
hexo s

hexo d //hexo deploy命令,部署远端

此时我们的github仓库就有内容了,我们也可以输入域名直接访问我们的博客。

五、自定义域名

虽然gitpages给我们提供了一个域名,但是我们还可以自己申请一个属于自己的域名。我绑定的是腾讯的域名。

在腾讯云里申请域名,此流程很快。

域名申请下来后,需要绑定我们的博客网站。在腾讯云的控制台上进行域名解析。一般解析两条,A对应IP,CNAME对应域名。我们博客的IP,直接ping我们博客的域名即可。

域名解析完成后,我们要进行域名绑定,在source目录下新建一个CNAME文件,写入自己的域名。然后在GitPages上也进行配置,进入Github的settings中,添加GitPages的Custom Domain为我们的自定义域名。我们可以勾选Enforce HTTPS来开启https

最后在_config.yml的url选项中填写我们的自定义域名。完成发布。