愿历经千帆,归来仍少年


  • 首页

  • 归档

  • 标签

  • 搜索

Markdown语法小记

发表于 2017-10-17

段落、标题、区块代码

一个以上的空行则会划分出不同的段落,一般的段落不需要用空白或者换行缩进。

Markdown的标题支持Setext 和atx形式的语法。Setex形式利用=(最高节标题)和-(第二阶标题);atx形式在行首插入1到6个#,对应标题1到6阶。

区块引用则使用email形式的’>’角括号。

修辞和强调

Markdown 使用星号(*强调内容*)和底线(_强调内容_)来标记需要强调的区段。

  • And I am not hip-hop and I just not Eminem.
  • And I am not hip-hop and I just not Eminem.

用两个 * 或 _ 包起来的话,则会产生加粗的效果。

列表

无序列表使用星号、加号和减号来做为列表的项目标记,这些符号是都可以使用的。
一般输出效果如下:

  • eminem
  • tupac
  • snop dogg

有序的列表则是使用一般的数字接着一个英文句点作为项目标记:

  1. tupac
  2. snop doggy
  3. eminem

链接

Markdown 支援两种形式的链接语法: 行内 和 参考 两种形式,两种都是使用角括号来把文字转成连结。

行内形式是直接在后面用括号直接接上链接.

U better lose Urself in the github

参考形式的链接让你可以为链接定一个名称,之后你可以在文件的其他地方定义该链接的内容:
如下形式定义:

1
2
3
U better lose Urself in the [github][1]
[1]: https://xianfeng92.github.io/

图片

图片的语法和链接很像。
行内形式(title 是选择性的):

1
![alt text](/path/to/img.jpg "Title")

参考形式:

![alt text][id]

[id]: /path/to/img.jpg “Title”

反斜杠

Markdown 利用反斜杠来插入一些在语法中有其它意义的符号。

代码区域

要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或是 1 个制表符就可以。

分割线

你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。


单例模式

发表于 2017-10-17

1.Singleton Pattern

单列指的是某一种类只有一个实例,而且自行实例化并向整个系统提供这个实例。有以下三个特点:

  • 自行实例化,该类的构造方法为private,外界对象无法通过new实例化。
  • 提供了全局的访问方法供整个系统所使用。
  • 整个系统中只会存在一个该类的实例。

1.1 饿汉式单例

1
2
3
4
5
6
7
8
class EagerSingleton {
private static final EagerSingleton instance = new EagerSingleton();
private EagerSingleton() { }
public static EagerSingleton getInstance() {
return instance;
}
}

当类被加载时,静态变量instance会被初始化,此时类的私有构造函数会被调用,单例类的唯一实例将被创建。

1.2懒汉式单例

1
2
3
4
5
6
7
8
9
10
11
class LazySingleton {
private static LazySingleton instance = null;
private LazySingleton() { }
synchronized public static LazySingleton getInstance() { //使用synchronize确保多线程下的安全性
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}

懒汉式单例在第一次调用getInstance()方法时实例化,在类加载时并不自行实例化,这种技术又称为延迟加载(Lazy Load)技术,即需要的时候再加载实例。

  • 饿汉式单例类与懒汉式单例类比较:饿汉式单例在类被加载时就将自己实例化,故无需考虑多线程访问的问题,可以确保实例的唯一性;从调用速度和反应时间来说,由于单例对象从一开始就得以创建,因此要优于懒汉式单例。但是无论系统在运行时是否使用该单例对象,由于在类加载时该对象就需要创建,因此从资源利用效率角度,饿汉式不及懒汉式。而且系统加载时需要创建饿汉式单例对象,加载时间可能会比较长。懒汉式在第一次使用时创建,实现了延迟加载,但是必须处理好多线程访问的问题。无论是简单的加锁或是双重锁检查机制,都会对系统的性能产生一定影响。

1.3 双重检查锁定(Double-Check Locking,DCL)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class LazySingleton {
private volatile static LazySingleton instance = null; //由于volatile关键字会屏蔽Java虚拟机所做的一些代码优化,可能会导致系统运行效率降低,因此即使使用双重检查锁定来实现单例模式也不是一种完美的实现方式。
private LazySingleton() { }
public static LazySingleton getInstance() {
//第一重判断
if (instance == null) {
//锁定代码块
synchronized (LazySingleton.class) {
//第二重判断
if (instance == null) {
instance = new LazySingleton(); // 创建单例实例
}
}
}
return instance;
}
}

进一步了解双重检查锁定与延迟初始化

1.4 一种更好的单例实现方法(Initialization Demand Holder,IoDH)

1
2
3
4
5
6
7
8
9
10
11
12
//Initialization on Demand Holder
class Singleton{
private Singleton(){ }
private static class HolderClass{
private static final Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return HolderClass.instance;
}
}

Python基础

发表于 2017-10-15

闲着无聊,整理点python基础知识,顺便也当熟悉Markdown的语法规则.ps:今天才发现利用Chrome上的LiveReload+Subline Text,可以本地实时测试博客网页,爽歪歪呀.

1. 基本概念

1. Python有四种数据类型,分别为整数,长整数,浮点数以及复数

2. 字符串

  • python中的字符串可以用单引号或者双引号来表示
  • 字符串前面加r或者R,如字符串r”see you again \n”,则\n会显示出来
  • 对于“see” “you” “again”,python会将其自动转换为“see you again”
  • 类似于Java,Python中字符串也是不可变的

3.对象

python中Everything is object

4.缩进

python使用4个空格来缩进代码.例如:

1
2
3
def fun(n):
for i in range(n):
print("the number of n =",n)

2.函数

Python中使用def关键字定义函数,其格式为:

1
2
def 函数名(参数列表): #参数可为空
函数体

1.可变参数列表和默认参数

Python中可以定义可变参数的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
def sum_all(*args):
sum = 0
for x in args:
sun += x
return sum
print(sum_all(10,19,12) # 输出 41
print(sum_all(19,1,3)) #输出23
def fun(a,b=9,c=8):
print(a+b+c)
fun(1) #输出 18
fun(1,2) #输出 11
fun(1,2,3) #输出 6

#3. 数据结构
Python中常见的三种数据结构:list,tuple,dict

3.1 list

list是一种可变的有序列表,常见操作如下:

1
2
3
4
5
6
7
8
9
$ L = ['love','the','way','you','lie']
$ L2 = ['lose','yourself']
$ L.append9'Eminem') # 在L列表后面添加一个字符串 Eminem 项
$ L.extend(L2) # 用给入的L2列表将L列表接长
$ L2.insert(0,'Eminem') # 在L2的第一个元素处插入Eminem
$ L.remove('lie') # 移除L列表中第一个值为lie的元素
$ L.pop(2) # 删除L列表中第三个元素
$ L.index('love') # 返回L列表中第一个值为love的索引
$ L.count(“love”) # 统计L列表中love出现的次数

  • list当作stack

    1
    2
    3
    4
    $ stack = ['i','need','a','doctor']
    $ stack.append('tupac') # push 'tupac' into stack
    $ stack,append('eminem') # push 'eminem' into satck
    $ stack.pop() # pop the 'eminem' --------后进先出
  • list当作queue
    可以使用list来实现queue,queue特性是先入先出

    1
    未完......

Mac系统上搭建hexo-github环境

发表于 2017-10-15

1. Hexo简介

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。安装 Hexo 相当简单。然而在安装前,您必须检查电脑中是否已安装下列应用程序:

1
2
Node.js
Git

2. nodejs和git的安装

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。 Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O)模型。它的包生态系统,npm,是目前世界上最大的开源库生态系统。我们可以直接从官网下载最新的nodejs 并安装(https://nodejs.org/zh-cn/).

除此之外,在Mac上还可以通过使用 Homebrew 安装 Node.js,具体命令:

1
2
$ brew update
$ brew install node

安装后,Terminal依次输入:

1
2
$ node -v
$ npm -v

来查看电脑上安装的版本号,确保其版本号为较新的,这样使用npm安装hexo才不会出现一系列问题。

如果node为旧版本,可以通过Terminal:

1
2
3
$ sudo npm install -g n # 管理nodejs的版本
$ sudo n latest # 升级到最新版本
$ sudo n stable # 升级到稳定版

git的安装相对简单,在Mac上可以使用Homebrew来安装:

1
$ brew install git

3. 安装 Hexo

所有必备的应用程序安装完成后,在终端依次输入并回车:

Terminal:

1
2
3
4
5
6
7
$ mkdir hexo
$ cd /hexo
$ npm install -g hexo-cli
$ hexo init blog
$ cd blog
$ npm install
$ hexo g -d # 生成静态文件并部署博客到远端(比如github, heroku等平台)

打开浏览器,输入http://localhost:4000/ ,看到以下页面说明hexo环境安装成功。

Ps.安装好了hexo以后,注册一个github账号,创建一个repo,将hexo和repo关联起来.最后效果图如下:

4. 个性化Blog

在Hexo中有两份主要的配置文件,其名称都为_config.yml.其中,一份位于站点根目录下,主要包含Hexo本身的配置(站点配置文件);另一份位于主题目录下,这份配置由主题作者提供,主要用于配置主题相关的选项(主题配置文件).

1. Next主题

Next主题的安装:

1
2
$ cd your-hexo-site
$ git clone https://github.com/iissnan/hexo-theme-next theme

然后在站点的配置文件中修改:

1
theme: next

2.验证主题

启动本地站点:

1
2
$ hexo c #清除站点缓存
$ hexo s

当命令行输出一下信息表示站点正确运行:

1
INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.

3.主题设定

Scheme 是 NexT 提供的一种特性,借助于 Scheme,NexT 为你提供多种不同的外观。同时,几乎所有的配置都可以 在 Scheme 之间共用。目前 NexT 支持三种 Scheme,他们是:

  • Muse - 默认 Scheme,这是 NexT 最初的版本,黑白主调,大量留白.
  • Mist - Muse 的紧凑版本,整洁有序的单栏外观
  • Pisces - 双栏 Scheme,小家碧玉似的清新,小清新,我喜欢.

关于博客的菜单,侧栏,站点描述等设置,可以参考:http://theme-next.iissnan.com/getting-started.html

1. 头像设置

博客怎能没有一个有个性的头像呢?然而头像设置让我在折腾了好久好久,周六晚上弄到半夜四点多,最惨的是还没有弄好~醉了.具体步骤如下:

  • 选择一个中意头像.如:love.jpg
  • 打开主题配置文件_config.yml
  • 找到如下信息,并进行配置:
    1
    2
    3
    custom_log:
    enabled: ture
    image: images/love.jpg # 实际在image的love.jpg 要改为 avatar.gif.

不知道为啥要这样.

2. blog中图片上传

  • 将主题配置文件_config.yml 里的post_asset_folder:这个选项设置为true
    此时运行下面命令生成博客时:
    1
    $ hexo n demo

在/source/_posts文件下除了demo.md,还会有一个demo文件夹

  • 在博客的根目录下:

    1
    $ npm install hexo-asset-image --save # 有点慢,耐心等待
  • 在demo.md中想要引入love.jpg图片时,只需要将love.jpg放到demo文件夹下,然后demo.md中写:

    1
    ![你想输入的替代文字](love.jpg)

Hello World

发表于 2017-10-12

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

12
大侠先锋

大侠先锋

15 日志
8 标签
GitHub ZhiHu
© 2017 大侠先锋
由 Hexo 强力驱动
主题 - NexT.Pisces
感谢小清妹妹的支持
访问量 总访问量次