青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

XGuru's Blog

技術,是一種態度。關注:高性能后端技術/服務器架構/C++/C/LAMP

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  20 Posts :: 0 Stories :: 93 Comments :: 0 Trackbacks

公告





twitter / xoXGuru

feedsky
抓虾
google reader
鲜果
QQ邮箱
九点

常用鏈接

留言簿(12)

搜索

  •  

最新評論

閱讀排行榜

#

最近重溫《Python源碼剖析》一書,將python基本對象的要點記錄如下
python 整數對象
1.python中的整數使用c語言中的long類型存儲
2.python int進行加法會檢查結果是否溢出,如果溢出則自動轉換為pyLongObject對象
3.python中的文檔無縫集成在語言實現中
1 = 11
2 print a.__doc__

4.小整數對象完全緩存在內存中,其他整數對象輪流使用一塊內存空間
5.小整數對象在python初始化中調用的_PyInt_Init中創建,然后就一直存在著, 直到python虛擬機退出

python String對象
1.pyStringObject在創建之后,內部維護的字符串不能再改變
2.intern機制是否只在字符數組長度0或者1的時候使用? 書中提供的代碼太過于精簡了,沒講清楚,但是看后面的演示結果,應該是所有的字符串都實現了intern機制
3.字符串連接操作嚴重影響python程序執行效率,使用join只需分配一次內存,能夠大大提高效率.用法舉例
"".join(['s1','s2','s3'])

Python Dict對象
1.Python中的dict采用hashtable而不是R-B Tree。
2.采用開放定址法解決沖突。
3.為保證沖突探測鏈的連續性,采用偽刪除技術,active對象刪除則設置為dummy態
4.為減少沖突,轉載率大于2/3時則改變table的大小,每次增大4倍,如果table中的active態的元素個數大于50000時(巨型表),
則放慢增長速度,每次增長2倍??梢钥闯鯬ython中dict的查找效率較高,而對于內存的使用是省了又省,還考慮了巨型表增長減少倍數。

Python List對象
1.PyListObject類似STL中的Vector。
2.Python對內存的使用十分節儉,如果list改變的新尺寸不到分配內存的1/2,則收縮內存.
3.在Pylist中建插入元素需要逐個移動后面的元素,類似C中的數組,因此需要盡量避免對中間元素的插入和刪除操作。
4.STL和PyListObject自動擴容算法對比:個人覺得list改名為array比較恰當一些,嘿嘿
//sgi STL:
len 
= (old_size != 0 )?2*oldsize:1
//(不夠用則擴充兩倍,如果開始為空則設置為1)
//Python:
new_allocated
=(newsize>>3)+(newsize<9?3:6)
//(???)
5.對于增長倍數的選擇,這里有討論
http://en.w3support.net/index.php?db=so&id=1100311

p70書中筆誤 :"allcated/2"應改為"allocated/2"

posted @ 2011-07-21 23:16 XGuru 閱讀(2554) | 評論 (1)編輯 收藏

via :Kevin Watters's blog
譯:XGuru

原始狀態

    我曾經觀看過小提琴家非常有激情地拉弦演奏,我有了這種想法:也許我投入到文本編輯器中的腦細胞數量和他為投入所喜好的樂器的演奏中差不多吧。我還有種奇異的想象,當他獨奏的時候,腦中的核磁共振圖和我在使用VIM中操控代碼的的圖像也許不會相差太大吧?





    如果你愿意的話請你仔細思考下,以下是一個vimmer的學習旅程的剪輯




Vim涅磐所經歷的漫長而艱苦的道路


星期一

    “Eclipse當然是簡潔實用的”

    “但是一些滿臉落腮胡的奇怪家伙在工作中似乎使用vim確實非常快,我應該試一下。”

    “好吧!我弄了個Gvim,這看起來不是很糟糕,這里甚至還有菜單界面!”

    “等什么?我的文本去哪了?等一下,撤銷,不要??!”

    “:help”

    “:q!!!!!”

    今天剩下的時間還是回到擁有讓人上癮的自動補全樣板功能的Eclipse中獲得解脫吧


星期二

     “好吧 vim,這是新的一天了,這是個磨礪自己學習新東西的一個嶄新的機會,我不是那么容易放棄的人!”

    “為什么我就不能一直呆在插入模式里面呢?FJDSAKLFJDALSKJKLDF(發狂的敲擊鍵盤)”

    “等一下,你在告訴我保存的時候必須按ESC-shift-冒號-w-回車?這簡直就是狗屁啊”

    “在花了2個小時學習教程以后,我基本上懂的就是ddp命令可以交換兩行的內容,真是蛋疼啊”




一個禮拜以后

     “哇噢,任何地方都有vim阿,這意味著這付出的所有的努力將不會白費,比如當我用ssh遠程登入主機修改一些配置的時候”

     “太爽了,嘿,朋友們來看看這個全暗色的配色主題,我新的工具鏈表面上看起來非常安逸了”

     “噢,真是扯蛋,我的.vimrc沒有在我的遠程主機里,當我ssh登入編輯一些配置的時候,所有我的酷玩意都沒了”




兩個月以后

     HJKL的移動方式習慣成自然,你神秘的失去了使用鼠標的能力。

    “我將始終使用我剛下載的這400個插件!尤其是這個折疊latex語法的插件,噢,哥們”

    “使用小箭頭方向鍵簡直是自我折磨阿”

    “再見,Caps Lock鍵”

    “就這樣吧,這是忍耐的極限,vim甚至不能讓文本合適的自動換行,我準備回到edit.com了”



一年后

    更少的大聲說話了。

    安裝command-T插件,每天節約成百上千次的鍵盤敲擊。

    用宏試著讓你肩膀后的某個人感到印象深刻,通過在整個文件里混合大小寫和參雜ROT13暗碼(回轉十三位加密)。

    最終在某個奇跡般的一天學會在肌肉記憶里用ctrl+[來延緩了腕關節炎癥降臨。

    學會了移動光標,使用visual模式和*鍵----這意味著已經沒有退路了。

    “vim不支持交互性緩存?都20年了?好吧,作為一名黑客,我決定給它添加這項支持。”

    查看vim代碼庫,瘋狂地讓它向相反的方向運行。

    “誰無論如何也需要在編輯器里弄個控制臺?我就是所有的unix哲學。”

    對周圍的”vim只是將一個編輯模式合并到真正的編輯器中“觀念感到無可忍耐。

    因為你老是在房間里令人討厭地回復”:w”,IRC的朋友們最后將你孤立


兩年以后

    vim腳本就是一種對上帝的深惡痛絕。

    有點覺得emacs的從始至終的指令模式相對有點像在天堂一樣。

    我昨晚做了一個噩夢,夢到我始終沒有學會在寬屏顯示器中垂直切分窗口,這樣提心吊膽真是夠混帳阿。

    偷偷地瞄一下周圍,綁定ctrl+s到保存,允許自己悄悄地松一口氣。

    意識到hjkl搜索定位不足以成為終極時間節約工具,發現:python腳本,所建立的大量定制功能達到鼎盛期,對<Leader>key綁定直到你的鍵盤類似于NASA指揮中心控制面板一樣有點繁多到荒謬的功能感覺有一點糟糕。

   “嘿,每個聽的到我聲音的家伙過來看看,我現在控制電腦,寫博客,檢查郵件,運行測試,調試程序,瀏覽黑客新聞
           所有的一切都能在vim溫暖舒適,超級可以定制化的母體中進行”

    為什么你這小子不做幾個后空翻來慶祝一下呢?



模糊又很長某段時間之后

    在“文本編輯中模態的明顯的優勢”演講結束后失去了幾個朋友。


    盡情享受在github.com/me/vimfiles中分享自己配置的快樂中,有義務完成關于如何特立獨行地安裝語法檢查,lint工具,自動補全,快速文檔查看,成噸的殺手級縮寫,世界上所有文件類型對應的插件,使vim在每種功能的高效性上接近真正的IDE的博客帖子。開機時間日志寫入服務器,下意識地使用nano來編輯配置文件。不會為沒有使用插件和vimrc中的更多語法而更新所有的配置文件而感到深深的羞愧。

    變得十分淡定,重復性的編輯任務再也難不住你,不再去參加emacs與vim誰好誰壞的爭論
。

...這就是你用vim時大腦的終級形態






 --EOF--
Creative commons license
by XGuru is licensed under a Creative Commons 署名-非商業性使用-相同方式共享 2.5 中國大陸 License.

posted @ 2010-12-22 23:05 XGuru 閱讀(13348) | 評論 (11)編輯 收藏

via:git.or.cz


posted @ 2010-12-01 11:54 XGuru 閱讀(1078) | 評論 (3)編輯 收藏

2010 developer’s problem solving sequence:

from: 


1.Google
    技術上的問題多去google,wikipedia上看看絕對沒錯,想看性用品廣告就多上上Baidu。

2.Coworkers
    找同事幫忙,如果你的同事熱心腸而且技術不錯,而且遇到過類似的問題,他的建議就會很顯得非常寶貴,也許就能一針見效。

3.StackOverflow
    去編程互助網站搜索下答案,不行就上去發帖提提問,熱心人還是蠻多的,但是感覺這個網站上的Java/.Net的問題比較多。

4.RTFM
    讀下令人郁悶的幫助文檔(Read the f*cking manual),在linux下man一下或者查看下MSDN文檔,mannual文檔一般會組織得很好,很清晰。但是語言表達得太專業化了,有時候會讓人很郁悶。

5.Think
    最后不行了,還是自己想下怎么解決問題吧,求人不如求己。

posted @ 2010-10-24 15:18 XGuru 閱讀(10690) | 評論 (8)編輯 收藏

大家都為linux下壓縮格式繁多,而且每種格式都對應不同的命令,這是個很讓人頭疼的問題。
我就介紹個方法給大家:
在bashrc里加入

ex () {
  
if [ -f $1 ] ; then
    
case $1 in
      
*.tar.bz2)   tar xjf $1        ;;
      
*.tar.gz)    tar xzf $1     ;;
      
*.bz2)       bunzip2 $1       ;;
      
*.rar)       rar x $1     ;;
      
*.gz)        gunzip $1     ;;
      
*.tar)       tar xf $1        ;;
      
*.tbz2)      tar xjf $1      ;;
      
*.tgz)       tar xzf $1       ;;
      
*.zip)       unzip $1     ;;
      
*.Z)         uncompress $1  ;;
      
*.7z)        7z x $1    ;;
      
*)           echo "無法解壓'$1'文件!!" ;;
    esac
  
else
    echo 
"'$1' 不是一個合法的文件!"
  fi
}



解壓文件的的話只需要簡單輸入"ex [壓縮文檔]"就可以了,如果你有其他格式的壓縮文檔格式也可以自己加入進來。
從此告別煩人的各種解壓縮命令。
posted @ 2010-10-07 21:54 XGuru 閱讀(3161) | 評論 (5)編輯 收藏


                   Emacs是否真的能煮咖啡?        by XGuru









    坊間有傳言曰:“emacs無所不能,甚至能夠用來煮咖啡!”

    煮咖啡何解?勾起了我的考究欲望。

    上網搜索之,得出幾種初步結論如下:

    1.這只是一種好玩的說法,只是用來形容emacs功能無所不包而已。

    2.Java的標志就一杯咖啡,用來形象的表示寫代碼

          

    3.emacs的確具有煮咖啡的功能,有腳本能夠控制自動咖啡機運行。


    覺得第一種說法比較符合邏輯;第二種說法感覺有點唐突,畢竟Emacs是Richard Stallman(GNU創始人)所寫,而Java是Bill Joy(vi作者)等人完成的,這兩派都差點上升到宗教沖突了,這種解釋有點差強人意;第三種的如果是真的話就會變得很有趣。


    于是就開始了探究,首先追本溯源,找到這段腳本代碼的源頭。發現已經地址已經失效,終于在在debian的一個軟件包里找到了副本。這是emacs常用腳本的一個打包。

代碼如下
  1 ;;; coffee.el --- Submit a BREW request to an RFC2324-compliant coffee device
  2 ;;;
  3 ;;; Author: Eric Marsden <emarsden@laas.fr>
  4 ;;; Version: 0.2
  5 ;;; Copyright: (C) 1999 Eric Marsden
  6 ;;; Keywords: coffee, brew, kitchen-sink, can't
  7 ;;
  8 ;;     This program is free software; you can redistribute it and/or
  9 ;;     modify it under the terms of the GNU General Public License as
 10 ;;     published by the Free Software Foundation; either version 2 of
 11 ;;     the License, or (at your option) any later version.
 12 ;;    
 13 ;;     This program is distributed in the hope that it will be useful,
 14 ;;     but WITHOUT ANY WARRANTY; without even the implied warranty of
 15 ;;     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 16 ;;     GNU General Public License for more details.
 17 ;;    
 18 ;;     You should have received a copy of the GNU General Public
 19 ;;     License along with this program; if not, write to the Free
 20 ;;     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 21 ;;     MA 02111-1307, USA.
 22 ;;
 23 ;; Please send suggestions and bug reports to <emarsden@laas.fr>.
 24 ;; The latest version of this package should be available at
 25 ;;
 26 ;;     <URL:http://purl.org/net/emarsden/home/downloads/>
 27  
 28 ;;; Commentary:
 29 ;;
 30 ;; This module provides an Emacs interface to RFC2324-compliant coffee
 31 ;; devices (Hyper Text Coffee Pot Control Protocol, or HTCPCP). It
 32 ;; prompts the user for the different additives, then issues a BREW
 33 ;; request to the coffee device.
 34 ;;
 35 ;; coffee.el requires a special BREW-capable version of Emacs/W3 to be
 36 ;; installed.
 37 ;;
 38 ;; Reference: <URL:ftp://ftp.isi.edu/in-notes/rfc2324.txt>
 39 ;;
 40 ;;
 41 ;; Thanks to Giacomo Boffi <giacomo.boffi@polimi.it> for some typos
 42 ;; and the addition of the "Brown-Coffee" sweetener type.
 43  
 44 ;;; Code:
 45  
 46 (require 'cl)
 47  
 48 (defvar coffee-host "coffee"
 49   "*The host which provides the coffee service.")
 50  
 51 (defvar coffee-pot-designator 1
 52   "*On machines with multiple pots, the number of the pot to brew in")
 53  
 54 (defvar coffee-brew-hook nil
 55   "*Hook executed before issuing a BREW request")
 56  
 57 (defconst coffee-milk-types
 58   '("Cream" "Half-and-Half" "Whole-Milk" "Part-Skim" "Skim" "Non-Dairy"))
 59  
 60 (defconst coffee-syrup-types '("Vanilla" "Almond" "Raspberry" "Chocolate"))
 61  
 62 (defconst coffee-sweetener-types '("White-Sugar" "Brown-Sugar" "Artificial-Sweetener"))
 63  
 64 (defconst coffee-alcohol-types '("Whiskey" "Rum" "Kahula" "Aquavit"))
 65  
 66 (defconst coffee-addition-types
 67   `(("Milk"      . ,coffee-milk-types)
 68     ("Syrup"     . ,coffee-syrup-types)
 69     ("Sweetener" . ,coffee-sweetener-types)
 70     ("Alcohol"   . ,coffee-alcohol-types)))
 71  
 72 ;;;###autoload
 73 (defun coffee ()
 74   "Submit a BREW request to an RFC2324-compliant coffee device"
 75   (interactive)
 76   (require 'url)
 77   (let* ((additions-list
 78           (append coffee-milk-types
 79                   coffee-syrup-types
 80                   coffee-sweetener-types
 81                   coffee-alcohol-types))
 82          (additions-string
 83           (mapconcat #'identity additions-list ","))
 84          (url (coffee-url))
 85          (url-request-method "BREW")
 86          (url-request-extra-headers
 87           `(("Content-type"     . "message-coffeepot")
 88             ("Accept-Additions" . ,additions-string)))         
 89          (url-request-data "START"))
 90     (run-hooks 'coffee-brew-hook)
 91     (url-retrieve url)))
 92  
 93 (defun coffee-additions ()
 94   (let* ((type-name
 95           (completing-read "Coffee addition: " coffee-addition-types nil t))
 96          (type (cdr (assoc type-name coffee-addition-types)))
 97          (ingredients (mapcar #'(lambda (a) (cons a a)) type))
 98          (ingredient
 99           (completing-read "Addition type: " ingredients nil t)))
100     ingredient))
101           
102 (defun coffee-url ()
103   (require 'w3-forms)
104   (concat "coffee://" coffee-host "/"
105           (int-to-string coffee-pot-designator)
106           "?" (w3-form-encode-xwfu (coffee-additions))))
107  
108  
109 (provide 'coffee)
110  
111 ;; coffee.el ends here

    這個腳本看起來還是煞有其事的,文中提到"Submit a BREW request to an RFC2324-compliant coffee device"

    能夠向與RFC2324協議兼容的咖啡設備提交BREW請求
,即兼容Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)協議。超文本咖啡壺協議,光看這名字就夠喜慶了,但這份協議寫得很規范,看不出一絲破綻。有細心的朋友shrek.wang提醒了我,注意看日期:

Network Working Group                                       L. Masinter
Request for Comments: 2324                                 1 April 1998

    1998年4月1號,愚人節!這個就讓人產生了疑問。
    通過查wiki發現,原來互聯網國際標準機構也是很有才的惡搞高手。

這里列舉其中幾個好玩的
    • 2001年,RFC 1149由一班挪威Linux使用者協會的成員實現了。他們傳送了9個封包到約5公里外的地方,每個封包由不同的鴿子攜帶,并有一個ICMP應答要求封包(ping)。他們收到4個回應,封包流失率是55%,回應時間是3000至6000秒。[1]
    • RFC 1607 來自21世紀的觀點 Vint Cerf 1994
    • RFC 3091 圓周率數字產生協定 . H. Kennedy 2001年
更多的可以看這里wiki

  
     這里可以大膽地作出推斷,這個協議只是 IETF 開的一個善意的joke,而coffee.el的作者Eric Marsden也是一個幽默的程序員,于是就做了一個兼容RFC2324的腳本,他也沒想過要真正的控制咖啡機,所以這整個事情都源于程序員的冷幽默。
                          
     然而遠程控制咖啡機還是有可能的,這里有一個開源咖啡機;這里還有一個允許網絡控制的咖啡機(據說還是兼容RFC2324的)。
     估計IETF應該做夢也沒想到自己開的一個玩笑竟然還真的有人做出了實物。 國外的牛人們還真是閑得蛋疼阿??梢奼eek們還是極富幽默感的。
朋友們,你的心中已經有答案了么?你們想要一臺這樣的咖啡機不?







PS.在這里BS下CPPBLOG的編輯器,真的很爛啊,文章寫到一半時點保存,竟然給發布了!

 Creative commons license

by XGuru is licensed under a Creative Commons 署名-非商業性使用-相同方式共享 2.5 中國大陸 License.


posted @ 2010-07-27 21:15 XGuru 閱讀(13013) | 評論 (5)編輯 收藏

豆瓣火狐小組是這樣說的:


Firefox不是完美的,不是最穩定的,不是沒有漏洞的,也不是最快的,但它可以是自己的。



很喜歡這句話,就是因為有了豐富多彩的插件,火狐才能如此的受歡迎.
下面的這幾個插件是我個人最喜歡的,推薦給大家!


1.ColorfulTabs

人對顏色的分辨別速度大大超出文字,根據頁面的主色調生成標簽顏色,讓你的標簽變得色彩斑斕.不僅賞心悅目,更讓你方便地切換到想要的標簽.



插件地址


2.All-in-One Gestures

這年頭,沒有鼠標手勢還能活么?該插件操作快捷,定制性強!
插件地址


3.AutoProxy

非常智能好用的Fuck GF.W的插件,tor,proxy,ssh都能很好的支持,最爽的是可以訂閱規則,決定那些頁面使用代理,哪些無須使用.和諧社會,和諧你我他!




插件地址


4.Readability

當頁面繁雜不堪,難以閱讀時,輕輕一點,魔法立現.整頁面變得美觀大方,甚至感覺像是在看一份精美排版報紙/小說.

整容前:



整容后:



插件地址



5.Tab Popup

當你鼠標放在不同的標簽頁上,就會顯示出該頁的縮略圖.
插件地址


6.Adblock Plus

廣告已經成往事!告別各種煩人的彈窗.
插件地址


7.Vimperator

讓你的firefox變得像vim一樣舒服,適合骨灰級vimer!


(圖from linuxtoy)

插件地址 在線幫助


8.Personas Plus

firefox皮膚想換就換!打造個性的firefox
插件地址


9.Integrated Gmail



google發燒友必備,將google其他的功能都集中到gmail里.All your Google Needs in One Place!
插件地址

相似的有另外一個優化 greader的插件,一個google產品大全的shortcuts插件



PS:
插件多了會當然會使firefox變慢,大家根據需要禁用一些
自己平時不常用的插件.
另外Firefox 3.6.6主要是改進了插件崩潰或者停止響應之后終止該插件的時間.喜歡裝插件的朋友趕快更新吧!
win 32位版本下載
linux 32位版本下載

--EOF--
posted @ 2010-06-28 23:29 XGuru 閱讀(4832) | 評論 (2)編輯 收藏

2010-12-29-update:找到一個最新的版本,由jason提供,地址在這


上網找了幾個版本在ubuntu下都用不了
于是就自己重新修改了jackbillow的版本,用起來感覺還不錯.



Usage: nginx.sh {start|stop|conf|restart}
//開始|停止|配置|重啟

注:需要以管理員身份運行


################################################
#!/bin/bash
# v.0.0.3
# create by jackbillow at 2007.10.15
# redevelop by XGuru at 2010.6.28
# On Ubuntu 10.04
# nginx - This shell script takes care of starting and stopping nginx.
#
# description: nginx [engine x] is light http web/proxy server
# that answers incoming ftp service requests.
###############################################


nginx_path
="/usr/local/nginx"
nginx_pid
="/usr/local/nginx/logs/nginx.pid"
prog="nginx"

RETVAL=0


start() {
# Start daemons.
        if [ -$nginx_path/conf/nginx.conf ];then
          echo 
-n $"Starting $prog: "
          
$nginx_path/sbin/nginx -$nginx_path/conf/nginx.conf &
          RETVAL
=$?
        [ 
$RETVAL -eq 0 ] && {
        echo Start 
"$prog" successfully!
        }
        
else
        RETVAL
=1
        fi
        
return $RETVAL
}
# Stop daemons.
stop() {
        echo 
-n $"Stopping $prog\n"
        sudo killall 
-9 nginx
        RETVAL
=$?
}
# See how we were called.

conf(){
        gvim 
"$nginx_path/conf/nginx.conf"
}
case 
"$1" in
start)
        start
        ;;
stop)
        stop
        ;;
conf)
        conf
        ;;        
restart)
        stop
        start
        ;;

*)
        echo $
"Usage: $0 {start|stop|conf|restart}"
        echo $
"Your may need root privilege to execute this script!"
        
exit 1
esac
exit $RETVAL

--EOF--
posted @ 2010-06-28 16:43 XGuru 閱讀(976) | 評論 (0)編輯 收藏

 libevent的初衷就是設計一個跨平臺的輕量級I/0框架,由于歷史問題,各平臺的I/O復用機制難以統一。因此,這部分處理跨平臺的方法值得重點關注。

 eventop在源碼中定義如下:

static const struct eventop *eventops[]={

#ifdef HAVE_EVENT_PORTS

         
&evportops,

#endif 

….

}

    由此可見libevent通過宏來在編譯期找出可用的復用機制。

其中的順序也是大文章的。官方的文檔中說明libevent中支持的復用機制 /dev/poll, kqueue(2), event ports, select(2), poll(2) and epoll(4).

    libevent開發人員通過對各種機制的基準測試,根據性能高到低選擇復用機制優先順序如圖所示:

 

    從中也可以了解到不同平臺機制的不統一。標準的 poll select卻難以滿足大規模架構的需要,具體可以參考Dan Kegel "The C10K problem"文檔。

關于機制的采用,libevent采用的是函數指針的方法。

 

 

struct eventop {
    
const char *name; /*機制名稱*/
    
void *(*init)(struct event_base *); /*初始化事件*/
    
int (*add)(void *struct event *);    /*添加事件*/
    
int (*del)(void *struct event *);    /* 刪除事件*/
    
int (*dispatch)(struct event_base *void *struct timeval */* 調度事件 */
    
void (*dealloc)(struct event_base *void *);/* 釋放資源*/
    
int need_reinit;
}
;

 

每個eventop即對應一種IO復用機制,其中的每個函數指針都指向使用該機制對事件進行操作的方法。

比如對應epolleventop結構中:
1.void *(*init)(…)函數指針對應的是static void * epoll_init(…)
2.在epoll_init()里,首先對環境變量進行檢測,發現沒有epoll機制時立即返回NULL
3.使用epoll_create(32000)指定了連接數目的上限為32000個,然后對epollop的各個成員所需資源進行分配。
4.最后調用libevent自身的信號初始化函數。

選擇機制并將其初始化的過程十分簡單:

 

    for (i = 0; eventops[i] && !base->evbase; i++{

       
base->evsel = eventops[i];

       
base->evbase = base->evsel->init(base);

    }

    遍歷存儲機制的eventops數組,按順序依次嘗試初始化,一種機制被成功初始化則立即跳出循環。當然,檢測系統環境可用機制,選擇哪種機制更合適,具體的復用機制如何使用,這一切的瑣碎細節你都無需關心,使用時,只要調用event_init()函數即可。Libevent對各種復用機制的巧妙封裝避免了開發者開發大規模架構時,處理跨平臺時機制選擇的苦惱。

posted @ 2010-06-25 16:30 XGuru 閱讀(1750) | 評論 (0)編輯 收藏



可能(這里)有點大,但是我覺得看起挺方便的。有錯誤的意見歡迎提出,我會盡快修正。這里有英文原版。

附上幾個類似的:
1.作弊手冊cheat sheet
這里,
2.鍵位圖 這里[EN] [CN] ,
3.vgod大神的版本,
4.這里也有一個,
5.這里還有張壁紙。

posted @ 2010-06-24 15:42 XGuru 閱讀(3435) | 評論 (2)編輯 收藏

僅列出標題
共2頁: 1 2 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲毛片在线| 亚洲乱码久久| 久久久精品一区| 亚洲欧美电影在线观看| 亚洲精品国产日韩| 日韩一级视频免费观看在线| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美国产精品专区| 亚洲激情在线观看视频免费| 91久久久精品| 亚洲天堂av图片| 久久精品99国产精品| 狼人天天伊人久久| 欧美少妇一区二区| 韩国av一区二区三区在线观看| 亚洲高清不卡在线| 亚洲一区日韩| 欧美成人午夜| 亚洲天堂男人| 久久综合色播五月| 国产精品国产亚洲精品看不卡15| 国产日韩精品视频一区二区三区| 亚洲二区三区四区| 亚洲欧美日韩久久精品| 免费高清在线一区| 亚洲视频高清| 欧美福利一区| 国产一区二区按摩在线观看| 日韩一级在线观看| 午夜一区不卡| 亚洲精品美女在线观看| 性欧美video另类hd性玩具| 免费永久网站黄欧美| 国产九九视频一区二区三区| 亚洲精品韩国| 久久久国产精品亚洲一区 | 欧美在线影院| 亚洲精品一区二区三区福利| 久久全球大尺度高清视频| 国产精品xnxxcom| 亚洲精品欧美专区| 久久一区亚洲| 午夜精品视频| 国产精品日韩欧美一区二区| 亚洲麻豆一区| 欧美激情亚洲| 久久人人97超碰国产公开结果| 国产精品女人网站| 亚洲视频在线观看免费| 欧美成熟视频| 久久人人看视频| 精品999在线播放| 久久精品国产一区二区三| 一区二区不卡在线视频 午夜欧美不卡在 | 国产区欧美区日韩区| 艳妇臀荡乳欲伦亚洲一区| 欧美激情第五页| 美女网站久久| 亚洲另类黄色| 亚洲免费观看视频| 欧美日韩精品欧美日韩精品一| 亚洲欧洲精品一区二区三区不卡 | 亚洲一区二区三区乱码aⅴ| 欧美精品久久天天躁| 亚洲精选一区二区| 日韩亚洲欧美中文三级| 欧美片第1页综合| 亚洲深爱激情| 亚洲欧美日韩国产成人| 国产午夜精品久久久| 久久噜噜亚洲综合| 嫩草影视亚洲| 中文国产一区| 亚洲一区二区毛片| 国产欧美日韩精品a在线观看| 欧美一级电影久久| 久久久久成人网| 亚洲人成网站色ww在线| 亚洲人精品午夜| 国产精品第三页| 欧美一区二视频在线免费观看| 亚洲一区欧美激情| 一区在线播放| 99天天综合性| 国语自产精品视频在线看抢先版结局 | 一道本一区二区| 亚洲私人影院在线观看| 国产一区观看| 亚洲国产精品一区二区www| 欧美日韩国内自拍| 久久精品国产久精国产爱| 久久夜色精品| 亚洲性人人天天夜夜摸| 欧美在线看片a免费观看| 亚洲国产激情| 亚洲永久字幕| 亚洲精品一区二区三区蜜桃久 | 日韩午夜视频在线观看| 国产日韩欧美一区| 亚洲国产精品久久久久秋霞影院| 欧美日韩精品国产| 久久久久久久久久看片| 欧美精品麻豆| 久久综合色天天久久综合图片| 欧美精品导航| 久久久久九九九| 国产精品xxxxx| 欧美黑人一区二区三区| 国产精品婷婷午夜在线观看| 亚洲高清av| 黄色资源网久久资源365| 中国亚洲黄色| 99精品欧美一区二区三区综合在线| 亚欧美中日韩视频| 亚洲你懂的在线视频| 男人的天堂亚洲| 久久九九免费视频| 国产精品高清在线观看| 亚洲黄色免费| 黄色小说综合网站| 亚洲欧美日韩国产| 亚洲影音先锋| 欧美色欧美亚洲另类七区| 亚洲国产精品尤物yw在线观看| 国产精品亚洲一区二区三区在线| 欧美黄色日本| 1769国产精品| 久久久久久亚洲精品不卡4k岛国| 新狼窝色av性久久久久久| 欧美日韩一区二区三| 亚洲国产精品一区二区三区| 在线成人激情黄色| 久久久精品国产一区二区三区| 久久av一区二区三区漫画| 欧美午夜在线视频| 夜夜嗨一区二区三区| 一区二区三区视频免费在线观看| 欧美福利视频一区| 亚洲第一主播视频| 亚洲国产日韩精品| 免费av成人在线| 欧美韩日高清| 亚洲美女尤物影院| 欧美日韩精品一区| 亚洲在线一区二区三区| 欧美一级午夜免费电影| 国产情人节一区| 欧美在线视频网站| 国产午夜亚洲精品理论片色戒| 99精品国产一区二区青青牛奶| 国产亚洲欧美另类中文| 欧美一区二区三区视频免费| 久久xxxx精品视频| 国产一区二区三区高清在线观看| 久久黄色影院| 欧美国产日韩一区二区| 日韩一级二级三级| 国产精品第一页第二页第三页| 中国亚洲黄色| 久久久精品2019中文字幕神马| 激情av一区二区| 欧美国产在线观看| 亚洲影视中文字幕| 免费成人激情视频| 中日韩美女免费视频网址在线观看| 欧美亚洲第一页| 久久精品卡一| 亚洲老司机av| 欧美在线黄色| 亚洲理论在线观看| 国产日韩欧美一区二区| 噜噜噜噜噜久久久久久91| 夜夜嗨av一区二区三区| 久久夜色精品国产欧美乱| 亚洲美女区一区| 国产偷自视频区视频一区二区| 欧美1区3d| 午夜久久福利| 亚洲乱码国产乱码精品精98午夜| 欧美一区二区三区视频免费| 在线播放亚洲| 国产精品一区二区三区四区五区| 久久久国产精品一区| 一区二区成人精品| 亚洲福利视频一区| 久久久久久伊人| 亚洲欧美激情诱惑| 日韩网站在线| 激情欧美一区二区| 国产精品老女人精品视频| 久久一区国产| 午夜久久久久久| av成人国产| 亚洲国产小视频在线观看| 久久久久久一区| 欧美在线免费观看亚洲| 亚洲一区二区欧美日韩| 亚洲精品一区二区在线观看| 国内精品伊人久久久久av一坑| 国产精品老女人精品视频|