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

我自閑庭信步,悠然自得,不亦樂乎.

                                       ------ Keep life simple
GMail/GTalk/MSN:huyi.zg@gmail.com

 

取自ACE中的bit操作宏

#?define?ACE_BIT_ENABLED(WORD,?BIT)?(((WORD)? & ?(BIT))? != ? 0 )
#?define?ACE_BIT_DISABLED(WORD,?BIT)?(((WORD)?
& ?(BIT))? == ? 0 )
#?define?ACE_BIT_CMP_MASK(WORD,?BIT,?MASK)?(((WORD)?
& ?(BIT))? == ?MASK)
#?define?ACE_SET_BITS(WORD,?BITS)?(WORD?
|= ?(BITS))
#?define?ACE_CLR_BITS(WORD,?BITS)?(WORD?
&= ? ~ (BITS))

附上C中常用的位運算用法,取自《C Primer Plus》

掩碼:即mask,通常為某一個位為1,而其他位都為0的byte,如00000100。

1.把byte中除掩碼相同的位外,全部置0,掩碼位不變
flags?&=?mask
?? 10101111 & 00000100 = 00000100

2.打開位:打開特定的位,其他位不變。
flags?|=?MASK
00001000 | 00000100 = 00001100

3.關閉位:關閉特定位,但不影響其他位
flags?&=?~MASK
11100101 &=? ~10000000 = 01100101

4.轉置位:一個位如果打開,則關閉;如果關閉,則打開
flags?^=?MASK
11100101 ^=? 10000000 = 01100101
11100101 ^=? 00010000 = 11110101

5.查看一個位的值:
if?((flag?&?MASK)?==?MASK)
????do_some_work();

?

posted @ 2006-04-03 10:08 HuYi 閱讀(673) | 評論 (0)編輯 收藏

TIM中網絡模型變更

一直都隱隱約約的感覺TIM的網絡模型還是有點問題,但卻總說不出具體問題來。時不時就會想起這個事,今天在車上,終于恍然大悟。
也許是受wildfire和jabberd2的影響太深了(特別是wildfire),TIM中網絡和業務處理的聯系過于緊密,從套接口讀到數據流后,馬上就進入XML的PullParser分析階段,雖然之后有刻意的分離網絡操作和業務邏輯,但并不徹底。
有時候業務處理還是能夠感覺到網絡的存在,我覺得這是個不良的設計。
讓我耿耿于懷的,是Reactor的單線程特性。或許在某些情況下這是它的優勢,但運用不當,就會成劣勢。現在的TIM把業務邏輯和網絡IO都擠進了Reactor所控制的線程中,只要存在一點點的阻塞,吞吐率將大打折扣。
wildfire敢把網絡和業務綁得那么緊,是因為它采用的per-request,per-thread的模型,網絡IO引起的阻塞不會影響到其他request處理。我也沒有wildfire那么大的膽子采用per-request,per-thread,上下文切換的消耗不說,畢竟線程的數量也是有限制的,我很懷疑到底能承受多少連接數,如果沒有記錯,Linux沒有重編譯內核,一個進程內最多是1024個線程,Windows能多些,好像是65535,數據可能不準確,但也說明了線程資源是有限的。同時,WFMOReactor在Windows下每個線程內可同時監視的句柄數(62個),也似乎太少了,這點也讓我煩惱。
仔細推敲后,我認為還是把網絡和業務完全脫離比較好一點,用至少一個線程專門操作套接口,突破WaitForMultipleObjects的句柄數限制,再用另外一個線程來完成業務。在業務線程上使用管道過濾器模式來一步一步的處理數據。當Reactor線程接收到數據后,放進MessageBlock里面,用Task框架來處理。
這種模型確實解決了原先的諸多毛病,但如果在這個時候改網絡模型,對整個項目是個不小的沖擊,極有可能導致在計劃的時間內不能完成項目。猶豫了一下,為了保證品質,最終還是在SubVersion上創建了新的試驗分支。
module.jpg

posted @ 2006-03-27 22:54 HuYi 閱讀(504) | 評論 (0)編輯 收藏

[2006.03.26]噩耗傳來

2006,狗年,我24,本命年。
2006,狗年,小姨36,也是本命年。
早上醒來,接到母親的電話,告訴我小姨爹癌癥擴散,就快去世了。雖然一直知道小姨爹的病,但沒想到會這么嚴重。
小姨媽兩口,最疼愛我的人,我走到今天,他們是給我幫助最大的人,我的恩人。
我媽以前是三班倒,幾個姨媽在還是孩子的時候,就開始幫我媽帶孩子,對我是疼愛有加,特別是小姨媽,結婚后一直無子,也沒有領養,一直把我當親兒看待。
前兩天父親打電話來,叫我有空多打打電話給小姨爹的時候,我就開始懷疑,但父親卻不告訴我真實情況。
今天早上接到母親電話,真的很傷心,我也無法用言語來表達,當時甚至沒有哭出來,已經木了,過了十幾分鐘才淚上眼眶。
平靜下來,給姨爹通了電話,他還不知道自己的病情,但聽得出來確實虛弱了很多。偏偏電話信號又不好,沒說幾句就斷了。
在這里祝福姨爹,一定會有好轉的!!!

posted @ 2006-03-26 23:14 HuYi 閱讀(361) | 評論 (2)編輯 收藏

今天逛了趟書店,買了幾本書^^

本來是陪朋友去買《UNIX編程藝術》,不過著實看見幾本很不錯的書,也買了幾本^^
1。《Linux內核完全剖析》
看過作者的另一本書《Linux1.1源碼完全注釋》,覺得不錯,國內有這個水平的人可能不少,但能做到這么細致的人就不多了。
大概翻了一下,決定買下了。
2。《Linux Application Development》(linux應用程序開發第二版)
這類書籍看過不少了,本不應再買,但隨手翻了一頁,看到了epoll,這是Linux2.6之后才加入的新特性,看來書挺新的,應該是近年才編寫的,又看了一下目錄,對Linux下的絕大多數編程任務都有描述,買一本做手冊吧。
3。《精通UNIX Shell腳本編程》
開發UNIX/Linux程序也很久了,但確實沒有認真學過腳本,也不想像C/C++一樣學腳本,正好看見這本書,都是平時經常用的腳本例子,大多數情況下用這里的例子稍微改改就能滿足需要了:)
4。《GCC技術參考大全》
這書可買可不買,GCC網站上就有很詳細的說明,當手冊用吧。
5。《我的編程感悟》
快離開書店時忽然看見的,聞此書大名很久了,也一直在作者“云風”的郵件列表里,對大俠的佩服猶如滔滔江水連綿不絕呀,也許在這本書中,能找到云大俠的過去,也作為對云大俠的支持,買了一本。回家的車上看了一些,覺得很不錯,向大家推薦。

posted @ 2006-03-25 15:38 HuYi 閱讀(444) | 評論 (0)編輯 收藏

給大家共享一個基本算法包

下載地址???
http://www.shnenglu.com/Files/huyi/datastruct.rar


包含內容:
下面是文檔包含的內容:
二分查找1.c
二分查找2.c
二叉樹.c
其它

單元加
單循環鏈表.c
單鏈表.c
圖.c
字符
定長串.c

小寫數字轉為大寫數字
帶頭結點雙鏈循環線性表.c
底層編程
效驗算法
數學問題
數據結構
數組
文件程序
求進制
漢諾塔
硬幣情況
逆陣
鏈串.c
鏈棧.c
鏈隊列.c
問題算法
順序棧.c
順序表.c
順序隊列.c

./其它:
c語言窗體實例.zip
傻瓜遞歸.c
冒泡法改進.c
小字庫DIY-.c
小字庫DIY.c
小白鼠鉆迷宮.c
掃描碼.C
挽救軟盤.c
漢字字模.c
神經元模型.c
窮舉搜索法.c
簡單數據庫.c
編程漢字問題.txt
編隨機數.c
試題.C
遞堆法.C

./單元加:
erre2.c
erre.c
數組完全單元.c
棧單元加.c

./字符:
單詞倒轉.c
反出字符.c
回文.c
字符串查找.c
字符編輯.c
字符編輯技術(插入和刪除) .c

./小寫數字轉為大寫數字:
小寫數字轉換成大寫數字1.c
小寫數字轉換成大寫數字2.c
小寫數字轉換成大寫數字3.c

./底層編程:
asm.c
C標志符命名源程序.c
ping.c
winsock2.c
時間陷阱.c
檢出錯誤.c
檢測鼠標.c

./效驗算法:
C.BAT
CMCRC.COM
Crctable.c

./數學問題:
乘法矩陣.c
涼東問題
十五人排序.c
疊代整除.c
四分砝碼.c
圓周率
多位階乘2.c
多位階乘.c
大加數.c
大小倍約.c
大整數.c
完數.c
小孩分糖果.c
小明買書
平方根.c
數學算法
桃子猴問題
燈塔問題.c
百雞百錢.c
簡單計算器.c
蘋果糾紛
遞推.c
邏輯移動.c
階乘遞歸.c
阿姆斯特朗數.c
黑白.c

./數學問題/涼東問題:
32.c
re.c
數組遞歸退出2.c
數組遞歸退出.c

./數學問題/圓周率:
圓周率.c
狐貍圓周率.cpp

./數學問題/小明買書:
小明買書.c
小明買書.cpp

./數學問題/數學算法:
余弦曲線.c
余弦直線.c
符號圖形.c
繪制圓.c

./數學問題/桃子猴問題:
_notes
乘方函數桃子猴.c
桃子猴.c
猴子和桃.c
遞歸桃猴.c
題目.txt

./數學問題/桃子猴問題/_notes:

./數學問題/蘋果糾紛:
ff.c
蘋果分法.c

./數據結構:
二叉排序樹.c
二叉樹實例.c
單鏈表
雙鏈表正排序.c
各種排序法.c
哈夫曼算法.c
哈慢樹.c
大整數.c
建樹和遍歷.c
排序法.c
推箱子.c
數據結構2.c
數據結構3.c
數據結構.c
無向圖.c
棧操作.c
線性順序存儲結構.c
線索化二叉樹.c
迷宮.c
迷宮問題.c
逆波蘭計算器.c
遞歸車廂.c
隊列.c

./數據結構/單鏈表:
ww.c
冒泡排序.c
單鏈表1.c
單鏈表2.c
單鏈表.c
單鏈表倒序.c
單鏈表的處理全集.c
建立鏈表1.c
節點.c
質因子.c
鏈表十五人排序.c
鏈表(遞歸).c

./數組:
數字移動.c
數組操作.c
楊輝三角形.c
桶排序.c
矩陣轉換.c
螺旋數組1.c
螺旋數組2.c

./文件程序:
實例1.c
實例2.c
實例3.c
文件加密.c
文件復制.c
文件連接.c
自我復制.c
讀寫文本文件.c
輸出自已.c

./求進制:
16進制10進制.c
二進制數2.c
二進制數.c

./漢諾塔:
四塔1.c
四塔2.c
換位遞歸.c
漢諾塔2.c
漢諾塔.c
諾漢塔畫圖版.c
非遞歸.c

./硬幣情況:
for循環的.c
硬幣分法.c

./逆陣:
簡單逆陣.c
逆矩陣.c
逆陣.c

./問題算法:
N皇后問題回溯算法.c
萬年歷
動態計算網絡最長最短路線.c
矩陣乘法動態規劃.c
網絡最短路徑Dijkstra算法.c
貨郎擔分枝限界圖形演示.c
貨郎擔限界算法.c
騎士遍歷

./問題算法/萬年歷:
萬年歷.c
萬年歷的算法 .c

./問題算法/騎士遍歷:
騎士遍歷1.c
騎士遍歷2.c
騎士遍歷回逆.c

posted @ 2006-03-23 08:51 HuYi 閱讀(1987) | 評論 (4)編輯 收藏

今天買了一個共享軟件:CyberArticle

在您上網的時候, 您一定會遇到很到好文章,怎么保存?用IE的保存功能?過不了多久,您就會忘記,保存在那里了。使用CyberArticle保存網頁,過程非常簡單,通過鼠標右鍵,您就可以快速的將文章保存起來。還有,您可能更希望將好看的Flash動畫保存下來,這次,連IE也無能為力了。怎么辦?使用CyberArticle,您可以將這些內容完整無缺的保存下來。
http://www.wizissoft.com/cn/

其實我用這個軟件很久了,真的很方便。不過我一直用的破解版:b
今天上它主頁看了看,注冊費用挺公道的,25元,可以接受,作為對作者的支持,用信用卡在網上買了一份,幾分鐘注冊碼就發到了。

向需要類似軟件的朋友推薦。

posted @ 2006-03-22 15:18 HuYi 閱讀(397) | 評論 (0)編輯 收藏

推薦一個sniffer - ethereal

今天同事推薦給我的,確實比較好用,有對應多個平臺的版本,而且是免費的。
之前一直用的WPE,那玩意兒雖然也不錯,但老是被諾頓認為是病毒,用ethereal就沒有這個問題了,功能也更強大。用來進行少量信息收集挺不錯的。如果要7*24的收集大量信息,還是tcpdump吧。

附上網址:
http://www.ethereal.com/

posted @ 2006-03-21 14:07 HuYi 閱讀(357) | 評論 (0)編輯 收藏

web服務器的架構設計

又有感興趣的話題了:
liu chuncheng:
前兩天看了一篇有關IOCP的文章,里面提到apache。文章作者的觀點是用IOCP模型的IIS應該比進程模型的apache的性能要高。我想針對這個主題發起討論。
首先說一下我的觀點:
1、IOCP是windows下比較高效的一個異步IO模型,他可以克服I/O設備慢速的缺點,從而可以構建一個高效的網絡通訊模型。
2、但我認為IOCP也不是萬能的,只有合適的應用才會發揮他的長處。比如游戲服務器,或者流媒體服務器等。
3、但我認為對于web服務器它不是最好的方案,原因如下:
? ? a、web服務器的連接之間的數據是獨立的,沒有聯系的,那么每個連接的數據用一個線程或者進程來處理是很高效的,處理完之后就退出了,再沒有任何其它的
開銷。如果用IOCP那么就要放到隊列里,從線程池里面頻繁的切換線程來處理數據,這種開銷還是比較大的。只是web的資源需要做同步的機制。

b、web服務器是基于短連接的,區別于游戲服務器的長連接,就是不需要對這個連接做更多的管理。相當于一個連接上來之后就做一個任務,做完任務之后就一拍兩散
? ? 綜合上面的兩點,化繁為簡,我認為對于web服務器用最簡單的網絡模型——1連接+1線程,可能也是比較好的方案。

? ? 一家之言,歡迎大家拍磚!
http://groups.google.com/group/dev4server/browse_thread/thread/6cd19a9afc1fd295/4624a8b4bf162e6f#4624a8b4bf162e6f

posted @ 2006-03-20 15:07 HuYi 閱讀(595) | 評論 (0)編輯 收藏

GCC參數祥解

[介紹]
gcc and g++分別是gnu的c & c++編譯器 gcc/g++在執行編譯工作的時候,總共需要4步

1.預處理,生成.i的文件[預處理器cpp]
2.將預處理后的文件不轉換成匯編語言,生成文件.s[編譯器egcs]
3.有匯編變為目標代碼(機器代碼)生成.o的文件[匯編器as]
4.連接目標代碼,生成可執行程序[鏈接器ld]
[參數詳解]
-x language filename
  設定文件所使用的語言,使后綴名無效,對以后的多個有效.也就是根據約定C語言的后
綴名稱是.c的,而C++的后綴名是.C或者.cpp,如果你很個性,決定你的C代碼文件的后綴
名是.pig 哈哈,那你就要用這個參數,這個參數對他后面的文件名都起作用,除非到了
下一個參數的使用。
  可以使用的參數嗎有下面的這些
  `c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a
ssembler-with-cpp'.
  看到英文,應該可以理解的。
  例子用法:
  gcc -x c hello.pig
  
-x none filename
  關掉上一個選項,也就是讓gcc根據文件名后綴,自動識別文件類型
  例子用法:
  gcc -x c hello.pig -x none hello2.c
  
-c
  只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件
  例子用法:
  gcc -c hello.c
  他將生成.o的obj文件
-S
  只激活預處理和編譯,就是指把文件編譯成為匯編代碼。
  例子用法
  gcc -S hello.c
  他將生成.s的匯編代碼,你可以用文本編輯器察看
-E
  只激活預處理,這個不生成文件,你需要把它重定向到一個輸出文件里面.
  例子用法:
  gcc -E hello.c > pianoapan.txt
  gcc -E hello.c | more
  慢慢看吧,一個hello word 也要與處理成800行的代碼
-o
  制定目標名稱,缺省的時候,gcc 編譯出來的文件是a.out,很難聽,如果你和我有同感
,改掉它,哈哈
  例子用法
  gcc -o hello.exe hello.c (哦,windows用習慣了)
  gcc -o hello.asm -S hello.c
-pipe
  使用管道代替編譯中臨時文件,在使用非gnu匯編工具的時候,可能有些問題
  gcc -pipe -o hello.exe hello.c
-ansi
  關閉gnu c中與ansi c不兼容的特性,激活ansi c的專有特性(包括禁止一些asm inl
ine typeof關鍵字,以及UNIX,vax等預處理宏,
-fno-asm
  此選項實現ansi選項的功能的一部分,它禁止將asm,inline和typeof用作關鍵字。
    
-fno-strict-prototype
  只對g++起作用,使用這個選項,g++將對不帶參數的函數,都認為是沒有顯式的對參數
的個數和類型說明,而不是沒有參數.
  而gcc無論是否使用這個參數,都將對沒有帶參數的函數,認為城沒有顯式說明的類型

  
-fthis-is-varialble
  就是向傳統c++看齊,可以使用this當一般變量使用.
  
-fcond-mismatch
  允許條件表達式的第二和第三參數類型不匹配,表達式的值將為void類型
  
-funsigned-char
-fno-signed-char
-fsigned-char
-fno-unsigned-char
  這四個參數是對char類型進行設置,決定將char類型設置成unsigned char(前兩個參
數)或者 signed char(后兩個參數)
  
-include file
  包含某個代碼,簡單來說,就是便以某個文件,需要另一個文件的時候,就可以用它設
定,功能就相當于在代碼中使用#include<filename>
  例子用法:
  gcc hello.c -include /root/pianopan.h
  
-imacros file
  將file文件的宏,擴展到gcc/g++的輸入文件,宏定義本身并不出現在輸入文件中
  
-Dmacro
  相當于C語言中的#define macro
  
-Dmacro=defn
  相當于C語言中的#define macro=defn
  
-Umacro
  相當于C語言中的#undef macro
-undef
  取消對任何非標準宏的定義
  
-Idir
  在你是用#include"file"的時候,gcc/g++會先在當前目錄查找你所制定的頭文件,如
果沒有找到,他回到缺省的頭文件目錄找,如果使用-I制定了目錄,他
  回先在你所制定的目錄查找,然后再按常規的順序去找.
  對于#include<file>,gcc/g++會到-I制定的目錄查找,查找不到,然后將到系統的缺
省的頭文件目錄查找
  
-I-
  就是取消前一個參數的功能,所以一般在-Idir之后使用
  
-idirafter dir
  在-I的目錄里面查找失敗,講到這個目錄里面查找.
  
-iprefix prefix
-iwithprefix dir
  一般一起使用,當-I的目錄查找失敗,會到prefix+dir下查找
  
-nostdinc
  使編譯器不再系統缺省的頭文件目錄里面找頭文件,一般和-I聯合使用,明確限定頭
文件的位置
  
-nostdin C++
  規定不在g++指定的標準路經中搜索,但仍在其他路徑中搜索,.此選項在創libg++庫
使用
  
-C
  在預處理的時候,不刪除注釋信息,一般和-E使用,有時候分析程序,用這個很方便的

  
-M
  生成文件關聯的信息。包含目標文件所依賴的所有源代碼你可以用gcc -M hello.c
來測試一下,很簡單。
  
-MM
  和上面的那個一樣,但是它將忽略由#include<file>造成的依賴關系。
  
-MD
  和-M相同,但是輸出將導入到.d的文件里面
  
-MMD
  和-MM相同,但是輸出將導入到.d的文件里面
  
-Wa,option
  此選項傳遞option給匯編程序;如果option中間有逗號,就將option分成多個選項,然
后傳遞給會匯編程序
  
-Wl.option
  此選項傳遞option給連接程序;如果option中間有逗號,就將option分成多個選項,然
后傳遞給會連接程序.
  
-llibrary
  制定編譯的時候使用的庫
  例子用法
  gcc -lcurses hello.c
  使用ncurses庫編譯程序
  
-Ldir
  制定編譯的時候,搜索庫的路徑。比如你自己的庫,可以用它制定目錄,不然
  編譯器將只在標準庫的目錄找。這個dir就是目錄的名稱。
  
-O0
-O1
-O2
-O3
  編譯器的優化選項的4個級別,-O0表示沒有優化,-O1為缺省值,-O3優化級別最高 
    
-g
  只是編譯器,在編譯的時候,產生調試信息。
  
-gstabs
  此選項以stabs格式聲稱調試信息,但是不包括gdb調試信息.
  
-gstabs+
  此選項以stabs格式聲稱調試信息,并且包含僅供gdb使用的額外調試信息.
  
-ggdb
  此選項將盡可能的生成gdb的可以使用的調試信息.
-static
  此選項將禁止使用動態庫,所以,編譯出來的東西,一般都很大,也不需要什么
動態連接庫,就可以運行.
-share
  此選項將盡量使用動態庫,所以生成文件比較小,但是需要系統由動態庫.
-traditional
  試圖讓編譯器支持傳統的C語言特性
[參考資料]
-Linux/UNIX高級編程
  中科紅旗軟件技術有限公司編著.清華大學出版社出版
-Gcc man page
  
[ChangeLog]
-2002-08-10
  ver 0.1 發布最初的文檔
-2002-08-11
  ver 0.11 修改文檔格式
-2002-08-12
  ver 0.12 加入了對靜態庫,動態庫的參數
-2002-08-16
  ver 0.16 增加了gcc編譯的4個階段的命令
運行 gcc/egcs
**********運行 gcc/egcs***********************
  GCC 是 GNU 的 C 和 C++ 編譯器。實際上,GCC 能夠編譯三種語言:C、C++ 和 O
bject C(C 語言的一種面向對象擴展)。利用 gcc 命令可同時編譯并連接 C 和 C++
源程序。
  如果你有兩個或少數幾個 C 源文件,也可以方便地利用 GCC 編譯、連接并生成可
執行文件。例如,假設你有兩個源文件 main.c 和 factorial.c 兩個源文件,現在要編
譯生成一個計算階乘的程序。
代碼:
-----------------------
清單 factorial.c
-----------------------
int factorial (int n)
{
  if (n <= 1)
   return 1;
  else
   return factorial (n - 1) * n;
}
-----------------------
清單 main.c
-----------------------
#include <stdio.h>
#include <unistd.h>
int factorial (int n);
int main (int argc, char **argv)
{
  int n;
  if (argc < 2)
  {
    printf ("Usage: %s n\n", argv [0]);
    return -1;
  }
  else
  {
   n = atoi (argv[1]);
   printf ("Factorial of %d is %d.\n", n, factorial (n));
   }
  return 0;
}
-----------------------
利用如下的命令可編譯生成可執行文件,并執行程序:
$ gcc -o factorial main.c factorial.c
$ ./factorial 5
Factorial of 5 is 120.
  GCC 可同時用來編譯 C 程序和 C++ 程序。一般來說,C 編譯器通過源文件的后綴
名來判斷是 C 程序還是 C++ 程序。在 Linux 中,C 源文件的后綴名為 .c,而 C++ 源
文件的后綴名為 .C 或 .cpp。但是,gcc 命令只能編譯 C++ 源文件,而不能自動和 C
++ 程序使用的庫連接。因此,通常使用 g++ 命令來完成 C++ 程序的編譯和連接,該程
序會自動調用 gcc 實現編譯。假設我們有一個如下的 C++ 源文件(hello.C):
#include <iostream>
void main (void)
{
  cout << "Hello, world!" << endl;
}
則可以如下調用 g++ 命令編譯、連接并生成可執行文件:
$ g++ -o hello hello.C
$ ./hello
Hello, world!
**********************gcc/egcs 的主要選項*********
gcc 命令的常用選項
選項 解釋
-ansi 只支持 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色,
例如 asm 或 typeof 關鍵詞。
-c 只編譯并生成目標文件。
-DMACRO 以字符串“1”定義 MACRO 宏。
-DMACRO=DEFN 以字符串“DEFN”定義 MACRO 宏。
-E 只運行 C 預編譯器。
-g 生成調試信息。GNU 調試器可利用該信息。
-IDIRECTORY 指定額外的頭文件搜索路徑DIRECTORY。
-LDIRECTORY 指定額外的函數庫搜索路徑DIRECTORY。
-lLIBRARY 連接時搜索指定的函數庫LIBRARY。
-m486 針對 486 進行代碼優化。
-o FILE 生成指定的輸出文件。用在生成可執行文件時。
-O0 不進行優化處理。
-O 或 -O1 優化生成代碼。
-O2 進一步優化。
-O3 比 -O2 更進一步優化,包括 inline 函數。
-shared 生成共享目標文件。通常用在建立共享庫時。
-static 禁止使用共享連接。
-UMACRO 取消對 MACRO 宏的定義。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。

posted @ 2006-03-20 10:30 HuYi 閱讀(540) | 評論 (1)編輯 收藏

cyrus_sasl API使用方法

/* ?This?is?a?proposed?C?API?for?support?of?SASL
?*
?*********************************IMPORTANT*******************************
?*?send?email?to?chris.newman@innosoft.com?and?cyrus-bugs@andrew.cmu.edu?*
?*?if?you?need?to?add?new?error?codes,?callback?types,?property?values,??*
?*?etc.???It?is?important?to?keep?the?multiple?implementations?of?this???*
?*?API?from?diverging.???????????????????????????????????????????????????*
?*********************************IMPORTANT*******************************
?*
?*?Basic?Type?Summary:
?*??sasl_conn_t???????Context?for?a?SASL?connection?negotiation
?*??sasl_ssf_t????????Security?layer?Strength?Factor
?*??sasl_callback_t???A?typed?client/server?callback?function?and?context
?*??sasl_interact_t???A?client?interaction?descriptor
?*??sasl_secret_t?????A?client?password
?*??sasl_rand_t???????Random?data?context?structure
?*??sasl_security_properties_t??An?application's?required?security?level
?*
?*?Callbacks:
?*??sasl_getopt_t?????client/server:?Get?an?option?value
?*??sasl_logmsg_t?????client/server:?Log?message?handler
?*??sasl_getsimple_t??client:?Get?user/language?list
?*??sasl_getsecret_t??client:?Get?authentication?secret
?*??sasl_chalprompt_t?client:?Display?challenge?and?prompt?for?response
?*
?*?Server?only?Callbacks:
?*??sasl_authorize_t?????????????user?authorization?policy?callback
?*??sasl_server_userdb_checkpass?check?password?and?auxprops?in?userdb
?*??sasl_server_userdb_setpass???set?password?in?userdb
?*??sasl_server_canon_user???????canonicalize?username?routine
?*
?*?Client/Server?Function?Summary:
?*??sasl_done?????????Release?all?SASL?global?state
?*??sasl_dispose??????Connection?done:?Dispose?of?sasl_conn_t
?*??sasl_getprop??????Get?property?(e.g.,?user?name,?security?layer?info)
?*??sasl_setprop??????Set?property?(e.g.,?external?ssf)
?*??sasl_errdetail????Generate?string?from?last?error?on?connection
?*??sasl_errstring????Translate?sasl?error?code?to?a?string
?*??sasl_encode???????Encode?data?to?send?using?security?layer
?*??sasl_decode???????Decode?data?received?using?security?layer
?*??
?*?Utility?functions:
?*??sasl_encode64?????Encode?data?to?send?using?MIME?base64?encoding
?*??sasl_decode64?????Decode?data?received?using?MIME?base64?encoding
?*??sasl_erasebuffer??Erase?a?buffer
?*
?*?Client?Function?Summary:
?*??sasl_client_init??Load?and?initialize?client?plug-ins?(call?once)
?*??sasl_client_new???Initialize?client?connection?context:?sasl_conn_t
?*??sasl_client_start?Select?mechanism?for?connection
?*??sasl_client_step??Perform?one?authentication?step
?*
?*?Server?Function?Summary
?*??sasl_server_init??Load?and?initialize?server?plug-ins?(call?once)
?*??sasl_server_new???Initialize?server?connection?context:?sasl_conn_t
?*??sasl_listmech?????Create?list?of?available?mechanisms
?*??sasl_server_start?Begin?an?authentication?exchange
?*??sasl_server_step??Perform?one?authentication?exchange?step
?*??sasl_checkpass????Check?a?plaintext?passphrase
?*??sasl_checkapop????Check?an?APOP?challenge/response?(uses?pseudo?"APOP"
?*????????????????????mechanism?similar?to?CRAM-MD5?mechanism;?optional)
?*??sasl_user_exists??Check?if?user?exists
?*??sasl_setpass??????Change?a?password?or?add?a?user?entry
?*??sasl_auxprop_request??Request?auxiliary?properties
?*??sasl_auxprop_getctx???Get?auxiliary?property?context?for?connection
?*??sasl_auxprop_store????Store?a?set?of?auxiliary?properties
?*
?*?Basic?client?model:
?*??1.?client?calls?sasl_client_init()?at?startup?to?load?plug-ins
?*??2.?when?connection?formed,?call?sasl_client_new()
?*??3.?once?list?of?supported?mechanisms?received?from?server,?client
?*?????calls?sasl_client_start().??goto?4a
?*??4.?client?calls?sasl_client_step()
?*?[4a.?If?SASL_INTERACT,?fill?in?prompts?and?goto?4
?*??????--?doesn't?happen?if?callbacks?provided]
?*??4b.?If?SASL?error,?goto?7?or?3
?*??4c.?If?SASL_OK,?continue?or?goto?6?if?last?server?response?was?success
?*??5.?send?message?to?server,?wait?for?response
?*??5a.?On?data?or?success?with?server?response,?goto?4
?*??5b.?On?failure?goto?7?or?3
?*??5c.?On?success?with?no?server?response?continue
?*??6.?continue?with?application?protocol?until?connection?closes
?*?????call?sasl_getprop/sasl_encode/sasl_decode()?if?using?security?layer
?*??7.?call?sasl_dispose(),?may?return?to?step?2
?*??8.?call?sasl_done()?when?program?terminates
?*
?*?Basic?Server?model:
?*??1.?call?sasl_server_init()?at?startup?to?load?plug-ins
?*??2.?On?connection,?call?sasl_server_new()
?*??3.?call?sasl_listmech()?and?send?list?to?client]
?*??4.?after?client?AUTH?command,?call?sasl_server_start(),?goto?5a
?*??5.?call?sasl_server_step()
?*??5a.?If?SASL_CONTINUE,?output?to?client,?wait?response,?repeat?5
?*??5b.?If?SASL?error,?then?goto?7
?*??5c.?If?SASL_OK,?move?on
?*??6.?continue?with?application?protocol?until?connection?closes
?*?????call?sasl_getprop?to?get?username
?*?????call?sasl_getprop/sasl_encode/sasl_decode()?if?using?security?layer
?*??7.?call?sasl_dispose(),?may?return?to?step?2
?*??8.?call?sasl_done()?when?program?terminates
?*
?*************************************************
從sasl.h中截取的。

posted @ 2006-03-19 11:21 HuYi 閱讀(697) | 評論 (0)編輯 收藏

僅列出標題
共7頁: 1 2 3 4 5 6 7 

導航

統計

常用鏈接

留言簿(12)

隨筆分類

相冊

收藏夾

友情鏈接

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜精品福利在线| 亚洲午夜电影在线观看| 欧美一区二区三区另类| 在线成人h网| 久久爱另类一区二区小说| 欧美在线观看视频在线| 国产精品久久久久三级| 亚洲一区二区三区四区五区黄| 一区二区三区成人精品| 欧美日韩ab| 91久久精品美女| 亚洲人成在线观看网站高清| 巨乳诱惑日韩免费av| 欧美大色视频| 99国产精品| 国产精品女主播一区二区三区| 亚洲精品裸体| 亚洲欧美亚洲| 黑人巨大精品欧美黑白配亚洲 | 国产精品美女久久久| 亚洲午夜视频在线观看| 欧美中文字幕在线播放| 韩国欧美一区| 久久综合给合久久狠狠狠97色69| 免费在线亚洲| 日韩一区二区精品视频| 国产精品久久久久9999| 欧美综合第一页| 欧美激情一区二区三区蜜桃视频 | 欧美精品大片| 亚洲一区二区三区精品动漫| 久久精品国产一区二区三区免费看 | 欧美在线视频网站| 亚洲第一福利视频| 欧美日韩伊人| 久久精品国产精品亚洲综合| 亚洲国产天堂久久综合网| 亚洲一区国产| 在线欧美日韩| 国产精品美女视频网站| 午夜亚洲福利| 亚洲精品日韩在线| 久久久人成影片一区二区三区观看| 亚洲国产日韩欧美在线99 | 中文国产成人精品久久一| 久久久人成影片一区二区三区观看 | 久久电影一区| 亚洲第一在线综合网站| 欧美国产先锋| 欧美专区中文字幕| 夜夜嗨av一区二区三区| 免费视频一区二区三区在线观看| 亚洲午夜黄色| 尤物九九久久国产精品的特点| 欧美日韩综合在线| 亚洲女性喷水在线观看一区| 蜜臀91精品一区二区三区| 亚洲欧美日韩久久精品 | 久久综合伊人77777麻豆| 亚洲天堂av在线免费观看| 一区二区三区在线观看国产| 国产精品国产三级国产专区53| 老妇喷水一区二区三区| 亚洲一区二区伦理| 日韩视频一区二区三区在线播放免费观看 | 欧美一区免费| 亚洲人成欧美中文字幕| 黄色日韩网站| 国产精品羞羞答答xxdd| 欧美日韩在线播| 欧美高清在线| 免费不卡中文字幕视频| 久久成人免费电影| 欧美亚洲日本一区| 在线视频精品| 日韩天天综合| 亚洲美女在线视频| 91久久久久久国产精品| 欧美激情按摩| 欧美激情一区二区三区在线| 乱码第一页成人| 久久久www成人免费无遮挡大片| 亚洲伊人一本大道中文字幕| 中文亚洲视频在线| 日韩视频免费大全中文字幕| 亚洲欧洲精品一区二区三区波多野1战4 | 黄色综合网站| 激情国产一区| 亚洲电影免费观看高清| 亚洲国产高清在线| 亚洲国产欧美在线人成| 91久久黄色| 亚洲高清视频中文字幕| 黄色一区二区在线观看| 极品尤物久久久av免费看| 在线观看一区欧美| 亚洲高清av在线| 亚洲精品日韩久久| 日韩一区二区久久| 一本色道久久88综合日韩精品| 影音欧美亚洲| 亚洲片在线观看| 一区二区成人精品| 亚洲影院色在线观看免费| 午夜国产精品视频| 欧美在线一级视频| 美女国产一区| 亚洲经典一区| 中日韩午夜理伦电影免费| 亚洲专区一二三| 久久久九九九九| 免费观看日韩av| 欧美18av| 欧美午夜在线一二页| 国产欧美精品久久| 亚洲电影在线播放| 日韩亚洲在线观看| 欧美一级艳片视频免费观看| 久久久国产精品亚洲一区 | 午夜精品三级视频福利| 久久久人成影片一区二区三区 | 欧美国产精品| 国产精品视频男人的天堂| 在线观看日韩www视频免费| 亚洲区国产区| 日韩视频免费大全中文字幕| 亚洲欧美精品| 美女久久网站| 一区二区三区视频免费在线观看| 欧美亚洲免费在线| 免费91麻豆精品国产自产在线观看| 欧美成人免费全部| 一区二区三区日韩精品| 免费在线欧美黄色| 激情欧美日韩一区| 欧美一区二区高清在线观看| 亚洲精品一区二区三区四区高清| 久久激情网站| 国产欧美在线看| 亚洲天堂av高清| 亚洲激情在线播放| 久久婷婷激情| 国内外成人免费激情在线视频网站 | 亚洲黄色免费电影| 久久免费视频在线| 西西人体一区二区| 国产精品黄页免费高清在线观看| 亚洲老板91色精品久久| 欧美不卡福利| 久久亚洲不卡| 亚洲福利一区| 麻豆精品在线视频| 久久精品一区二区三区不卡牛牛 | 乱码第一页成人| 欧美一区二区大片| 国产女精品视频网站免费| 亚洲永久在线观看| 99视频在线观看一区三区| 欧美人与性动交α欧美精品济南到| 亚洲福利在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲欧美日韩另类| 国产日产欧美一区| 久久精品亚洲一区二区三区浴池| 性欧美暴力猛交69hd| 国产欧美另类| 久久免费视频一区| 久久人人爽国产| 亚洲国产小视频在线观看| 欧美高清视频在线 | 亚洲网站视频| 一区二区三区四区国产| 国产精品第一区| 性欧美videos另类喷潮| 亚洲欧美日韩国产综合| 国产一区二区精品| 麻豆乱码国产一区二区三区| 久久在线91| 亚洲最新色图| 亚洲在线观看免费| 狠狠色丁香久久婷婷综合_中| 久久综合九色综合欧美就去吻 | 亚洲免费观看在线视频| 日韩视频在线你懂得| 国产精品免费区二区三区观看| 欧美一区二区三区视频| 久久国产精品黑丝| 亚洲精品欧美极品| 亚洲午夜精品一区二区| 国产综合色在线视频区| 亚洲国产精品999| 国产精品盗摄一区二区三区| 欧美中文字幕在线播放| 美女图片一区二区| 亚洲影院色在线观看免费| 欧美一级片久久久久久久| 亚洲国产精品久久久久婷婷884| 99精品99久久久久久宅男| 国产婷婷精品| 亚洲国产中文字幕在线观看|