avatar1 avatar
@{[{user.name}]}
希腊·圣域
since February 1500

运行

$ npm update minimatch
$ npm -v minimatch
$ npm install -g npm@3
$ npm -v minimatch
到底什么是HASH和HASH算法? 24 October 2016 16:00:29

讲到 哈希(HASH) 就必然会讲到 哈希算法哈希值

做程序的难免会经常听到看到HASH,印象中只知道HASH运算就是把一串字符转换成一种不重复的字符串,不论是文件,数字,字符串等等都可以进行哈希运算而得到一个唯一的哈希值。当然这样理解是有恰当或者不对的。

它们之间的关系非常简单

一段任意长度的数据 -> 哈希算法 -> 哈希值

哈希算法并不是一个特定的算法,而是一类算法的统称。常见的哈希算法实现有MD5SHA

哈希算法的定义

哈希算法也叫做散列算法,一般来说只要一个算法满足关系:f(data)=value, 输入任意长度的data数据,经过该算法运算后输出一个定长的数据value,同时这个过程是不可逆的,即无法由value推导出data,该算法就可以称作为一个哈希算法。如果对一组数据集做哈希处理,将得到的结果与原始数据集做一一映射后就可以得到一个哈希表。

哈希的两个重要性质

基于哈希的定义而已归纳总结为: 不可逆无冲突

关于哈希值的“重复”

哈希的性质之一为无冲突, 但根据哈希算法的定义,...运算后会输出一个定长的数据..., 即一个哈希算法的值域是有限的,然而输入的原始数据可以是任意长度任何的组合,即原始数据是无穷的,那么这样“重复”是不可以避免的,也就是说有可能两个不同的输入会得到相同的哈希值。那么这样就违背了我们的无冲突的性质,其实冲突是不可避免的,业界内称作 碰撞(Collision),所以这里的无冲突其实是指明:一个好的成熟的哈希算法会有较好的抗冲突性

安全性

总之,如果两个相同的原始输入数据,在同一个哈希算法下一定会得到相同的哈希值,但是哈希值相同的两个原始输入数据不一定相同,即 不可逆

一个简单的哈希算法的例子

以前看过一个简单的例子,讲的是如果你存储了很多歌曲,但是当你要添加新的歌曲的时候为了节省资源要检测一下是否已经存在了,但是同样的歌可以命名不一样的歌曲名字,为了避免这样的事情发生,我们通过计算(哈希算法)获得歌曲的大小(哈希值),通过与新歌的大小对比从而区分出是否该歌曲已经存在。当然不严格的讲计算文件大小的过程也可以称作一个哈希算法,只是这个哈希算法非常脆弱罢了。

总的来说

f(data) = value, 不可逆,抗冲突

Ubuntu随机启动脚本 12 August 2016 20:00:59

前段时间把web应用发布到了ubuntu服务器,除此之外该服务器上还运行着几个python的脚本,每次做完安全更新之后都需要重新启动web应用和脚本,就配了一个随机启动的脚本,今天整理出来吧。

有好几个办法可以实现这个目的,这里我使用的是LSB init script的办法

什么是LSB

LSB的全称是Linux Standard Base, 从名称可以看出它是一个标准化的东西,linux有很多的发型版本,每个发型版本不尽相同,如果没有一套标准的东西约束这么多发型版本,那么开发者无法保障他们可以写出一种脚本在任何发型版本上都没有问题,为解决这个问题一个标准LSB就诞生了,LSB实际上描述了一组任何发型版本必须实现的API。

什么是LSB Init Script

用标准的API设计的初始化脚本

如何使用LSB Init Script

直接举例来讲吧,例如我想我的机器reboot的时候自动运行~/sayHello.py 的脚本.

首先创建一个脚本文件 say_hello (没有拓展名)

#!/bin/bash

### BEGIN INIT INFO
# Provides:          say_hello
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Short description
# Description: 		 Full description
### END INIT INFO

start() {
 nohup python ~/sayHello.py & #后台运行脚本
}

stop() {
  #do nothing
}

case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 <start|stop|restart>"; exit
猛烈的一次头痛(ಥ﹏ಥ) 02 August 2016 15:00:06

偏头痛困扰了许多年了,昨天经历了少有的几次强烈的偏头痛,简直可以用痛不欲生来形容,看来真的需要认真的调理一下了吧。(ಥ﹏ಥ) ( ⸝⸝⸝°_°⸝⸝⸝ )

发现一个不错的壁纸 26 July 2016 14:00:06

今天打开window 10的时候发现锁屏壁纸非常好看,感觉非常适合Mac使用,果断想办法下载下来。

![](/content/images/2016/07/960x540.jpg)
你也喜欢的话欢迎下载:

http://pan.baidu.com/s/1qYmwlwo (电脑)

http://pan.baidu.com/s/1nvzt2A1 (手机)

当前第 2页,一共 4页