- 博客(34)
- 收藏
- 关注
原创 博客迁移至 huangz.me
因为博客迁移至 huangz.me ,以后就不在 iteye 更新了,多谢读者们的支持。 也欢迎继续关注我的新博客,谢谢。
2012-06-23 17:41:41 280
原创 Redis 命令参考 2.6 版本发布
经过两周紧张的工作之后, Redis 命令参考终于完成了 2.6 版本的更新。这次更新的内容大部分来自于官方文档对 Redis 2.6 版本的更新,包括:Redis 2.6 版本新增的所有命令(EVAL、 PTTL、 TIME 等)的相关文档全部翻译完毕。官方文档新添加的所有命令模式(pattern),比如 INCR 命令的计数器模式和限速器模式, EXPIRE 命令的导...
2012-04-02 14:21:04 192
原创 Redis 源码分析(1):字典和哈希表(dict.c 和 dict.h)
简介 哈希表是 redis 的核心结构之一,在 redis 的源码中, dict.c 和 dict.h 就定义了 redis 所使用的哈希结构,在这篇文章中,我们将对 dict.c 和 dict.h 进行注解和分析,籍此加深对 redis 的理解。 因为 dict.c 中使用的 separate chaining 哈希表实现可以在任何一本算法书上找到,因此,在本文中没有对查找和增删...
2012-03-17 16:19:17 537
原创 TAoCP 6.1 Sequential Searching 顺序查找算法的实现
p.396 算法 S 人类史上最简单最直观也是效率最低的查找算法。 # coding: utf-8"""算法 S遍历 lst 逐个查找 key 。"""def sequential_search(key, lst): n = len(lst) i = 0 while (i < n): if l...
2012-03-14 13:59:37 207
原创 Clojure 快速入门指南:1/3
导读 本文的目标是为熟悉 Ruby、Python或者其他类似语言、并对 Lisp 或者函数式编程有一定程度了解的程序员写的 Clojure 快速入门指南。 为了让文章尽可能地精炼且简单易懂,本文有以下三个特点: 一:不对读者的知识水平作任何假设,当遇上重要的知识点时,只给出 wikipedia 等网站的链接引用而不对知识点进行解释,有需要的读者可以沿着链接查看,没需要的直接...
2011-12-25 17:03:18 233
原创 《 Redis命令参考》全文翻译完毕
很高兴地告诉各位,对《Redis Command Reference》一文的翻译已经全部完成。在七月份放出前六章的翻译迄今为止已经过去了近半年,前两天本人终于抽出时间(和决心)来完成剩下的四章,现在全文共十个部分的所有命令都已经翻译完毕了。并且,对比 Redis 官方文档,译文还有以下改进:- 修改了官方文档一些拗口的地方,统一了文风(官方文档是多人协作),对于一些不好的例子进行了结构重排甚至重写...
2011-12-17 20:17:57 153
原创 Python API 设计(2):无绪和一致性
无绪:API 设计的终极目标 在《软件框架设计的艺术》这本书里面,提到一个 API 设计原则,称之为无绪(cluelessness)。 无绪是这样一个概念: API 的设计应该尽可能地『自解释』,让客户端程序员(也即是使用者)通过少量学习甚至不学习的情况下,就能使用该 API 。 举个例子,购买过电子产品的朋友可能就有过这样的经历:一个设计得好的产品,它的操作应该是完全直观...
2011-12-10 12:51:42 188
原创 《实用Common Lisp编程》第16-17章,面向对象细节补遗(2):广义函数与继承
上一节,我们测试了广义函数的三个主要的辅助函数 :around,:before 和 :after 的行为。 这次,我们来看看,广义函数在继承关系中的行为,以及特化对象与多重函数等。 广义函数与继承 从书中,我们知道,common lisp和其他常见的 oop 最大的不同是,common lisp的多态行为是用广义函数而不是常见的对象方法来实现的。 对一个广义函数来说...
2011-11-06 18:46:59 245
原创 《实用Common Lisp编程》第16-17章,面向对象细节补遗(1):辅助方法
在《实用common lisp编程》的十六和十七章里面,介绍了common lisp的面向对象支持方式,分别是广义函数和CLOS系统。 书本通过文字叙述得非常详细,但是没有附上相应的代码,本着“没有实验过就没有发言权”的求实态度,我决定从带修饰符的辅助方法、带继承的方法、继承和槽、以及多继承等几个主要知识点着手,在代码方面实现一遍,验证书中的内容。 带辅助方法的主方法 第十...
2011-11-06 12:36:17 214
原创 解决Archlinux系统Flash乱码
嗯,flash 在 linux 下总是有这样那样的问题,比如经常发生的现象就是 flash 中文乱码。 这个问题困扰了我一阵子,搜索了一下,发现网上的方法主要都是对UBUNTU的,而Archlinux还需要一些另外的步骤,所以我这里整理一个完整的解决方案,希望对后来者有帮助。 1.安装文泉驿字体 sudo pacman -S wqy-zhenhei 2.用你的...
2011-11-03 13:02:56 220
原创 《实用Common Lisp编程》第三章,update 函数补遗
细心的人应该会发现,在第三章的最后,作者只将where函数改成了宏,而update函数仍然是带有重复代码:(defun update (selector-fn &key title artist rating (ripped nil ripped-p)) (setf *db* (mapcar #'(lambda (row...
2011-11-01 20:07:31 183
原创 Practical Common Lisp [个人翻译版]
1. 引言********** Lisp?!啥玩意?========== 如果你也认为简洁优雅的代码是你的追求,那Lisp就是你的最佳选择。 使用Lisp,你可以写出比其他语言更简洁的代码,同时多快好省地完成工作,改善你的睡眠和性生活。 这似乎有点耸人听闻,你仿佛看到了在三万米高空上漂浮的奶牛——我能证明 Lisp 比其他语言更好吗?这本书就是我的答案...
2011-10-16 00:21:29 542
原创 MongoDB数据库关系表示和设计:(1)嵌套文档和引用链接
使用数据的时候,一个数据项常常和另外的一个或多个数据项产生关系,比如一个“人”对象,有一个名字,可能有多个电话号码,以及多个子女,等等。 在传统的SQL数据库中,关系被分为一个个表(table),在表中,每个数据项以主键(primary key)标识,而一个表的主键又作为另一个表的外键(reference key),在两个表之间引用。当遇上多对多关系的时候,还需要一个额外的关联表(refe...
2011-10-14 16:07:37 219
原创 Python中的foreach
Python有常用的map、reduce等函数,但是没有foreach,不过自己写一个也不难: 定义 # 需要Python3def foreach(function, iterator): for item in iterator: function(item) 示例输出所有迭代器中的元素: >>> fo...
2011-09-08 19:22:26 17638 1
原创 Python API 设计(1):关于 OORedis 中的类继承
嘿,让我们换种方式当我刚开始关注API设计的时候,我决定先找一些相关的资料来看,比如博客日志、PPT还有书,这方面的资料很少,而且最后我发现他们很多都只是单调地列举一些有用的规则,并没有仔细地展开讨论,这些规则可能是有用的,但读起来让人感觉相当乏味,所以我决定自己来写一篇(可能是几篇)关于API设计的文章。于是我列了一个提纲,把我认为重要的设计原则记录下来,然后对着每条要点准备虚构...
2011-09-02 08:36:36 140
原创 OOREDIS:一个Pythonic的Redis库。
用Redis的朋友们应该会发现,Redis的很多客户端都只是Redis命令的一个简单包装。 举个例子,在Redis的Python客户端redis-py中,设置一个String键的方法如下: >>> from redis import Redis >>> r = Redis >>> r.set('key_name', '...
2011-08-06 19:45:51 152
Redis命令参考中文版(Redis Command Reference)
Redis命令参考中文版,翻译自Redis Command Reference。 所有命令已经翻译完毕! 阅读地址: http://redis.readthedocs.org/ 欢迎反馈。update 2011.10.23本文档现在已经支持 Redis 2.4 版本了,enjoy! update 2011.12.17原本剩下的四个部分也已经译完...
2011-07-13 16:33:58 175
原创 Android开发环境搭建完全图解
本文介绍从0开始,在Linux系统下,搭建一个Android开发环境的方法。如果你是《Learning Android》这本书的读者,你也可以参考这篇文章,因为这篇文章是以书中的安装方法为基础而写的。(如果你不是也没有关系,反正步骤都是一样的 :))所谓Android的开发环境,主要是以下两个组件,Android Software Developer Kit(Android软件开发...
2011-06-24 12:28:43 193
原创 Redis、MongoDB、ZODB速度比较(小数据量)
刚才用100kb的小文本文件,用1000次循环,在我的本本上,对redis(via redis-py),mongodb(via py-mongo)和ZODB(Zope的数据库,OODB,直接使用key-value模式,没有依附其他数据结构)进行了小规模写入和读取测试。发现一些结果,有些有点意外:逐次写入:也就是for record in file: db.inse...
2011-06-22 10:25:12 1473 1
原创 Redis命令参考(Commands Reference)中文翻译【Set部分】
注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。 SADD key member将member元素加入到集合key当中。如果member元素已经是该集合的成员,那SADD命令不执行任何操作。假如key不存在,则创建一个只包含member元素作成员的集合。当key不是集合类型时,返回一个错误。...
2011-06-17 11:53:12 221
原创 TAoCP 2.2.2 - 2.2.3 Queue (队列)
Queue (队列),俗称FIFO结构,主要操作有两个,enqueue(入队)和dequeue(出队),数组实现还有一个succ(回绕)操作。 图里只画了链表结构的enqueue和dequeue,还有线性结构的succ。 代码只做了线性结构的,其他自己补完吧。 :) #! /usr/bin/env python3# coding:utf-8...
2011-06-16 11:04:12 104
原创 TAoCP 2.2.2 - 2.2.3 :Stack (栈)
Stack (栈) 操作限制在push和pop(最多还有top)的linear list(线性表)。 暂时只有链表实现,数组实现也不难,自己写写看吧~ #! /usr/bin/env python3# coding:utf-8class StackError(Exception): passclass StackOverFlow(StackE...
2011-06-11 09:38:32 125
原创 轮子是如何被重复地造出来的
跟朋友逛公园,归途路上,我说起最近为数据库技术选型的烦恼。我:“现在光是数据库都有十多种,真TM难以抉择阿。”友:“怎么会有那么多?”我:”写软件的人喜欢重复造轮子。“友:“那选一个最好的阿。“我:”烦恼的就是没有最好的。比如其中一个,速度快,但是功能稍弱;另一个则是功能强,但是速度没有前一个快。“友:“那真是挺累人的,有其他办法不?“我:“唯有自己写一个了,还得保证它比现有的工具都好才行——而且...
2011-06-10 12:42:51 133
原创 TAoCP 2.2.3 : Single Linked List(单链表)
single linked list(单链表) 主要的操作是iter(遍历)、insert(插入)、find(查找)和delete(删除)。 以上操作的时间复杂度都是O(N)。 #! /usr/bin/env python3# coding:utf-8class SingleLinkedListError(Exception): passclass...
2011-06-08 19:47:52 100
原创 TAoCP 2.2.2 - 2.2.3 : Linked / Sequential Allocation (链接/顺序内存分配)
TAoCP第一卷,2.2.2 和 2.2.3 节的内容。 图示是链接/顺序储存在内存中的表现。
2011-06-08 19:39:42 263
原创 关于redis命令参考的翻译工作
虽然比计划慢了一些,但redis commands reference的工作仍在进行中。 redis命令参考的翻译原本只是作为博文发表,但最近我受到启发,也打算将译文通过RST(SPHNIX)格式或者PDF格式,作为一个单独的文件发布到其他地方。因为原本作为博文发表,所以没有留底稿,所以在格式转换的过程中遇到了不少麻烦,于是我干脆就重审一遍翻译和代码,将各个部分分开,并分别更新博文...
2011-06-07 10:11:08 115
原创 Redis命令参考(Commands Reference)中文翻译【Hash部分】
注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。 HASH部分HDEL key field 删除key储存的哈希表(hash)中的指定域(field)。 复杂度: O(1) 返回值: 若域存在并被成功删除,返回1。 ...
2011-06-07 09:57:22 176
原创 Redis命令参考(Commands Reference)中文翻译【String部分】
注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。 String部分APPEND key value 如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。 如果key不存在,APPEND就简单地将指定key设为value,就像SET key val...
2011-06-07 09:55:59 205
原创 【进行中】Redis命令参考(Commands Reference)中文翻译【List部分】
注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。 BLPOP key [key ...] timeout BLPOP是一个阻塞列表的弹出原语。 它是LPOP的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞。 当给定多个key参数时,按传入key的先后检查列...
2011-05-13 09:09:27 117
原创 UNIX环境高级编程(第二版)/ APUE 源码编译与使用
为了用APUE的源码折腾了一下,网上很多方法都不能用,或者有小问题,特此记录。 注意,不同环境的编译提示有所不同,如果你的环境和我的相似,那么应该没问题。 环境 Linux mypad 2.6.38-ARCH #1 SMP PREEMPT Tue May 3 06:04:40 UTC 2011 i686 Intel(R) Core(TM)2 Duo CPU T657...
2011-05-09 01:40:49 200
原创 Redis命令参考(Commands Reference)中文翻译【Key部分】
注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。 进度 Redis的官方命令参考共10个部分(Keys, Strings, Hashes, Lists ...)。计划每3-5天更新一部分,但不保证。欢迎任何积极性意见和反馈@huangz1990 2011.4.17 Keys部分完成...
2011-04-17 15:37:47 201
原创 MongoDB学习笔记
参考资料: 《MongoDB:The Definitive Guide》 http://book.douban.com/subject/4746684/ 《MongoDB官方文档》 http://www.mongodb.org/display/DOCS/Home 什么是MongoDB: MongoDB是10gen公司开发的一个NoSQL产品,它的主要特点是:非...
2011-04-11 11:11:04 148
原创 《具体数学》第一章笔记
今天开始读《Concrete Mathematics》这本书,前言很有趣,值得一看。正文只读了第一章,不清楚这本书是否真的有豆瓣上别人评论的那么玄乎、那么高深,不过读了前言和第一章之后,起码我觉得这是本非常有趣的数学书,至于牛不牛X,下回分解。总的来说,第一章理解起来不算难,不过JOSEPHUS问题的小节看到后面的部分就不太明白了,课后的练习也不是太明白,嘛。。暂且放一放,先继续阅读下去再...
2010-11-16 19:29:53 146
MIT6.945课程,SICP课程的继任者。
之前曾有新闻说SICP6.001课程被最新得6.00、6.01、6.02所替代,6.001正式“退休”。而在刚收到的MITOCW上的订阅邮件,MIT更新了OCW网页上的课程,其中新课程有一门6.945 Adventures in Advanced Symbolic Programming,级别是Graduate,由Gerald Sussman(SICP的作者之一)教授,其中阅读列表中包含了SICP...
2009-12-16 19:13:29 418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人