windows hexo 搭建个人博客教程

windows hexo 搭建教程

安装nodejs

  • 自己到nodejs官网下载安装吧

安装git

  • 先本地安装git客户端
  • 注册一个git账号

安装Hexo

  • 在D盘创建一个目录 D:\testblog ,目录自己定义

  • 安装git之后,右键上会有一个git bash标签,点击会出现git bash 界面如下图

    Hexo初始化

  • 依次执行下面命令

    1
    2
    3
    4
    5
    6
    7
    npm install hexo-cli -g
    npm install hexo --save
    //如果上面的命令由于网络原因,安装失败,那么可以切换一下npm源,执行一下下面命令
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    //然后执行
    cnpm install hexo --save

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //然后执行
    hexo init
    //然后装一下hexo的一些插件,建议全部安装
    npm install hexo-generator-index --save #索引生成器
    npm install hexo-generator-archive --save #归档生成器
    npm install hexo-generator-category --save #分类生成器
    npm install hexo-generator-tag --save #标签生成器
    npm install hexo-server --save #本地服务
    npm install hexo-deployer-git --save #hexo通过git发布(必装)
    npm install [email protected] #渲染器
    npm install [email protected] --save #渲染器
  • 安装完成之后跑起来试试

    运行 hexo server 或者 hexo s

GIT配置

HEXO配置

配置文件介绍

  • 全局配置文件_config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
index_generator:
per_page: 10 ##首页默认10篇文章标题 如果值为0不分页
archive_generator:
per_page: 10 ##归档页面默认10篇文章标题
yearly: true ##生成年视图
monthly: true ##生成月视图
tag_generator:
per_page: 10 ##标签分类页面默认10篇文章
category_generator:
per_page: 10 ###分类页面默认10篇文章
feed:
type: atom ##feed类型 atom或者rss2
path: atom.xml ##feed路径
limit: 20 ##feed文章最小数量
deploy:
type: git ##部署类型 其他类型自行google之
repo: <repository url> ##git仓库地址
branch: [branch] ##git 页面分支
message: [message] ##git message建议默认字段update 可以自定义
-多部署
deploy:
type: git
message: update ##git message建议默认字段update 可以自定义
repo:
github: <repository url>,[branch] ##github 仓库地址和分支
gitcafe: <repository url>,[branch] ##gitcafe 仓库地址和分支

主题配置文件_config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Header
menu: #导航栏连接
Home: /
Archives: /archives #归档页面URL
自定义页面标题: /自定义页面URL
rss: /atom.xml #rss地址 默认即可
# Content
excerpt_link: Read More #阅读更多的文字显示
fancybox: true #开启fancybox效果
# Sidebar #侧边栏设置
sidebar: right
widgets:
- category
- tag
- tagcloud
- archive
- recent_posts
# Miscellaneous #社交网络和统计连接地址
google_analytics: #google analytics ID
favicon: /favicon.png #网站的favicon
twitter:
google_plus:
fb_admins:
fb_app_id:

配置主题

这里介绍我自己修改的主题,炒鸡漂亮

基于landscape-plus主题修改 ,GIT地址

演示地址

使用方法,下载下来丢到D:\testblog\themes 文件夹下面就好了

然后修改全局配置文件_config.yml文件里面theme字段

配置GIT发布

1
2
3
4
5
deploy:
type: git
repo: https://github.com/mustfun/mustfun.github.com.git
#我的github是mustfun 换成你本人的
branch: master

上图有哦~

HEXO部署

1
2
3
hexo clean #清除缓存 网页正常情况下可以忽略此条命令
hexo g #生成静态网页
hexo d #开始部署

HEXO预览

那么就成功啦,直接访问mustfun.github.io就可以访问啦,换成你的域名哦


品品我宣你哦~ ^_^

Share

JAVA面试题之基础篇

  1. 九种基本数据类型的大小,以及他们的封装类。各自占多少字节

    boolean, byte, char, short, int, long, float, double, void 还有一种引用类型

    Boolean, Byte, Character, Short, Integer, Long, Float, Double, Void

    存在原因:节省内存开销

    2 2 2 4 8

  2. String 类能被继承吗,为什么。

    不能,String是一个final类

  3. 讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,当 new 的时候,他们的执行顺序

    类实例化的过程中,先执行父类的构造器,然后执行隐式的构造代码,再执行构造方法中的代码

  4. JAVA8 的 ConcurrentHashMap 为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计

    它摒弃了Segment(锁段)的概念,而是启用了一种全新的方式实现,利用CAS算法,段锁性能也不是很高,而CAS操作是CPU支持的操作,是一种原子操作

    1、下面讲一下concurrentHashMap的结构

    ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成(一个segment里面有一个hashEntry数组)。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构

    Read More

Share

如何找到占用CPU和内存最高的线程

一、如何找到CPU和内存占用最高的线程

  1. 代码示例

    我们先来写一段代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @Test
    public void testLinuxTop() throws Exception{
    boolean b=true;
    System.out.println("start the cpu Thread");
    while (b){
    int i=(int)Math.random()*1000;
    if (i%3==1){
    }
    if (i==1000){
    System.out.println("stop");
    b=false;
    }
    }
    }

    随便写了个死循环,然后怎么看下CPU占用情况呢?

    TOP命令

    先用ps -ef|grep tomcat查看一下你当前tomcat的进程号,比如我看出来我的进程号是8545

    然后用TOP命令查看当前所有进程

    1
    2
    top -p 8545
    top -p 8545 -H //这样也可以

    使用地址中,进入了下面这个界面之后就要按H了

    于是你就会看到下面这张图片

    QQ20170301-0@2x

    CPU占用接近满了,内存占用30M,怎么会占用这么多?OK,我们记住PID 8545

  2. jstack命令

    OK,我们在栈里面来找出这段代码,可以直接用jstack把栈里面的东西打出来

    直接使用下面的就可以

    jstack 8545 > stack.log 在你的当前目录下面就会出现一个stack.log文件,这是包括所有的栈信息的,这里的8545是tomcat的进程号tomcat的进程号tomcat的进程号,重要的事情强调一下

    如何找到有问题的代码呢?

    我们刚才拿到了一个CPU最高的进程号8545,OK,转化为16进制,使用下面命令

    1
    2
    3
    printf "%x\n" 8545
    //或者
    printf 0x%x 8545

    上面两种都可以拿到16进制的8545,或者你自己去用计算器拿去,这里我们得到的是0x2162或者2161(上面一种可以直接拿到2161,没有0x),我们要的就是2161

    可以直接到jstack.log文件里面去搜索,就看到出问题的代码了

  3. 想直接看

    下面提供一种直接看的方法

    1
    jstack 8545|grep -A 30 2162

    得到线程堆栈信息中2162这个线程所在行的后面30行

  4. question

    4.1 我使用jstack pid报错了怎么办?

    使用jstack pid可能会出现8545 operation permitted之类的错误,解决办法,请切换至root用户执行命令

  5. over

Share

Logstash中grok filter example例子

一、Logstash

本文适合有部分Logstash经验的人阅读,如果不懂Logstash是什么,请看我另外一篇博文

1、filters

Logstash核心组成部分就包括filters,这是个过滤器。一般日志中还是有很多有用信息的,利用Logstash的filter机制可以将这些信息抽取出来

1)、JSON Filter

​ 这种方式对于日志数据源是json格式的比较有效,这里我不多讲,一般人日志不会特意弄成json格式的吧…

Read More

Share

Logstash学习经验

一、概述

  1. Logstash是什么

    Logstash是一个内置有分析和转换工具的日志分析工具,是一个管道,可以把生产上面的日志从服务器移动到另外一个地方,支持多种格式

  2. 核心配置

    Logstash核心包括inputscodecsfiltersoutputs等,inputs负责将某种格式的日志数据传输到Logstash中,codecs对于数据流进行某种方式处理(如JSON、msgpack、plain等),filters用于过滤信息,outputs是Logstash的输出部分

    Read More

Share

按位逻辑操作符那些事儿

按位操作符运算符概述

在java底层里面,用到了很多这种符号,不对这些按位逻辑符号弄清楚,不容易看懂jdk源码,这里对按位符号做一个简单的梳理

运算符 用法 描述
按位与( AND) a & b 对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。
按位或(OR) `a \ b` 对于每一个比特位,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。
按位异或(XOR) a ^ b 对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。
按位非(NOT) ~ a 反转操作数的比特位,即0变成1,1变成0。
左移(L) a << b a 的二进制形式向左移 b (< 32) 比特位,右边用0填充。
有符号右移 a >> b 将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位。
无符号右移 a >>> b 将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。

这里注意,java里面没有无符号左移,因为无符号左移<<<和左移<<是一样的概念

Read More

Share

写给自己的2017

天地不仁,以万物为刍狗

​ ——平凡的人

​ 转眼2017了,毕业也快1年了,工作也近一年有余了,从离开学校那会儿起,自己的目标是什么?自己想要的是什么,倒现在依然还很模糊,然而,还是这么活着……

​ 但是,唯一我清楚的是,不能再这样继续下去了……

Read More

Share

Array.sort和Collections.sort实现原理解析

Arrays.sort和Collections.sort实现原理解析

1、使用

  • 排序

2、原理

  1. 事实上Collections.sort方法底层就是调用的array.sort方法,而且不论是Collections.sort或者是Arrays.sort方法,

  2. 跟踪下源代码吧,首先我们写个demo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static void main(String[] args) {
    List<String> strings = Arrays.asList("6", "1", "3", "1","2");
    Collections.sort(strings);//sort方法在这里
    for (String string : strings) {
    System.out.println(string);
    }
    }

    简单得不能再简单的方法了,让我们一步步跟踪

    Read More

Share