09 2009 档案

摘要:在前面的随笔,关于我写的用python 实现huffman,范式huffman的程序进行性能分析。http://www.cnblogs.com/rocketfan/default.aspx?ref=setskin发现问题出在file.read(1)的大量调用上,我现在不太清楚file.read(1)每次被调用是否都是去硬盘读还是从内存中缓存的文件内容中读,如果是有缓冲机制,那么事实上调用file.... 阅读全文
posted @ 2009-09-30 19:57 阁子 阅读(1291) 评论(1) 推荐(0)
摘要:程序仅为自己学习之用。关于范式huffman的介绍http://blog.pfan.cn/lingdlz/36436.html前面写了huffman压缩,解压缩的程序http://www.cnblogs.com/rocketfan/archive/2009/09/12/1565610.html程序改写了一下,加入了范式huffman压缩,解压缩。实现在设计上利用compressor.py,deco... 阅读全文
posted @ 2009-09-29 20:31 阁子 阅读(1659) 评论(0) 推荐(0)
摘要:1.Proxy代理模式[代码]是一种利用复合(using a)代替继承(is a)的方法,Implementaion不一定需要和Proxy具有相同的接口名称,但是相同的名称更易理解。Python中的委派机制(delegation)使得Proxy的实现可以非常的简洁优美。如下,利用__getattr__,使得程序具有完整的通用性(generic)这是动态语言特有的优势,见Dive Into Pyth... 阅读全文
posted @ 2009-09-27 18:41 阁子 阅读(1236) 评论(0) 推荐(0)
摘要:1. templated method in python书中第三章介绍templated method 模版方法,其核心思想是基类提供相同的运算框架,子类在相同框架基础上提供不同的实现。python 实例如下:[代码]该方法的思想是基类提供一个框架模版,基类在构造函数中完成必要的初始化和启动引擎(templated mehtod),而用户,子类,只需要提供customize1和customize... 阅读全文
posted @ 2009-09-27 16:54 阁子 阅读(551) 评论(0) 推荐(0)
摘要:1.由于python的天然的泛型特征,python 中没有接口继承,所有的继承都是实现继承,子类为了继承父类的实现。2.Singlton 单件模式 singlton in c++ 下面看一个最简单的C++实现,它做到的是通过 类static变量,以及将默认构造函数私有化, 从而使得只能有一个GlobalClass的实体存在, 1#include<iostream>[代码][代码][代... 阅读全文
posted @ 2009-09-27 11:57 阁子 阅读(1882) 评论(0) 推荐(0)
摘要:图的深度优先遍历,是一个基本的DFS框架,需要注意的是1.图可能不联通,需要注意遍历的完整。2.图可能存在环,需要避免死循环。(即使没有环也需要避免重复的访问)所以需要给访问过的点做visit标记,避免重复访问。[代码]图的深度优先周游的一些扩展的核心其实是区别上面算法标出的,前序访问,和后序访问,前序即在深度优先某个节点的所有子节点之前的访问,PreVist后序即在深度优先访问完某个节点的所有子... 阅读全文
posted @ 2009-09-20 07:13 阁子 阅读(3356) 评论(0) 推荐(0)
摘要:这里给一个例子,在n个数字中,任意找k个数字(k<=n),打印所有的可能的情况例如0, 1, 2在这3 个数中,找2个数字,应该打印0, 10, 21, 2这个经典问题可以用递归回溯,或者迭代回溯解决。递归回溯更清晰好理解。[代码] 阅读全文
posted @ 2009-09-20 06:51 阁子 阅读(2719) 评论(0) 推荐(0)
摘要:[代码]二分查找是典型的分治法的应用,要求待查序列排好序,这里都按照从小到大排列处理,查找时间代价o(log(n)).思路和中间的数字比较,如果相等则找到,如果<则在左边找,如果>则在右边找。分治及许多计算机算法的核心就是将问题设法转化为相同的形式问题而规模减小,即子问题。能够找到规模减小的子问题,意味着问题的解决。注意分治不一定非要递归,如果每次只走一个分支,那么循环的写法也非常简单... 阅读全文
posted @ 2009-09-19 18:47 阁子 阅读(1257) 评论(5) 推荐(0)
摘要:每周要供应一定数目的奶酪,但是每周的生产成本可能会变化,而存储成本不会变化,问如何生产代价最低。Sample Input4 588 20089 40097 30091 500Sample Output126900HintOUTPUT DETAILS:In week 1, produce 200 units of yogurt and deliver all of it. In week 2, pr... 阅读全文
posted @ 2009-09-19 12:43 阁子 阅读(503) 评论(0) 推荐(0)
摘要:10 1 50 20 5player might take a card with 1, then 20 and 50, scoring 10*1*50 + 50*20*5 + 10*50*5 = 500+5000+2500 = 8000 If he would take the cards in the opposite order, i.e. 50, then 20, then 1, the ... 阅读全文
posted @ 2009-09-19 11:31 阁子 阅读(530) 评论(0) 推荐(0)
摘要:虚函数表算是面试官最爱问的C++问题了,如果你的简历提到熟悉C++而关于虚函数机制没有回答好,那么你就会被怀疑。。。:)我觉得虽然理解虚函数表不是编程必须的,但是了解一下还是有帮助的,侯捷翻译的<<Inside C++ model>>应该是最详细解释所有这些的了。不过网上有很多很好的资源,下面转载陈皓的文章http://blog.csdn.net/haoel/archive... 阅读全文
posted @ 2009-09-18 12:56 阁子 阅读(3170) 评论(0) 推荐(2)
摘要:看到关于模版很好的一篇总结,转载下,便于查阅。不过最后静态断言的例子,我没能编译通过,待研究。 原文地址http://blog.csdn.net/jarodpku/archive/2009/04/04/4048835.aspx独一无二的C++模板 (1)收藏断断续续地看了《C++Templates》很长时间,在叹服于模板的神奇之余,也不得不承认这是一块充满陷阱的湿地。每次想要动手神奇一把,都会被... 阅读全文
posted @ 2009-09-18 08:29 阁子 阅读(1522) 评论(0) 推荐(0)
摘要:原文请参见http://dirtsimple.org/2004/12/python-is-not-java.htmlPython is not Java下面简单记录其中作者提到的一些观点1.不要将java中的静态函数 static method,转换为python中的类方法(注,类中定义的不带self参数的方法). 尽管作用相同,但是python中的类方法是用来做一些java中不能或者不好实现的效... 阅读全文
posted @ 2009-09-15 22:09 阁子 阅读(2464) 评论(0) 推荐(0)
摘要:原文是C++ VIEW第二期的一篇译文,这里做个总结,便于查阅。 开放封闭原则 系统在添加新的需求的时候能够尽可能做到,只是添加新的代码 open for extension,而不需要修改原有模块代码 closed for modification 通过提取基类的方法,client 调用server 抽象基类abstract server的抽象接口,从而更换不同sever的时候,client的调... 阅读全文
posted @ 2009-09-15 13:11 阁子 阅读(1514) 评论(0) 推荐(0)
摘要:做个小总结:可能是我还没找到更好的方法,但是小遗憾的是,python似乎目前无法支持类似shell脚本,perl所支持的标量内插,所以在显示的时候无法像下面,这种个人感觉,最清晰,方便的方法。比如,用户输人2个变量‘basketball', 'swimming', shell或者per可以如下显示出 I love basketball and swimming the best.#sh... 阅读全文
posted @ 2009-09-14 16:50 阁子 阅读(604) 评论(0) 推荐(0)
摘要:刚刚实现一个初始版本1.TODO 仅仅能处理英文,下一步考虑unicode 似乎考虑多了,当前的程序处理中文文本是一样可以的。2.TODO enocde ,decode,文本读写多重转换 int -> chr chr -> int -> bin下一步直接读写int,能否直接读写bit?3.TODO 其它方面考虑速度的优化,比如垃圾回收机制是否影响了速度等等, 和c/c++比pyt... 阅读全文
posted @ 2009-09-12 23:00 阁子 阅读(4690) 评论(0) 推荐(0)
摘要:def foo(l): l += 'b' l = 'abc' foo(l) print(l) #result 'abc' not 'abcb' l = ['abc'] foo(l) print(l) #result ['abc','b'] 作个总结,网上已经有相关的内容了,这里方便记忆。也许有理解错误的地方:) 先看后一种情况,python中的所有变量传递都是传递引用(感觉类似c中的指针,即... 阅读全文
posted @ 2009-09-11 19:19 阁子 阅读(4953) 评论(0) 推荐(0)
摘要:用法: python treeWriter.py #输出结果到tree.png或者 python treeWriter.py <output_file_name> 注意需要安装 graphviz 和 pygraphviz,安装方法见前一篇随笔。 当前的实现需要用户交互输入二叉树,默认输入-1作为子树空。 如对应上面的图,可输入 1 2 7 –1 –1 8 –1 –1 –1 3 4 1... 阅读全文
posted @ 2009-09-10 17:42 阁子 阅读(7955) 评论(0) 推荐(0)
摘要:Graphviz 适合编程快速绘制流程图之类的图形。而pygraphviz对graphviz进行了封装,提供python程序调用接口。网上有很多对graphiviz进行python封装的程序如pydot等等,个人觉得pygraphviz比较好用,有好的文档和示例程序。https://networkx.lanl.gov/trac/browser/pygraphviz/在ubuntu下面安装 grap... 阅读全文
posted @ 2009-09-09 22:45 阁子 阅读(14213) 评论(4) 推荐(2)