2018
05-09

VPS 上搭建 Hexo

前言

几年前在搬瓦工买了个年付11.9刀的vps,之前一直当梯子用。最近半年由于众所周知的原因,IP被ban了好多次,一开始5周可以免费换一个,现在变成10周。本着不浪费的原则,还是不当梯子了,好好的弄个博客就不错了。
以前用过wordpress,emlog,typecho等等博客系统,总是觉得繁琐一些。最近几年github上好多人用hexo,所以我也体验一下。

准备工作

安装Nginx服务

[root@localhost ~]# yum install nginx

启动Nginx服务,浏览器输入vps的IP地址,
如果出现 "Welcome to Nginx.." 的字样,恭喜!代表你的 Nginx 成功安装并启动。

[root@localhost ~]# service nginx start
Starting nginx:                                            [  OK  ]

vps安装hexo

方案选择

  1. VPS 上执行 hexo server,再配置 Nginx 反向代理,让域名指向 http://localhost:4000
  2. 本地生成静态文件,再部署到 VPS 上,用 Nginx 直接做 Web 服务器。

毋庸置疑,为了安全起见并且在本地能同时 Deploy 到 VPS 和 Github (用作备份)上,选第二中方法肯定是比较好的。

查看全文 >
2018
03-20

json与jsonp的区别

区别

  • json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式。
  • jsonp是一种非官方跨域数据交互协议,该协议允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住json数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

jsonp介绍

jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。
同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。

跨域策略限制情况表


查看全文 >
2018
02-13

CentOS 6.6 免密登陆

================================
操作系统:centos 6.6

服务 :sshd

需修改的配置文件: /etc/sshd/sshd_config

================================

以mac为例

1.打开终端查看是否已经存在SSH密钥:

liujingshengdeMacBook-Air:~ ice$ cat ~/.ssh/id_rsa.pub

ssh-rsa xxxxxABAAABAQCqt5K1/+NfOBX4FgHH86AiU7Vz5dl6uoW3UFHTJpM1OZ/1bvczNXCM4bluMC9d+dmsQAYYsi9fktdMpxEF83v8ln1nVzFsMZJRccLZBYXU3NPJl0KgMw9KQDNOfb0Z8bhtbWkuTTJAavLxHdwKn2HcM7p6dcI875vZOFwgWtXelsxrB5ArlxkX4jiCEDW8ZHIMgZ/QtCJPnMyycd7EalC6oPtlkN+P/4Y6z/jQI7wtSs18/0rZZnlmAD4xrsFn8TDVtMq96OZ4whRS2f9xFhDEgp4TdpUlaagjISqE84X522n+zv1UeNssA3MEIakiyz03xAL0hxxxxxxxxx 123@qq.com
查看全文 >
2017
06-14

单例模式

单例模式(Singleton Pattern):顾名思义,就是只有一个实例。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

为什么要使用PHP单例模式

  1. PHP的应用主要在于数据库应用, 一个应用中会存在大量的数据库操作,在使用面向对象的方式开发时, 如果使用单例模式,则可以避免大量的new 操作消耗的资源,还可以减少数据库连接这样就不容易出现 too many connections情况。
  2. 如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现。
  3. 在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo

单例模式的实现

  1. 私有化一个属性用于存放唯一的一个实例
  2. 私有化构造方法,私有化克隆方法,用来创建并只允许创建一个实例
  3. 公有化静态方法,用于向系统提供这个实例

代码实现

优点:因为静态方法可以在全局范围内被访问,当我们需要一个单例模式的对象时,只需调用getInstance方法,获取先前实例化的对象,无需重新实例化。

    class Singleton{
        //存放实例
        private static $_instance = null;

        //私有化构造方法
        private function __construct(){
            echo "单例模式的实例被构造了";
        }
        //私有化克隆方法
        private function __clone(){

        }

        //公有化获取实例方法
        public static function getInstance(){
            if (!(self::$_instance instanceof Singleton)){
                self::$_instance = new Singleton();
            }
            return self::$_instance;
        }
    }

    $singleton=Singleton::getInstance();

单例模式应用

数据库连接类

<?php
class DBHelper{

    private $link;
    private static $_instance;

    //连接数据库
    private function __construct($host, $username, $password){
        $this->link = mysql_connect($host, $username, $password);
        $this->query("SET NAMES 'utf8'",$this->link));
        return $this->link;
    }

    private function __clone(){

    }

    public static function get_class_nmdb($host, $username, $password){
        if(false ==(self::$_instance instanceof self)){
            self::$_instance = new self($host, $username, $password);
        }
        return self::$_instance;
    }
    public function select_db($database){
        $this->result = mysql_select_db($database);
        return $this->result;
    }
    // 执行SQL语句
    public function query($query)
    {
        return $this->result = mysql_query($query, $this->link);
    }
    // 将结果集保存为数组
    public function fetch_array($fetch_array)
    {
        return $this->result = mysql_fetch_array($fetch_array, MYSQL_ASSOC);
    }
    // 获得记录数目
    public function num_rows($query)
    {
        return $this->result = mysql_num_rows($query);
    }
    // 关闭数据库连接
    public function close()
    {
        return $this->result = mysql_close($this->link);
    }
}
$connector = DBHelper::get_class_nmdb($host, $username, $password);
$connector -> select_db($database);
?>
}
查看全文 >
2017
03-16

keyCode简单应用

Js控制input只允许输入数字的代码

因为 keyCode 属性无法再 Firefox 浏览器中工作,但是 which 属性可以。
如果浏览器支持 event.which 则使用 event.which,否则使用 event.keyCode

此input只允许输入数字:<input onkeyup="if(event.keyCode !=37 && event.keyCode != 39)value=value.replace(/\D/g,'')"><br><br>
此input只允许输入非0数字:<input onkeyup="if(event.keyCode !=37 && event.keyCode != 39)value=value.replace(/\D/g,'');if(value==0)value=1;" value="1">
查看全文 >
2016
11-16

佛祖保佑,永无BUG

“佛祖保佑,永无BUG”的注释代码

/**
 *                  _ooOoo_
 *                 o8888888o
 *                 88" . "88
 *                 (| -_- |)
 *                 O\  =  /O
 *              ____/`---'\____
 *            .'  \\|     |//  `.
 *           /  \\|||  :  |||//  \
 *          /  _||||| -:- |||||-  \
 *          |   | \\\  -  /// |   |
 *          | \_|  ''\---/''  |   |
 *          \  .-\__  `-`  ___/-. /
 *        ___`. .'  /--.--\  `. . __
 *     ."" '<  `.___\_<|>_/___.'  >'"".
 *    | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *    \  \ `-.   \_ __\ /__ _/   .-` /  /
 * ======`-.____`-.___\_____/___.-`____.-'======
 *                  `=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 *                佛祖保佑       永无BUG
 *
 *        佛曰:
 *            写字楼里写字间,写字间里程序员;
 *            程序人员写程序,又拿程序换酒钱。 
 *            酒醒只在网上坐,酒醉还来网下眠;
 *            酒醉酒醒日复日,网上网下年复年。
 *            但愿老死电脑间,不愿鞠躬老板前;
 *            奔驰宝马贵者趣,公交自行程序员。
 *            别人笑我忒疯癫,我笑自己命太贱;
 *            不见满街漂亮妹,哪个归得程序员?
 *
 */
查看全文 >
2016
10-18

总结JS中==判断特例

转自白俊遥博客

首先上场的是NaN:

NaN在js中是一个神(xian)奇(jing)的存在;
它用来代表不是数字、不可表示的值;
如果我们理解了它代表的是不可表示的值;
那么也就能接受打印的false了;

NaN == NaN;// false

接着是关于作为除数的-0;

1/0 == 1/-0;// false

如果我们理解了1/0结果是正无穷大、1/-0结果是负无穷大;
那么也就能接受打印的false了;

查看全文 >
微信扫一扫