`
huangz
  • 浏览: 320411 次
  • 性别: Icon_minigender_1
  • 来自: 广东-清远
社区版块
存档分类
最新评论
文章列表
因为博客迁移至 huangz.me ,以后就不在 iteye 更新了,多谢读者们的支持。   也欢迎继续关注我的新博客,谢谢。
经过两周紧张的工作之后, Redis 命令参考终于完成了 2.6 版本的更新。 这次更新的内容大部分来自于官方文档对 Redis 2.6 版本的更新,包括: Redis 2.6 版本新增的所有命令(EVAL、 PTTL、 TIME 等)的相关文档全部翻译完毕。 官方文档新添加的所有命令模式(pattern),比如 INCR 命令的计数器模式和限速器
简介   哈希表是 redis 的核心结构之一,在 redis 的源码中, dict.c 和 dict.h 就定义了 redis 所使用的哈希结构,在这篇文章中,我们将对 dict.c 和 dict.h 进行注解和分析,籍此加深对 redis 的理解。   因为 dict.c 中使用的 separate chaining 哈希表实现可以在任何一本算法书上找到,因此,在本文中没有对查找和增删等操作做过多的着墨,而是将重点放到整个字典结构的运作流程,以及哈希表的渐进式 rehash 操作上。     数据结构概览 dict.h 中定义了被 dict.c 的程序所使用的几个数据结构 ...
p.396 算法 S   人类史上最简单最直观也是效率最低的查找算法。   # coding: utf-8 """ 算法 S 遍历 lst 逐个查找 key 。 """ def sequential_search(key, lst): n = len(lst) i = 0 while (i < n): if lst[i] == key: return i else: i += 1 ...
导读   本文的目标是为熟悉 Ruby、Python或者其他类似语言、并对 Lisp 或者函数式编程有一定程度了解的程序员写的 Clojure 快速入门指南。   为了让文章尽可能地精炼且简单易懂,本文有以下三个特点:   一:不对读者的知识水平作任何假设,当遇上重要的知识点时,只给出 wikipedia 等网站的链接引用而不对知识点进行解释,有需要的读者可以沿着链接查看,没需要的直接略过就行了。   二:和第一条类似,没有介绍所有 Clojure 的语法和库,但会给出详细资料的引用链接。   三:将 Clojure 中的各项语法和其他常用语言,比如 Ruby 、 Pytho ...
很高兴地告诉各位,对《Redis Command Reference》一文的翻译已经全部完成。在七月份放出前六章的翻译迄今为止已经过去了近半年,前两天本人终于抽出时间(和决心)来完成剩下的四章,现在全文共十个部分的所有命令都已经翻译完毕了。并且,对比 Redis 官方文档,译文还有以下改进:- 修改了官方文档一些拗口的地方,统一了文风(官方文档是多人协作),对于一些不好的例子进行了结构重排甚至重写(比如 sort 命令)- 所有命令都带有代码示例,补齐了一些官方文档没有触及到的地方- 和 Redis 最新稳定版 2.4.2 保持一致,修改和删除了官方文档一些滞后的地方总的来说,译文的质量比起官方 ...
无绪:API 设计的终极目标   在《软件框架设计的艺术》这本书里面,提到一个 API 设计原则,称之为无绪(cluelessness)。   无绪是这样一个概念: API 的设计应该尽可能地『自解释』,让客户端程序员(也即是使用者)通过少量学习甚至不学习的情况下,就能使用该 API 。   举个例子,购买过电子产品的朋友可能就有过这样的经历:一个设计得好的产品,它的操作应该是完全直观、流畅、开箱即用的,你可以在不看一页产品说明书的情况下,将整个产品的功能弄懂。   而如果不幸碰上了设计得不好的产品,你就会发现自己在尝试操作的过程中频繁碰壁,最后只好求助于说明书,客服或者互联网。 ...
上一节,我们测试了广义函数的三个主要的辅助函数 :around,:before 和 :after 的行为。   这次,我们来看看,广义函数在继承关系中的行为,以及特化对象与多重函数等。   广义函数与继承   从书中,我们知道,common lisp和 ...
在《实用common lisp编程》的十六和十七章里面,介绍了common lisp的面向对象支持方式,分别是广义函数和CLOS系统。   书本通过文字叙述得非常详细,但是没有附上相应的代码,本着“没有实验过就没有发言权”的求实态度,我决定从带修饰符的辅助方法、带继承的方法、继承和槽、以及多继承等几个主要知识点着手,在代码方面实现一遍,验证书中的内容。   带辅助方法的主方法   第十六章介绍了几个广义函数的修饰符,主要有 :around , :before 和 :after ,而被装饰符修饰的方法称之为“主方法”(primary method),它们的一般运行顺序如下:   1 ...
嗯,flash 在 linux 下总是有这样那样的问题,比如经常发生的现象就是 flash 中文乱码。   这个问题困扰了我一阵子,搜索了一下,发现网上的方法主要都是对UBUNTU的,而Archlinux还需要一些另外的步骤,所以我这里整理一个完整的解决方案,希望对后来者有帮助。   1.安装文泉驿字体     sudo pacman -S wqy-zhenhei   2.用你的编辑器,打开并修改 /etc/fonts/conf.d/49-sansserif.conf ,修改内容为以下:       <?xml version="1.0"?&g ...
细心的人应该会发现,在第三章的最后,作者只将where函数改成了宏,而update函数仍然是带有重复代码: (defun update (selector-fn &key title artist rating (ripped nil ripped-p)) (setf *db* (mapcar #'(lambda (row) (when (funcall selector-fn row) (if title ...
  1. 引言 **********   Lisp?!啥玩意? ==========   如果你也认为简洁优雅的代码是你的追求,那Lisp就是你的最佳选择。   使用Lisp,你可以写出比其他语言更简洁的代码,同时多快好省地完成工作,改善你的睡眠和性生活。 ...
使用数据的时候,一个数据项常常和另外的一个或多个数据项产生关系,比如一个“人”对象,有一个名字,可能有多个电话号码,以及多个子女,等等。   在传统的SQL数据库中,关系被分为一个个表(table),在表中,每个数据项以主键(primary key)标识,而一个表的主键又作为另一个表的外键(reference key),在两个表之间引用。当遇上多对多关系的时候,还需要一个额外的关联表(reference table),将多对多关系转化成两个一对多关系。   而在MongoDB中,表示关系有两种办法:   一种是嵌套(embedded),既是将一个文档包裹一个子文档;   而另一种 ...
Python有常用的map、reduce等函数,但是没有foreach,不过自己写一个也不难:   定义   # 需要Python3 def foreach(function, iterator): for item in iterator: function(item)   示例 输出所有迭代器中的元素:   >>> foreach(lambda value: print(value), range(5)) 0 1 2 3 4   输出迭代器中的所有偶数:   >>> def ec ...
嘿,让我们换种方式 当我刚开始关注API设计的时候,我决定先找一些相关的资料来看,比如博客日志、PPT还有书,这方面的资料很少,而且最后我发现他们很多都只是单调地列举一些有用的规则,并没有仔细地展开讨论,这些规则可能是有用的,但读起来让人感觉相当乏味,所以我决定自己来写一篇(可能是几篇)关于API设计的文章。 于是我列了一个提纲,把我认为重要的设计原则记录下来,然后对着每条要点准备虚构一个声色俱全的故事,然后我发现我自己的文章变成了之前我看过的八股文格式。。。 于是我决定换种方式,拿之前写的ooredis项目作为引子,来谈谈Python API设计方面的事情,有时候我也引用一些 ...
Global site tag (gtag.js) - Google Analytics