Windows下使用GitHub Pages搭建hexo博客详细教程以及Next主题超全配置

根据下面的教程搭建的博客见这里

前言

马上要进入研究生了,不能再过浑浑噩噩的日子了,搭建一个小网站,用于记录自己所学的东西。其实,之前在腾讯云1元乞丐版上也搭建过博客,但是呢,只用来扯淡了。这次使用 GitHubPages 和 Hexo 建立自己的博客,希望能够促进自己成长。

下面先介绍为何选择 GitHubPages 和 Hexo 来搭建博客,然后介绍搭建博客的详细过程。

Why GitHub Pages and Hexo

因为 GitHub 的存在,我们得以简单快速地搭建个人博客。

GitHub
GitHub,是一个代码托管网站和社交编程网站。这里聚集了世界上各路技术牛叉的大牛,和最优秀的代码库。把你的博客托管在这里,还有什么不放心的呢O(∩_∩)O。

GitHub Pages
GitHub Pages,是用来托管 GitHub 上静态网页的免费站点,那 GitHub Pages具体有哪些功能呢:

  • 有足够的免费空间(1G),资料自己管理,保存可靠;
  • 享受 GitHub 的便利,上面有很多大牛,眼界会开阔很多;
  • 可以使用很多现成的博客框架,搭建过程简单快速。

HEXO

Hexo 是一个简单、快速、强大的静态博客框架,出自台湾大学生 tommy351 之手。我也看过使用 Jekyll、Octopress 搭建个人博客的过程,确实要繁琐许多。相比之下 Hexo 更轻便更快捷,下面是其官网强调的四大特点:

  1. 极速生成静态页面
  2. 一键部署博客
  3. 丰富的插件支持
  4. 支持 Markdown

相信大家对 GitHub Pages 和 Hexo 有了一定的了解,下面进入正题。

准备工作

注册 GitHub

访问 GitHub,注册十分简单,一定要记住注册时使用的邮箱,因为 GitHub 上很多通知都是通过邮箱的。如下图所示,框里有各种提示,这里就不多说了:

申请成功后,在 GitHub 官网上登录,并验证邮箱即可。

在 GitHub 上建立仓库

与 GitHub 建立好连接之后,就可以方便的使用它提供的 Pages 服务,GitHub Pages 分两种,一种是用你的 GitHub 用户名建立的 http://username.github.io 这样的用户&组织站点,另一种是依附项目的 Pages。

想建立个人博客是用的第一种,形如 http://username.github.io 这样的可访问的站点,每个用户名下面只能建立一个。

首先,点击右上角的+号,点击 New repository,新建一个仓库

然后,在Repository name,填写自己的用户名.github.io,例如我的用户名为zdaiot,则填写zdaiot.github.io

关于 Github 的使用,Crossin先生 也写了一篇通俗易懂的教程,大家可以去看看

极简 Github 上手教程

安装软件

Node.js

Node.js 下载

下载完成后根据提示一步一步安装就好,这个没有什么需要特别说明的。

安装git

git 下载

下载并安装下面两个软件,一直点击下一步即可。

配置 SSH

默认的cmd是没有ssh的,所以我们需要安装ssh:https://www.mls-software.com/opensshd.html 下载openssh,安装即可。

我们如何让本地 git 项目与远程的 GitHub 建立联系呢?方法是用 SSH。打开命令行,输入以下命令:

ssh -T [email protected]

如图:

如果是下面之类的反馈(或者显示 Hi xxx):

The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)?

不用紧张,输入 yes 之后,看到下图的结果,就配置成功了。

但是,输入yes后,若提示如下图:

极大多数情况是由于github账号没有设置ssh公钥信息所致。 前往 GitHub 网站的"account settings"
依次点击"Setting -> SSH Keys"->“New SSH key”

Title处填写“id_rsa.pub”或其他任意信息。 key处原样拷贝下面命令的打印 ~/.ssh/id_rsa.pub 文件的内容:
如果没有该文件

ssh-keygen -t rsa

一路回车…

最后,输入

ssh -T [email protected]

确认OK即可。

安装Hexo

Hexo 安装

更改npm为国内镜像源:

npm config set registry https://registry.npm.taobao.org 
npm info underscore
(如果上面配置正确这个命令会有字符串response)

打开命令行,依次输入以下命令:

cd /
npm install hexo-cli -g

如图:

提示:cd / 作用是返回根目录,Git Shell 默认装在 C 盘,启动时默认路径为 C:\Users\xxx(用户名)\Documents\GitHub,输入 cd / 命令后就返回到了 C 盘根目录下,需不需要使用 cd / 看个人习惯(下同)

部署Hexo

Hexo 的部署可采用如下方法,输入命令:

hexo init [文件名]。

打开控制台,依次输入以下命令:

cd /
hexo init Hexo

回车后出现该提示则表示正确:

若报错,如下图:

则是因为环境变量设置的原因,如下所示,我们之前有个步骤是 cd /,所以路径如下:

添加系统环境变量如下:

添加成功后,即可运行 hexo 指令。

部署过程中,报错如下:

删除掉:C:\Users\\.config\configstore\insight-bower.yml,在我的这个文件夹下,只有一个文件update-notifier-npm.json,删除掉,在执行上述指令。

部署成功之后,Hexo 会自动在目标文件夹建立博客网站所需要的所有文件。此时可以通过输入以下命令在本地进行预览(在刚才创建的文件夹里):

C:\>cd /d C:\Hexo
hexo generate
hexo server

系统可能会出现提示,请点击允许。如下图所示则表示正确:

此时打开浏览器,在浏览器地址栏输入 http://localhost:4000/ (默认端口为4000), 便可以看到最原始的博客了。以后发表博文想先预览,也可以通过 hexo server 在本地先跑起来,看看效果。
效果如下图所示:

恭喜,到目前为止个人博客的雏形已经有了。

在 Git Shell 中按 Ctrl + C 并输入 y 可以停止该服务

将本地文件部署到 GitHub

** 修改 Hexo 中的 _config.yml 文件**
在 Hexo 文件夹下找到 _config.yml 文件,如下图所示:

找到其中的 deploy 标签,改成下图所示形式,并保存。注意:冒号后面要加上一个空格,否则会报错。

deploy:
  type: github
  repository: https://github.com/zdaiot/zdaiot.github.io.git
  branch: master

将其 deploy 到仓库中
打开 Git Shell 进入创建的文件夹,依次输入以下命令:

hexo clean
hexo generate
hexo deploy

如果出现下图错误,不要着急:

将deploy 的 type 改成 git,即改为:

deploy:
  type: git
  repository: https://github.com/zdaiot/zdaiot.github.io.git

然后再在 Git Shell 中运行以下命令:

npm install hexo-deployer-git --save

再重新来一遍:

hexo clean
hexo generate
hexo deploy

出现以下提示则表示正确:

但是,若报错提示:fatal: Not a git repository (or any of the parent directories): .git 提示说没有.git这样一个目录,则是因为上面没有安装git,就进行安装hexo,安装git软件,重新进行上面步骤

但是,若出现下面bug:

则,将 _config.yml 文件中配置改为:

deploy:
  type: git
  repository: [email protected]:zdaiot/zdaiot.github.io.git
  branch: master

恭喜,到这一步,个人博客就已经部署到 GitHub 上了,你可以到你的GitHub仓库查看是否已经更新。此时,通过
http://your_user_name.github.io
(即你那个仓库的名称,形如:“你的 GitHub 用户名”.http://github.io)
就可以看到你的个人博客了。
若看不到,则参照下面的步骤,写一篇博客,发表上去!即可看到!
注意:这里可能会出现这种需要输入账号密码的情况

输入github的账号密码就可以了,记住那里输入密码的时候光标是不会移动的,只要你输入了就好,不要以为没输入上:)

安装Next主题

下载主题:
使用 Git Shell 进入 Hexo 文件夹,输入以下两条命令将主题下载到 theme/next文件夹下:

cd Hexo
git clone https://github.com/theme-next/hexo-theme-next.git themes/next

接着按照如下几个步骤进行:

  • 设置站点Hexo/_config.yml的theme字段值为next
  • 生成静态文件
hexo g
  • 开启服务,在本地查看效果
hexo s --debug
  • 同步代码到gitHub
hexo d

注:此时登录网站,发现是空白的,打开控制台,提示很多vendors目录下的文件404,解决办法是将next主题下即Hexo/themes/next/source下的vendors目录名改为lib,并修改Hexo/themes/next/_config.yml_internal: vendors改为_internal: lib

参考:iissnan的回答

配置Next主题

风格配置

通过修改next主题下的_config.yml的scheme字段,配置不同的风格。

# Schemes
#scheme: Muse
#scheme: Mist
#scheme: Pisces
scheme: Gemini

本站点使用的是默认的Gemini,显示效果如下:

菜单设置

通过修改next主题下的_config.yml的menu字段,选定显示的菜单项。

menu:
  home: / || home
  about: /about/ || user
  tags: /tags/ || tags
  categories: /categories/ || th
  archives: /archives/ || archive
  #schedule: /schedule/ || calendar
  #sitemap: /sitemap.xml || sitemap
  #commonweal: /404/ || heartbeat

其中,home代表主页,categories代表分类页,about代表关于页面,archives代表归档页,commonweal代表404页面(page not found时候显示的页面)。

添加标签页面

前面通过修改next主题下的_config.yml文件中的menu选项,可以在主页面的菜单栏添加标签选项,但是此时点击标签,跳转的页面会显示page not found。

添加标签页面的具体方法是:
新建页面,输入如下命令:

cd Hexo
hexo new page tags

输入命令后,在Hexo/source下会新生成一个新的文件夹tags,在该文件夹下会有一个index.md文件。

设置页面类型,在上步新生成的Hexo/source/tags/index.md中添加type: “tags”,index.md文件内容如下:

---
title: tags
date: 2018-08-01 00:00:00
type: "tags"
---

设置具体文章的tags
当要为某一篇文章添加标签,只需在Hexo/source/_post目录下的具体文章的tags中添加标签即可,如:

---
title: 基于Hexo和Github搭建博客
date: 2018-08-01
tags: [npm, hexo, github]
categories: 搭建博客
---

本站添加为标签后的效果如下:

添加分类标签

步骤与添加标签页面类似,具体如下:

新建页面,输入如下命令:

cd Hexo
hexo new page categories

输入命令后,在Hexo/source下会新生成一个新的文件夹categories,在该文件夹下会有一个index.md文件。
设置页面类型

在上步新生成的Hexo/source/categories/index.md中添加type: “categories”,index.md文件内容如下:

---
title: categories
date: 2018-08-01 00:00:00
type: "categories"
---

设置具体文章的categories
当要为某一篇文章添加分类,只需在Hexo/source/_post目录下的具体文章的categories中添加分类即可,如:

---
title: 基于Hexo和Github搭建博客
date: 2016-11-09
tags: [npm, hexo, github]
categories: 搭建博客
---

本站添加为标签后的效果如下:

添加我的页面

步骤与添加标签页面类似,具体如下:

新建页面

cd Hexo
hexo new page about

输入命令后,在Hexo/source下会新生成一个新的文件夹about,在该文件夹下会有一个index.md文件。
修改about/index.md,本站点index.md如下

---
title: about
date: 2018-08-01 00:00:00
---
## 关于我
一只学AI的小菜鸟,欢迎分享知识。
From zdaiot
QQ:972392704
Email: [email protected]

效果如下:

语言设置

若想显示为中文,需要在Hexo根目录下的_config.yml 文件修改,而Next主题下的_config.yml 文件不需要想应的修改

language: zh-CN

菜单项文本修改是在对next主题下的language文件夹下的文件进行修改,若当前语言是简体中文,直接修改language/zh-CN.yml里的对应字段即可。
本站点显示主页,分类页,关于页面和归档页。

头像设置

打开头像

  • 打开themes/next下的_config.yml文件,搜索 Sidebar Avatar关键字,去掉url后面的#
# Sidebar Avatar
# Sidebar Avatar
avatar:
  # in theme directory(source/images): /images/avatar.gif
  # in site  directory(source/uploads): /uploads/avatar.gif
  # You can also use other linking images.
  url: http://example.com/avatar.png
  • 或者使用本地图片,在next/source/images/下放置头像文件avatar.gif,更改avatar
# Sidebar Avatar
avatar:
  # in theme directory(source/images): /images/avatar.gif
  # in site  directory(source/uploads): /uploads/avatar.gif
  # You can also use other linking images.
  url: /images/avatar.gif

设置头像边框为圆形框并旋转

打开\themes\next\source\css\_common\components\sidebar\sidebar-author.styl,在里面更改添加如下代码:

.site-author-image {
  display: block;
  margin: 0 auto;
  padding: $site-author-image-padding;
  max-width: $site-author-image-width;
  height: $site-author-image-height;
  border: $site-author-image-border-width solid $site-author-image-border-color;

  /* 头像圆形 */
  border-radius: 80px;
  -webkit-border-radius: 80px;
  -moz-border-radius: 80px;
  box-shadow: inset 0 -1px 0 #333sf;

  /* 设置循环动画 [animation: (play)动画名称 (2s)动画播放时长单位秒或微秒 (ase-out)动画播放的速度曲线为以低速结束 
    (1s)等待1秒然后开始动画 (1)动画播放次数(infinite为循环播放) ]*/


  /* 鼠标经过头像旋转360度 */
  -webkit-transition: -webkit-transform 1.0s ease-out;
  -moz-transition: -moz-transform 1.0s ease-out;
  transition: transform 1.0s ease-out;
}

img:hover {
  /* 鼠标经过停止头像旋转 
  -webkit-animation-play-state:paused;
  animation-play-state:paused;*/

  /* 鼠标经过头像旋转360度 */
  -webkit-transform: rotateZ(360deg);
  -moz-transform: rotateZ(360deg);
  transform: rotateZ(360deg);
}

/* Z 轴旋转动画 */
@-webkit-keyframes play {
  0% {
    -webkit-transform: rotateZ(0deg);
  }
  100% {
    -webkit-transform: rotateZ(-360deg);
  }
}
@-moz-keyframes play {
  0% {
    -moz-transform: rotateZ(0deg);
  }
  100% {
    -moz-transform: rotateZ(-360deg);
  }
}
@keyframes play {
  0% {
    transform: rotateZ(0deg);
  }
  100% {
    transform: rotateZ(-360deg);
  }
}

头像下方文字和作者设置

打开Hexo下的_config.yml文件

# Site
title: zdaiot
subtitle: QS的大西瓜
description: QS的大西瓜
keywords: QS的大西瓜
author: zdaiot
language: zh-CN
timezone:

新建404界面

  • 在站点根目录下,输入 hexo new page 404,默认在Hexo 站点/source/404/index.md
  • 打开新建的404界面,在顶部插入一行,写上permalink: /404,这表示指定该页固定链接为 http://"主页"/404.html
---
title: 404-找不到页面
date: 2016-05-21 18:53:59
comments: false
permalink: /404
---
404 Not Found
-------
**对不起,您所访问的页面不存在或者已删除** 你可以**[点击此处](http://www.zdaiot.com)**返回首页。 你也可以**点击此处**重新搜索结果。
![网站二维码](/images/website.png)
扫一扫,用手机访问本站
  • 如果你不想编辑属于自己的404界面,可以显示腾讯公益404界面,代码如下:



  
  
  
  
  


  
  
  


设置网站的图标Favicon

实现效果图

并且修改themes/next下的_config.yml文件中,代码如下:

# For example, you put your favicons into `hexo-site/source/images` directory.
# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo.
favicon:
  small: /images/favicon-16x16-next.png
  medium: /images/favicon-32x32-next.png
  apple_touch_icon: /images/apple-touch-icon-next.png
  safari_pinned_tab: /images/logo.svg
  #android_manifest: /images/manifest.json
  #ms_browserconfig: /images/browserconfig.xml

在EasyIcon中找一张图标,或者去别的网站下载或者制作,要求按照代码中的大小与格式。并将图标名称改为代码中的名字,然后把图标放在/themes/next/source/images

显示返回顶部按钮

设置侧边栏,显示返回顶部按钮,及百分比。若要显示在右下角,则b2t: false

# Back to top in sidebar (only for Pisces | Gemini).
b2t: true

# Scroll percent label in b2t button.
scrollpercent: true

开启订阅微信公众号

效果如下:

将微信公众号的图片放到next/source/uploads/文件夹中,若没有该文件夹,新建即可,并把图片重命名为wechat-qcode.jpg

在主题配置文件中,找到wechat_subscriber,设置为:

wechat_subscriber:
  enabled: true
  qcode: /uploads/wechat-qcode.jpg
  description: 欢迎您扫一扫上面的微信公众号,订阅我的博客!

添加顶部加载条

打开themes/next下的_config.yml,搜索关键字pace,设置为true,可以更换加载样式

# Progress bar in the top during page loading.
pace: true
# Themes list:
#pace-theme-big-counter
#pace-theme-bounce
#pace-theme-barber-shop
#pace-theme-center-atom
#pace-theme-center-circle
#pace-theme-center-radar
#pace-theme-center-simple
#pace-theme-corner-indicator
#pace-theme-fill-left
#pace-theme-flash
#pace-theme-loading-bar
#pace-theme-mac-osx
#pace-theme-minimal
# For example
# pace_theme: pace-theme-center-simple
pace_theme: pace-theme-flash #替换更换样式

然后,将 https://github.com/iissnan/hexo-theme-next/tree/master/source/lib/pace 中的所有文件放到hexo\themes\next\source\lib\pace文件夹中

修改文章底部的那个带#号的标签

实现效果图

修改模板/themes/next/layout/_macro/post.swig,搜索 rel="tag">#,将 # 换成

修改文章内文本连接样式

打开 themes/next/source/css/_custom/下的custom.styl,添加代码

// 文章内链接文本样式
.post-body p a{
  color: #0593d3;
  border-bottom: none;
  border-bottom: 1px solid #0593d3;
  &:hover {
    color: #fc6423;
    border-bottom: none;
    border-bottom: 1px solid #fc6423;
  }
}

主页文章添加阴影效果

打开\themes\next\source\css\_custom\custom.styl,向里面加入:

 // Custom styles.
// 主页文章添加阴影效果
 .post {
   margin-top: 60px;
   margin-bottom: 60px;
   padding: 25px;
   -webkit-box-shadow: 0 0 5px rgba(202, 203, 203, .5);
   -moz-box-shadow: 0 0 5px rgba(202, 203, 204, .5);
  }

文章顶部显示更新时间

打开主题配置文件_config.yml,搜索关键字updated_at设置为true

# Post meta display settings
post_meta:
  item_text: true
  created_at: true
  updated_at:
    enabled: true
    # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created).
    # And if post will edited in same day as created, edited time will show in popup title under created time label.
    # If false show anyway, but if post edited in same day, show only edited time.
    another_day: true
  categories: true

编辑文章,增加关键字updated

---
title: https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/
date: 2018-07-29 21:12:14
updated: 2017-7-30 18:18:54 #手动添加更新时间
tags:
copyright: true
---

侧边栏设置

设置侧边栏社交链接

  • 打开themes/next下的_config.yml文件,搜索关键字social,然后添加社交站点名称与地址即可。
# Social links
social:
  GitHub: https://github.com/your-user-name
  Twitter: https://twitter.com/your-user-name
  Weibo: https://weibo.com/your-user-name
  douban: https://douban.com/people/your-user-name
  zhihu: https://www.zhihu.com/people/your-user-name
  # 等等

设置侧边栏社交图标

  • 打开themes/next下的_config.yml文件,搜索关键字social_icons,添加社交站点名称(注意大小写)图标,Font Awesome图标地址,注意知乎没有对应的图标,可以直接更改为别的图标
social_icons:
  enable: true
  # Icon Mappings.
  # KeyMapsToSocalItemKey: NameOfTheIconFromFontAwesome
  GitHub: github
  Twitter: twitter
  Weibo: weibo
  Linkedin: linkedin

上述设置侧边栏社交链接与社交图标还可以直接更改Social links,不需要更改social_icons,例如:

social:
  GitHub: https://github.com/zdaiot || github
  E-Mail: mailto:[email protected] || envelope
  知乎: https://www.zhihu.com/people/zdaiot || book
  CSDN: https://blog.csdn.net/zdaiot || copyright

RSS

  • 在你Hexo 站点目录下
npm install hexo-generator-feed --save
  • 打开Hexo 站点下的_config.yml,在Extensions中添加如下配置
# Extensions
plugin: hexo-generator-feed
# feed
# Dependencies: https://github.com/hexojs/hexo-generator-feed
feed:
  type: atom
  path: atom.xml
  limit: 20
  hub:
  content::
  • 在主题配置文件themes/next/_config.yml文件中,搜索rss,更改为:
rss: /atom.xml

点击rss后,出现:

友情链接

  • 打开themes/next下的_config.yml文件,搜索关键字Blog rolls
# Blog rolls
links_title: 友情链接 #标题
links_layout: block #布局,一行一个连接
#links_layout: inline
links: #连接
  baidu: http://example.com/
  google: http://example.com/

添加百度分享

因为next\layout_partials\share\baidushare.swig文件中代码显示:

{% if theme.baidushare.type === "button" %}
...
...
{% elseif theme.baidushare.type === "slide" %}
...

在配置百度分享功能时需指定其type,所以将主题配置_config.yml文件中关于baidushare部分的内容改为(其中type亦可以选择button):

baidushare:
  type: slide
  baidushare: true

_config.yml中提示:Warning: Baidu Share does not support https.
因为百度分享不支持在https上使用,所以一种解决方法便是,直接放文件到我们自己的目录下面。

访问链接: static文件夹
下载压缩包到本地,解压后,将static文件夹保存至themes\next\source目录下。
修改文件:themes\next\layout\_partials\share\baidushare.swig
将文件 末尾 部分的代码进行修改:

.src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];

改为:

.src='/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];

添加AddThis分享

我选择的是AddThis作为博客的第三方分享。AdThis是国外的第三方分享,使用方便,可以用google直接登录。能自定义分享样式

注册AddThis,选择分享按钮:

选择显示样式(Select a Tool Type),AddThis提供了7种显示样式,你可以更加左边菜单栏点击,右边会自动显示你选择的相应样式。值得注意的是。在其右上角可以切换PCPhone显示

点击Continue配置分享按钮,注意:不同的风格样式,配置方式不同

配置完成后 , 获取代码ID , 在js代码中获取pubid后面的ID

编辑主题配置文件themes/next/_config.yml, 找到关键字add_this_id, 添加pubid

设置文章代码主题

Next主题总共支持5种主题,默认主题是白色的normal。通过修改next主题下的_config.yml的highlight字段,来设置代码主题。
本站点使用的是normal主题。即令highlight为normal。

渲染 MathJax 数学公式

Hexo 默认使用 hexo-renderer-marked 引擎渲染网页,该引擎会把一些特殊的 markdown 符号转换为相应的 html 标签,比如在 markdown 语法中,下划线_代表斜体,会被渲染引擎处理为标签。

因为类 Latex 格式书写的数学公式下划线_表示下标,有特殊的含义,如果被强制转换为标签,那么 MathJax 引擎在渲染数学公式的时候就会出错。

类似的语义冲突的符号还包括*, {, }, \\等。

解决方法

首先开启next主题对MathJax的支持,找到next\ _config.yml文件,把 math 默认的 false 修改为true

# Math Equations Render Support
math:
enable: true

# Default(true) will load mathjax/katex script on demand
# That is it only render those page who has 'mathjax: true' in Front Matter.
# If you set it to false, it will load mathjax/katex srcipt EVERY PAGE.
per_page: true

在需要MathJax渲染的文章前面添加

mathjax: true

也可以直接在/scaffolds/post.md文件中添加:

---
title: {{ title }}
date: {{ date }}
tags:
categories:
copyright:
mathjax:
---

这样每次hexo new "你的内容"之后,生成的md文件会自动把mathjax:加到里面

更换 Hexo 的 markdown 渲染引擎,hexo-renderer-kramed 引擎是在默认的渲染引擎 hexo-renderer-marked 的基础上修改了一些 bug ,两者比较接近,也比较轻量级。

npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

执行上面的命令即可,先卸载原来的渲染引擎,再安装新的。
然后,跟换引擎后行间公式可以正确渲染了,但是这样还没有完全解决问题,行内公式的渲染还是有问题,因为 hexo-renderer-kramed 引擎也有语义冲突的问题。接下来到博客根目录下,找到node_modules\kramed\lib\rules\inline.js,把第11行的 escape 变量的值做相应的修改:

  //escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
  escape: /^\\([`*\[\]()#$+\-.!_>])/,

这一步是在原基础上取消了对,{,}的转义(escape)。
同时把第20行的em变量也要做相应的修改。

  //em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
  em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

重新启动hexo(先clean再generate),问题完美解决。哦,如果不幸还没解决的话,看看是不是还需要在使用的主题中配置mathjax开关。

首页显示文章标题,而非全文

进入hexo博客项目的themes/next/_config.yml文件,搜索"auto_excerpt",找到如下部分:

# Automatically Excerpt. Not recommand.
# Please use  in the post to control excerpt accurately.
auto_excerpt:
  enable: false
  length: 150

把enable改为对应的false改为true,然后

hexo d -g

再进主页,问题就解决了!

在右上角或者左上角实现fork me on github

实现效果图:

点击这里 或者 这里挑选自己喜欢的样式,并复制代码。 例如,我是复制如下代码:


然后粘贴刚才复制的代码到themes/next/layout/_layout.swig文件中(放在

的下面),并把href改为你的github地址

在网站底部加上访问量与字数统计

方法一

实现效果图

打开\themes\next\layout\_partials\footer.swig文件,在copyright前加上这句话:


然后在下面添加显示统计的代码

本站访客数:

在这里有两中不同计算方式的统计代码:

  1. pv的方式,单个用户连续点击n篇文章,记录n次访问量

    本站总访问量
  1. uv的方式,单个用户连续点击n篇文章,只记录1次访客数

  本站总访问量

添加之后再执行hexo d -g,然后再刷新页面就能看到效果

方法二

以上方法无法统计字数,采用如下方法,打开\themes\next\layout\_partials\footer.swig文件,在copyright前加上:



访问用户:
访问次数: 博客全站共: {{ totalcount(site) }}

添加之后再执行hexo d -g,然后再刷新页面就能看到效果

实现统计功能

实现效果图

在根目录下安装 hexo-symbols-count-time,运行:

npm install hexo-symbols-count-time --save

然后在主题的配置文件next/_config.yml中,配置如下:

# Post wordcount display settings
# Dependencies: https://github.com/theme-next/hexo-symbols-count-time
symbols_count_time:
  separated_meta: true
  item_text_post: true
  item_text_total: false
  awl: 4
  wpm: 275

最后在,hexo/_config.yml中,添加:

symbols_count_time:
  symbols: true
  time: true
  total_symbols: true
  total_time: true

隐藏网页底部powered By Hexo / 强力驱动

打开themes/next/layout/_partials/footer.swig,使用隐藏之间的代码即可,或者直接删除。位置如图:

在底部添加网站运行时间

打开themes/next/layout/_partials/footer.swig,在最下面添加代码


载入天数...载入时分秒...

在文章底部增加版权信息

实现效果图

在目录 next/layout/_macro/下添加 my-copyright.swig

{% if page.copyright %}

本文标题:{{ page.title }}

文章作者:{{ theme.author }}

发布时间:{{ page.date.format("YYYY年MM月DD日 - HH:MM") }}

最后更新:{{ page.updated.format("YYYY年MM月DD日 - HH:MM") }}

原始链接:{{ page.permalink }}

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

{% endif %}

在目录next/source/css/_common/components/post/下添加my-post-copyright.styl

.my_post_copyright {
  width: 85%;
  max-width: 45em;
  margin: 2.8em auto 0;
  padding: 0.5em 1.0em;
  border: 1px solid #d3d3d3;
  font-size: 0.93rem;
  line-height: 1.6em;
  word-break: break-all;
  background: rgba(255,255,255,0.4);
}
.my_post_copyright p{margin:0;}
.my_post_copyright span {
  display: inline-block;
  width: 5.2em;
  color: #b5b5b5;
  font-weight: bold;
}
.my_post_copyright .raw {
  margin-left: 1em;
  width: 5em;
}
.my_post_copyright a {
  color: #808080;
  border-bottom:0;
}
.my_post_copyright a:hover {
  color: #a3d2a3;
  text-decoration: underline;
}
.my_post_copyright:hover .fa-clipboard {
  color: #000;
}
.my_post_copyright .post-url:hover {
  font-weight: normal;
}
.my_post_copyright .copy-path {
  margin-left: 1em;
  width: 1em;
  +mobile(){display:none;}
}
.my_post_copyright .copy-path:hover {
  color: #808080;
  cursor: pointer;
}

修改next/layout/_macro/post.swig,在代码

{% if theme.wechat_subscriber.enabled and not is_index %}
  
{% include 'wechat-subscriber.swig' %}
{% endif %}

加入代码

{% if not is_index %} {% include 'my-copyright.swig' %} {% endif %}

如图所示:

修改next/source/css/_common/components/post/post.styl文件,在最后一行增加代码:

@import "my-post-copyright"

保存重新生成即可。

如果要在该博文下面增加版权信息的显示,需要在 Markdown 中增加copyright: true的设置,类似:

---
title: https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/
date: 2018-07-29 21:12:14
tags:
copyright: true
---

小技巧:如果你觉得每次都要输入copyright: true很麻烦的话,那么在/scaffolds/post.md文件中添加:

---
title: {{ title }}
date: {{ date }}
tags:
categories:
copyright:
---

这样每次hexo new "你的内容"之后,生成的md文件会自动把copyright:加到里面去,同理也会把categories:加进入
(注意:如果解析出来之后,你的原始链接有问题:如:http://yoursite.com/2018/07/29/https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2//,那么在根目录下_config.yml中写成类似这样:)

就行了。

文章加密访问

Next V6.0之前

实现效果图

打开themes/next/layout/_partials/head.swig文件,在以下位置插入这样一段代码:


然后在文章上写成类似这样:

Next V6.0之后

点击这里查看详情

在 hexo 根目录的 package.json 中添加
"hexo-blog-encrypt": "1.1.*"依赖。

执行下面命令,该插件会自动安装:

npm install

首先在 _config.yml 中启用该插件:

# Security
##
encrypt:
    enable: true

然后在你的文章的头部添加上对应的字段,如 password, abstract, message

---
title: hello world
date: 2016-03-30 21:18:02
tags:
    - fdsafsdaf
password: Mike
abstract: Welcome to my blog, enter password to read.
message: Welcome to my blog, enter password to read.
---
  • password: 是该博客加密使用的密码
  • abstract: 是该博客的摘要,会显示在博客的列表页
  • message: 这个是博客查看时,密码输入框上面的描述性文字

如果你想对 TOC 也进行加密。如果你有一篇文章使用了 TOC,你需要修改模板的部分代码。这里用 landscape 作为例子:

  • 你可以在 _hexo/themes/landscape/layout/partial/article.ejs 找到 article.ejs。
  • 然后找到 <% post.content %> 这段代码,通常在30行左右。
  • 使用如下的代码来替代它:
    <% if(post.toc == true){ %>
        
style="display:none" <% } %>> Index <% if (post.encrypt == true) { %> <%- toc(post.origin) %> <% } else { %> <%- toc(post.content) %> <% } %>
<% } %> <%- post.content %>

添加gitalk评论系统

gitalk:一个基于 Github Issue 和 Preact 开发的评论插件
详情Demo可见:https://gitalk.github.io/
在GitHub上注册新应用,链接:https://github.com/settings/applications/new

参数说明:
Application name: # 应用名称,随意
Homepage URL: # 网站URL,如http://www.zdaiot.com
Application description # 描述,随意
Authorization callback URL:# 网站URL,http://www.zdaiot.com

点击注册后,页面跳转如下,其中Client IDClient Secret在后面的配置中需要用到,到时复制粘贴即可:

新建/layout/_third-party/comments/gitalk.swig文件,并添加内容:

{% if page.comments && theme.gitalk.enable %}
  
  
   
{% endif %}

修改/layout/_partials/comments.swig,添加内容如下,与前面的elseif同一级别上:

{% elseif theme.gitalk.enable %}
  

具体位置如下图所示:

修改layout/_third-party/comments/index.swig,在最后一行添加内容:

{% include 'gitalk.swig' %}

新建/source/css/_common/components/third-party/gitalk.styl文件,添加内容:

.gt-header a, .gt-comments a, .gt-popup a
  border-bottom: none;
.gt-container .gt-popup .gt-action.is--active:before
  top: 0.7em;

修改/source/css/_common/components/third-party/third-party.styl,在最后一行上添加内容,引入样式:

@import "gitalk";

在主题配置文件next/_config.yml中添加如下内容:

gitalk:
  enable: true
  ClientID: 4800250e682fe873198b
  ClientSecret: 80f7f33f5f8ddfd3944f455cabadda4ff3299147
  repo: zdaiot.github.io   # 例:zdaiot.github.io
  adminUser: zdaiot #指定可初始化评论账户
  githubID: zdaiot
  distractionFreeMode: true

同步到github后,打开具体某一篇文章,如下图所示,提示,联系@zdaiot初始化创建。如下下面设置均未出错,等待即可,大约几天后,就会出现评论框~~~~

则可在主题配置文件next/_config.yml中改为添加如下内容:

gitalk:
  enable: true
  ClientID: 4800250e682fe873198b
  ClientSecret: 80f7f33f5f8ddfd3944f455cabadda4ff3299147
  repo: zdaiot.github.io   # 例:zdaiot.github.io
  adminUser: zdaiot #指定可初始化评论账户
  githubID: zdaiot
  distractionFreeMode: true

此时,若出现,Error:Not Found,可试试连接手机热点,更换IP地址。

以上就是NexT中添加gitalk评论的配置,博客上传到GitHub上后,打开页面进入某一博客内容下,就可看到评论处。

若想查看该github应用,点击网址https://github.com/settings/developers 如下图所示

为了解决label不能超过50而引起的Error: Validation Failed.问题,这里需要将 https://github.com/blueimp/JavaScript-MD5/blob/master/js/md5.min.js 中的内容保存在本地的Hexo\themes\next\source\js\src文件夹中,然后更改/layout/_third-party/comments/gitalk.swig

{% if page.comments && theme.gitalk.enable %}
  
  
  
   
{% endif %}

接入网页在线联系功能

首先在DaoVoice注册个账号,我的邀请码是0f81ff2f

完成后,会得到一个app_id,后面会用到:

修改/themes/next/layout/_partials/head/head.swig文件,添加内容如下:

{% if theme.daovoice %}
  
{% endif %}

next/_config.yml文件中添加内容:

# Online contact
daovoice: true
daovoice_app_id:   # 这里填你刚才获得的 app_id

使用微信接受消息,如图,首先在DaoVoce控制台,点击对话->我

点击右上角的个人设置

点击绑定微信,这里我的已经绑定过了

设置->应用设置->聊天设置下拉可以找到自定义位置等

添加打赏功能

准备支付宝和微信二维码

  • 微信是在收付款->二维码收款->保存收款码
  • 支付宝是在收钱->保存图片

next/_config.yml中配置图片

reward_comment: 坚持原创技术分享,您的支持将鼓励我继续创作!
wechatpay: /images/wechat.png
alipay: /images/aipay.jpg

wechat.jpg、aipay.png图片放入themes/next/source/images中

修改next/source/css/_common/components/post/post-reward.styl,注释wechat:hoveralipay:hover

/* 注释文字闪动函数
#wechat:hover p{
    animation: roll 0.1s infinite linear;
    -webkit-animation: roll 0.1s infinite linear;
    -moz-animation: roll 0.1s infinite linear;
}
#alipay:hover p{
    animation: roll 0.1s infinite linear;
    -webkit-animation: roll 0.1s infinite linear;
    -moz-animation: roll 0.1s infinite linear;
}
*/

对于next 6.0.0以上版本,更改为如下:

#rewardButton {
    cursor: pointer;
    border: 0;
    outline: 0;
    border-radius: 5px;
    padding: 0;
    margin: 0;
    letter-spacing: normal;
    text-transform: none;
    text-indent: 0px;
    text-shadow: none;
}
#rewardButton span {
    display: inline-block;
    width: 80px;
    height: 35px;
    border-radius: 5px;
    color: #fff;
    font-weight: 400;
    font-style: normal;
    font-variant: normal;
    font-stretch: normal;
    font-size: 18px;
    font-family: "Microsoft Yahei";
    background: #F44336;
}
#rewardButton span:hover{
    background: #F7877F;
}
#QR{
    padding-top:20px;
}
#QR a{
    border:0;
}
#QR img{
    width: 180px;
    max-width: 100%;
    display: inline-block;
    margin: 0.8em 2em 0 2em;
}

/* 注释文字闪动函数
#wechat:hover p{
    animation: roll 0.1s infinite linear;
    -webkit-animation: roll 0.1s infinite linear;
    -moz-animation: roll 0.1s infinite linear;
}
#alipay:hover p{
    animation: roll 0.1s infinite linear;
    -webkit-animation: roll 0.1s infinite linear;
    -moz-animation: roll 0.1s infinite linear;
}
*/

#bitcoin:hover p {
    animation: roll 0.1s infinite linear;
    -webkit-animation: roll 0.1s infinite linear;
    -moz-animation: roll 0.1s infinite linear;
}
@keyframes roll {
    from {
      transform(rotateZ(30deg));
    }
    to {
      transform(rotateZ(-30deg));
    }
}

效果如图:

资源文件夹

有两种方法,第一种是不用插件的情况,第二种是使用一种hexo的插件。

无论哪种方法都有一个共同的前提:修改hexo/_config.yml配置文件post_asset_folder项为true

创建博客是使用命令创建:

hexo new [layout] 

</code></pre> 
  <p>其中的layout项可以省略,例如:</p> 
  <pre><code>hexo new "这是一个新的博客"

</code></pre> 
  <p>使用完命令之后,在<code>source/_post</code>文件夹里面就会出现一个“这是一个新的博客.md”的文件和一个“这是一个新的博客”的文件夹。</p> 
  <p></p> 
  <p>下一步就是把需要的图片放到新创建的那个<strong>文件夹</strong>里面去。</p> 
  <ul> 
   <li>引用图片的第一种方法</li> 
  </ul> 
  <pre><code>{% asset_img 这是一个新的博客的图片.jpg 这是一个新的博客的图片的说明 %}

</code></pre> 
  <p>用此种方法,而不是以前的<code>![]()</code>方法,前提是你的hexo的版本是hexo3以上,到package.json里面看一下吧。如果不是hexo3以上的版本,那就只能用第二种方法了。</p> 
  <p>将为知笔记的引用图片方式转为该方式代码为:</p> 
  <pre><code># -*- coding: UTF-8 -*-
import re

path = u'./https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/.md'

with open(path, 'r', encoding='UTF-8') as f:
    content = f.readlines()
f.close()

for index, x in enumerate(content):
    match_result = re.match(r'!\[(.*)\]\((.*)\)', x)
    if match_result:
        pic_path = match_result.group(2)
        pic_name = pic_path.split('/')[1]

        if match_result.group(1):
            new_pic_path = '{' + '% asset_img {} {} %'.format(pic_name, match_result.group(1)) + '}' + '\n'
        else:
            new_pic_path = '{' + '% asset_img {} %'.format(pic_name) + '}' + '\n'

        print(new_pic_path)
        content[index] = new_pic_path

fp = open(path, 'w', encoding='UTF-8')
for x in content:
    fp.write(x)
fp.close()
</code></pre> 
  <ul> 
   <li>下面是第二种方法,hexo插件的方法</li> 
  </ul> 
  <p>这是插件的链接</p> 
  <p>安装</p> 
  <pre><code>npm install hexo-asset-image --save
</code></pre> 
  <p>之后就可以按照正常的方法使用的,例如</p> 
  <pre><code>![](https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2//1.png)
</code></pre> 
  <p>将为知笔记的引用图片方式转为该方式代码为</p> 
  <pre><code class="language-python"><code class="prism  language-python"><span class="token comment"># -*- coding: UTF-8 -*-</span>
<span class="token keyword">import</span> re

path <span class="token operator">=</span> u<span class="token string">'https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/.md'</span>
path_ <span class="token operator">=</span> path<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">3</span><span class="token punctuation">]</span>

<span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>path<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
    content <span class="token operator">=</span> f<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span>
f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>

<span class="token keyword">for</span> index<span class="token punctuation">,</span> x <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>content<span class="token punctuation">)</span><span class="token punctuation">:</span>
    match_result <span class="token operator">=</span> re<span class="token punctuation">.</span>match<span class="token punctuation">(</span>r<span class="token string">'!\[(.*)\]\((.*)\)'</span><span class="token punctuation">,</span> x<span class="token punctuation">)</span>
    <span class="token keyword">if</span> match_result<span class="token punctuation">:</span>
        pic_path <span class="token operator">=</span> match_result<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
        pic_name <span class="token operator">=</span> pic_path<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'/'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>

        <span class="token keyword">if</span> match_result<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
            new_pic_path <span class="token operator">=</span> <span class="token string">'!['</span> <span class="token operator">+</span> <span class="token string">'{}'</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>match_result<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">']'</span> <span class="token operator">+</span> <span class="token string">'({}'</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>path_<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'/{})'</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>pic_name<span class="token punctuation">)</span> <span class="token operator">+</span><span class="token string">'\n'</span>
        <span class="token keyword">else</span><span class="token punctuation">:</span>
            new_pic_path <span class="token operator">=</span> <span class="token string">'![]'</span> <span class="token operator">+</span> <span class="token string">'({}'</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>path_<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'/{})'</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>pic_name<span class="token punctuation">)</span> <span class="token operator">+</span><span class="token string">'\n'</span>

        <span class="token keyword">print</span><span class="token punctuation">(</span>new_pic_path<span class="token punctuation">)</span>
        content<span class="token punctuation">[</span>index<span class="token punctuation">]</span> <span class="token operator">=</span> new_pic_path

fp <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span>path<span class="token punctuation">,</span> <span class="token string">'w'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span>
<span class="token keyword">for</span> x <span class="token keyword">in</span> content<span class="token punctuation">:</span>
    fp<span class="token punctuation">.</span>write<span class="token punctuation">(</span>x<span class="token punctuation">)</span>
fp<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></code></pre> 
  <blockquote> 
   <p>需要注意的是,这两种方法不能同时使用,否则的话路径会重复。解决方法为删除<code>hexo-asset-image</code>文件夹</p> 
  </blockquote> 
  <h3><strong>加入站点内容搜索功能</strong></h3> 
  <p>本站点使用的是Local Search。加入站点内容搜索功能步骤如下:</p> 
  <p>安装hexo-generator-searchdb</p> 
  <pre><code>npm install hexo-generator-searchdb --save
</code></pre> 
  <p>注意:安装时应在站点根目录下,即Hexo目录下<br> 添加search字段,在站点<code>Hexo/_config.yml</code>中<code>Extensions</code>下面添加search字段,如下:</p> 
  <pre><code>search:
  path: search.xml
  field: post
  format: html
  limit: 10000
</code></pre> 
  <p>打开主题配置文件<code>next/_config.yml</code>找到<code>Local search</code>,将enable设置为true</p> 
  <p>效果如下:</p> 
  <p></p> 
  <h3><strong>手机端site-subtitle显示优化</strong></h3> 
  <p>手机端默认显示副标题,个人觉得不太美观,现修改为:默认不显示副标题,显示导航栏的同时显示副标题。效果如图:</p> 
  <p></p> 
  <p>原理:编写JavaScript函数,根据导航栏的<code>display</code>属性来决定是否显示副标题,实现方法如下:</p> 
  <p><strong>给导航栏添加id并隐藏site-subtitle</strong></p> 
  <p>在<code>themes\next\layout\_partials\header\menu.swig</code>中找到<code><nav class="site-nav"></code>,为其添加id。大概在第3行,将其修改为:</p> 
  <pre><code><nav class="site-nav" id="site-nav">
</code></pre> 
  <p>在<code>themes\next\layout\_partials\header\brand.swig</code>找到<code>site-subtitle</code>,为其加上id,大概在第21行,修改为:</p> 
  <pre><code>    {% if subtitle %}
      {% if theme.seo %}
        <h1 class="site-subtitle" itemprop="description" id="site-subtitle">{{ subtitle }}</h1>
      {% else %}
        <p class="site-subtitle" id="site-subtitle">{{ subtitle }}</p>
      {% endif %}
    {% endif %}
</code></pre> 
  <p>设置手机端默认不显示网站副标题。在<code>themes\next\source\css\_common\components\header\site-meta.styl</code>中添加如下样式:</p> 
  <pre><code>.site-subtitle{
+mobile() {
    display: none;
  }
}
</code></pre> 
  <p><strong>编写JavaScript函数</strong></p> 
  <pre><code></script>
<script type="text/JavaScript">
function showSubtitle()
{
  var siteNav=document.getElementById("site-nav");
  if(siteNav.style.display=="block")
  {
   var subTitle=document.getElementById("site-subtitle");
   subTitle.style.display="none";
  }else
  {
   var subTitle=document.getElementById("site-subtitle");
   subTitle.style.display="block";
  }
}
</script>
</code></pre> 
  <p>将其放到任意一个<code>*.swig</code>文件中,在<code>_layout.swig</code>中引入即可。我的处理方法是,在<code>themes\next\layout\_scripts\</code>文件夹中新建<code>myscript</code>文件夹,专门用于存放自己添加的JavaScript代码。在里面创建一个<code>myscript.swig</code>文件,将上述代码copy到里面,再在<code>themes\next\layout\_layout.swig</code>中添加如下代码引入:</p> 
  <pre><code>{%  include  '_scripts/myscript/myscript.swig'  %}
</code></pre> 
  <p><strong>点击网站标题旁边的按钮时触发JavaScript函数</strong></p> 
  <p>在<code>themes\next\layout\_partials\header\brand.swig</code>中给<code><button></button></code>添加 onclick 事件,最终代码如下:</p> 
  <pre><code>  <div class="site-nav-toggle">
    <button aria-label="{{ __('accessibility.nav_toggle') }}" onclick="showSubtitle()">
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</code></pre> 
  <h3><strong>博文置顶</strong></h3> 
  <p>打开<code>Hexo 站点</code>下<code>node_modules/hexo-generator-index/lib/generator.js</code>文件。代码全部替换为:</p> 
  <pre><code>'use strict';
var pagination = require('hexo-pagination');
module.exports = function(locals){
  var config = this.config;
  var posts = locals.posts;
    posts.data = posts.data.sort(function(a, b) {
        if(a.top && b.top) { // 两篇文章top都有定义
            if(a.top == b.top) return b.date - a.date; // 若top值一样则按照文章日期降序排
            else return b.top - a.top; // 否则按照top值降序排
        }
        else if(a.top && !b.top) { // 以下是只有一篇文章top有定义,那么将有top的排在前面(这里用异或操作居然不行233)
            return -1;
        }
        else if(!a.top && b.top) {
            return 1;
        }
        else return b.date - a.date; // 都没定义按照文章日期降序排
    });
  var paginationDir = config.pagination_dir || 'page';
  return pagination('', posts, {
    perPage: config.index_generator.per_page,
    layout: ['index', 'archive'],
    format: paginationDir + '/%d/',
    data: {
      __index: true
    }
  });
};
</code></pre> 
  <p>打开文章添加<code>top</code>字段,设置数值,数值越大文章越靠前</p> 
  <pre><code>---
title: https://www.zdaiot.com/%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/Windows%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E5%8D%9A%E5%AE%A2/
date: 2018-07-29 21:12:14
updated: 2017-7-30 18:18:54 #手动添加更新时间
tags:
copyright: true
top: 100
---
</code></pre> 
  <h3><strong>每篇文章末尾统一添加“本文结束”标记</strong></h3> 
  <p>在路径<code>/themes/next/layout/_macro</code>中新建 <code>passage-end-tag.swig</code> 文件,并添加以下内容:</p> 
  <pre><code><div>
    {% if not is_index %}
        <div style="text-align:center;color: #ccc;font-size:14px;">------ 本文结束------</div>
    {% endif %}
</div>
</code></pre> 
  <p>打开<code>themes/next/layout/_macro/</code>下的<code>post.swig</code>文件,添加:</p> 
  <pre><code><div>
  {% if not is_index %}
  {% include 'passage-end-tag.swig' %}
  {% endif %}
</div>
</code></pre> 
  <p>如图所示,如图所示,注意顺序后影响文中末尾图中项出现的次序:</p> 
  <p></p> 
  <p>然后打开<code>themes/next</code>下的<code>_config.yml</code>文件,在末尾添加:</p> 
  <pre><code># 文章末尾添加“本文结束”标记
passage_end_tag:
enabled: true
</code></pre> 
  <h3><strong>修改访问URL路径</strong></h3> 
  <ul> 
   <li>默认情况下访问URL路径为:<code>domain/2017/08/18/关于本站</code>,修改为<code>domain/About/关于本站</code></li> 
   <li>编辑<code>Hexo 站点</code>下的<code>_config.yml</code>文件,修改其中的<code>permalink</code>字段</li> 
  </ul> 
  <pre><code>permalink: :category/:title/
</code></pre> 
  <h3><strong>给代码块添加复制功能(暂未成功)</strong></h3> 
  <ul> 
   <li>下载插件clipboard.js</li> 
   <li>打开<code>themes/next/source/lib/</code>,新建文件夹<code>clipboard</code></li> 
   <li>把下载<code>clipboard.js</code>下的<code>src</code>文件夹下的文件拖动到<code>clipboard</code>文件夹下</li> 
   <li>打开<code>themes/next/source/js/src/</code>,新建文件<code>custom.js</code>,代码如下:</li> 
  </ul> 
  <pre><code>//此函数用于创建复制按钮
function createCopyBtns() {
    var $codeArea = $("figure table");
    //查看页面是否具有代码区域,没有代码块则不创建 复制按钮
    if ($codeArea.length > 0) {
        //复制成功后将要干的事情
        function changeToSuccess(item) {
             $imgOK = $("#copyBtn").find("#imgSuccess");
                if ($imgOK.css("display") == "none") {
                    $imgOK.css({
                        opacity: 0,
                        display: "block"
                    });
                    $imgOK.animate({
                        opacity: 1
                    }, 1000);
                    setTimeout(function() {
                        $imgOK.animate({
                            opacity: 0
                        }, 2000);
                    }, 2000);
                    setTimeout(function() {
                        $imgOK.css("display", "none");
                    }, 4000);
                };
        };
        //创建 全局复制按钮,仅有一组。包含:复制按钮,复制成功响应按钮
        //值得注意的是:1.按钮默认隐藏,2.位置使用绝对位置 position: absolute; (position: fixed 也可以,需要修改代码)
        $(".post-body").before('<div id="copyBtn" style="opacity: 0; position: absolute;top:0px;display: none;line-height: 1; font-size:1.5em"><span id="imgCopy" ><i class="fa fa-paste fa-fw"></i></span><span id="imgSuccess" style="display: none;"><i class="fa fa-check-circle fa-fw" aria-hidden="true"></i></span>');
        //创建 复制 插件,绑定单机时间到 指定元素,支持JQuery
        var clipboard = new Clipboard('#copyBtn', {
            target: function() {
                //返回需要复制的元素内容
                return document.querySelector("[copyFlag]");
            },
            isSupported: function() {
                //支持复制内容
                return document.querySelector("[copyFlag]");
            }
        });
        //复制成功事件绑定
        clipboard.on('success',
            function(e) {
                //清除内容被选择状态
                e.clearSelection();
                changeToSuccess(e);
            });
        //复制失败绑定事件
        clipboard.on('error',
            function(e) {
                console.error('Action:', e.action);
                console.error('Trigger:', e.trigger);
            });
        //鼠标 在复制按钮上滑动和离开后渐变显示/隐藏效果
        $("#copyBtn").hover(
            function() {
                $(this).stop();
                $(this).css("opacity", 1);
            },
            function() {
                $(this).animate({
                    opacity: 0
                }, 2000);
            }
        );
    }
}
//感应鼠标是否在代码区
$("figure").hover(
    function() {
        //-------鼠标活动在代码块内
        //移除之前含有复制标志代码块的 copyFlag
        $("[copyFlag]").removeAttr("copyFlag");
        //在新的(当前鼠标所在代码区)代码块插入标志:copyFlag
        $(this).find(".code").attr("copyFlag", 1);
        //获取复制按钮
        $copyBtn = $("#copyBtn");
        if ($copyBtn.lenght != 0) {
            //获取到按钮的前提下进行一下操作
            //停止按钮动画效果
            //设置为 显示状态
            //修改 复制按钮 位置到 当前代码块开始部位
            //设置代码块 左侧位置
            $copyBtn.stop();
            $copyBtn.css("opacity", 0.8);
            $copyBtn.css("display", "block");
            $copyBtn.css("top", parseInt($copyBtn.css("top")) + $(this).offset().top - $copyBtn.offset().top + 3);
            $copyBtn.css("left", -$copyBtn.width() - 3);
        }
    },
    function() {
        //-------鼠标离开代码块
        //设置复制按钮可见度 2秒内到 0
        $("#copyBtn").animate({
            opacity: 0
        }, 2000);
    }
);
//页面载入完成后,创建复制按钮
$(document).ready(function() {
  createCopyBtns();
});
</code></pre> 
  <ul> 
   <li>打开<code>themes/next/layout/_custom/</code>,新建文件<code>custom.swig</code>,代码如下:</li> 
  </ul> 
  <pre><code><script type="text/javascript" src="/lib/clipboard/clipboard.min.js"></script>
<script type="text/javascript" src="/js/src/custom.js"></script>
</code></pre> 
  <ul> 
   <li>修改文件<code>themes/next/layout/_layout.swig</code>,在标签<code></body></code>上面插入代码:</li> 
  </ul> 
  <pre><code>{% include '_custom/custom.swig' %}
</code></pre> 
  <h3><strong>静态资源压缩</strong></h3> 
  <p>主要是压缩html,css,js等等静态资源,可以适当减少请求的数据量,在站点目录下,执行下面命令:</p> 
  <pre><code>npm install gulp -g
npm install gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp --save
</code></pre> 
  <p>在<code>Hexo 站点</code>下添加<code>gulpfile.js</code>文件,文件内容如下:</p> 
  <pre><code>var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
// 压缩 public 目录 css
gulp.task('minify-css', function() {
    return gulp.src('./public/**/*.css')
        .pipe(minifycss())
        .pipe(gulp.dest('./public'));
});
// 压缩 public 目录 html
gulp.task('minify-html', function() {
  return gulp.src('./public/**/*.html')
    .pipe(htmlclean())
    .pipe(htmlmin({
         removeComments: true,
         minifyJS: true,
         minifyCSS: true,
         minifyURLs: true,
    }))
    .pipe(gulp.dest('./public'))
});
// 压缩 public/js 目录 js
gulp.task('minify-js', function() {
    return gulp.src('./public/**/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('./public'));
});
// 执行 gulp 命令时执行的任务
gulp.task('default', [
    'minify-html','minify-css','minify-js'
]);
</code></pre> 
  <p>只需要每次在执行generate命令后执行gulp就可以实现对静态资源的压缩,压缩完成后执行deploy命令同步到服务器</p> 
  <pre><code>hexo g && gulp
hexo d
</code></pre> 
  <h3><strong>项目主页添加README</strong></h3> 
  <p>Github上博客的仓库主页空荡荡的,没有README。如果把README.md放入source文件夹,<code>hexo g</code>生成时会被解析成html文件,放到public文件夹,生成时又会自动删除。</p> 
  <p>解决方法很简单,在source目录下新建文件<code>README.mdown</code>,在里面写README即可。<code>hexo g</code>会把它复制到public文件夹,且不会被解析成html</p> 
  <h2><strong>引入第三方服务</strong></h2> 
  <p>不同于上面的服务的是,这些第三方服务适用于不同的主题</p> 
  <h3><strong>加入畅言评论功能</strong></h3> 
  <p>本站使用的是畅言:http://changyan.kuaizhan.com/<br> 注册设置完毕之后,进入畅言的后台,在后台总览中,可以找到appid,appkey,在<code>Hexo/_config.yml</code>中加入changyan字段:</p> 
  <pre><code>changyan:
  enable: true
  appid: cyttqOlcY
  appkey: e055f226ee07c801c76f47b3a44323c2
</code></pre> 
  <h3><strong>加入百度数据统计与分析功能</strong></h3> 
  <p>本站点使用的是百度统计 http://tongji.baidu.com/ 。加入数据统计与分析功能步骤如下:</p> 
  <p>注册站长账号并登陆,在这里 http://tongji.baidu.com/web/register 注册站长账号,并填写信息,网站域名和网站首页以下图为例来填写,注册完成后并登陆</p> 
  <p></p> 
  <p>在跳转的页面中会显示下图,复制hm.js后的id值<br> </p> 
  <p>添加baidu_analytics字段,在站点<code>Hexo/theme/next_config.yml</code>中添加baidu_analytics字段,值为上步复制的id值:</p> 
  <pre><code>baidu_analytics: 0b0b58037319da4959d5a3c014160ccd
</code></pre> 
  <p>至此,该功能已成功加入,大约过20min后在百度统计上可以看到站点的访问情况,如下图:<br> </p> 
  <h2><strong>博客百度站长平台自动链接提交</strong></h2> 
  <p>在百度搜索引擎搜索自己的域名查看是否收录 <code>site:zdaiot.com</code></p> 
  <p>百度的 SEO 是个很蛋疼的事情,讲道理的话应该说是比较麻烦的。</p> 
  <p>有时候百度的爬虫因为各种原因会爬不到我们的网站,所以需要我们主动进行链接提交。</p> 
  <p>百度提供了三种方法来让我们提交链接:</p> 
  <h3><strong>主动推送</strong></h3> 
  <blockquote> 
   <p>请注意, 本插件的配置文件中包含秘钥, 请您妥善管理好您的博客源码。<br> 您可以把源码<strong>保存在本地</strong>。<br> 如果要托管在git仓库里,请选择<strong>私有仓库</strong>,博主本人选择的是免费的gitlab</p> 
  </blockquote> 
  <blockquote> 
   <p>优点:<br> 某些主机,比如Github,禁止百度爬虫访问博客,导致博客无法被百度收录。多亏百度提供了主动提交的接口,这才有了个补救的方法。<br> 除此之外, 使用主动推送还会达到如下功效:</p> 
  </blockquote> 
  <ul> 
   <li>及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录</li> 
   <li>保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现</li> 
  </ul> 
  <p>首先注册百度站长工具,登录后,在<code>用户中心->站点管理</code>中添加个人信息,如下所示:</p> 
  <p></p> 
  <p>然后,在<code>用户中心->站点管理</code>添加网站</p> 
  <p></p> 
  <p>最后一步提示,按照图中的要求进行验证即可这里推荐使用CNAME验证</p> 
  <p></p> 
  <p></p> 
  <p>在<code>网站支持->数据引入->链接提交</code></p> 
  <p></p> 
  <p>往下拉,找到准入密匙,显示如下图:</p> 
  <p></p> 
  <p>首先,在Hexo根目录下,安装本插件:</p> 
  <pre><code>npm install hexo-baidu-url-submit --save
</code></pre> 
  <p>然后,同样在根目录下,把以下内容配置到`hexo/_config.yml’文件中:</p> 
  <pre><code>baidu_url_submit:
  count: 1 ## 提交最新的一个链接
  host: www.zdaiot.com ## 在百度站长平台中注册的域名
  token: your_token ## 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
  path: baidu_urls.txt ## 文本文档的地址, 新链接会保存在此文本文档里
</code></pre> 
  <p>其次,记得查看`hexo/_config.yml’文件中url的值, 必须包含是百度站长平台注册的域名(一般有www),比如:</p> 
  <pre><code># URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://www.zdaiot.com
root: /
permalink: :category/:title/
permalink_defaults:
</code></pre> 
  <p>更改deploy:</p> 
  <pre><code># Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
- type: git
  repository: git@github.com:zdaiot/zdaiot.github.io.git
  branch: master
- type: baidu_url_submitter
</code></pre> 
  <blockquote> 
   <p>YAML依靠缩进来确定元素间的从属关系。因此,请确保每个deployer的缩进长度相同,并且使用空格缩进。</p> 
  </blockquote> 
  <p>推送功能的实现,分为两部分:</p> 
  <ul> 
   <li>新链接的产生, <code>hexo generate</code> 会产生一个文本文件,里面包含最新的链接</li> 
   <li>新链接的提交, <code>hexo deploy</code> 会从上述文件中读取链接,提交至百度搜索引擎</li> 
  </ul> 
  <p>显示如下图所示的字样,即可代表推送成功<br> </p> 
  <h3><strong>自动推送</strong></h3> 
  <p>百度提供了一个 js 脚本,可以在有用户访问页面的时候自动把网址推送给 baidu。</p> 
  <p>脚本如下:</p> 
  <pre><code><pre id="clipboard_textarea"><script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>
</pre>
</code></pre> 
  <p>如果是netxt主题,next主题配置文件<code>next/_config.yml</code>中的baidu_push设置为true,就可以了。而其他的主题,我们只需要把这个脚本嵌入到我们的代码里面就可以了。</p> 
  <p>例如,笔者使用的是 hexo 的 next 主题,所以我在<code>themes/next/layout</code>里面找了一圈,发现最基本的 template 是<code>_layout.swig</code>,于是我把这段代码加在了这个文件的 body 部分的最后。这样就可以了,非常方便!</p> 
  <h3><strong>sitemap</strong></h3> 
  <p>sitemap 的话,我们直接使用插件,,前一个是传统的 sitemap,后一个是百度的 sitemap(如果你blog托管在GitHub,并且你不想在多花钱弄百度抓取,可以不用安装百度的sitemap)</p> 
  <pre><code>npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save
</code></pre> 
  <p>然后在<code>hexo/_config.yml</code>里面配置一下:</p> 
  <pre><code>sitemap:
  path: sitemap.xml
baidusitemap:
  path: baidusitemap.xml
</code></pre> 
  <ul> 
   <li> <p>之后去百度站长平台提交一下 sitemap 的路径就好,一般都是www.example.com/baidusitemap.xml</p> </li> 
   <li> <p>当仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用robots.txt文件。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件或者创建一个内容为空的robots.txt文件。添加蜘蛛协议在<code>hexo/source</code>文件夹下新建robots.txt文件,文件内容如下,<code>Allow</code>字段的值即为允许搜索引擎爬区的内容,<code>/</code>表示网站首页,<code>/categories/</code>为分类页面,如果菜单栏还有其他选项都可以按照格式自行添加。注意这些要跟自己网站目录一一对应:</p> </li> 
  </ul> 
  <pre><code>User-agent: *
Allow: /
Allow: /archives/
Allow: /tags/
Allow: /categories/

Disallow: /vendors/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
Disallow: /fancybox/

Sitemap: http://www.zdaiot.com/sitemap.xml
Sitemap: http://www.zdaiot.com/baidusitemap.xml
</code></pre> 
  <blockquote> 
   <p>注:当网站部署在github上时,robot.txt百度检查更新提示<code>百度暂时无法连接您的服务器,请检查服务器的设置,确保您网站的服务器能被正常访问。错误码:404</code></p> 
  </blockquote> 
  <h3>添加脚本</h3> 
  <p>上述各种方法,甚至包括什么迁移至gitlab等对我来说不管用,但是下面方法竟然让百度收录了,在此记录一下:</p> 
  <p>附上推送脚本,其中的url = XXXXXXXXXXXXXXXXXXXXXXXXX,需要打开http://zhanzhang.baidu.com/linksubmit/index 找到自己的推送接口填上去</p> 
  <pre><code>#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: LoveNight
# @Date:   2015-11-16 20:45:59
# @Last Modified by:   LoveNight
# @Last Modified time: 2015-11-19 15:28:50
import os,io
import sys
import json
from bs4 import BeautifulSoup as BS
import requests
import msvcrt

"""
hexo 博客专用,向百度站长平台提交所有网址

本脚本必须放在hexo博客的根目录下执行!需要已安装生成百度站点地图的插件。
百度站长平台提交链接:http://zhanzhang.baidu.com/linksubmit/index 从中找到自己的接口调用地址
主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。

"""


url = XXXXXXXXXXXXXXXXXXXXXXXXX
baidu_sitemap = os.path.join(sys.path[0], 'public', 'baidusitemap.xml')
google_sitemap = os.path.join(sys.path[0], 'public', 'sitemap.xml')
sitemap = [baidu_sitemap, google_sitemap]

assert (os.path.exists(baidu_sitemap) or os.path.exists(
    google_sitemap)), "没找到任何网站地图,请检查!"


# 从站点地图中读取网址列表
def getUrls():
    urls = []
    for _ in sitemap:
        if os.path.exists(_):
            with io.open(_, "r", encoding="utf-8") as f:
                xml = f.read()
            soup = BS(xml, "html.parser")
            tags = soup.find_all("loc")
            urls += [x.string for x in tags]
            if _ == baidu_sitemap:
                tags = soup.find_all("breadCrumb", url=True)
                urls += [x["url"] for x in tags]
    return urls


# POST提交网址列表
def postUrls(urls):
    urls = set(urls)  # 先去重
    print("一共提取出 %s 个网址" % len(urls))
    data = "\n".join(urls)
    return requests.post(url, data=data).text


if __name__ == '__main__':

    urls = getUrls()
    result = postUrls(urls)
    print("提交结果:")
    print(result)
    msvcrt.getch()
</code></pre> 
  <p>刚发现个问题,如果在百度站长平台使用「 文件验证 」,hexo d之前要手动把验证文件放到public目录下。</p> 
  <p>如果贪方便放在source文件夹下,执行hexo g 时会往里塞新内容导致验证失败。</p> 
  <h2><strong>将个人域名与 GitHub Pages 的空间绑定</strong></h2> 
  <ul> 
   <li>点击对应域名的"解析"</li> 
  </ul> 
  <p></p> 
  <ul> 
   <li>点击添加解析,记录类型选A或CNAME,A记录的记录值就是ip地址,github(官方文档)提供了两个IP地址,<code>192.30.252.153和192.30.252.154</code>,这两个IP地址为github的服务器地址,两个都要填上,解析记录设置两个www和@,线路就默认就行了,CNAME记录值填你的github博客网址。如我的是zdaiot.github.io。</li> 
  </ul> 
  <p></p> 
  <p>这些全部设置完成后,此时你并不能要申请的域名访问你的博客。接着你需要做的是在hexo根目录的source文件夹里创建<code>CNAME</code>文件,不带任何后缀,里面添加你的域名信息,如:www.zdaiot.com。</p> 
  <ul> 
   <li>如果你填写的是没有www的,比如 zdaiot.com,那么无论是访问 http://www.zdaiot.com 还是 http://zdaiot.com ,都会自动跳转到 http://zdaiot.com</li> 
   <li>如果你填写的是带www的,比如 www.zdaiot.com ,那么无论是访问 http://www.zdaiot.com 还是 http://zdaiot.com ,都会自动跳转到 http://www.zdaiot.come</li> 
   <li>如果你填写的是其它子域名,比如 abc.zdaiot.com,那么访问 http://abc.zdaiot.com 没问题,但是访问 http://zdaiot.com ,不会自动跳转到 http://abc.zdaiot.com</li> 
  </ul> 
  <p>搭建完成访问出现404 可能的原因是:</p> 
  <ol> 
   <li>绑定了个人域名,但是域名解析错误。</li> 
   <li>域名解析正确但你的域名是通过国内注册商注册的,你的域名因没有实名制而无法访问。</li> 
   <li>你认为配置没有问题,那么可能只是你的浏览器在捣鬼,可尝试清除浏览器缓存再访问或者换个浏览器访问。</li> 
   <li>也有可能是你的路由器缓存导致的错觉,所以也可以尝试换个局域网访问你的网站。</li> 
   <li>最有可能的原因是你下载的hexo有问题,导致所有的东西都上传到了github,而导致index页面在主域名的下一级目录。你可以尝试查看上传的内容,找到index页面,在域名后面添加下一级目录。若能访问index页面(此时样式可能是乱的),则证明是hexo安装有问题,笔者当时遇到的就是这个问题。可卸载重新安装。</li> 
  </ol> 
  <blockquote> 
   <p>注:1,2默认你的CNAME文件配置没有问题,如果没有绑定个人域名,则不需要CNAME文件。</p> 
  </blockquote> 
  <h2><strong>发表博文</strong></h2> 
  <p>辛苦了这么久,终于回到我们搭建博客最初的目标–写作,现在来看看怎么写博文并发表吧(<sup>__</sup>)。</p> 
  <h3><strong>新建页面</strong></h3> 
  <p>上面新建的博文是显示在单个文章界面,这里新建的页面是作为单个页面显示的,比如下图的分类、标签、归档和关于我,你点击后都是显示为单个页面。<br> <br> 你只需要记住新建博文是用上面的方法,新建页面是用这里的方法就行了,这里也采用命令新建页面:</p> 
  <pre><code>hexo new page "页面名称"
</code></pre> 
  <p>命令执行完后,就会发现在在</p> 
  <pre><code>Hexo\source
</code></pre> 
  <p>目录中多了一个文件夹,里面还有一个index.md,这就代表我们新建了一个页面。</p> 
  <h3><strong>新建博文</strong></h3> 
  <p>我们可以使用命令新建一篇博文,使用 Git Shell 进入 Hexo 文件夹,输入以下命令:</p> 
  <pre><code>hexo new "文章题目"
</code></pre> 
  <p>命令执行完后,就会发现在</p> 
  <pre><code>Hexo\source_posts
</code></pre> 
  <p>目录中多了一个文件博文名.md,这就是我们刚才新建的博文。</p> 
  <p>此外,我们也可以直接进入</p> 
  <pre><code>Hexo\source_posts
</code></pre> 
  <p>目录中,右键新建一个文本文档,将名字改为博文名.md,这样也新建了一篇博文。</p> 
  <h3><strong>写博文</strong></h3> 
  <p>用文本编辑器打开上面新建的博文,如下图所示:</p> 
  <p></p> 
  <p>新建的页面略有不同,没有tags和categories标签。<br> 三个”-“后面就是博文的正文内容,接下来就是正儿八经地撰写博文了。</p> 
  <h3><strong>发博文</strong></h3> 
  <p>呼啦啦,博文写好了,你得发表出去别人才看得到呀。依然在 Git Shell 中进入 Hexo 文件夹,执行下面几条命令,将博客部署到 GitHub 上:</p> 
  <pre><code>hexo clean
hexo generate
(若要本地预览就先执行 hexo server)
hexo deploy
</code></pre> 
  <p>快捷命令:</p> 
  <pre><code>hexo g == hexo generate
hexo d == hexo deploy
hexo s == hexo server
hexo n == hexo new
</code></pre> 
  <p>还能组合使用,如:</p> 
  <pre><code>hexo d -g
</code></pre> 
  <p>刷新你的个人博客,就可以看到新鲜出炉的博文了,赶紧邀请小伙伴们来欣赏吧。</p> 
  <h3><strong>插入优酷视频</strong></h3> 
  <p>新建一个markdown文件</p> 
  <pre><code>hexo new "video"
</code></pre> 
  <p>加入下面几行代码:</p> 
  <pre><code>我怕我只是你生命中的一盏灯,掩盖了上一人,照亮了下一人,一盏灯,幸福而愚蠢!:
<iframe 
    height=498 width=510 
    src="http://player.youku.com/embed/XMjg3ODQzMjQ="
    frameborder=0 allowfullscreen>
</iframe>
</code></pre> 
  <p>其中,src的来源如下,在通用代码里面找到网址,填到上方:</p> 
  <p></p> 
  <h2><strong>hexo多平台同步</strong></h2> 
  <p>我基于这个回答来解决这个问题的。问题主要出在theme上,由于NexT主题引自第三方,所以这就牵扯到git中的submodule问题了。想偷懒把不引入,但是好像不行,于是按以下思路进行解决:fork NexT官方的github到自己的仓库,然后引入子模块,我这边不知道为什么有“already exists in the index”的问题,执行如下命令:</p> 
  <pre><code>git rm -r --cached themes/next
</code></pre> 
  <p>由于我是已经配置好了自己的NexT,为了不让它遗失,我先把它<code>剪贴</code>出来,再添加submodlue:</p> 
  <pre><code>git init
git submodule add git@github.com:zdaiot/hexo-theme-next.git themes/next
</code></pre> 
  <p>然后再把自己的配置覆盖fork下来的NexT仓库。<br> 我们先要push submodule,在<code>theme/next</code>目录下依次执行:</p> 
  <pre><code>cd themes/next
git add .
git commit -m "next settings in fork next rep"
git push origin master //这是提交到fork后主题的仓库
</code></pre> 
  <blockquote> 
   <p>origin就是一个名字,它是在你clone一个托管在Github上代码库时,git为你默认创建的指向这个远程代码库的标签</p> 
  </blockquote> 
  <blockquote> 
   <p>注意有的时候主题下并不是所有文件夹都用同步,打开<code>themes\next\.gitignore</code>文件,里面有忽略的文件夹与文件</p> 
  </blockquote> 
  <p>这样,是提交到zdaiot/hexo-theme-next仓库。然后我们再更新zdaiot.github.io仓库:</p> 
  <pre><code>cd ../../ //切到仓库的根目录
git add .
git commit -m "update next settings in blog sources branch"
git remote add origin git@github.com:zdaiot/zdaiot.github.io.git //将本地与Github项目对接
git push origin --delete hexo //删除hexo分支
git branch hexo   //新建分支
git checkout hexo //切换分支
git push origin hexo //注意hexo分支
</code></pre> 
  <p>以后写文章,只需要在根目录下(hexo分支)进行git add,commit,push(hexo)操作,例如:</p> 
  <pre><code>git add .
git commit -m "new post hexo theme sync solution"
git push origin hexo
</code></pre> 
  <p>然后再更新master分支,即对外显示的html部分:</p> 
  <pre><code>//hexo s -g
hexo d -g  // g为generate 生成,s为本地预览,d为deploy 部署到远程分支
</code></pre> 
  <p>接下来为比较完整的在另一台电脑上的操作过程:</p> 
  <pre><code>git clone --recursive git@github.com:zdaiot/zdaiot.github.io.git //clone 主仓库
cd zdaiot.github.io/
git checkout hexo //切换到hexo,以后基本都是基于此分支,master分支用hexo -d
cd themes/next/
git submodule init
git submodule update //获取我的NexT主题的配置
//接下来的任务主要是配置环境,nodejs安装,hexo等等。以下安装可能不全面
//先切换到仓库根目录
npm install -g hexo
npm install hexo-cli -g
npm install hexo --save
npm install hexo-server --save
npm install hexo-deployer-git --save
npm install
</code></pre> 
  <h2><strong>WordPress迁移</strong></h2> 
  <p>首先,安装 hexo-migrator-wordpress 插件。</p> 
  <pre><code>npm install hexo-migrator-wordpress --save
</code></pre> 
  <p>在 WordPress 仪表盘中导出数据(“Tools” → “Export” → “WordPress”)(详情参考WP支持页面)。</p> 
  <p>插件安装完成后,执行下列命令来迁移所有文章。source 可以是 WordPress 导出的文件路径或网址</p> 
  <p>将导出的xml文件放到Hexo根目录</p> 
  <pre><code>hexo migrate wordpress
</code></pre> 
  <h2><strong>可能出现的错误</strong></h2> 
  <h3><strong>问题一</strong></h3> 
  <p>[git]warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF<br> 遇到这两个错误,是因为Git的换行符检查功能。</p> 
  <p><strong>core.safecrlf</strong></p> 
  <p>Git提供了一个换行符检查功能(<code>core.safecrlf</code>),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:</p> 
  <ul> 
   <li><code>false</code> - 不做任何检查</li> 
   <li><code>warn</code> - 在提交时检查并警告</li> 
   <li><code>true</code> - 在提交时检查,如果发现混用则拒绝提交</li> 
  </ul> 
  <p>建议使用最严格的 <code>true</code> 选项。</p> 
  <p><strong>core.autocrlf</strong></p> 
  <p>假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。</p> 
  <p>Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用<code>core.autocrlf</code>来打开此项功能,如果是在Windows系统上,把它设置成<code>true</code>,这样当签出代码时,LF会被转换成CRLF:</p> 
  <pre><code>$ git config --global core.autocrlf true
</code></pre> 
  <p>Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把<code>core.autocrlf</code>设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:</p> 
  <pre><code>$ git config --global core.autocrlf input
</code></pre> 
  <p>这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。</p> 
  <p>如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置<code>false</code>取消此功能,把回车符记录在库中:</p> 
  <pre><code>$ git config --global core.autocrlf false
</code></pre> 
  <h3><strong>问题二</strong>:</h3> 
  <p>hexo指令出现<code>YAMLException: duplicated mapping key at line 111, column 1:</code></p> 
  <ul> 
   <li>查看是否缩进正常,空格或者tab一致</li> 
   <li>YAML依靠缩进来确定元素间的从属关系。因此,请确保每个deployer的缩进长度相同,并且使用空格缩进。</li> 
  </ul> 
  <h3><strong>错误三</strong></h3> 
  <p>若把整个hexo根目录给提交了上去,这不是我要的结果啊,说好的只提交public文件夹的呢!查看hexo根目录,存在“.git”这个目录,原来是在hexo根目录下,我进行过git init的操作,删除“.git”文件夹即可。</p> 
  <h3><strong>其他问题</strong></h3> 
  <pre><code>spawn git ENOENT
</code></pre> 
  <p>解决方法在这里:spawn git ENOENT解决方法<br> 头像图片无法显示:hexo头像无法显示【解决办法】</p> 
  <h2><strong>调试</strong></h2> 
  <p>打开网站,开启F12,查看console,报的错,对应去修改</p> 
  <p>如下图所示,可以去调试移动端的布局</p> 
  <p></p> 
  <h2><strong>参考资料</strong></h2> 
  <p>用 GitHub + Hexo 建立你的第一个博客<br> hexo的next主题个性化教程:打造炫酷网站<br> Hexo NexT主题内接入网页在线联系功能<br> hexo的next主题打赏<br> Hexo发布博客引用自带图片的方法<br> Next主页<br> hexo中完美插入本地图片<br> hexo next 主题配置 gitalk 评论后无法初始化创建 issue<br> 报错出现 Error: Validation Failed. #102<br> 在Hexo发布博客的MarkDown文件中引入JS代码<br> Gitment评论功能接入踩坑教程<br> Hexo的Next主题详细配置<br> Hexo-Next-主题优化(一)<br> Hexo+Next个人博客主题优化<br> Hexo部署至多个repo上,多域名指向<br> Hexo插件之百度主动提交链接<br> hexo 博客百度站长平台自动链接提交<br> Hexo+nexT主题搭建个人博客<br> 如何解决github+Hexo的博客多终端同步问题<br> 基于Hexo的博客同步中的一些问题<br> Hexo NexT主题中添加百度分享功能<br> next主题进阶教程<br> Hexo+nexT主题搭建个人博客<br> 脚本推送百度</p> 
  <hr> 
  <h2>One more thing</h2> 
  <p>更多关于人工智能、Python、C++、计算机等知识,欢迎访问我的个人博客进行交流, 点这里~~</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1280970559185764352"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(搭建博客)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1947224698416852992.htm"
                           title="github jekyll+chirpy主题搭建博客" target="_blank">github jekyll+chirpy主题搭建博客</a>
                        <span class="text-muted">handsomestWei</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/Jekyll/1.htm">Jekyll</a><a class="tag" taget="_blank" href="/search/Chirpy/1.htm">Chirpy</a><a class="tag" taget="_blank" href="/search/GitHub/1.htm">GitHub</a><a class="tag" taget="_blank" href="/search/Pages/1.htm">Pages</a><a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2%E5%BB%BA%E7%AB%99/1.htm">博客建站</a>
                        <div>githubjekyll+chirpy主题搭建博客标签:后端、blog、jekyll全文链接本文简要介绍了如何基于GitHubPages、Jekyll及Chirpy主题搭建个人博客的流程和注意事项。主要内容GitHubPages站点简介可免费搭建个人博客,支持自定义域名,适合静态网站部署。Jekyll简介Jekyll是一个静态博客生成工具,无需数据库,适合部署在GitHub上。提供了相关文档和教程</div>
                    </li>
                    <li><a href="/article/1942784592733859840.htm"
                           title="【后端开发】Django" target="_blank">【后端开发】Django</a>
                        <span class="text-muted">大雨淅淅</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">后端开发</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a>
                        <div>目录一、Django是什么,为何选择它?二、学习前的准备工作三、Django项目初体验四、深入Django核心概念(一)模型(Model)(二)视图(View)(三)模板(Template)(四)URL配置五、实战演练:打造一个简单博客(一)搭建博客基础框架(二)实现文章发布功能(三)展示文章列表和详情六、总结与展望一、Django是什么,为何选择它?在PythonWeb开发的广袤天地里,Djan</div>
                    </li>
                    <li><a href="/article/1933258854334787584.htm"
                           title="Linux下使用 github+hexo 搭建个人博客01-hexo搭建" target="_blank">Linux下使用 github+hexo 搭建个人博客01-hexo搭建</a>
                        <span class="text-muted">LightZhang666</span>
<a class="tag" taget="_blank" href="/search/hexo/1.htm">hexo</a><a class="tag" taget="_blank" href="/search/hexo/1.htm">hexo</a><a class="tag" taget="_blank" href="/search/%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/1.htm">搭建个人博客</a><a class="tag" taget="_blank" href="/search/hexo/1.htm">hexo</a>
                        <div>为什么要搭建自己的博客系统?原因有好几个吧,归类如下:1、自己搭建博客系统很有成就感,可以自己选定页面风格和页面排版;2、自己搭建博客系统可以根据自己的需要添加各种插件功能,因此整体上比网上的第三方博客网站更好;3、hexo支持MarkDown标记语法,我们可以很容易的上手,排版简单明了;4、网上主流的第三方博客网站,不一定很符合你个人的风格,而且由于网站要持续运营下去,因此在此过程中会不可避免的</div>
                    </li>
                    <li><a href="/article/1931788794021867520.htm"
                           title="VuePress 搭建博客以及部署到 Github Pages" target="_blank">VuePress 搭建博客以及部署到 Github Pages</a>
                        <span class="text-muted">lxyz@</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/VuePress/1.htm">VuePress</a><a class="tag" taget="_blank" href="/search/GitHub/1.htm">GitHub</a><a class="tag" taget="_blank" href="/search/Pages/1.htm">Pages</a>
                        <div>文章目录VuePress安装使用FrontMatter通用FrontMatter文章FrontMatter部署到GithubPages自定义域名一键部署VuePress根据VuePress官网的介绍:VuePress由两部分组成:第一部分是一个极简静态网站生成器,它包含由Vue驱动的主题系统和插件API,另一个部分是为书写技术文档而优化的默认主题,它的诞生初衷是为了支持Vue及其子项目的文档需求。</div>
                    </li>
                    <li><a href="/article/1927720344714539008.htm"
                           title="微信小程序云开发实战:从零搭建一个完整的博客系统" target="_blank">微信小程序云开发实战:从零搭建一个完整的博客系统</a>
                        <span class="text-muted">梦玄网络安全</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>随着移动互联网的飞速发展,微信小程序以其轻便、快捷、易用的特点,受到了越来越多用户的青睐。在众多小程序中,博客系统因其能够满足用户分享、阅读文章的需求,而备受欢迎。本文将带领大家使用微信小程序云开发,从零搭建一个完整的博客系统,让读者能够深入了解小程序云开发的魅力。一、准备工作在开始搭建博客系统之前,我们需要做好以下准备工作:注册微信小程序账号前往微信公众平台,注册一个小程序账号,并获取AppID</div>
                    </li>
                    <li><a href="/article/1924301758247530496.htm"
                           title="零基础用 Hexo + Matery 搭建博客|Github Pages 免费部署教程" target="_blank">零基础用 Hexo + Matery 搭建博客|Github Pages 免费部署教程</a>
                        <span class="text-muted">CodeSilence</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7/1.htm">工具</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/hexo/1.htm">hexo</a><a class="tag" taget="_blank" href="/search/matery/1.htm">matery</a><a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/1.htm">博客搭建</a>
                        <div>文章目录一、Hexo1.1依赖1.2快速使用1.3目录说明1.4命令说明1.4.1常规命令1.4.2全局选项二、主题安装2.1安装Matery主题2.1.1下载2.1.2配置2.1.2.1基础配置2.1.2.2新建页面类型2.1.2.3其他配置2.2其他主题推荐三、部署3.1部署到GithubPages四、总结一、HexoHexo是一个快速、简洁且高效的博客框架。Hexo使用Markdown(或其</div>
                    </li>
                    <li><a href="/article/1894593650072023040.htm"
                           title="用云平台资源每月免费额度搭建博客,一年账单竟是 $0!" target="_blank">用云平台资源每月免费额度搭建博客,一年账单竟是 $0!</a>
                        <span class="text-muted">fxrz12</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E6%9C%8D%E5%8A%A1/1.htm">无服务</a><a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/1.htm">个人博客</a><a class="tag" taget="_blank" href="/search/serverless/1.htm">serverless</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91/1.htm">程序开发</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>一年前,我在寻找一个低成本的方式来托管我的个人博客。当时,我的需求很简单:尽量降低成本——毕竟只是一个个人博客,没有盈利,也不想每个月为服务器付费。尽可能少的运维——不想每天盯着服务器是否宕机,能无忧无虑地运行就好。快速响应——不希望读者打开网页时,等上好几秒。就在这个时候,我无意间发现了AWSLambda的每月免费额度。AWS为Lambda提供每月100万次请求和40万GB-秒的计算时间,而对于</div>
                    </li>
                    <li><a href="/article/1889035046845739008.htm"
                           title="CentOS 7+GitLab搭建" target="_blank">CentOS 7+GitLab搭建</a>
                        <span class="text-muted">一路向东-Kevin</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E9%9B%86/1.htm">开发工具集</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/gitlab/1.htm">gitlab</a>
                        <div>内容介绍:CentOS7+GitLab搭建博客地址:[http://blog.csdn.net/kevindgk(http://blog.csdn.net/kevindgk)开发文档地址:https://kevindgk.github.io/版权声明:本文为原创文章,未经允许不得转载联系方式:815852777@qq.com简介GitlabCentOS环境安装过程下载虚拟机下载CentOSVMwa</div>
                    </li>
                    <li><a href="/article/1881705266362249216.htm"
                           title="2025年个人博客网站-零成搭建-终极指南" target="_blank">2025年个人博客网站-零成搭建-终极指南</a>
                        <span class="text-muted">Ktovoz</span>
<a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a>
                        <div>作者:KTO原文:《零成本博客建站终极指南》如果你需要站立自己的博客网可以参考本文。背景故事在接触前端领域之前,我和许多刚入门前端的新手一样,面对纷繁复杂的技术栈选择陷入迷茫,不知道从何下手。最初雄心勃勃想用Next.js从零搭建博客,却在实战中屡屡碰壁。最终找到「模板先行,逐步精进」的破局之道:"先有后优"原则:通过成熟模板快速搭建可运行版本➡️持续迭代优化➡️渐进式学习技术细节本文将分享这一方</div>
                    </li>
                    <li><a href="/article/1829975318597824512.htm"
                           title="Node:解决Error: error:0308010C:digital envelope routines::unsupported的解决方法" target="_blank">Node:解决Error: error:0308010C:digital envelope routines::unsupported的解决方法</a>
                        <span class="text-muted">码上言</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E4%BA%AB/1.htm">分享</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a>
                        <div>问题描述在使用vuepress搭建博客的时候,运行项目发现报错了,检查了node的版本是18+,之前用的是16或14的版本,现在报:Error:error:0308010C:digitalenveloperoutines::unsupported错误。查找了一些资料,大致明白了报错的原因:主要是因为node17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,node17之前版本</div>
                    </li>
                    <li><a href="/article/1829107263906869248.htm"
                           title="Hexo阶段三 -- 将Hexo部署到github" target="_blank">Hexo阶段三 -- 将Hexo部署到github</a>
                        <span class="text-muted">Oliverloki</span>
<a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a>
                        <div>本文共有三个部分阶段一:搭建博客并部署到本地阶段二:Hexo的主题美化与文章发布阶段三:将Hexo部署到GithubPage,通过域名访问你的博客1、在本地生成SSH公钥并绑定到github务必确保在本地PC已经完成了Node.js、Git和Hexo的安装,在博客目录下打开GitBash如果是第一次使用Git的话,必须要设置git的用户名和邮箱,可以点击这篇博文获得帮助生成本地的SSH公钥,并且绑</div>
                    </li>
                    <li><a href="/article/1757352165459902464.htm"
                           title="阅读 - 搭建博客" target="_blank">阅读 - 搭建博客</a>
                        <span class="text-muted">小蜜蜂~嗡嗡嗡~</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>搭建博客的几种方式1.使用在线的博客系统,如语雀、掘金、CSDN等。优点:直接创建账号使用即可,简单方便,不需要维护缺点:文章分散在各个平台,不易于管理2.githubpages+hugo、hexo等静态博客系统(强烈推荐)优点:文章都在自己手里,方便管理。因为是从0开始一步步搭建,所以还能学习到很多相关知识。最终要的是还能装X缺点:只支持静态内容,没有后台管理系统3.WordPress建站(没用</div>
                    </li>
                    <li><a href="/article/1757165726487035904.htm"
                           title="使用Hexo+GitHub搭建博客踩过的一些坑" target="_blank">使用Hexo+GitHub搭建博客踩过的一些坑</a>
                        <span class="text-muted">君临天下夜未央</span>

                        <div>最终部署好的博客1、安装hexo输入npminstallhexo-clig出现找不到了如下错误12.png只需要删除用户目录下的.npmrc文件即可2、安装hexo后,初始化博客,出现bash:hexo:commandnotfound找到hexo的安装目录,我的是:C:\nodejs\node-global\node_modules\hexo-cli\bin,将此目录新增到系统环境变量path中(</div>
                    </li>
                    <li><a href="/article/1756969605831606272.htm"
                           title="Hexo + Material + Github 搭建博客与配置" target="_blank">Hexo + Material + Github 搭建博客与配置</a>
                        <span class="text-muted">U_2647</span>

                        <div>0.准备环境gitNode.jsgithub账号1.安装1.1安装gitGit下载地址一路next没啥好说的验证一下,在命令行下执行D:\GitRepository>git--versiongitversion2.13.2.windows.1就说明成功了1.2安装Node.jsNode.js下载地址一路next没啥好说的验证一下,在命令行下执行D:\GitRepository>node-vv6.1</div>
                    </li>
                    <li><a href="/article/1756587936607911936.htm"
                           title="VuePress 启动服务 0.0.0.0:8080/" target="_blank">VuePress 启动服务 0.0.0.0:8080/</a>
                        <span class="text-muted">Williert</span>
<a class="tag" taget="_blank" href="/search/%E9%94%99%E8%AF%AF/1.htm">错误</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a>
                        <div>最近在搭建博客,根据官方教程,应该不会有什么大问题的,但是就是出现了问题。在什么都配置好后,跑服务器,结果什么都跑不起来,而且进度条卡在40%,后面抛出了错误this[kHandle]=new_Hash(algorithm,xofLen);后面一查,发现是node的版本问题(我最近也是重装系统,我晕,搞了我好久)解决方法:SETNODE_OPTIONS=--openssl-legacy-provi</div>
                    </li>
                    <li><a href="/article/1756587808727777280.htm"
                           title="mac vuepress搭建博客" target="_blank">mac vuepress搭建博客</a>
                        <span class="text-muted">Miruna</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/1.htm">前端学习</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>文章目录一、安装vuepress二、初始化项目三、页面内容配置遇到的问题:四、设置封面页五、配置导航栏nav六、配置侧边栏slider七、配置插件1.UI插件2.支持PWA八、github部署1.创建github仓库2.配置仓库名称3.在项目根目录中,创建一个如下的脚本文件deploy.sh4.运行deploy.sh脚本5.settingGithubPages九、Copy自动加版权信息安装配置自定</div>
                    </li>
                    <li><a href="/article/1754666355845513216.htm"
                           title="hexo和github.io博客的搭建" target="_blank">hexo和github.io博客的搭建</a>
                        <span class="text-muted">远不及你的微笑</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2/1.htm">博客</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a>
                        <div>简要:最近在牛客网上看到有很多应届毕业生大佬的求职简历上都写上了自己的博客地址,并且在acwing上看到图图佬,铅笔佬也有自己的博客地址,大部分都采用了自己搭建博客的方式,而不是用脏乱差的csdn来写博客。所以我也采用了自己搭建博客的方式。总结其实不难,主要是看视频,该流程遇到的易错点和解决方法我都写上去了。**搭建流程:**主要是以下面的视频为主线:https://www.bilibili.co</div>
                    </li>
                    <li><a href="/article/1754024538573651968.htm"
                           title="Vue3+TypeScript+Django Rest Framework 搭建个人博客(三):博客管理后台" target="_blank">Vue3+TypeScript+Django Rest Framework 搭建个人博客(三):博客管理后台</a>
                        <span class="text-muted">zgj0607</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2/1.htm">博客</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>一个完整的网站都是有前台和管理后台组成的,前台用来给真正的用户浏览和使用,后台用来给管理员管理网站内容,配置各种功能和数据等。博客的管理后台就是用来承载创建博客,发布博客,查看留言,管理博客用户这些功能的子系统。大家好,我是落霞孤鹜,上一篇我们已经实现了用户注册,登录,登出的功能,这一章我们开始搭建博客的管理后台,实现对博客网站的管理功能。我会同样按照一个完整的功能,从需求分析到代码编写来阐述如何</div>
                    </li>
                    <li><a href="/article/1752732397264191488.htm"
                           title="Hexo上传html文件失败" target="_blank">Hexo上传html文件失败</a>
                        <span class="text-muted">就你叫Martin?</span>
<a class="tag" taget="_blank" href="/search/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/1.htm">搭建网站</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>✅作者简介:CSDN内容合伙人、信息安全专业在校大学生系列专栏:零基础搭建博客新人博主:欢迎点赞收藏关注,会回访!舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。文章目录hexo上传html文件失败问题:解决效果:hexo上传html文件失败问</div>
                    </li>
                    <li><a href="/article/1752624970632019968.htm"
                           title="github+hexo搭建博客" target="_blank">github+hexo搭建博客</a>
                        <span class="text-muted">_小田</span>

                        <div>小白开始写博客2333~~(大佬不要喷),最终选择了github+hexo(穷!),下面就分享一下怎么用github+hexo搭建一个博客,网上已经有不少大佬写了教程我自己也参考了不少(虽然官网已经写得很全了),下面就开工干活.第一步$npminstallhexo-cli-g需要nodejs环境(这个就不多说了,大家都懂不懂的可以baiduorgoogle)第二步$hexoinit$cd$npmi</div>
                    </li>
                    <li><a href="/article/1751792782323761152.htm"
                           title="hexo搭建博客" target="_blank">hexo搭建博客</a>
                        <span class="text-muted">0zxm</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2/1.htm">博客</a><a class="tag" taget="_blank" href="/search/arcgis/1.htm">arcgis</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                        <div>title:博客搭建过程中的问题及解决方法date:2024-01-2618:11:11tags:[搭建博客]搭建博客安装Git和NodeJs这是我搭建的时候对照的视频链接[教程]Hexo&Github搭建自己的专属博客哔哩哔哩bilibili首先要安装[Git]https://git-scm.com/downloads在Windows上使用Git,可以从Git官网直接Git-Downloads,</div>
                    </li>
                    <li><a href="/article/1751664327561068544.htm"
                           title="从零开始搭建个人博客" target="_blank">从零开始搭建个人博客</a>
                        <span class="text-muted">Fancydog's blog</span>
<a class="tag" taget="_blank" href="/search/%E6%90%AD%E5%BB%BAHexo%E5%8D%9A%E5%AE%A2/1.htm">搭建Hexo博客</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>本片文章我们主要以hexo来搭建一个属于我们自己的个人博客1.在搭建之前我们先了解一下什么是hexo呢?Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架!!!我为什么会选择hexo来搭建博客呢?对于小白来说它也是不二之选,对于处于第三方大平台上的我,比较不自由,我个人认为它的界面美观十分优雅,它的搭建</div>
                    </li>
                    <li><a href="/article/1751473539166257152.htm"
                           title="最新GitHub+HEXO搭建博客" target="_blank">最新GitHub+HEXO搭建博客</a>
                        <span class="text-muted">麦子尖</span>

                        <div>一、搭建GitHubPages0x01注册一个GitHub账号(已注册跳过这一步),并登录0x02创建仓库1、点击“NEW”2、填写的仓库名为“用户名.github.io”,用户名一定要和左边用户名一样(切记),不然后面会出错0x03启用GithubPages1、点击“Settings”进入设置2、往下拉找到“GitHubPages”,显示如图这样,说明已开启(一般创建完成之后都会默认自动开启)0</div>
                    </li>
                    <li><a href="/article/1750249581691551744.htm"
                           title="docusaurus部署Github Pages搭建个人博客" target="_blank">docusaurus部署Github Pages搭建个人博客</a>
                        <span class="text-muted">饭碗、碗碗香</span>
<a class="tag" taget="_blank" href="/search/Blog%E6%90%AD%E5%BB%BA/1.htm">Blog搭建</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>docusaurus部署GithubPages搭建个人博客起因是这样的,一次偶然,我发现了博客的魅力,以及各种大佬的炫酷博客,我被深深地震撼到了,一直以来,因为这样那样的事没能开始搭建博客的道路(啊我…是了,是我拖延)身边朋友给我推荐了ducusaurus,说比较简单,容易上手,成功部署后,确实深感操作简单,容易上手,值得推荐预备工作首先需要有如下必要以及非必要软件,在此贴上官方下载网址鉴于贴上相</div>
                    </li>
                    <li><a href="/article/1748802751984320512.htm"
                           title="Ubuntu18.04搭建博客" target="_blank">Ubuntu18.04搭建博客</a>
                        <span class="text-muted">慕有名的人</span>

                        <div>sudoapt-getupdatesudoapt-getupgradeyumupdate#更新主机apt-getinstallapache2#安装web服务器apt-getinstallmysql-server#安装数据库vi/etc/mysql/debian.cnf#查看mysql密码并记录apt-getinstallphp#安装phpapt-getinstallphpmyadmin#网页管理数</div>
                    </li>
                    <li><a href="/article/1748589334379905024.htm"
                           title="Notion 搭建个人博客" target="_blank">Notion 搭建个人博客</a>
                        <span class="text-muted">二手的程序员</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>之前使用过很多搭建博客的系统,比如Hexo等,但是用起来还是很麻烦,比如上传图片之类的。后来使用了Notion来做笔记,写起来是很方便了,但是将内容输出到博客却很麻烦。是否有一种方案,能让“笔记”和“博客分享”得到完美结合呢?有大佬写了一个快速免费的Notion建站工具,昨天试了一下,还是挺好用的。推荐一下:https://docs.tangly1024.com/about我个人的博客地址:lyl</div>
                    </li>
                    <li><a href="/article/1746428351003770880.htm"
                           title="用最简单的方法实现个人网站-wordpress结合LAMP架构实战" target="_blank">用最简单的方法实现个人网站-wordpress结合LAMP架构实战</a>
                        <span class="text-muted">我是沐风晓月</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/3./1.htm">3.</a><a class="tag" taget="_blank" href="/search/linux%E5%9F%BA%E6%9C%AC%E5%8A%9F-%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%AE%9E%E6%88%98/1.htm">linux基本功-系统服务实战</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>文章目录前言一、LAMP架构是什么?1.1LAMP架构简介1.2什么是apache?1.3什么是MySQL?1.4什么是php?二.wordpress是什么三.搭建博客过程1.实验环境2.搭建LAMP架构3.设置数据库并授权4.上传wordpress并解压5.修改配置文件6.网页端进行配置总结前言每个技术人都希望拥有自己的网站,以前觉得做个网站是件很困难的事情,需要写大量的代码,学了才发现,原来网</div>
                    </li>
                    <li><a href="/article/1746063325847896064.htm"
                           title="hexo+github搭建博客后发布文章访问时显示404的一种情况" target="_blank">hexo+github搭建博客后发布文章访问时显示404的一种情况</a>
                        <span class="text-muted">sRiddle</span>
<a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3/1.htm">问题解决</a>
                        <div>hexo+github搭建博客后发布文章访问时显示404的一种情况注意文章中有没有html代码我觉得是这样的,html代码用单独的html代码块写出如下图,是不行的在进行访问时就会显示一个404界面当我们用hexos打开预览时会发现下图这显然是上一段文本所造成的,感觉有点像一个XSS。而当我们将其用一个完整的代码框包含后访问4000端口和github.io均不会出现问题这个也是搞了我很久,当时一直</div>
                    </li>
                    <li><a href="/article/1746046206900977664.htm"
                           title="以为是使用电脑的老手,没想到吃了没备份数据的亏。" target="_blank">以为是使用电脑的老手,没想到吃了没备份数据的亏。</a>
                        <span class="text-muted">彭宏豪</span>

                        <div>题图:来自Unsplash文/彭宏豪,笔名/安哥拉本文首发于「效率工具指南」Hello大家好,我是安哥。之前曾介绍过用一种搭建个人博客的方法:《不会代码,如何零成本搭建个人博客?》这是一种使用GitHubPages来搭建博客的方法,无需租用服务器和域名,完全免费。文章中用到了一款名为Gridea的静态博客客户端,以图形化的界面替代了在终端中配置博客、将本地仓库Push到GitHub的过程,对没有技</div>
                    </li>
                    <li><a href="/article/1745537306405650432.htm"
                           title="Vercel+Freenom 搭建博客" target="_blank">Vercel+Freenom 搭建博客</a>
                        <span class="text-muted">SYSTEM506</span>
<a class="tag" taget="_blank" href="/search/WimBuilder2/1.htm">WimBuilder2</a><a class="tag" taget="_blank" href="/search/%E6%98%93%E8%AF%AD%E8%A8%80/1.htm">易语言</a><a class="tag" taget="_blank" href="/search/mail/1.htm">mail</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>来到我的博客以获得最好的阅读体验https://www.mrzefr.cn/posts/Vercel+Freenom/https://www.mrzefr.cn/posts/Vercel+Freenom/购买域名首先先进入freenom官网:DomainChecker-Freenom进入了就是这个界面为什么不能进中文版的呢?因为中文版的检查可用性就是个标签!之后输入您需要购买的域名比如:MrZeF</div>
                    </li>
                                <li><a href="/article/12.htm"
                                       title="eclipse maven" target="_blank">eclipse maven</a>
                                    <span class="text-muted">IXHONG</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>eclipse中使用maven插件的时候,运行run as maven build的时候报错 
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match. 
  
可以设一个环境变量M2_HOME指</div>
                                </li>
                                <li><a href="/article/139.htm"
                                       title="timer cancel方法的一个小实例" target="_blank">timer cancel方法的一个小实例</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a>
                                    <div>package com.lj.timer;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimer extends TimerTask
{

	private int a;
	
	private Timer timer;
	
	pub</div>
                                </li>
                                <li><a href="/article/266.htm"
                                       title="MySQL数据库在Linux下的安装" target="_blank">MySQL数据库在Linux下的安装</a>
                                    <span class="text-muted">ducklsl</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>1.建好一个专门放置MySQL的目录 
/mysql/db数据库目录 
/mysql/data数据库数据文件目录 
 
2.配置用户,添加专门的MySQL管理用户 
 
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户 
3.配置,生成并安装MySQL 
 
>cmake -D</div>
                                </li>
                                <li><a href="/article/393.htm"
                                       title="spring------>>cvc-elt.1: Cannot find the declaration of element" target="_blank">spring------>>cvc-elt.1: Cannot find the declaration of element</a>
                                    <span class="text-muted">Array_06</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a>
                                    <div>将-------- 
 
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3</div>
                                </li>
                                <li><a href="/article/520.htm"
                                       title="maven发布第三方jar的一些问题" target="_blank">maven发布第三方jar的一些问题</a>
                                    <span class="text-muted">cugfy</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令 
 
有许多参数,具体可查看 
 
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html 
 
以下是一个例子: 
 
mvn  deploy:deploy-file -DgroupId=xpp3 </div>
                                </li>
                                <li><a href="/article/647.htm"
                                       title="MYSQL下载及安装" target="_blank">MYSQL下载及安装</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>    好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址</div>
                                </li>
                                <li><a href="/article/774.htm"
                                       title="ios TableView cell的布局" target="_blank">ios TableView cell的布局</a>
                                    <span class="text-muted">张亚雄</span>
<a class="tag" taget="_blank" href="/search/tableview/1.htm">tableview</a>
                                    <div>  cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]]; 
    
  
    CGSize itemSize = CGSizeMake(60, 50); 
 
  &nbs</div>
                                </li>
                                <li><a href="/article/901.htm"
                                       title="Java编码转义" target="_blank">Java编码转义</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E8%BD%AC%E4%B9%89/1.htm">编码转义</a>
                                    <div>    import java.io.UnsupportedEncodingException;

    /**
    * 转换字符串的编码
    */
    public class ChangeCharset {
    /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
    public static final Strin</div>
                                </li>
                                <li><a href="/article/1028.htm"
                                       title="Tomcat 配置和spring" target="_blank">Tomcat 配置和spring</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>简介 
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。 
 
 Server.xml --  tomcat主</div>
                                </li>
                                <li><a href="/article/1155.htm"
                                       title="Java打印当前目录下的所有子目录和文件" target="_blank">Java打印当前目录下的所有子目录和文件</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92/1.htm">递归</a><a class="tag" taget="_blank" href="/search/File/1.htm">File</a>
                                    <div>其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。 
  
import java.io.File;

/**
 * @author Perlin
 * @date 2014-6-30
 */
public class PrintDirectory {
	
	public static void printDirectory(File f</div>
                                </li>
                                <li><a href="/article/1282.htm"
                                       title="linux安装mysql出现libs报冲突解决" target="_blank">linux安装mysql出现libs报冲突解决</a>
                                    <span class="text-muted">BigBird2012</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>linux安装mysql出现libs报冲突解决 
安装mysql出现 
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686 
 </div>
                                </li>
                                <li><a href="/article/1409.htm"
                                       title="jedis连接池使用实例" target="_blank">jedis连接池使用实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/jedis%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">jedis连接池</a><a class="tag" taget="_blank" href="/search/jedis/1.htm">jedis</a>
                                    <div>实例代码: 
package com.bijian.study;

import java.util.ArrayList;
import java.util.List;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo</div>
                                </li>
                                <li><a href="/article/1536.htm"
                                       title="关于朋友" target="_blank">关于朋友</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8B%E5%8F%8B/1.htm">朋友</a><a class="tag" taget="_blank" href="/search/%E5%85%B4%E8%B6%A3%E7%88%B1%E5%A5%BD/1.htm">兴趣爱好</a><a class="tag" taget="_blank" href="/search/%E7%BB%B4%E6%8C%81/1.htm">维持</a>
                                    <div>  成为朋友的必要条件: 
   志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。   
  志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他</div>
                                </li>
                                <li><a href="/article/1663.htm"
                                       title="【Spark七十九】Spark RDD API一" target="_blank">【Spark七十九】Spark RDD API一</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a>
                                    <div>aggregate 
package spark.examples.rddapi

import org.apache.spark.{SparkConf, SparkContext}

//测试RDD的aggregate方法
object AggregateTest {
  def main(args: Array[String]) {
    val conf = new Spar</div>
                                </li>
                                <li><a href="/article/1790.htm"
                                       title="ktap 0.1 released" target="_blank">ktap 0.1 released</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/kernel/1.htm">kernel</a><a class="tag" taget="_blank" href="/search/tracing/1.htm">tracing</a>
                                    <div>Dear,

I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu</div>
                                </li>
                                <li><a href="/article/1917.htm"
                                       title="能保存Properties文件注释的Properties工具类" target="_blank">能保存Properties文件注释的Properties工具类</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/properties/1.htm">properties</a>
                                    <div>        今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。 
    &nb</div>
                                </li>
                                <li><a href="/article/2044.htm"
                                       title="读《研磨设计模式》-代码笔记-外观模式-Facade" target="_blank">读《研磨设计模式》-代码笔记-外观模式-Facade</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 



/*
 * 百度百科的定义:
 * Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
 * 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
 * 
 * 可简单地</div>
                                </li>
                                <li><a href="/article/2171.htm"
                                       title="After Effects教程收集" target="_blank">After Effects教程收集</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/After+Effects/1.htm">After Effects</a>
                                    <div>1、中文入门 
 
http://study.163.com/course/courseMain.htm?courseId=730009 
 
 2、videocopilot英文入门教程(中文字幕) 
 
http://www.youku.com/playlist_show/id_17893193.html 
英文原址: 
http://www.videocopilot.net/basic/ 
素</div>
                                </li>
                                <li><a href="/article/2298.htm"
                                       title="Linux Apache 安装过程" target="_blank">Linux Apache 安装过程</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a>
                                    <div>Linux Apache 安装过程 
  
下载新版本: 
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi) 
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi) 
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac</div>
                                </li>
                                <li><a href="/article/2425.htm"
                                       title="Shell学习 之 变量赋值和引用" target="_blank">Shell学习 之 变量赋值和引用</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8/1.htm">变量引用</a><a class="tag" taget="_blank" href="/search/%E8%B5%8B%E5%80%BC/1.htm">赋值</a>
                                    <div>本文转自:http://www.cnblogs.com/papam/articles/1548679.html 
 
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则: 
 
首个字符必须为字母(a-z,A-Z) 
中间不能有空格,可以使用下划线(_) 
不能使用标点符号 
不能使用bash里的关键字(可用help命令查看保留关键字) 
需要给变量赋值时,可以这么写: 
 
</div>
                                </li>
                                <li><a href="/article/2552.htm"
                                       title="Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)" target="_blank">Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a>
                                    <div>Java SE 第一讲: 
 
Java SE:Java Standard Edition 
Java ME: Java Mobile Edition 
Java EE:Java Enterprise Edition 
 
Java是由Sun公司推出的(今年初被Oracle公司收购)。 
 
收购价格:74亿美金 
 
J2SE、J2ME、J2EE 
 
JDK:Java Development </div>
                                </li>
                                <li><a href="/article/2679.htm"
                                       title="YII给用户登录加上验证码" target="_blank">YII给用户登录加上验证码</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a>
                                    <div>1、在SiteController中添加如下代码: 
    /**
     * Declares class-based actions.
     */
    public function actions() {
        return array(
            // captcha action renders the CAPTCHA image displ</div>
                                </li>
                                <li><a href="/article/2806.htm"
                                       title="Lucene使用说明" target="_blank">Lucene使用说明</a>
                                    <span class="text-muted">dyy_gusi</span>
<a class="tag" taget="_blank" href="/search/Lucene/1.htm">Lucene</a><a class="tag" taget="_blank" href="/search/search/1.htm">search</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E8%AF%8D%E5%99%A8/1.htm">分词器</a>
                                    <div>Lucene使用说明 
1、lucene简介 
1.1、什么是lucene 
    Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。 
1.2、lucene能做什么 
    要回答这个问题,先要了解lucene的本质。实际</div>
                                </li>
                                <li><a href="/article/2933.htm"
                                       title="学习编程并不难,做到以下几点即可!" target="_blank">学习编程并不难,做到以下几点即可!</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                                    <div>不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。 
1、确定目标 
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到</div>
                                </li>
                                <li><a href="/article/3060.htm"
                                       title="Java面试十问之三:Java与C++内存回收机制的差别" target="_blank">Java面试十问之三:Java与C++内存回收机制的差别</a>
                                    <span class="text-muted">HNUlanwei</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/finalize%28%29/1.htm">finalize()</a><a class="tag" taget="_blank" href="/search/%E5%A0%86%E6%A0%88/1.htm">堆栈</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E5%9B%9E%E6%94%B6/1.htm">内存回收</a>
                                    <div>大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的</div>
                                </li>
                                <li><a href="/article/3187.htm"
                                       title="第二章 Nginx+Lua开发入门" target="_blank">第二章 Nginx+Lua开发入门</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a>
                                    <div>Nginx入门 
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: 
nginx启动、关闭、重启 
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html 
agentzh 的 Nginx 教程 
http://openresty.org/download/agentzh-nginx-tutor</div>
                                </li>
                                <li><a href="/article/3314.htm"
                                       title="MongoDB windows安装 基本命令" target="_blank">MongoDB windows安装 基本命令</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
windows安装 
  
 安装目录: 
  
D:\MongoDB\ 
  
新建目录 
  
D:\MongoDB\data\db 
  
4.启动进城: 
  
cd D:\MongoDB\bin 
  
mongod -dbpath D:\MongoDB\data\db 
  
&n</div>
                                </li>
                                <li><a href="/article/3441.htm"
                                       title="Linux下通过源码编译安装程序" target="_blank">Linux下通过源码编译安装程序</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>一、程序的组成部分     Linux下程序大都是由以下几部分组成:     二进制文件:也就是可以运行的程序文件     库文件:就是通常我们见到的lib目录下的文件     配置文件:这个不必多说,都知道     帮助文档:通常是我们在linux下用man命令查看的命令的文档      
二、linux下程序的存放目录     linux程序的存放目录大致有三个地方:     /etc, /b</div>
                                </li>
                                <li><a href="/article/3568.htm"
                                       title="WEB开发编程的职业生涯4个阶段" target="_blank">WEB开发编程的职业生涯4个阶段</a>
                                    <span class="text-muted">shw3588</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a>
                                    <div>觉得自己什么都会 
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。 
 
根本不是自己想的那样 
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,</div>
                                </li>
                                <li><a href="/article/3695.htm"
                                       title="遭遇jsonp同域下变作post请求的坑" target="_blank">遭遇jsonp同域下变作post请求的坑</a>
                                    <span class="text-muted">vb2005xu</span>
<a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/%E5%90%8C%E5%9F%9Fpost/1.htm">同域post</a>
                                    <div>今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段 
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv '])); 
 贴出我前端代码片段: 
$.aj</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>