一致性哈希的php实现

未来项目可能要上memcache集群,memcache集群的key分配完全在客户端完成,服务端不做任何处理,这里对key进行分配节点的最优方式就是使用一致性哈希。

记得以前用mysql进行分库分表的时候,通常会用一个求余作为哈希函数,这样一些id就能对应相应的表了。不过使用mysql的时候,我们不需要考虑这些节点失效问题,以及节点增加或者减少的问题(在此之前应该做好足够的计划和准备),但是对于缓存,通常就比较宽松了,允许节点失效问题,但是普通的hash分配在节点失效之后,大部分的缓存位置都改变了,这显然个灾难,这个时候就要考虑一致性hash了,在增加或者删除节点,只有小部分的key会受影响。 (更多…)

imajax-single,一款全站ajax的博客主题

近半年来,慢慢的制作一款能够适合博客使用的,能够方便阅读的,速度要快主题。灵感来自于wordpress的官方默认主题。

制作缘由

很喜欢wordpress的默认主题twenty-fifteen,但是不是全站ajax,曾经为twenty-fifteen增加过诸多功能,但是使用起来还是特别的不方便,因此就自己制作了一份主题了。

制作过程

断断续续的几个月,有时间就写一点代码,没时间就放着。由于博主现在主要搞后端接口了,所以在前端方面花的功夫就太少了,主题外观感觉看起来中规中矩,不过使用起来应该还是很贴心的。

(更多…)

linux命令桌面壁纸

 

linux命令桌面壁纸 linux命令桌面壁纸

 

作为桌面,再也不怕记不住linux命令了

你可能还喜欢下面这些文章

linux设置虚拟内存(交换空间)方法

场景大多数场景下机器内存是够用的,然而运行某些低频软件的时候可能需要较高内存(如编译软件)。此时再增加较大的物理内存不划算,此时可以通过增加虚拟内存来达到临时增加内存的目的。步骤第一步:使用dd命令创建一个swap文件,大小为1G。命令如下:dd if=/dev/zero of=/home/swap bs=1024 count=1024000bs为一次读写的大小,单位为字节。此处bs=1024表示一次读写的大小为1kb。count为读写的次数,此处count为1024000,表示1024000次,乘以每次读取的1kb,正好是1024000kb,为1G大小。第二步:将文件格式转换为swap格式。

chkconfig给linux添加开机自启动服务,chkconfig命令详解

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。使用语法chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>][系统服务][on/off/reset]chkconfig 在没有参数运行时,会显示所有的服务在开机启动状态。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指 定了on,off或者reset,那么chkconfig 会改

linux awk命令分析你的文本或日志,awk命令用法

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您

【十字星】判断十字星线函数trader_cdldojistar的应用

在蜡烛图中,十字形线是一个反转信号,用来判断当前的趋势是否终止。trader扩展中的函数trader_cdldojistar就是一个查找十字星线的函数。使用方法trader_cdldojistar ( array $open , array $high , array $low , array $close ) : array返回的结果是一个数组,值有-100,100和0。-100表示这是一个底部十字星,100表示这是一个顶部十字星。0表示这不是一个十字星

【锤子线】判断锤子线函数trader_cdlhammer的应用

在蜡烛图技术中,锤子线是一个有效的指标,能预测趋势的反转,详情见锤子线。通过肉眼去观察锤子线不仅费力而且容易出现主观因素导致的错误,php中的trader扩展中的trader_cdlhammer就能判断当前是否是锤子线。使用方法trader_cdlhammer ( array $open , array $high , array $low , array $close ) : array$open 指的是开盘价数组$high 指定是最高价数组$low 指

防雾霾口罩如何去选择

原标题:史上最啰嗦:防霾口罩的通用常识、误区、注意与具体型号的评价、选择建议(以3M牌为例)

写在前面:这是一篇很早前就想过要写文章,但楼主是个月入不过千的街头小贩, 曾担心过要是自己毫无保留的公开便丧失掉了“核心竞争力”,然后因为这点收入也保不住就处境更加艰难(因为我不会为自己做广告);何况因为内容庞杂而自己 又有ADD,要把它写完,耗时简直难以想象。但我在街上见了越多的人选错、戴错口罩,就越发觉得自己可鄙。终于决定:写完它,并欢迎任何人转发,甚至不署 我名字。

【关键点】

哪些口罩无效?

1、凡是叫“××布”(如棉布、无纺布或类似的真丝、丝绒),或称自己整个口罩“可水洗、可重复使用”的口罩都无效。

2、凡是称自己靠“活性炭”、“碳片”过滤的口罩都无效。

3、目前来说,凡是把“PM2.5”字样印在了品牌标签处,或将该字样与类似“率先”“首款”“唯一”“100%”“99.99%”等词放在一起在包装、媒体、网帖、广告里宣扬口罩全部无效或至少不太有效。 (更多…)

wordpress慢了,来用memcache和cdn加速一下吧

我用的vps,用了wordpress之后速度慢了不少,内存,cpu,涨的都厉害,很直观。

于是,写插件吧,虽然wordpress的插件很多,缓存插件也不少,但满足我的需求的却是没有。我要的是这样的

1.使用memcache缓存整个页面。(memcache可压缩缓存,并且我的页面并不多,因此占用并不大)

2.在入口处就加载并且使用缓存(仅仅加载一个我预定义的缓存读取php文件,io极少,速度极快)

需求很少,因为是特定的需求,十分简单,我要的就是整个页面都跑在内存中!

写插件吧……几天之后,一个插件完成了。

hccache缓存插件加速

后台菜单是酱紫的

hccache菜单点开之后是酱紫的 (更多…)

你可能还喜欢下面这些文章

一些比较好看的移动端页面

1.比较清新的图文移动端首页 http://huiyi.csdn.net/2.头条类型的文章  http://geek.csdn.net/3.起点小说移动站点 http://m.qidian.com/

varnish的基本工作原理

Varnish是一个HTPP反向代理缓存,它接受来自客户端的请求并试图从缓存中取出相应的数据来应答,如果缓存中并没有相应的数据,它将会把请求指向后端机器,获取并且储存响应的数据,之后再交付给用户。当varnish有缓存的时候响应通常只需要几微秒的时间,比直接访问后端机器通常要快两个数量级,所以要做的就是尽可能的将页面缓存到varnish中。varnish可以根据后端响应的内容来决定是否储存,在响应头中加入cache-control将会被varnish缓存。使用cookie可以让varnish不缓存。这些都是可以在一个vcl的配置文件( Varnish Configuration Languag

蜘蛛痕迹统计插件,spideranalyse

 

做成了独立插件啦,不集成到主题啦,所有主题都能用啦

20150928123849

插件github地址:https://github.com/cmhc/spideranalyse/

update2015-10-19 (更多…)

你可能还喜欢下面这些文章

wordpress后台增加菜单

添加WordPress顶级管理菜单其实也是一件非常简单的事情,使用两个WordPress内置函数就可以解决问题,分别是add_menu_page()和add_action()。1.在后台添加一级菜单add_menu_page添加菜单,但是需要是用add_action挂到admin_menu的挂钩上去。代码如下add_action( ‘admin_menu’, ‘register_my_custom_menu_page’ );function register_my_custom_menu_page() { add_menu_page( ‘custom menu title’, ‘cust

实现在编辑框(wordpress)粘贴二进制图片数据

ctrl+alt+a,qq截图,鼠标一弄,一张图好了。但是,我得先保存,然后在传到wordpress里面去,对于贴图实在是太麻烦了啊。我记得用ctrl+v可以直接在qq的聊天框粘贴图片啊。那就来改造编辑框,让ctrl+v能够直接把图片粘过来!让文章配图更加流畅!=====本想想用js实现,结果我却找到了插件,不得不说,wordpress的插件实在是,非常的多啊插件叫OnePress Image Elevator,从现在开始我的文章配图就多了起来。安装完之后,使用qq截图,然后再粘贴就非常方便了。附上一个知乎上面的问答,也是关于这个的http://www.zhihu.com/question/2

查看varnish统计信息命令:varnishstat

varnishstat是一个查看当前varnish实例的实时运行状态信息。命令以及参数如下:varnishstat [-1] [-f <glob>] [-h] [-j] [-l] [-n <dir>] [-N <filename>] [-t <seconds | off>] [-V ] [-X]以下选项可用: -1不再显示不断更新的显示,而是将统计信息打印到stdout。-f <glob>Field inclusion glob. Use backslash to escape characters. If the argument

基于信息熵原理分词的php实现

基于信息熵原理分词这个概念很早了,用php实现了个,一气呵成,代码自然是,反正我也没有二次检查,呵呵。不过耗费内存是真的,真的很消耗内存!

写这个的好处就是我明白了很多东西…

代码如下

(更多…)

你可能还喜欢下面这些文章

varnish的基本工作原理

Varnish是一个HTPP反向代理缓存,它接受来自客户端的请求并试图从缓存中取出相应的数据来应答,如果缓存中并没有相应的数据,它将会把请求指向后端机器,获取并且储存响应的数据,之后再交付给用户。当varnish有缓存的时候响应通常只需要几微秒的时间,比直接访问后端机器通常要快两个数量级,所以要做的就是尽可能的将页面缓存到varnish中。varnish可以根据后端响应的内容来决定是否储存,在响应头中加入cache-control将会被varnish缓存。使用cookie可以让varnish不缓存。这些都是可以在一个vcl的配置文件( Varnish Configuration Languag

C++ any容器的介绍与简易实现

一、any容器是什么?1、any“不是”模板类,any是一种很特殊的容器。2、any只能容纳一个元素,但这个元素可以是任意的类型,可以是基本数据类型(int、double、string、标准容器或者任何自定义类型)。3、一种动态(类型检查只发生在运行时)语言特性的数据结构。4、C++17引入,需要RIIT支持,VS默认是没有支持C++17的,需要自己修改设置,如果不能使用any,请修改标准。二、any类摘要class any{public: any(); //默认构造 any(const any& _That); //拷贝构造 template<class _ValueType&

使用php curl 的并发能力可以做什么

在php中,没有多线程让编程变得简单。但在一些需要并发提升性能的场景下,显得有些无能为力,比如发起一些http请求。但好在curl扩展可以让我们“并发”去请求网络资源。利用这个特点,我们能做很多有趣的事情。最基础的,并发请求网络资源,提升处理速度。并发访问代码<?phpclass ConcurrencyHTTP { private $_requests; private $_callbacks; private $_currentIndex = 0; public function get($url, $header = array(), $timeout = 3

utf8编码原理

在我的程序中,基本都使用utf8来编码(除非历史原因,实在是无法转换)。但我用的php在处理中文语言的时候,总显得有些生硬,总感觉没有处理英文那么流畅。比如为什么统计字符的数目要远大于汉字的个数?为什么截断中文乱码?为什么一串英文所组成的字符串可以使用数组的方式访问但是中文字符串为什么就是乱码?等等等等之类的问题。这一切的一切,都是因为对utf8编码不了解所导致的!虽然我们有mb_string这个扩展的对中文有很友好的支持,但对于编码原理,还是需要好好的了解一下。但对于初学者,我想你未必有耐心看完这篇文章,可以跳过直接看程序实例,这篇文章可以作为实例程序的参考作用。

c语言的位操作

一、基本位操作|或&与~取反^异或<<左移>>右移二、位操作的常见用法1.获取某位的值#define BitGet(Number,pos) ((Number)|= 1<<(pos)) //把某位置1#define BitGet(Number,pos) ((Number) &= ~(1<<(pos)) //把某位置0#define BitGet(Number,pos) ((Number) >> (pos)&1)) //用宏得到某数的某位#define BitGet(Number,pos) ((Number) ^=

强化twenty fifteen主题,twenty fifteen pro主题制作过程

被最新的twenty fifteen主题迷上了,这就是我心目中的样式!但有功能还是需要添加的,因此在twenty fifteen的主题基础上,增加了一些功能,命名为twenty fifteen pro主题,目前我所用的主题就是twenty fifteen pro主题。

目前增加的功能有这些

1.专辑文章

将一些文章整个成专辑,比如之前胡超的sublime这个专辑,随便点进去一篇文章,左侧栏都会出现该专辑的系列文章,并且在后台还可以手动控制其排序。

这样的好处就是能够将同类别,教程之类的文章聚合起来,更加利于阅读。

(更多…)