原创 AMPS:單向鏈表源碼解讀

  像單向鏈表、雙向鏈表、堆、棧等這些基本的數據結構在大型軟件中均有很廣泛的使用,所以今天看一下AMPS中單向鏈表的操作函數庫,其定義了單向鏈表的非常多的操作API,且提供了回調函數接口,從而使鏈表結構用於不同類型的結點,且可以使用戶自定

原创 AMPS:內存管理(二)

  對於底層的內存管理,AMPS提供了另外一種優化機制,一旦使用底層的內存分配函數(如C的malloc)爲內存對象分配好一個大的buffer後,當這個內存對象銷燬時,AMPS將這個本來要ree掉buffer存儲在一個內部按內存塊大小化分的

原创 軟件:防止代碼變質的思考與方法

本文轉自:http://impd.tencent.com/?p=100 1、軟件長期運營存在什麼問題 一個大規模的客戶端軟件的生命週期中,我們可以把它分爲兩個比較粗的時期。一個是前期的搭建軟件的時期,即從無到有的時期;第二個是搭建完

原创 Linux:tee命令

作用:將輸出不僅顯示在標準輸入設備上,而且同時輸出到文件中。 舉例: kevin@kevin:~/mybash$ ifconfig | tee ipinfo.log eth0 Link encap:以太網 硬件地址 0

原创 AMPS:定時器管理

  定時器模塊是協議服務器的關鍵組件之一,幾乎每個協議軟件都設計有超時機制。在多線程的軟件中,定時器的最大問題是去除了異步,這使得保護每個會話相關的數據結構變得不可避免。APMS提供了基本的定時器管理API,主要的設計目標如下:  定時

原创 AMPS:內存管理(一)

  高效的內存管理是卓越的軟件產品的必備特徵,如果在分配和釋放內存時包含了代價高昂的查找、排序、重新組合操作,內存處理可能會成爲系統性能的瓶頸。AMPS內存管理子系統的設計目標如下: 內存管理必須快且系統開銷小。在不引入垃圾收集器的前提

原创 Python: 發送新浪微博(使用oauth2)

1、申請個應用,得到App Key和App Secret 2、設置授權回調頁地址,如下,如果不設置,打開回調頁時會報錯“error:redirect_uri_mismatch”,這一點一定要注意。 3、代碼: #!/usr/

原创 Linux: tar.gz、tar、bz2、zip等解壓縮、壓縮命令小結

本文轉自:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出來的包我們常稱爲tar包,tar包文件的命令通常都是以.tar結尾的。生成tar

原创 Python:讀取新浪微博收聽列表

代碼: #!/usr/bin/env python # -*- coding: utf-8 -*- from weibo import * import time def press_sina_weibo(): AP

原创 AMPS:非阻塞模塊和I/O代理

  AMPS中模塊分爲非阻塞、阻塞和I/O 代理兩種類型。   無阻塞模塊:如發送和接收網絡消息,或者讀寫文件。  阻塞模塊和I/O代理:               有些場景下阻塞可能無法實現,例如DNS查詢或者數據庫交互。這種場景下

原创 AMPS:事件管理

1、AMPS中的事件類型有請求、響應、通知。 2、模塊間通信:   Figure 1(a)中module1產生一個請求R1,module2註冊了這個請求,事件調度程序將這R1傳送給module2,module處理請求後產生RES1,mo

原创 Linux:使用()執行一組命令

在子shell中執行一組命令。 方式:(command1 ; command2 ; command3) 如果不帶(),則在當前shell中執行。 [kevin@kevin ~]$ ll 總用量 8 drwxrwxr-x 2 k

原创 Python:DNS客戶端實現

  這兩天在測試IPV6與DNS,晚上查了下資料,寫了個DNS客戶端,其中請求消息編碼部分參考網上實例。   剛完成了編碼,功能還沒有測試。 1、代碼: #!/usr/bin/env python # -*- coding: ut

原创 AMPS:Trace模塊源碼解讀

  從本節起,開始分析AMPS各模塊的源碼,其中主要地方均加了中文註釋。   跟蹤功能與通常軟件使用的日誌功能類似,但記錄的信息比日誌更詳細,通過它可以看出整個代碼的運行軌跡,AMPS支持多以下幾種跟蹤級別:  ERROR WARNIN

原创 Linux:後臺命令crontab、at

1、crontab使用舉例 每天23:00向/tmp/datecon.log文件中寫入系統日期 kevin@kevin:/opt/d00148588$ crontab -l no crontab for kevin kevin@k