原创 Perl 閉包實現簡單OO

閉包是個神奇的東西,有很多奇妙地用法,用它可以來模擬實現OO 的一些功能。以下代碼用閉包和消息傳遞的方法實現了OO 繼承,重寫。有興趣可以看看Lisp CLOS 的實現方法,參考用來模擬實現另外一種Perl OO。可以看看Meta pro

原创 Python Gearman 分析(1)

python gearman 分析: 偶然看到這個框架,發現他的用途還是挺廣泛的,讀了他的源碼並嘗試對其進行一個分析,加深自己的理解同時方便以後其他方面的應用和見解。以下是對python gearman的流程的一個深入的分析。Serv

原创 Perl 快排

看了下算法導論中的快排,實現方法不太一樣,重新練習一下。 如圖爲比較過程中的移動: 代碼: # 遞歸 sub qsort2 { return () unless @_; ( qsort( grep

原创 Perl implement Tree data structure (2)

之前用struct實現的Tree不夠靈活,重新使用hash來實現,更加靈活而且可以更改節點,進而實現平衡二叉樹。 以下爲程序代碼: use Data::Dumper; my $tree = {}; add($tree,$_) for (5

原创 Python transfer file through xmlrpc

實際操作中經常要在兩個計算機之間傳輸文件並完成一些處理,共享文件夾只能存在一個固定的地方,FTP則需要單獨下載軟件,用python寫了一個腳本,利用xmlrpc特性傳輸文件。 傳輸中要用xmlrpclib.Binary包裝數據,接收端需要

原创 Perl XML::Simple parse simple xml file

用Perl解析xml文件,又不想下載其它模塊如Dom,可以用XML::Simple來完成這個任務。 實際工作中用到的幾個有用的屬性:1. KeepRoot => 1 生成的hash中顯示根節點,否則從下一層節點開始顯示。2. ForceC

原创 Perl Class::Accessor 分析

最近學習Perl OO, MetaClass 相關的模塊,簡單的分析一下Class::Accessor 這個模塊。功能: 自動實現字段的存取定義函數

原创 Perl dynamic property, method

看Mouse源代碼的過程中發現perl一個很有意思的地方,可以非常方便的動態更新一個已有模塊的方法或者變量,而且這個方法存在於很多其他模塊中,尤其是

原创 Perl 前綴樹實現(2)

在前一篇 Perl 前綴樹實現 中用hash table的方法實現了前綴樹,算法導論中用數組來實現,方法基本相同,下邊用鏈表的方法來實現,遍歷算法可以用到其他樹結構遍歷。 代碼: use Data::Dumper; # 默認只支持字符串

原创 Perl 二叉搜索樹

用Perl 的一般方式實現了一個完整的二叉搜索樹,有如下功能: 1. 插入,刪除,搜索 2. 最大,最小值 3. 某節點的前序節點,後序節點 整個過程中更改了好幾次: 1. 增加了parent 屬性,可以方便的找到父節點,有利於前序後序

原创 Python 快排

上一篇文章用Perl 實現了快排,這裏用Python 實現。 不同點: Perl 傳遞列表slice 實際上還指向父列表相同的元素,這是由Perl 本身的數據結構所決定的。而Python 傳遞slice 則是一個新的列表,所以參數傳遞稍

原创 Perl 前綴樹實現

前綴樹,用來處理大量字符串的查找、排序,也稱爲字典樹,可以代替hash table。 http://en.wikipedia.org/wiki/Trie 以下翻譯自Wikipedia: The following are the ma

原创 Perl 堆排序

看了算法導論堆排序,用Perl 實現一下,具體原理不解釋,做個記錄。 代碼: @a = map {int(rand 100)} 1..20; sub build_heap{ my $length = $#_; fo

原创 字符串循環移位

看到一個練習,判斷兩個相同長度字符串其中一個是否是另外一個循環移位的結果,思路是把其中一個字符串連接自身,用KMP算法判斷另外一個是否是這個字符串的字串。 示例: a: “this testing” b: ”ingthis test“ 判

原创 Perl 引用變量傳入函數中的行爲

程序中遇到一個問題,一個引用變量傳入函數中,如果賦值一個新的引用,則外部引用沒有改變,如果更改引用內容,則變量隨之改變,做個記錄,下次注意。 如下爲示例: sub test1{ my $x = shift; $x = {left=