Awezome

  • 主页
  • 随笔
所有文章 友链 关于我

Awezome

  • 主页
  • 随笔

关于 redis 文档 lrange start > end 情况的一点说明

2014-05-13

redis 官方文档里对 lrange start > end 说了这样一句话

If start is larger than the end of the list, an empty list is returned.

就是说 start > end 就会返回一个空list ,不过这里还有一种特殊情况。就是end 为负数时,比如

1
lrange ilist 0 -1

那么它会返回整个 list ,这里先不考虑极端情况。就和 an empty list is returned 相冲突,这是其中一种理解方式。另一种是负数在list里不是指小于0的自然数,而是指list尾端的数,比如

1
2
3
4
5
6
7
8
9
127.0.0.1:6379> RPUSH lst 1 3 5 7 9
(integer) 5

127.0.0.1:6379> LRANGE lst 0 -1
1) "1"
2) "3"
3) "5"
4) "7"
5) "9"

那么此时-1指的是5, 也就符合了 0 <-1 =5 的情况,文档就没有错了。
总的来说,还是文档有要严谨的地方。

p.s. 后来发现 end 包括 stop 及 -1 的情况,文档没有问题。

  • redis
  • Other

阅读全文

跳表 Skip List 的基本概念

2014-05-12

跳表的原始表就是一个普通的链表,查找元素的时间复杂度为 O(N), 可以先看图中的原始表一行,其它先不管。那么查找117元素就要找8次才可以,如果这个链表超长的话当然时间也就会越多,这就体现出跳表的优点来。

skiplist
原始表生成跳表的方法是提取索引,第一是相隔一定个数后提取出跳表索引第0层,也就是
7 -> 21 -> 37 -> 71

然后再根据第0层提取出第一层来。那么我们的top 指针也指向最高层的链表的头结点,也就是图中 跳表第1层的最左端。这里的提取密度和层数根据需要,当然还有一些说法,这里不讲,只说基本概念。

那么我们再查找117就简单了,先比较第1层的第一个元素,37 < 117,再找37下一个元素,没有,跳到 下一层的37的下一个元素71,71 > 117,再跳到下一层,也就是最原始层71的下一个元素85。 85 <117 ,再下一个,找到了。

相应查找的算法为:

1
2
3
4
5
6
p=top
While(1){
while (p->next->key < x ) p=p->next;
If (p->down == NULL ) return p->next
p=p->down ;
}

总结
跳表的构造过程是:
给定一个有序的链表。
选择连表中最大和最小的元素,然后从其他元素中按照一定算法随即选出一些元素,将这些元素组成有序链表。这个新的链表称为一层,原链表称为其下一层。
为刚选出的每个元素添加一个指针域,这个指针指向下一层中值同自己相等的元素。Top指针指向该层首元素
重复2、3步,直到不再能选择出除最大最小元素以外的元素。

跳表的特征:
一个跳表应该有几个层(level)组成;
跳表的第一层包含所有的元素;
每一层都是一个有序的链表;
如果元素x出现在第i层,则所有比i小的层都包含x;
第i层的元素通过一个down指针指向下一层拥有相同值的元素;
在每一层中,-1和1两个元素都出现(分别表示INT_MIN和INT_MAX);
Top指针指向最高层的第一个元素。

  • 算法
  • Algorithm

阅读全文

更改 vagrant 虚拟磁盘的默认路径

2014-05-11

至少在我的电脑上 vagrant 默认是放在了 c:/user 里,本来很小的系统盘在 vagrant add box 后就更小了,然后再加上 virtual box 也放在 系统盘里,一下就多了好几个G。最直接的方法当然是把他们给移到其它盘去。

在这之前,要简单说一下 vagrant 的几个命令后的到底动了哪几个大文件。

一点原理

首先我们会用 vagrant add box ,这个是把下载好的比如 fedora.box 文件加载到
C:\Users\user_name.vagrant.d\boxes 里,并解成 packer-fedora-20-i386-disk1.vmdk 类似的 virtual box 可识别的文件,当然还有一些其它的像 Vagrantfile 配置文件。也就是说有多少种不同的 add box 就会生成多少个 vmdk ,那当然要占空间了。

接下来我们会 vagrant init , 这个没大文件,就是在当前目录下生成个 Vagrantfile。不过对于第一次 vagrant up就会在 C:\Users\user_name.VirtualBox\VirtualBox VMs 生成过G的 vmdk ,这个是直接具体的实例。

对于上面讲的简单说就是 add box 是根据 .box 生成一个模板,放在 .vagrant.d\boxes ,以后每次 init & up 时就会再用这个模板再生成具体的实例,放在.VirtualBox\VirtualBox VMs 。也就是说我们要把 .vagrant.d VirtualBox VMs 给挪了。

下面是具体的操作

更改 VirtualBox 虚拟机 VirtualBox VMs 文件的位置

  • vagrant
  • Linux

阅读全文

纯 PHP (Html) + Css 实现组织结构图

2014-05-09

网上有很多开源的js版本的组织结构图工具,不过假设有这么个场景,有一个10多m的xml文件,里面是组织关系,要用php解析,再到js生成,这个两个过程都是很费时的,尤其是js的渲染过程,大部分的js版本都是再生成div的方式,这肯定会更加的慢了。

我的方法是,直接用php输出一个相应的html结构,我用的是一定结构的table,再通过css画画线就搞定了。具体的实现方法直接看代码就ok了。有问题可以讨论。

github : https://github.com/Awezome/PHP-to-OrgChart

sreenshot

纯Html实现看这里
https://github.com/Awezome/PHP-to-OrgChart/blob/master/demo/pureHtml.html
通过php数组生成看这里
https://github.com/Awezome/PHP-to-OrgChart/blob/master/demo/simple.php

php的使用方法

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
27
28
29
30
31
32
33
34
35
include '../src/PHPtoOrgChart.php';
$data=array(
'a'=>array(
'aa'=>array(
'aaa'=>'Mike',
'aab'=>'Look',
'aac'=>'Rum',
),
'bb'=>array(
'aaa'=>'123',
'aab'=>'567',
'aac'=>'890',
'bbdd'=>array(
'aaa'=>'123',
'aab'=>'567',
'aac'=>'890',
),
),
),
'b'=>array(
'cc'=>array(
'aaa'=>'Mike',
'aab'=>'Look',
'aac'=>'Rum',
),
'dd'=>array(
'aaa'=>'123',
'aab'=>'567',
'aac'=>'890',
),
),
);
echo '<div class="orgchart">';
PHPtoOrgChart($data);
echo '</div>';
  • php
  • html
  • css
  • PHP

阅读全文

使用 sublime text 3 及相关技巧、插件、美化、快捷键

2014-05-07

第一次用sublime时好像还是 2 的 20xx 的某个版本,当时就是看着比 nodepad++ 漂亮,不过用了几天因为处理大文件和对编码处理不好放弃了,后来就是出了个 ConvertToUTF8 也不怎么理想。直到现在,再度拿出,按自己的需求跑了一遍,以前遇到的问题都ok了,果断把它作为默认的编辑器。

下面是一些相关技巧、插件、美化,会不定时更新。

安装 Sublime Text 3

1
http://www.sublimetext.com/3

字体大小
在这里修改配置preferences -> settings-user

1
"font_size": 14

不记住最后打开的文件

1
2
"hot_exit": false,
"remember_open_files": false
  • sublime
  • Other

阅读全文

明基 KX800 键盘入手

2014-05-05

最近一直在找键盘,公司的火山口太难用了。想入手机械键盘一件,型号都选好了,后来感觉最好用的还是自己破笔记本的键盘,很轻的X架构,打起字来也不累。于是就是网上搜寻,关键字是,非巧克力,超薄,X架构和有线。选来选去定了两个,一个是双飞燕的wk210, 另一个就是 明基 KX800 。在京东上看到wk210差评很多,又查到 明基 在历史上出了几款很有名的键盘,最终就选了明基 KX800,虽然是3年前的产品,不过到手使用后还是非常超赞的,手感特别好。

benq

  • 键盘
  • Other

阅读全文

强制 IE Document Mode

2014-05-05

接上篇,如果把某个网站加到了ie的兼容性列表里,自然ie 会在ie7 下显示,一些“高级”的样式就会被严重忽视。当然这里会有一些方法来“破解”这些问题,强制以某个版本的 ie 来显示当前的页面。

1
2
3
4
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<meta http-equiv="X-UA-Compatible" content="IE=10" />

这些X-UA-Compatible是可以直接无视本地兼容列表和DOCTYPE的,优先级很高。

当然还有一个实用的用法,就是一直以最高的ie mode来渲染。装了ie8就以ie8来渲染,装了ie10就以ie10来渲染。

1
<meta http-equiv="x-ua-compatible" content="IE=edge">

为了更好的支持,不管用哪个版本的浏览器,标记是不能少的。

1
<!DOCTYPE html>

x-ua-compatible 的负面影响还没有研究,做为一个业余的前端开发,真是体会到了ie的事真多。
还有一些高级的用法可以看这里和那里
http://msdn.microsoft.com/en-us/library/ie/jj676916(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ie/jj676915(v=vs.85).aspx

  • ie
  • Html

阅读全文

本地前端开发 Document mode 为ie7 default 问题

2014-05-05

一直在本地默默的修改另一套 WordPress 主题,本地的环境都ok, 但是用ie 跑的时候确一直是图中的丑样。查看 Source <!DOCTYPE html> 局然是被注释掉了,难到是不知写了什么影响了?

1

接下来查看Document mode局然是ie7 default , 当然对于ie7 来说不支持rgba 的css标签。

2

下面的一行字到时引起了我的注意。Via local compatibility view settings. 本地的兼容列表设置-检查一下:Alt –> Tools –> Compatibility View Settings

3

okay ,把127.0.0.1 remove 掉,刷新,查看 Document mode:

4

  • ie
  • Html

阅读全文

php strstr stristr strpos

2014-04-16

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
Note:
该函数区分大小写。如果想要不区分大小写,请使用 stristr()。
Note:
如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。
from : http://www.php.net/manual/zh/function.strstr.php

  • php
  • PHP

阅读全文

xshell Solarized Dark配色

2014-04-10

Solarized Dark Plus.xcs 注意每行末尾不要有空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Solarized Dark]
text=ffffff
cyan(bold)=93a1a1
text(bold)=ffffff
magenta=dd3682
green=2aa198
green(bold)=859900
background=002b36
cyan=2aa198
red(bold)=cb4b16
yellow=b58900
magenta(bold)=6c71c4
yellow(bold)=657b83
red=dc322f
white=eee8d5
blue(bold)=268bd2
white(bold)=fdf6e3
black=002b36
blue=ffce3c
black(bold)=073642
[Names]
name0=Solarized Dark
count=1
  • xshell
  • Other

阅读全文

« Prev123456Next »
© 2014-2019 Awezome
Hexo Theme Zilia by Awezome