Archive for the ‘Linux’ Category.

shell脚本输出颜色

写shell脚本时,用echo命令输出内容,这我们都知道。但是怎么给输出内容上点色呢?

其实很简单,利用-e参数,即启用反斜杠转义的解释。

Continue reading ‘shell脚本输出颜色’ »

线程安全–彻底搞懂volatile关键字

对于volatile这个关键字,相信很多朋友都听说过,甚至使用过,这个关键字虽然字面上理解起来比较简单,但是要用好起来却不是一件容易的事。
这篇文章将从多个方面来讲解volatile,让你对它更加理解。

Continue reading ‘线程安全–彻底搞懂volatile关键字’ »

从远程仓库获取最后一个git标签而不进行克隆

如何从(非签出)远程仓库中获取最后一个标签?
在我的本地副本上,我使用describe

git describe --abbrev=0 --tags

但我不能使用describe与远程存储

最佳答案
使用git ls-remote –tags [repository]

Continue reading ‘从远程仓库获取最后一个git标签而不进行克隆’ »

KETAMA算法:基于虚节点的一致性哈希算法

一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。Memcached client也选择这种算法,解决将key-value均匀分配到众多Memcached server上的问题。它可以取代传统的取模操作,解决了取模操作无法应对增删Memcached Server的问题(增删server会导致同一个key,在get操作时分配不到数据真正存储的server,命中率会急剧下降),详细的介绍在这篇帖 子中http://www.iteye.com/topic/611976(后文指代这篇文章的地方均称为引文)。

[下面以Memcached的分布式问题为讨论点,但将Memcached server抽象为节点(Node)]
引文中描述的一致性Hash算法有个潜在的问题是:
将节点hash后会不均匀地分布在环上,这样大量key在寻找节点时,会存在key命中各个节点的概率差别较大,无法实现有效的负载均衡。
如有三个节点Node1,Node2,Node3,分布在环上时三个节点挨的很近,落在环上的key寻找节点时,大量key顺时针总是分配给Node2,而其它两个节点被找到的概率都会很小。 

这种问题的解决方案可以有:
改善Hash算法,均匀分配各节点到环上;[引文]使用虚拟节点的思想,为每个物理节点(服务器)在圆上分配100~200个点。这样就能抑制分布不均 匀,最大限度地减小服务器增减时的缓存重新分布。用户数据映射在虚拟节点上,就表示用户数据真正存储位置是在该虚拟节点代表的实际物理服务器上。

在查看Spy Memcached client时,发现它采用一种称为Ketama的Hash算法,以虚拟节点的思想,解决Memcached的分布式问题。
Continue reading ‘KETAMA算法:基于虚节点的一致性哈希算法’ »

Linux系统调用(syscall)原理(转)—-很旧的一篇文章,不过可以作为参考

引言:分析Android源码的过程中,要想从上至下完全明白一行代码,往往涉及app、framework、native一直到kernel,可能迷失到代码世界,明白了系统调用原理,或许能帮你峰回路转,找到进入kernel函数的入口。本文主要讲解ARM架构相关源码:

 

Continue reading ‘Linux系统调用(syscall)原理(转)—-很旧的一篇文章,不过可以作为参考’ »