华子的代码空间

逆水行舟,不进则退。 关注系统编程、网络编程、并发、分布式。

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页

2012年12月17日

tornado的gist

摘要: http://tornadogists.org/ 阅读全文

posted @ 2012-12-17 17:51 华子的代码空间 阅读(154) 评论(0) 推荐(0) 编辑

在tornado的异步http请求中托管一个阻塞的任务到线程池

摘要: 实际代码中使用的是进程池,不过代码很简单,你可以将它替换为线程池。 1 from time import sleep 2 from tornado.httpserver import HTTPServer 3 from tornado.ioloop import IOLoop 4 from tornado.web import Application, asynchronous, RequestHandler 5 from multiprocessing.pool import ThreadPool 6 7 _workers = ThreadPool(10) 8 9 def run_b... 阅读全文

posted @ 2012-12-17 17:43 华子的代码空间 阅读(717) 评论(0) 推荐(0) 编辑

2012年12月15日

python的参数传递机制

摘要: 调用函数时,函数参数仅仅是引用传入对象的名称。参数传递的基本语义和其他编程语言中已知的方式不完全相同。例如“按值传递” 或 “按引用传递”。例如,如果传递不可变的值(如tuple、string list),参数看起来实际是按值传递的。但如果传递可变变量(如列表或字典)给函数,然后再修改次可变对象,这些改动就会反映在原始对象中。像这样悄悄修改其输入值或者程序其他部分的函数具有副作用。一般来说,最好避免使用这种编程风格,因为随着程序的规模和复杂度不断增加,这类函数会成为各种奇怪编程错误的来源。(例如,如果函数具有副作用,只看函数调用是无法明显找到问题的。)在设计线程和并发性的程序中,使用此类函数的 阅读全文

posted @ 2012-12-15 01:47 华子的代码空间 阅读(434) 评论(0) 推荐(0) 编辑

用LL(1)递归下降语法器构造一个计算器

摘要: LL(1)何为LL(1)?通俗来说就是向前看一个词法单元的自顶向下解析器。两个L都代表left-to-right,第一个L表示解析器按“从左到右”的顺序解析输入内容;第二个L表示下降解析时也是按“从左到右”的顺序遍历子节点。而(1)表示它使用一个向前看 词法单元。我们从一个简单的计算器来看看递归下降的语法器如何构造。对于 2 + 3 * 5 的抽象语法树如下:我们可以使用如下文法表示计算表达式:# expr ::= expr addop term | term# term ::= term mulop factor | factor# factor ::= number | ( expr )# 阅读全文

posted @ 2012-12-15 01:41 华子的代码空间 阅读(788) 评论(0) 推荐(0) 编辑

Python使用spark模块构造计算器

摘要: Spark简介Spark 解析器与 EBNF 语法有一些共同之处,但它将解析/处理过程分成了比传统的 EBNF 语法所允许的更小的组件。Spark 的优点在于,它对整个过程中每一步操作的控制都进行了微调,还提供了将定制代码插入到过程中的能力。Spark的最新版是10年前发布的,真是非常的长寿,可见设计精良。其中的采用的设计模式有Reflection Pattern、Visitor Pattern、Pipes and Filters Pattern和StrategyPattern。初识Spark第一次知道Spark这个模块是在IBM的网站[3]上看到的。第一次激起我学习这个模块的兴趣是在看Pyt 阅读全文

posted @ 2012-12-15 01:31 华子的代码空间 阅读(662) 评论(0) 推荐(0) 编辑

说说Python程序的执行过程

摘要: 1. Python是一门解释型语言?我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并且把一些基础概念给理清。2. 解释型语言和编译型语言计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。编译型语 阅读全文

posted @ 2012-12-15 01:27 华子的代码空间 阅读(368) 评论(0) 推荐(0) 编辑

2012年12月13日

apue编译错误汇总(Ubuntu 12.04)

摘要: apue源码make:/usr/include/bits/timex.h:31:7: 错误:expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ be的解决方法如题,出现这个问题的原因是在timex.h的第31行出现了status的定义:intstatus;/*clockcommand/status*/而文件apue.2e/ipp/ipp.h中有宏定义:#definestatusu.st这样编译的时候就出问题了,如编译提示:expected‘:’,‘,’,‘;’,‘}’or‘__attribute__’before‘.’token解决方法是把ipp.h文 阅读全文

posted @ 2012-12-13 11:27 华子的代码空间 阅读(266) 评论(0) 推荐(0) 编辑

ubuntu 12.04下配置APUE环境

摘要: 今天开始学习《unix高级编程》出现了奇怪的gcc链接错误 说找不到XXX.h文件找了很多资料原来是缺少glibc 所以综合了大家的建议,希望对大家有用1 获得源码从apue的官方网站http://www.apuebook.com/下载源码。2 WKDIR编辑源码解压生成的apue.2e文件夹下的Make.defines.linux修改WKDIR=/home/sar/apue.2e为你的apue.2e目录,比如我的apue源码解压在主目录下,那我就改为:WKDIR=/home/tgl/apue.2e3 nawk然后进入apue.2e/std 目录,编辑linux.mk。修改里面所有的nawk为 阅读全文

posted @ 2012-12-13 11:24 华子的代码空间 阅读(368) 评论(0) 推荐(0) 编辑

2012年12月10日

tornado的gen.engine浅析

摘要: 1. 首先看看示例代码,也是官方给出的: 1 class Main(RequestHandler): 2 @tornado.web.asynchronous 3 @gen.engine 4 def get(self): 5 if _DEBUG: 6 pdb.set_trace() 7 http_client = AsyncHTTPClient() 8 response = yield gen.Task(http_client.fetch, "http://code.rootk.com") 9 ... 阅读全文

posted @ 2012-12-10 22:48 华子的代码空间 阅读(2625) 评论(0) 推荐(1) 编辑

2012年12月4日

再谈python的属性拦截

摘要: __setattr__是python重载协议中的内容,用于在实例中设置属性。实际使用方式:class Old(object): def __init__(self): pass def __setattr__(self, key, value): print "__setattr__: ", key, value object.__setattr__(self, key, value) def __getattribute__(self, key): print "__getattribute__: ",... 阅读全文

posted @ 2012-12-04 21:29 华子的代码空间 阅读(1044) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页

导航