2008年2月29日
讀書筆記 之 軟件生產(chǎn)中的約束理論
寫在前面:個(gè)人覺得作為一個(gè)項(xiàng)目經(jīng)理 或者說(shuō) 開發(fā)經(jīng)理,其管理能力+技術(shù)能力二者相應(yīng)達(dá)到一個(gè)合理的比例才能勝任。很多企業(yè)經(jīng)常提拔在企業(yè)工作時(shí)間比較長(zhǎng)的,技術(shù)能力強(qiáng)的人來(lái)?yè)?dān)當(dāng)這樣的角色。個(gè)人認(rèn)為老員工的確更加理解公司的企業(yè)文化,技術(shù)能力也相應(yīng)比較突出,經(jīng)驗(yàn)也更加豐富,但是我覺得這個(gè)經(jīng)驗(yàn)和管理是不同的,更多的是其架構(gòu)能力,遇到技術(shù)問(wèn)題的解決方法。如果一個(gè)人長(zhǎng)期關(guān)注于技術(shù)的積累,但是忽略管理能力的提高,很難成為一個(gè)合格的管理者。管理和技術(shù)一樣是需要學(xué)習(xí)的,不是隨著技術(shù)經(jīng)驗(yàn)的積累成完全正比。衡量管理者的標(biāo)準(zhǔn)就是項(xiàng)目或者產(chǎn)品賺了多少錢,其他的例如人員溝通、開發(fā)等等都是保證成功的手段而已,而如何合理運(yùn)用這些手段的過(guò)程就體現(xiàn)了一個(gè)管理者的綜合能力。昨天剛好看電視,聽到孫子兵法的一些思想,覺得很好。為將也,需具備"智、信、仁、勇、嚴(yán)"。之所以寫在開頭前,一是有感而發(fā),二是這章的后面是各個(gè)經(jīng)理的角色定位。
?
所謂約束 指的是 軟件開發(fā)中的 受限資源、瓶頸。
約束理論包含5個(gè)過(guò)程域:
- 標(biāo)識(shí)系統(tǒng)約束:顧名思義改進(jìn)的基礎(chǔ)就是充分認(rèn)識(shí)現(xiàn)有系統(tǒng)的瓶頸。
- 確定如何利用系統(tǒng)約束
- 一切問(wèn)題都要依照既定的方案執(zhí)行
- 提高約束:如果第三點(diǎn)是執(zhí)行的話,第四點(diǎn)就是改進(jìn)了
- 如果在1-4中產(chǎn)生了新的約束,則循環(huán)往復(fù)直到問(wèn)題解決。 可以理解問(wèn)題總在不斷變化的,當(dāng)初的約束會(huì)隨著時(shí)間慢慢解決,但是又會(huì)產(chǎn)生新的約束。
第二個(gè)過(guò)程域:在軟件開發(fā)中一種明顯的能力受限資源也就是約束 為 如何利用軟件開發(fā)人員
開發(fā)人員每天法定得到8小時(shí)的工資,但是根據(jù)某項(xiàng)統(tǒng)計(jì)這段時(shí)間中會(huì)有15%的損耗,正常的效率時(shí)間是5.5小時(shí)左右,這是管理人員最不愿意聽到的:)。--個(gè)人比較同意這個(gè)看法,很多管理人員認(rèn)為8小時(shí)就得產(chǎn)生100%的效率,我想說(shuō)不可能,除非在工作壓力非常之大,許多公司為什么會(huì)加班,其實(shí)也可以理解為在8小時(shí)之外,來(lái)彌補(bǔ)這15%左右的損耗,不是嗎?
我們需要做的就是來(lái)提高8小時(shí)內(nèi)的效率,盡量使損耗降到最小,從而達(dá)到雙贏。書中提到:任何時(shí)候都積壓一些需要完成的開發(fā)任務(wù)可以避免開發(fā)人員無(wú)事可做。恩,可以理解,人的思維總是有時(shí)會(huì)開小差,或者會(huì)有些靈感的火花,如果沒(méi)有足夠多的任務(wù)積壓時(shí),小差開到的目的地就是八卦了。
文中提到的其他方式有:
- 最小化通信聯(lián)絡(luò)的溝通方式。
- 安靜的工作環(huán)境
- 最好的開發(fā)工具
- 提供支持人員完成非生產(chǎn)工作等
- 充分的培訓(xùn)
- ……..
軟件開發(fā)中的其他約束:功能集、進(jìn)度、預(yù)算、資源。
產(chǎn)品功能:在開發(fā)過(guò)程中,在各種約束面前,可能產(chǎn)品需要的功能很多,那么需要做的就是分清幾種需求吧:必須具有的功能、有則更好的功能、不會(huì)對(duì)簽單造成影響的功能、時(shí)間要求非常緊迫的功能等。很明顯分清這么幾種功能,并加以和客戶的協(xié)商溝通從而達(dá)到最佳的目的。使產(chǎn)品的成功對(duì)此約束的影響降到最低。這里還有一種需求可能是這樣的,我個(gè)人把他稱之為瞬時(shí)需求。假設(shè)某個(gè)需求市場(chǎng)需求特別急迫,如果滿足這個(gè)需求那么對(duì)于產(chǎn)品市場(chǎng)、公司形象等都是一個(gè)促進(jìn),那么這種需求做不做呢?那么多銀行推出各種各樣的奧運(yùn)VISA卡、某電視劇一經(jīng)推出市場(chǎng)立馬出現(xiàn)相關(guān)產(chǎn)品等,當(dāng)然這種需求需要對(duì)市場(chǎng)的準(zhǔn)確把握和對(duì)各種約束的協(xié)調(diào)等。
再說(shuō)進(jìn)度:文中給出了一個(gè)例子假設(shè)一個(gè)最有可能12天完成的任務(wù),新手的估計(jì)可能是5天,有人估計(jì)可能是30天,對(duì)完成任務(wù)有80%把握的開發(fā)人員,可能是20天。其實(shí)這種估計(jì)誤差的存在是合理的。但是錯(cuò)誤的估計(jì)導(dǎo)致的后果可能是項(xiàng)目的取消或者項(xiàng)目的冒進(jìn)。看完這里我想到一個(gè)估計(jì)的方法:估計(jì)人員的經(jīng)驗(yàn)系數(shù)×估計(jì)人員認(rèn)為的難度系數(shù)×估計(jì)時(shí)間。可以用多人來(lái)估計(jì),恩,最簡(jiǎn)單的就是任務(wù)承擔(dān)人和管理者2者估計(jì)的結(jié)合了。
除了上面的三種約束,其他2種,相對(duì)影響我覺得應(yīng)該比較小一點(diǎn)。
第三個(gè)過(guò)程域:服從于約束使用
一切都要服從于保護(hù)和利用約束決策。
第四過(guò)程域:提升約束
在制造業(yè)中通常會(huì)引入添加機(jī)器等手段,在軟件開發(fā)中提升約束通常通過(guò)無(wú)報(bào)酬的加班,聘用更多的開發(fā)人員或者倒班制。這些其實(shí)很多軟件工程書籍都提到不是很好的辦法,當(dāng)然也是被實(shí)踐所證明了的。文中提出了一個(gè)比較有效的辦法是使用更好的開發(fā)人員。我覺得還有其它幾個(gè)方面:充分激發(fā)現(xiàn)有人員的最大激情、流程合理、計(jì)劃合理等等。
最后:焦點(diǎn)
一切問(wèn)題的核心在于 投資回報(bào)率。這個(gè)公式很簡(jiǎn)單(產(chǎn)出-運(yùn)營(yíng)支出)/投入。如果投入增加,消除了這些約束那么產(chǎn)出自然增加,最后的公式是 投入回報(bào)=(原有產(chǎn)出+增加的產(chǎn)出)-投入/(原有投入+增加的投入)。
總結(jié):系統(tǒng)的總體生產(chǎn)應(yīng)該根據(jù)瓶頸能力進(jìn)行平衡。應(yīng)該保護(hù)和利用瓶頸,以最大限度地提高瓶頸的產(chǎn)出。
后記:此乃毫無(wú)管理經(jīng)驗(yàn)之人,在看書時(shí)的感想,如果言之不當(dāng)請(qǐng)批評(píng)指正。其實(shí)每個(gè)人都有自己的成功方式、管理方式、看待問(wèn)題的方式,所以很多時(shí)候大家都是對(duì)的。
2008年2月20日
代碼寫多了啥問(wèn)題都能遇到:)
保存為中文文件名時(shí)發(fā)生了亂碼.
ofstream of(szFilename);
of<<szStr;
of.close();
解決方法
1、使用C語(yǔ)言的函數(shù)設(shè)置為中文運(yùn)行環(huán)境
setlocale(LC_ALL,"");
2、使用STL函數(shù)設(shè)置為系統(tǒng)語(yǔ)言環(huán)境
std::locale::global(std::locale(""));
網(wǎng)上看到這個(gè)不錯(cuò)
C++ 庫(kù)匯總(網(wǎng)址+簡(jiǎn)介)
作者: 來(lái)源: 發(fā)表時(shí)間:2007-07-31
瀏覽次數(shù):
3333
字號(hào):大 中 小
基礎(chǔ)類
1、 Dinkumware C++ Library
參考站點(diǎn):http://www.dinkumware.com
P.J. Plauger編寫的高品質(zhì)的標(biāo)準(zhǔn)庫(kù)。P.J. Plauger博士是Dr.
Dobb's程序設(shè)計(jì)杰出獎(jiǎng)的獲得者。其編寫的庫(kù)長(zhǎng)期被Microsoft采用,并且最近Borland也取得了其OEM的license,在其C/C+
+的產(chǎn)品中采用Dinkumware的庫(kù)。
2、 RogueWave Standard C++ Library
參考站點(diǎn):http://www.roguewave.com
這個(gè)庫(kù)在Borland C++ Builder的早期版本中曾經(jīng)被采用,后來(lái)被其他的庫(kù)給替換了。筆者不推薦使用。
3、SGI STL
參考站點(diǎn):http://www.roguewave.com
SGI公司的C++標(biāo)準(zhǔn)模版庫(kù)。
4、STLport
參考站點(diǎn):http://www.stlport.org
SGI STL庫(kù)的跨平臺(tái)可移植版本。
5、準(zhǔn)標(biāo)準(zhǔn)庫(kù)——Boost
Boost 庫(kù)是一個(gè)經(jīng)過(guò)千錘百煉、可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的發(fā)動(dòng)機(jī)之一。
Boost庫(kù)由C++標(biāo)準(zhǔn)委員會(huì)庫(kù)工作組成員發(fā)起,在C++社區(qū)中影響甚大,其成員已近2000人。
Boost庫(kù)為我們帶來(lái)了最新、最酷、最實(shí)用的技術(shù),是不折不扣的"準(zhǔn)"標(biāo)準(zhǔn)庫(kù)。
Boost中比較有名氣的有這么幾個(gè)庫(kù):
Regex
正則表達(dá)式庫(kù)
Spirit
LL parser framework,用C++代碼直接表達(dá)EBNF
Graph
圖組件和算法
Lambda
在調(diào)用的地方定義短小匿名的函數(shù)對(duì)象,很實(shí)用的functional功能
Concept check
檢查泛型編程中的concept
MPL
用模板實(shí)現(xiàn)的元編程框架
Thread
可移植的C++多線程庫(kù)
Python
把C++類和函數(shù)映射到Python之中
Pool
內(nèi)存池管理
Smart_ptr
5個(gè)智能指針,學(xué)習(xí)智能指針必讀,一份不錯(cuò)的參考是來(lái)自CUJ的文章:
Smart Pointers in Boost,哦,這篇文章可以查到,CUJ是提供在線瀏覽的。中文版見筆者在《Dr. Dobb's Journal軟件研發(fā)雜志》第7輯上的譯文。
Boost
總體來(lái)說(shuō)是實(shí)用價(jià)值很高,質(zhì)量很高的庫(kù)。并且由于其對(duì)跨平臺(tái)的強(qiáng)調(diào),對(duì)標(biāo)準(zhǔn)C++的強(qiáng)調(diào),是編寫平臺(tái)無(wú)關(guān),現(xiàn)代C++的開發(fā)者必備的工具。但是Boost
中也有很多是實(shí)驗(yàn)性質(zhì)的東西,在實(shí)際的開發(fā)中實(shí)用需要謹(jǐn)慎。并且很多Boost中的庫(kù)功能堪稱對(duì)語(yǔ)言功能的擴(kuò)展,其構(gòu)造用盡精巧的手法,不要貿(mào)然的花費(fèi)時(shí)
間研讀。Boost另外一面,比如Graph這樣的庫(kù)則是具有工業(yè)強(qiáng)度,結(jié)構(gòu)良好,非常值得研讀的精品代碼,并且也可以放心的在產(chǎn)品代碼中多多利用。
參考站點(diǎn):http://www.boost.org(國(guó)內(nèi)鏡像:http://www.c-view.org/tech/lib/boost/index.htm)
GUI
在眾多C++的庫(kù)中,GUI部分的庫(kù)算是比較繁榮,也比較引人注目的。在實(shí)際開發(fā)中,GUI庫(kù)的選擇也是非常重要的一件事情,下面我們綜述一下可選擇的GUI庫(kù),各自的特點(diǎn)以及相關(guān)工具的支持。
1) mfc
大 名鼎鼎的微軟基礎(chǔ)類庫(kù)(Microsoft Foundation
Class)。大凡學(xué)過(guò)VC++的人都應(yīng)該知道這個(gè)庫(kù)。雖然從技術(shù)角度講,MFC是不大漂亮的,但是它構(gòu)建于Windows API
之上,能夠使程序員的工作更容易,編程效率高,減少了大量在建立 Windows 程序時(shí)必須編寫的代碼,同時(shí)它還提供了所有一般 C++
編程的優(yōu)點(diǎn),例如繼承和封裝。MFC 編寫的程序在各個(gè)版本的Windows操作系統(tǒng)上是可移植的,例如,在 Windows
3.1下編寫的代碼可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近發(fā)展以及官方支持上日漸勢(shì)微。
2) QT
參考網(wǎng)站:http://www.trolltech.com
Qt
是Trolltech公司的一個(gè)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。Qt是完全面
向?qū)ο蟮暮苋菀讛U(kuò)展,并且允許真正地組件編程。自從1996年早些時(shí)候,Qt進(jìn)入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。Qt也是
流行的Linux桌面環(huán)境KDE 的基礎(chǔ),同時(shí)它還支持Windows、Macintosh、Unix/X11等多種平臺(tái)。
3) WxWindows
參考網(wǎng)站:http://www.wxwindows.org
跨
平臺(tái)的GUI庫(kù)。因?yàn)槠漕悓哟螛O像MFC,所以有文章介紹從MFC到WxWindows的代碼移植以實(shí)現(xiàn)跨平臺(tái)的功能。通過(guò)多年的開發(fā)也是一個(gè)日趨完善的
GUI庫(kù),支持同樣不弱于前面兩個(gè)庫(kù)。并且是完全開放源代碼的。新近的C++ Builder X的GUI設(shè)計(jì)器就是基于這個(gè)庫(kù)的。
4) Fox
開放源代碼的GUI庫(kù)。作者從自己親身的開發(fā)經(jīng)驗(yàn)中得出了一個(gè)理想的GUI庫(kù)應(yīng)該是什么樣子的感受出發(fā),從而開始了對(duì)這個(gè)庫(kù)的開發(fā)。有興趣的可以嘗試一下。
參考網(wǎng)站:http://www.fox-toolkit.org/
5) WTL
基于ATL的一個(gè)庫(kù)。因?yàn)槭褂昧舜罅緼TL的輕量級(jí)手法,模板等技術(shù),在代碼尺寸,以及速度優(yōu)化方面做得非常到位。主要面向的使用群體是開發(fā)COM輕量級(jí)供網(wǎng)絡(luò)下載的可視化控件的開發(fā)者。
6) GTK
參考網(wǎng)站:http://gtkmm.sourceforge.net/
GTK是一個(gè)大名鼎鼎的C的開源GUI庫(kù)。在Linux世界中有Gnome這樣的殺手應(yīng)用。而GTK就是這個(gè)庫(kù)的C++封裝版本。
網(wǎng)絡(luò)通信
1) ACE
參考網(wǎng)站:http://www.cs.wustl.edu/~schmidt/ACE.html
C+ +庫(kù)的代表,超重量級(jí)的網(wǎng)絡(luò)通信開發(fā)框架。ACE自適配通信環(huán)境(Adaptive Communication
Environment)是可以自由使用、開放源代碼的面向?qū)ο罂蚣埽谄渲袑?shí)現(xiàn)了許多用于并發(fā)通信軟件的核心模式。ACE提供了一組豐富的可復(fù)用C++
包裝外觀(Wrapper
Facade)和框架組件,可跨越多種平臺(tái)完成通用的通信軟件任務(wù),其中包括:事件多路分離和事件處理器分派、信號(hào)處理、服務(wù)初始化、進(jìn)程間通信、共享內(nèi)
存管理、消息路由、分布式服務(wù)動(dòng)態(tài)(重)配置、并發(fā)執(zhí)行和同步,等等。
2) StreamModule
參考網(wǎng)站:http://www.omnifarious.org/StrMod/
設(shè)計(jì)用于簡(jiǎn)化編寫分布式程序的庫(kù)。嘗試著使得編寫處理異步行為的程序更容易,而不是用同步的外殼包起異步的本質(zhì)。
3) SimpleSocket
參考網(wǎng)站:http://home.hetnet.nl/~lcbokkers/simsock.htm
這個(gè)類庫(kù)讓編寫基于socket的客戶/服務(wù)器程序更加容易。
4) A Stream Socket API for C++
參考網(wǎng)站:http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html
又一個(gè)對(duì)Socket的封裝庫(kù)。
XML
1) Xerces
參考網(wǎng)站:http://xml.apache.org/xerces-c/
Xerces-C++ 是一個(gè)非常健壯的XML解析器,它提供了驗(yàn)證,以及SAX和DOM API。XML驗(yàn)證在文檔類型定義(Document
Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML Schema 的基本完整的開放標(biāo)準(zhǔn)。
2) XMLBooster
參考網(wǎng)站:http://www.xmlbooster.com/
這個(gè)庫(kù)通過(guò)產(chǎn)生特制的parser的辦法極大的提高了XML解析的速度,并且能夠產(chǎn)生相應(yīng)的GUI程序來(lái)修改這個(gè)parser。在DOM和SAX兩大主流XML解析辦法之外提供了另外一個(gè)可行的解決方案。
3) Pull Parser
參考網(wǎng)站:http://www.extreme.indiana.edu/xgws/xsoap/xpp/
這個(gè)庫(kù)采用pull方法的parser。在每個(gè)SAX的parser底層都有一個(gè)pull的parser,這個(gè)xpp把這層暴露出來(lái)直接給大家使用。在要充分考慮速度的時(shí)候值得嘗試。
4) Xalan
參考網(wǎng)站:http://xml.apache.org/xalan-c/
Xalan是一個(gè)用于把XML文檔轉(zhuǎn)換為HTML,純文本或者其他XML類型文檔的XSLT處理器。
5) CMarkup
參考網(wǎng)站:
這是一種使用EDOM的XML解析器。在很多思路上面非常靈活實(shí)用。值得大家在DOM和SAX之外尋求一點(diǎn)靈感。
6) libxml++
http://libxmlplusplus.sourceforge.net/
libxml++是對(duì)著名的libxml XML解析器的C++封裝版本
科學(xué)計(jì)算
1) Blitz++
參考網(wǎng)站:http://www.oonumerics.org/blitz/
Blitz++ 是一個(gè)高效率的數(shù)值計(jì)算函數(shù)庫(kù),它的設(shè)計(jì)目的是希望建立一套既具像C++
一樣方便,同時(shí)又比Fortran速度更快的數(shù)值計(jì)算環(huán)境。通常,用C++所寫出的數(shù)值程序,比
Fortran慢20%左右,因此Blitz++正是要改掉這個(gè)缺點(diǎn)。方法是利用C++的template技術(shù),程序執(zhí)行甚至可以比Fortran更快。
Blitz++目前仍在發(fā)展中,對(duì)于常見的SVD,F(xiàn)FTs,QMRES等常見的線性代數(shù)方法并不提供,不過(guò)使用者可以很容易地利用Blitz++所提供
的函數(shù)來(lái)構(gòu)建。
2) POOMA
參考網(wǎng)站:http://www.codesourcery.com/pooma/pooma
POOMA是一個(gè)免費(fèi)的高性能的C++庫(kù),用于處理并行式科學(xué)計(jì)算。POOMA的面向?qū)ο笤O(shè)計(jì)方便了快速的程序開發(fā),對(duì)并行機(jī)器進(jìn)行了優(yōu)化以達(dá)到最高的效率,方便在工業(yè)和研究環(huán)境中使用。
3) MTL
參考網(wǎng)站:http://www.osl.iu.edu/research/mtl/
Matrix Template Library(MTL)是一個(gè)高性能的泛型組件庫(kù),提供了各種格式矩陣的大量線性代數(shù)方面的功能。在某些應(yīng)用使用高性能編譯器的情況下,比如Intel的編譯器,從產(chǎn)生的匯編代碼可以看出其與手寫幾乎沒(méi)有兩樣的效能。
4) CGAL
參考網(wǎng)站:www.cgal.org
Computational Geometry Algorithms Library的目的是把在計(jì)算幾何方面的大部分重要的解決方案和方法以C++庫(kù)的形式提供給工業(yè)和學(xué)術(shù)界的用戶。
游戲開發(fā)
1) Audio/Video 3D C++ Programming Library
參考網(wǎng)站:http://www.galacticasoftware.com/products/av/
AV3D是一個(gè)跨平臺(tái),高性能的C++庫(kù)。主要的特性是提供3D圖形,聲效支持(SB,以及S3M),控制接口(鍵盤,鼠標(biāo)和遙感),XMS。
2) KlayGE
參考網(wǎng)站:http://home.g365.net/enginedev/
國(guó)內(nèi)游戲開發(fā)高手自己用C++開發(fā)的游戲引擎。KlayGE是一個(gè)開放源代碼、跨平臺(tái)的游戲引擎,并使用Python作腳本語(yǔ)言。KlayGE在LGPL協(xié)議下發(fā)行。感謝龔敏敏先生為中國(guó)游戲開發(fā)事業(yè)所做出的貢獻(xiàn)。
3) OGRE
參考網(wǎng)站:http://www.ogre3d.org
OGRE
(面向?qū)ο蟮膱D形渲染引擎)是用C++開發(fā)的,使用靈活的面向?qū)ο?D引擎。它的目的是讓開發(fā)者能更方便和直接地開發(fā)基于3D硬件設(shè)備的應(yīng)用程序或游戲。
引擎中的類庫(kù)對(duì)更底層的系統(tǒng)庫(kù)(如:Direct3D和OpenGL)的全部使用細(xì)節(jié)進(jìn)行了抽象,并提供了基于現(xiàn)實(shí)世界對(duì)象的接口和其它類。
線程
1) C++ Threads
參考網(wǎng)站:http://threads.sourceforge.net/
這個(gè)庫(kù)的目標(biāo)是給程序員提供易于使用的類,這些類被繼承以提供在Linux環(huán)境中很難看到的大量的線程方面的功能。
2) ZThreads
參考網(wǎng)站:http://zthread.sourceforge.net/
一個(gè)先進(jìn)的面向?qū)ο螅缙脚_(tái)的C++線程和同步庫(kù)。
序列化
1) s11n
參考網(wǎng)站:http://s11n.net/
一個(gè)基于STL的C++庫(kù),用于序列化POD,STL容器以及用戶定義的類型。
2) Simple XML Persistence Library
參考網(wǎng)站:http://sxp.sourceforge.net/
這是一個(gè)把對(duì)象序列化為XML的輕量級(jí)的C++庫(kù)。
字符串
1) C++ Str Library
參考網(wǎng)站:http://www.utilitycode.com/str/
操作字符串和字符的庫(kù),支持Windows和支持gcc的多種平臺(tái)。提供高度優(yōu)化的代碼,并且支持多線程環(huán)境和Unicode,同時(shí)還有正則表達(dá)式的支持。
2) Common Text Transformation Library
參考網(wǎng)站:http://cttl.sourceforge.net/
這是一個(gè)解析和修改STL字符串的庫(kù)。CTTL substring類可以用來(lái)比較,插入,替換以及用EBNF的語(yǔ)法進(jìn)行解析。
3) GRETA
參考網(wǎng)站:http://research.microsoft.com/projects/greta/
這是由微軟研究院的研究人員開發(fā)的處理正則表達(dá)式的庫(kù)。在小型匹配的情況下有非常優(yōu)秀的表現(xiàn)。
綜合
1) P::Classes
參考網(wǎng)站:http://pclasses.com/
一個(gè)高度可移植的C++應(yīng)用程序框架。當(dāng)前關(guān)注類型和線程安全的signal/slot機(jī)制,i/o系統(tǒng)包括基于插件的網(wǎng)絡(luò)協(xié)議透明的i/o架構(gòu),基于插件的應(yīng)用程序消息日志框架,訪問(wèn)sql數(shù)據(jù)庫(kù)的類等等。
2) ACDK - Artefaktur Component Development Kit
參考網(wǎng)站:http://acdk.sourceforge.net/
這是一個(gè)平臺(tái)無(wú)關(guān)的C++組件框架,類似于Java或者.NET中的框架(反射機(jī)制,線程,Unicode,廢料收集,I/O,網(wǎng)絡(luò),實(shí)用工具,XML,等等),以及對(duì)Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。
3) dlib C++ library
參考網(wǎng)站:http://www.cis.ohio-state.edu/~kingd/dlib/
各種各樣的類的一個(gè)綜合。大整數(shù),Socket,線程,GUI,容器類,以及瀏覽目錄的API等等。
4) Chilkat C++ Libraries
參考網(wǎng)站:
這是提供zip,e-mail,編碼,S/MIME,XML等方面的庫(kù)。
5) C++ Portable Types Library (PTypes)
參考網(wǎng)站:
這是STL的比較簡(jiǎn)單的替代品,以及可移植的多線程和網(wǎng)絡(luò)庫(kù)。
6) LFC
參考網(wǎng)站:http://lfc.sourceforge.net/
哦,這又是一個(gè)嘗試提供一切的C++庫(kù)
其他庫(kù)
1) Loki
參考網(wǎng)站:http://www.moderncppdesign.com/
哦,你可能抱怨我早該和Boost一起介紹它,一個(gè)實(shí)驗(yàn)性質(zhì)的庫(kù)。作者在loki中把C++模板的功能發(fā)揮到了極致。并且嘗試把類似設(shè)計(jì)模式這樣思想層面的東西通過(guò)庫(kù)來(lái)提供。同時(shí)還提供了智能指針這樣比較實(shí)用的功能。
2) ATL
ATL(Active Template Library)是一組小巧、高效、靈活的類,這些類為創(chuàng)建可互操作的COM組件提供了基本的設(shè)施。
3) FC++: The Functional C++ Library
這
個(gè)庫(kù)提供了一些函數(shù)式語(yǔ)言中才有的要素。屬于用庫(kù)來(lái)擴(kuò)充語(yǔ)言的一個(gè)代表作。如果想要在OOP之外尋找另一分的樂(lè)趣,可以去看看函數(shù)式程序設(shè)計(jì)的世界。大師
Peter Norvig在 "Teach Yourself Programming in Ten
Years"一文中就將函數(shù)式語(yǔ)言列為至少應(yīng)當(dāng)學(xué)習(xí)的6類編程語(yǔ)言之一。
4) FACT!
參考網(wǎng)站:http://www.kfa-juelich.de/zam/FACT/start/index.html
另外一個(gè)實(shí)現(xiàn)函數(shù)式語(yǔ)言特性的庫(kù)
5) Crypto++
提供處理密碼,消息驗(yàn)證,單向hash,公匙加密系統(tǒng)等功能的免費(fèi)庫(kù)。
還有很多非常激動(dòng)人心或者是極其實(shí)用的C++庫(kù),限于我們的水平以及文章的篇幅不能包括進(jìn)來(lái)。在對(duì)于這些已經(jīng)包含近來(lái)的庫(kù)的介紹中,由于并不是每一個(gè)我們都使用過(guò),所以難免有偏頗之處,請(qǐng)讀者見諒。
6) Managed C++ wrapper for ZLib
壓縮組件Zlib的C++類庫(kù)
7) CppSQLite - C++ Wrapper for SQLite
SQLite C++封裝庫(kù)
8)CxImage
圖像格式轉(zhuǎn)換
資源網(wǎng)站
正
如我們可以通過(guò)計(jì)算機(jī)歷史上的重要人物了解計(jì)算機(jī)史的發(fā)展,C++相關(guān)人物的網(wǎng)站也可以使我們得到最有價(jià)值的參考與借鑒,下面的人物我們認(rèn)為沒(méi)有介紹的必
要,只因下面的人物在C++領(lǐng)域的地位眾所周知,我們只將相關(guān)的資源進(jìn)行羅列以供讀者學(xué)習(xí),他們有的工作于貝爾實(shí)驗(yàn)室,有的工作于知名編譯器廠商,有的在
不斷推進(jìn)語(yǔ)言的標(biāo)準(zhǔn)化,有的為讀者撰寫了多部千古奇作......
Bjarne Stroustrup http://www.research.att.com/~bs/
Stanley B. Lippman http: //blogs.msdn.com/slippman/(中文版http://www.zengyihome.net/slippman/index.htm)
Scott Meyers http://www.aristeia.com/
David Musser http://www.cs.rpi.edu/~musser/
Bruce Eckel http://www.bruceeckel.com
Nicolai M. Josuttis http://www.josuttis.com/
Herb Sutter http://www.gotw.ca/
Andrei Alexandrescu
http://www.moderncppdesign.com/
搞了半天,網(wǎng)上搜了不少帖子,說(shuō)用SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW|);
這個(gè)方法可以實(shí)現(xiàn),我從sourceforge上下了個(gè)源碼,也有的確用這種方法實(shí)現(xiàn)的。但是我的不知道為什么就是不行,郁悶死了
最后稍作改變搞定了,暈死。
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0,0,100,100,SWP_NOMOVE|SWP_NOSIZE);
這是然,所以然不知道。
WINAPI和CALLBACK這兩個(gè)宏 WINAPI和CALLBACK這兩個(gè)宏有什么區(qū)別呢?
_stdcall _cdecl _pascal _fastcall這些關(guān)鍵字是什么意思,有什么區(qū)別呢?
首先看MSDN里給出的解釋,不過(guò)有些語(yǔ)焉不詳哦
WINAPI
·Use in place of FAR PASCAL in API declarations. If you are writing a DLL with exported API entry points, you can use this for your own APIs.
CALLBACK
·Use in place of FAR PASCAL in application callback routines such as window procedures and dialog procedures.
再看看到底這兩個(gè)宏的內(nèi)容是什么吧
VC:WINDEF.h
#define CALLBACK PASCAL //=_pascal,VC已經(jīng)不支持直接使用_pascal了
#define WINAPI CDECL //=_cdecl
BCB:windef.h
#define CALLBACK __stdcall
#define WINAPI __stdcall
引出了cdecl stdcall等一些可能很少見的關(guān)鍵字
那么cdecl、pascal、stdcall、fastcall等修飾符號(hào)到底什么意思呢?
非常簡(jiǎn)單,就是關(guān)于堆棧的一些說(shuō)明,首先是函數(shù)參數(shù)壓棧順序,其次是
壓入堆棧的內(nèi)容由誰(shuí)來(lái)清除,調(diào)用者還是函數(shù)自己?
這些開關(guān)用來(lái)告訴編譯器產(chǎn)生什么樣的匯編代碼。
下面把區(qū)別列表如下:
Directive Parameter order Clean-up Passes parameters in registers?
register Left-to-right Routine Yes
pascal Left-to-right Routine No
cdecl Right-to-left Caller No
stdcall Right-to-left Routine No
safecall Right-to-left Routine No
簡(jiǎn)單說(shuō)明:
__cdecl是C/C++和MFC程序默認(rèn)使用的調(diào)用約定,也可以在函數(shù)聲明時(shí)加上__cdecl關(guān)鍵字來(lái)手工指定。采用__cdecl約定時(shí),函數(shù)參
數(shù)按照從右到左的順序入棧,并且由調(diào)用函數(shù)者把參數(shù)彈出棧以清理堆棧。因此,實(shí)現(xiàn)可變參數(shù)的函數(shù)只能使用該調(diào)用約定。由于每一個(gè)使用__cdecl約定的
函數(shù)都要包含清理堆棧的代碼,所以產(chǎn)生的可執(zhí)行文件大小會(huì)比較大。__cdecl可以寫成_cdecl。
__stdcall調(diào)用約定用于調(diào)用Win32 API函數(shù)。采用__stdcal約定時(shí),函數(shù)參數(shù)按照從右到左的順序入棧,被調(diào)用的函
數(shù)在返回前清理傳送參數(shù)的棧,函數(shù)參數(shù)個(gè)數(shù)固定。由于函數(shù)體本身知道傳進(jìn)來(lái)的參數(shù)個(gè)數(shù),因此被調(diào)用的函數(shù)可以在返回前用一條ret n指令直接清理傳遞參
數(shù)的堆棧。__stdcall可以寫成_stdcall。
__fastcall約定用于對(duì)性能要求非常高的場(chǎng)合。__fastcall約定將函數(shù)的從左邊開始的兩個(gè)大小不大于4個(gè)字節(jié)
(DWORD)的參數(shù)分別放在ECX和EDX寄存器,其余的參數(shù)仍舊自右向左壓棧傳送,被調(diào)用的函數(shù)在返回前清理傳送參數(shù)的堆棧。__fastcall可
以寫成_fastcall。
·特別說(shuō)明
1. 在默認(rèn)情況下,采用__cdecl方式,因此可以省略.
2. WINAPI一般用于修飾動(dòng)態(tài)鏈接庫(kù)中導(dǎo)出函數(shù)
3. CALLBACK僅用于修飾回調(diào)函數(shù)
4. 你可能已經(jīng)發(fā)現(xiàn),VC下和BCB下對(duì)WINAPI的定義不同,那么你至少理解了
為什么不能直接從BCB下調(diào)用VC的dll的一個(gè)原因了。
2008年2月2日
微軟老員工分享面試經(jīng)歷
關(guān)鍵詞:
微軟 老員工 分享 面試經(jīng)歷
對(duì)于微軟亞洲研究院九年的建院歷史而言,工作十年以上的員工并不多,鄒
欣便是這為數(shù)不多中的一員。他在美國(guó)獲得計(jì)算機(jī)碩士學(xué)位后便與微軟結(jié)緣,先后在微軟總部參與開發(fā)了Outlook, Visual Studio
2005等軟件項(xiàng)目,2005年回國(guó)加入微軟亞洲研究院創(chuàng)新工程中心,擔(dān)任開發(fā)經(jīng)理。時(shí)隔十余年之久,鄒欣回憶起了他當(dāng)年的微軟面試故事。
作者: 鄒欣
大約是1996年春天,我在韋恩州立大學(xué)(Wayne State
University)正忙著寫碩士論文。一天,收到了一封電子郵件,來(lái)自Richard Brodie,我依稀還記得上面寫著:"I'm the
creator of Word. I found your resume… are you interested in a contract
position at Microsoft?"他叫我寫了一個(gè)程序
(好像是二叉樹排序),我寫好之后email給他。幾天之后,他又安排了微軟的一個(gè)電話面試,主要詢問(wèn)了一些關(guān)于項(xiàng)目、程序設(shè)計(jì)語(yǔ)言方面的知識(shí)。不久,他
說(shuō)還得去面試,就把去微軟公司總部Seattle的來(lái)回機(jī)票寄給我了。在這之前,我已經(jīng)得到了幾家軟件公司的Offer。因?yàn)橐郧坝羞^(guò)在一個(gè)大型公司工作
的經(jīng)歷,我對(duì)大公司的興趣倒不是特別大,但是又一想,免費(fèi)的機(jī)票、還有Microsoft 的名聲,抱著去看看的心理就上路了。
那天清早,從Detroit 經(jīng)Pittsburg 到了Seattle,由于時(shí)差的關(guān)系,到達(dá)時(shí)還是早上。Richard
接了我,從機(jī)場(chǎng)到微軟的路上,他和我聊了我在國(guó)內(nèi)做過(guò)的項(xiàng)目。聽說(shuō)我們?cè)谀繕?biāo)碼上漢化了SCO
Unix,他吃了一驚,拍拍我的肩膀說(shuō),那你做這個(gè)工作是沒(méi)問(wèn)題的了。
我進(jìn)了微軟17樓的門廳,覺得氣派不小,一個(gè)叫Gary 的人把我領(lǐng)到他的辦公室,屋里堆滿了各種各樣的玩具,一個(gè)大盒子上好像還有日語(yǔ)寫的“棋盤”二字。寒暄之后,就直奔主題。
他問(wèn)道:“在一個(gè)含有DBCS的字符串中,如何從當(dāng)前的位置向字符串頭退一個(gè)完整的字符?”
你們看到這個(gè)地方可千萬(wàn)別笑,當(dāng)時(shí)的不少文字編輯器不能處理這些問(wèn)題,編輯的光標(biāo)時(shí)不時(shí)會(huì)跑到一個(gè)漢字的中間去。我在黑板上邊寫算法,他在旁邊提問(wèn)。這
個(gè)問(wèn)題的關(guān)鍵是了解DBCS (Double Byte Character Set) 中 leading byte 和 trailing
byte 的區(qū)別,然后向字符串開始處搜索,寫完大概的算法后,又討論了優(yōu)化的問(wèn)題。寫完之后,他好像挺滿意。
(現(xiàn)在想不起來(lái)午飯是如何解決的了,一般情況下吃午飯時(shí)也要安排面試,問(wèn)一些和技術(shù)有關(guān)的問(wèn)題)
第二個(gè)見面的叫Daniel,看樣子像中國(guó)人,他叫我做了幾個(gè)指針的程序,大概是把單鏈表倒過(guò)來(lái)之類的。然后要我分析各種算法的優(yōu)劣。這一關(guān)很順利就過(guò)了。
第三個(gè)見面的叫Matt,他跟我談了他們正在做一個(gè)叫outlook 的email
和個(gè)人信息管理程序,遠(yuǎn)東版(中日韓語(yǔ)言)進(jìn)度很慢,需要做不少處理雙字節(jié)的工作,以及各種和中日韓環(huán)境有關(guān)的問(wèn)題。我問(wèn)他:“你們?yōu)樯恫挥?Unicode, 我覺得Unicode 一出,就再也不用DBCS了。”他有點(diǎn)尷尬地說(shuō),我們的程序是建立在一個(gè)叫MAPI
的平臺(tái)上的,它還不支持 Unicode。正說(shuō)著,門外一陣騷動(dòng),有人推門進(jìn)來(lái)說(shuō):“哥們,快去……”。征得我的同意之后,Matt
帶著我來(lái)到一個(gè)大廳,一幫人圍著看一個(gè)人在被剃光頭,有人還在起哄。被剃者面帶微笑,巋然不動(dòng)。他叫Mike,是Outlook
的開發(fā)經(jīng)理(development manager)。據(jù)說(shuō)他和大家打賭,如果在某月某日之前整個(gè)團(tuán)隊(duì)的bug
數(shù)量減少到一定數(shù)目,他就以光頭回報(bào)。
看完剃頭事件,我從冰箱拿了一聽
Mountain Dew,和 Matt 回到他的辦公室,繼續(xù)面試。Matt 叫我實(shí)現(xiàn)標(biāo)準(zhǔn)函數(shù) itoa()
功能,就是把數(shù)字轉(zhuǎn)換成為字符串輸出。或許是累了,或許是Mountain
Dew里的咖啡因起了作用,我覺得用簡(jiǎn)單的循環(huán)方法太平常了,就思考著是否可以用數(shù)學(xué)庫(kù)函數(shù)來(lái)做。他說(shuō),這是我第一次看到這樣的解法,你為啥不用簡(jiǎn)單的方
法?你知道數(shù)學(xué)庫(kù)函數(shù)有多慢么?其實(shí),我當(dāng)時(shí)的幼稚想法是想通過(guò)這種解法向面試官證明自己懂得并不少。
下午,Richard 送我到機(jī)場(chǎng)附近的旅館,路上他問(wèn),要不要在西雅圖一帶兜兜風(fēng)?我說(shuō),我覺得我肯定會(huì)來(lái)這里上班的,以后有的是機(jī)會(huì),這次就不用了:)。吃晚飯時(shí),我還買了一份報(bào)紙,拿了幾份房地產(chǎn)的廣告,和中西部的價(jià)格比較了一下:)。
回到底特律一兩天后,Richard 來(lái)email
說(shuō),前兩個(gè)面試都挺好,好象第三個(gè)面試官有些看法……又過(guò)了幾天,他說(shuō),你可以來(lái)上班了。于是,我就推掉了其它公司的offer,來(lái)到了微軟公司所在的雷
德蒙,成為了Richard Brodie 公司的職員,在微軟里開始為遠(yuǎn)東版的Outlook進(jìn)行開發(fā)。 我那時(shí)的email
地址前有一個(gè)“v-”,表示vendor。
當(dāng)時(shí)我面試的公司中,我記得只有微軟是要
求我當(dāng)場(chǎng)寫程序,其他公司有一個(gè)是問(wèn)了一些簡(jiǎn)單的問(wèn)題后,就說(shuō),好吧,我們馬上發(fā)傳真Offer,你下個(gè)星期就過(guò)來(lái)吧。我說(shuō),這么快?于是要求和公司再了
解一下,于是他們找了一個(gè)中國(guó)員工來(lái)和我談,后來(lái)得知他們是給別的公司做外包,業(yè)務(wù)特別多,急著要人。
我現(xiàn)在還記得曾經(jīng)有個(gè)公司問(wèn)我“你如何定義成功?”,這個(gè)問(wèn)題真是難以回答,我真想親自問(wèn)一下提問(wèn)人的標(biāo)準(zhǔn)答案是什么。還有一個(gè)公司還叫我做了兩個(gè)小時(shí)
的心理測(cè)試問(wèn)卷,其中問(wèn)到:“古今中外,你崇拜的人是誰(shuí),為什么?”我心想如果寫中國(guó)的古代高士,那太難解釋清楚了,于是我轉(zhuǎn)而描述了某位美國(guó)開國(guó)元?jiǎng)祝?而且盡量小心不要把他的事跡和其他開國(guó)元?jiǎng)椎氖论E混淆起來(lái)。大概他們分析出來(lái)我的心理還算主流,不久之后我也得到了這家公司的邀請(qǐng)。
當(dāng)時(shí)一個(gè)芝加哥的公司聽說(shuō)我不想接受他們的offer,問(wèn)我為啥?我說(shuō)西雅圖氣候宜人,而芝加哥太冷了,他們就說(shuō),這樣,你的薪水上還可以再加上幾千
元,這樣芝加哥的冬天就比西雅圖還好過(guò)了,如何?我想了想,還是直奔西雅圖而去。現(xiàn)在回想這些面試過(guò)程中的趣事,還真是挺有意思的。
在微軟上班一年后,我成為了微軟正式職工,沒(méi)有經(jīng)過(guò)面試。當(dāng)時(shí)outlook
的總經(jīng)理叫Brian,他經(jīng)常采取一些非常規(guī)的辦法勸說(shuō)在那里實(shí)習(xí)的學(xué)生直接成為正式職工,好像Daniel
就是退學(xué)后直接轉(zhuǎn)正的。我問(wèn)我的老板,不是說(shuō)成為正式職工要5
個(gè)人面試么?他說(shuō),別浪費(fèi)時(shí)間了,你的工作就是最好的面試。我想與即將經(jīng)歷面試的畢業(yè)生朋友們一起共勉。
Powered by ScribeFire.
2008年1月29日
今天用map時(shí),想輸出map中的內(nèi)容到文件中,但是map的key我用的是字符串,這樣做遍歷輸出來(lái)的就是按照字母排序的,但我要按照id大小排序,查了一下,網(wǎng)上有人說(shuō)map默認(rèn)就是排序好的,只能用key排序。看來(lái)除非換成vector等其他方式了,考慮到擴(kuò)展性重新同時(shí)生成了一個(gè)id為key的map。
我想map還是應(yīng)該有辦法解決的,請(qǐng)高手指點(diǎn)!備案保存。
2008年1月28日
嘿嘿,本來(lái)是被MM拽上去逛學(xué)校,哈哈。結(jié)果在康博思腐敗了頓后,轉(zhuǎn)悠到未名湖,發(fā)現(xiàn)湖面上厚厚的冰,很多人在上面溜冰、玩冰車。本來(lái)沒(méi)打算劃的,因?yàn)榫褪谴髮W(xué)本科的時(shí)候在陜西滑過(guò)幾次,并且還不是特別會(huì)。真正的冰上更是沒(méi)感受過(guò),雖然每年我們宿舍后面的荷塘也結(jié)上一層厚厚的冰,但沒(méi)敢上去過(guò)。在老婆的忽悠下,被她連哄帶騙花了10元租了雙冰鞋。開始她還說(shuō)和我換著玩的,后來(lái)才發(fā)現(xiàn)那是騙人的。
在lp的攙扶下,走了幾步,基本能站住了。最后慢慢的終于能滑上小段了,嘿嘿。不過(guò)期間也摔了幾次,第一次和一mm撞上了,然后都是別人倒在我的面前之后,嘿,不會(huì)剎車啊,只有同歸于盡了:),關(guān)鍵是像我這種不會(huì)的太多了,不是別人撞我了就是我撞別人了,繞冰場(chǎng)轉(zhuǎn)了2圈,終于可以一只腳蹬了,估計(jì)mm被凍得不行了,我還沒(méi)玩夠呢,她就要走了,呵呵。那就打到回府吧。最后又溜了2圈,終于可以換腳了,下次一定要學(xué)會(huì)剎車,呵呵。不過(guò)不知道什么時(shí)候再能去玩,pku和thu離家有點(diǎn)遠(yuǎn),郁悶。
其實(shí)最后挺不好意思的,本來(lái)說(shuō)陪lp逛街的,結(jié)果變成mm陪我溜冰了。來(lái)張亮照。

發(fā)信人: kuji (無(wú)心·等我回來(lái)), 信區(qū): TrafficInfo
標(biāo) 題: 真慘 無(wú)奈的16小時(shí)-記江西連環(huán)相撞事故zz(提醒開車回家的朋友) (轉(zhuǎn)載)
發(fā)信站: 水木社區(qū) (Sun Jan 27 23:40:57 2008), 站內(nèi)
?
【 以下文字轉(zhuǎn)載自 AutoWorld 討論區(qū) 】
發(fā)信人: prog2000 (世間有真情), 信區(qū): AutoWorld
標(biāo) 題: 真慘 無(wú)奈的16小時(shí)-記江西連環(huán)相撞事故zz
發(fā)信站: 水木社區(qū) (Sun Jan 27 21:34:01 2008), 站內(nèi)
?
http://www.xcar.com.cn/bbs/viewthread.php?tid=6945954&extra=&showthread=&page=1
?
貼個(gè)文字版
無(wú)奈的16小時(shí)-記江西連環(huán)相撞事故
?
?
?
?
這一天,讓我感受到了人的生命是如此的脆弱。
?
時(shí)間:2008年1月25日
?
地點(diǎn):南昌西二環(huán)9KM
?
事件:橋面結(jié)冰引致連環(huán)相撞
?
?
早上7點(diǎn)30,韶山某酒店停車場(chǎng),我一出酒店就差點(diǎn)滑的飛了出去,樓梯上,地面上全是冰,平均兩厘米厚度 。看著我的車,基本上被鍍上了一層冰甲,我花了17分鐘才把玻璃上的冰給鏟除掉。
?
?
?
?
昨天因?yàn)樵谏厣經(jīng)_結(jié)冰路面上掉頭,車失去控制撞了防護(hù)欄,所以在韶山耽誤了兩天,等保險(xiǎn)給我出查
勘單。我為什么跑去韶山?jīng)_,因?yàn)榫┲楸狈饴罚恢辈婚_放,我就順便去瞻仰一下毛主席,可能我穿了一身美帝的軍衣軍褲還有鞋子,所以主席不高興,懲罰我撞了護(hù)欄,這是我第一次領(lǐng)略冰路的麻煩。
?
韶山早上的路面全是薄冰,幸好路上沒(méi)車,時(shí)速2-30公里開著,聽湖南交通臺(tái),今天高速又封閉了,我準(zhǔn)備開到長(zhǎng)沙再說(shuō)吧。一個(gè)小時(shí)后,我來(lái)到一個(gè)長(zhǎng)陡坡前,上面三輛車都在刨著,不一會(huì)又滑了下來(lái),
因?yàn)槭莻€(gè)大坡,所以很多減速坎,車速度一慢下來(lái)就上不去了。我在后面看著,他們找來(lái)很多樹枝,麻袋,一個(gè)小車上去了,另外一個(gè)也上去了,就剩下一個(gè)了,我就跟在后面沖。這車快到頂?shù)臅r(shí)候突然歇菜了,我快到坡頂時(shí),突然一老頭從路邊走了出來(lái),嚇得我一剎車,壞了,再也上不去了。于是兩個(gè)車
拼命吼叫著,輪胎就像空轉(zhuǎn)一樣,沒(méi)點(diǎn)反應(yīng),我車都快橫過(guò)來(lái)了,路邊的村民都出來(lái)看熱鬧。我冷靜下來(lái)后,把車倒到坡下,然后往回平路開了100米左右,用2檔起步,靠慣性沖了上去。這讓我第二次領(lǐng)略到了冰路的麻煩。
?
我走國(guó)道到湘潭,然后到了長(zhǎng)沙,107國(guó)道有個(gè)大坡結(jié)冰,幾百車排隊(duì),大塞車,我后來(lái)跟著交警的車沖了出去,我是從坡上往下,所以沒(méi)吃虧。到了長(zhǎng)沙,差點(diǎn)哭了,所有的高速全封閉了,到處都是排隊(duì)的大客車,所有酒店賓館都住滿了,因?yàn)楹舷拗乒╇姡芏嗳俗【频炅恕N以撊ツ陌。覐脑缟系街形绮懦粤藘蓧K巧克力,精力都快透支光了。
?
?
唯一的交通信息工具,收音機(jī)終于在中午傳來(lái)一條消息:長(zhǎng)永高速和機(jī)場(chǎng)高速開通
?
我打開地圖,這條路可以從長(zhǎng)沙到瀏陽(yáng),然后到萍鄉(xiāng)。萍鄉(xiāng)有高速到南昌,南昌到九江,九江到黃石~~ 一下就有了精神,雖然是曲線,最終能到目的就行。而且聽廣播,26號(hào)將有冷空氣下來(lái),所以當(dāng)前繞道江西應(yīng)該是個(gè)好選擇。
?
車一直到了瀏陽(yáng),這是個(gè)很漂亮的小城市,路況非常好,讓憋屈了幾天的我開的飛快,下午3點(diǎn)當(dāng)我看到湖南人民歡迎你再來(lái)的牌子時(shí),進(jìn)入江西了,我感覺到幸福的生活來(lái)臨了。
?
進(jìn)入萍鄉(xiāng),溫度也高了點(diǎn),路邊雖然也有冰掛,但路面還比較干燥,當(dāng)我來(lái)到高速入口前時(shí),發(fā)現(xiàn)上百輛車在排隊(duì),入口全是紅X,天哪!只能走國(guó)道了。
?
我走到了一條爛泥國(guó)道上,收音機(jī)那迷人的南昌普通話傳來(lái)信息,江西境內(nèi)高速全部開放,我終于從一個(gè)入口上了萍鄉(xiāng)到南昌的高速。
?
時(shí)速一直保持在120左右,GPS顯示到九江還剩下160多KM了,江西就是好啊,沒(méi)有冰凍的感覺,只有潮濕 的小雨,我計(jì)劃著9點(diǎn)左右在九江吃宵夜,休整一晚,明天就能到武漢了,哈哈~~
?
玻璃有些模糊,撥了撥雨刮,壞了?咋不噴水了,打開后面的雨刮,后面噴水,前面不噴,難道結(jié)冰了?想了想,不可能,湖南那末冷都沒(méi)結(jié)。時(shí)速依然100以上飛馳。其實(shí)這個(gè)提示就是結(jié)冰了。
?
西二環(huán),基本上沒(méi)車,身邊小車很多都是粵字頭的,大家你追我逐,因?yàn)殡x終點(diǎn)不遠(yuǎn)了,當(dāng)人最放松的時(shí)候,危險(xiǎn)就悄悄降臨了~~
?
?
?
我的車開始有點(diǎn)左右漂,我以為風(fēng)吹的,繼續(xù)保持110的時(shí)速,前面一個(gè)上坡,加了油門就沖了上去,當(dāng)車頭往下的一剎那,我看到一片閃爍的燈光~~~
?
剎車已經(jīng)踩了下去,完全沒(méi)作用,只能感受到ABS在跳動(dòng),第二腳,第三腳,強(qiáng)行將手自一體主動(dòng)降檔,最后一刻,我覺得兩邊都是車,前面一堵墻一樣的物體在我面前,聽天由命了,只感受到輪胎壓過(guò)一堆碎石一樣的東西后,最終我停了下來(lái)。我打了雙閃,馬上從車上跑了出來(lái),我的天啊,我前面不知道多少部大貨車撞到一起了 是一個(gè)厚達(dá)數(shù)十米的鋼鐵堡壘,如果我再前三四米,就鉆貨車的油箱了。
?
?
?
我右邊6-7部大車擠著小車,我左邊是撞爛的護(hù)欄和各種碎片。突然一個(gè)女的拉了我一把,叫道:快逃命啊!
我一看后面一個(gè)大巴左右搖擺沖了過(guò)來(lái),轟隆撞到了應(yīng)急帶那排車上,后面還有燈光射來(lái),我趕緊往中間的護(hù)欄跑。
?
我一抓護(hù)欄,全是冰,滑的要命,猛聽到翻護(hù)欄人群中有男的喊救命,接著有女的嚇的大哭,大叫護(hù)欄下面是空的。馬上旁邊又有人驚叫,又有人掉下去了,有個(gè)男的驚恐的發(fā)瘋樣的狂叫,接著遠(yuǎn)處又傳來(lái)有人掉下去的喊叫。我趕忙跑回我車這邊的護(hù)欄,一看下面是個(gè)河,原來(lái)這里是個(gè)橋,中間隔離帶是空的,下面是河谷。
?
?
只能躲了,我看著一輛小車對(duì)著我的車飛來(lái),天啊,我做了最壞的打算,它竟然停下了,離我只有不到一米,然后旁邊又飛來(lái)一輛中山的小車,離我3米左右也停下了。這三輛就是這次連環(huán)相撞中僅有沒(méi)有任何損失的三輛小車。車上的人也迅速跑了出來(lái),因?yàn)楹竺鎭?lái)了個(gè)大家伙,我們聽到急切的剎車聲,那車扭動(dòng)著,最后停下了,這是這次唯一一部沒(méi)受損失的大貨車。后面還有更多的燈光射了過(guò)來(lái)~~~~前面大概3-4部小車,后面最少三部大貨車,這一下過(guò)來(lái),我們中間的人緊張壞了,全得成肉餅了,我準(zhǔn)備往旁邊貨車得車頭爬了。
?
嘭,一小車碎片滿天飛,轉(zhuǎn)了360度,然后嘭嘭幾聲,又一小車被撞到了護(hù)欄上,小車都剎住了,但是后面得大車根本就剎不住。那輛最長(zhǎng)得拖掛連撞幾輛小車,整個(gè)車滑動(dòng)過(guò)來(lái),竟然橫在了路中間。后面就啥也看不到了,只能看到射到天上得燈光在交互著,各種碰撞得聲音和剎車的聲音,接下來(lái)得聲音震得 橋都在動(dòng),轟隆轟隆,燈光照射下見到碎片和煙塵滿布空中。這種聲音持續(xù)不斷,我已經(jīng)第二次打電話報(bào)警,對(duì)方說(shuō)知道了,我說(shuō)你媽聽到?jīng)]有,不停有車在撞上來(lái),趕快封路!對(duì)方叫我打電話給高速公路管理局,我XXX!!!
?
5分鐘過(guò)去了,動(dòng)靜小了很多,那輛橫著的車阻擋了不知道多少部車的轟擊,救了我們中間這一波。這時(shí)依然能聽到遠(yuǎn)處傳來(lái)撞擊和剎車的聲音,不過(guò)已經(jīng)聲音小了很多,很多司機(jī)鉆了出來(lái),我旁邊那個(gè)江西司機(jī)很激動(dòng),他見人就說(shuō)他剛才救了一個(gè)小孩,然后他翻到護(hù)欄外,用手抓住了才沒(méi)掉下去,然后后面的貨車把他的車屁股撞了.
?
我們看到他車后面,天啊,太慘了,一輛警車被壓到了長(zhǎng)度不到兩米,被兩個(gè)貨車壓著。那江西司機(jī)還是很激動(dòng),他說(shuō)那警車停在他后面,他把那警察拉了出來(lái),然后里面一車小孩和婦女,他隨手抱了一個(gè)沖了出去,其他也跑了出去。還有一個(gè)被壓在了里面,我們呼叫著,沒(méi)人答應(yīng)。
?
?
?
這時(shí)還有人翻越中間護(hù)欄,又有人叫救命,江西司機(jī)和幾個(gè)北方司機(jī)跑去拉了一個(gè)女的上來(lái),她的小孩還抱在中間護(hù)欄上在哭,那江西司機(jī)把小女孩一抱,小女孩一巴掌過(guò)去,喊著媽媽。這個(gè)婦女用手拉住中間的鐵板才沒(méi)掉下去,那末滑,她竟然堅(jiān)持住了。
?
大家都開始了自救行動(dòng),各自對(duì)附近的車輛和人員進(jìn)行檢查,我和另外的司機(jī)跑到了前面,原來(lái)前面還有10來(lái)輛車擠到了一起,我看到一個(gè)液化氣大卡就在我們前面這堵車墻的后面,10米不到,不過(guò)聽說(shuō)是空的。但是空氣中彌漫著汽油柴油的味道。
?
大概40分鐘后,一個(gè)打著手電的人從前面的廢墟中翻了過(guò)來(lái),地上很滑,基本上踉蹌前進(jìn)。大家告訴他有個(gè)孩子還在壓扁的警車?yán)锩妫蛄耸蛛娡锟矗f(shuō)要叫消防員來(lái)。他繼續(xù)找尋其他傷亡者。
?
幾個(gè)北方司機(jī)非常著急,討論怎樣把孩子弄出來(lái),這時(shí)里面?zhèn)鱽?lái)了哭聲,聲音很大,是一種求生的信號(hào)也是一種痛苦的哭聲,但是沒(méi)幾分鐘就沒(méi)動(dòng)靜了。這是天下著凍雨,冷的讓人無(wú)法忍受,大家各自躲回了車?yán)铩_^(guò)一會(huì)又來(lái)了交警爬進(jìn)去看,他出來(lái)說(shuō),孩子沒(méi)了,我們大罵你們咋不早點(diǎn)來(lái)!他沒(méi)說(shuō)啥,只說(shuō)了一句,我們的車到現(xiàn)在都開不上來(lái)。
?
一小時(shí)后,救護(hù)車消防車相繼到來(lái)了,我們聽到橋下有人喊,從護(hù)欄看下去,在下面車燈照射嚇,竟然有10來(lái)米高,是干枯的河床,全是大石頭,救護(hù)車停在旁邊,幾個(gè)人在搜尋。突然有人喊,這個(gè)還有氣,他們找到一個(gè)男的,馬上抬了上車。
?
消防隊(duì)員來(lái)了,使用了很多工具,但是覺得救出來(lái)已經(jīng)沒(méi)意義了,叫了一個(gè)醫(yī)生過(guò)來(lái),醫(yī)生說(shuō)輪胎把整個(gè)人頂在墻上,肝臟估計(jì)破了。大家無(wú)語(yǔ)。
?
救護(hù)車救的最多的是幾個(gè)大巴里的傷員,來(lái)來(lái)回回,而那些被夾住的車輛,無(wú)法確認(rèn)里面還是否有人。橫在我面前那個(gè)大車的河南司機(jī)跑了出來(lái)找我們問(wèn)他副班司機(jī)的駕駛照是否真的,說(shuō)副班司機(jī)是他剛雇的,他下來(lái)打電話給保險(xiǎn)時(shí),副班司機(jī)竟然拿了他的錢跑了,真不講究。因?yàn)檫@里離出口不到1公里,所以很多人都陸續(xù)沖前方的護(hù)欄翻到對(duì)面,下去了。
?
夜逐漸深了,交警來(lái)的越來(lái)越多,安撫著大家,我們得知也只能明天清理現(xiàn)場(chǎng)了,因?yàn)橹匦蛙囕v上不來(lái)。午夜,路政上來(lái)了,開始在路上撒鹽。我在車?yán)铮胫鴦偛艔奈易筮叺粝氯サ哪切┤耍€有救嗎。我右邊那個(gè)夾在車輪里的男孩說(shuō)不定只是昏迷了,我一晚上老是想著他的哭聲,那種絕望痛苦中最后爆發(fā)的哭聲,是想告訴我們,他還想活下去,但我們無(wú)能為力~~
?
雨雪開始大了,不到半小時(shí),車上就帶冰掛了,今晚這些還沒(méi)救出的傷員,這種天氣下也會(huì)凍死的。
?
半夜兩三點(diǎn),突然一陳騷動(dòng),有人喊,聽見橋下有小孩的哭聲,各種手電燈光照射了下去,但是沒(méi)有發(fā)現(xiàn),因?yàn)椴糠值貛怯倌唷?
?
車?yán)锖芾洌荒荛_發(fā)動(dòng)機(jī)用暖氣,我們幾輛車還能發(fā)動(dòng),很多車都報(bào)廢了,不知道他們是如何度過(guò)得。早上5點(diǎn),轟隆隆得轟鳴驚醒了我,大型設(shè)備都上來(lái)了。
?
天剛蒙蒙亮,整個(gè)公路一片寂靜,見到的都是殘骸。隨后吊車,拖車開始作業(yè),到7點(diǎn)左右已經(jīng)把第一波現(xiàn)場(chǎng)得車輛拖了一半出來(lái),我看見一輛愛麗舍變成了一堆廢鐵。
?
?
液化氣車竟然能發(fā)動(dòng),司機(jī)把車開到了路邊。其余得貨車用吊車一個(gè)個(gè)吊離前方。
?
這一晚上凍的夠嗆,也就睡了一個(gè)多小時(shí),耳邊老是想起那些男女哭喊的聲音。
我打開車門,發(fā)現(xiàn)路上更滑了,雖然撒了鹽,但是經(jīng)過(guò)一晚上得霜凍變本加利。大家起來(lái)了,都在看清理現(xiàn)場(chǎng),第一波,第二波的現(xiàn)場(chǎng)我們都能看到,第三波被橫在路中間的那個(gè)貨柜擋住了,看不到尾,不知道后面?zhèn)鋈绾巍?
?
我走到那輛唯一沒(méi)事的山東大貨車前,那小伙剛好跳了下來(lái),我說(shuō)哥們你夠幸運(yùn)的啊,他嘆了口氣,說(shuō):過(guò)去了,別說(shuō)了,要沒(méi)后面那輛車橫在那,大家全完。你的車咋樣? 我笑著說(shuō):咱兩今年運(yùn)氣都好!我們兩個(gè)碰到了那個(gè)江西司機(jī),還有副駕跑了那個(gè)河南司機(jī),他們都說(shuō)昨晚一閉上眼就是事故重現(xiàn),越想越害怕。
?
?
"有開水嗎,師傅,我孩子哭了一晚上,沒(méi)吃沒(méi)喝",我回頭一望,一個(gè)農(nóng)婦拿了一個(gè)破損的保溫杯在問(wèn)我,我說(shuō)沒(méi)有。我給你找去,問(wèn)了幾輛車都沒(méi)有,我想起中間撞的那堆貨車中地上有破碎的開水瓶,我去找了,也沒(méi)幸存的開水。我回到我車邊,開了車尾箱,吧我平時(shí)哄小妹妹的巧克力和牛肉干給了她,江西司機(jī)吧他唯一一包花生也給了她。她走的時(shí)候在前方撿了一打東西,后來(lái)我看到了,是尿不濕,pempers的,我這才注意到幾十米范圍散步了許多小孩的鞋 衣服 外套等。
?
?
天大亮了,不知道哪來(lái)了一些游民,不停從破損的車中和地上拿東西,被我們呵斥了住了一些。但是有部分穿救援服裝的人員也在干這些事情,實(shí)在是無(wú)恥。
?
江西司機(jī)問(wèn)吊車司機(jī),這次算是江西最厲害的事故吧,他不屑說(shuō),這算啥大事故,130輛車的我都見過(guò)。
?
?
我開始找尋深圳的車輛,我能見到范圍,一輛雅閣完全扁了,問(wèn)旁邊司機(jī),說(shuō)里面的人提前跑了,萬(wàn)幸
。
?
?
然后不遠(yuǎn)處一輛深圳的東南富利卡,撞的掉了個(gè)頭,車輛前后都受損,聽說(shuō)人也提前下來(lái)了。我跑到
前面,發(fā)現(xiàn)一輛深圳邁騰車頭撞毀,車主是去黃梅的,他說(shuō)發(fā)動(dòng)機(jī)還能打著,我看了一下只是水箱和風(fēng)扇完了,A柱一點(diǎn)事都沒(méi)。這車主昨晚還和我說(shuō)他一小弟掉橋下了,也不知道咋樣了。
?
?
?
前方的貨車就快吊開了,交警也上來(lái)吧所有駕駛員的證件都收了,我們幾輛沒(méi)事的車希望離開,交警同志耐心和我們解釋,現(xiàn)在到處封路,你哪都去不了,本次事故涉及人員傷亡,所以必須調(diào)查后才能放我們走。我們只能耐心等待。
?
?
跑了副駕那河南司機(jī)在外面冷的哆嗦,我把他叫到了車上來(lái),他焦急的打著電話,給貨主,老板,保險(xiǎn),還有認(rèn)識(shí)那個(gè)副駕的所有人。車上運(yùn)的是大蔥,到北京,這樣耽擱幾天,怕壞了,而且叫來(lái)轉(zhuǎn)貨的貨車還在福建根本就過(guò)不來(lái)。他只有不停罵那副駕發(fā)泄,從他眼中看出他多么無(wú)奈。
?
路對(duì)面多了一個(gè)很年輕女孩的尸體,大概20來(lái)歲,聽說(shuō)是從橋下找到的,多冤啊,逃生的時(shí)候從隔離護(hù)欄中間掉橋下了。
?
隨后開始清理那壓扁的警車,大車發(fā)動(dòng)機(jī)還能動(dòng),剛一倒大家驚呼,停!人的衣服和輪胎可能冰到一塊了,車輪把人帶起來(lái)了。后面清理的時(shí)候我們幾個(gè)不忍心看了。
?
隨后,路邊又多了這個(gè)男孩的尸體,手上還有厚厚的手套,估計(jì)就10來(lái)歲。不過(guò)人沒(méi)壓壞,就像睡著了一樣。工作人員拿布把他臉蒙上了,安息吧。
?
大概11點(diǎn),交警叫我過(guò)去寫事故經(jīng)過(guò),我們?nèi)繘](méi)損失的小車大概描述了一下情況,這個(gè)年輕的交警人很好,他說(shuō)叫警車過(guò)來(lái)把我們帶出高速,并且準(zhǔn)備從中間開個(gè)出口出來(lái)。到對(duì)面車道去。隨后對(duì)面來(lái)了一個(gè)車隊(duì),警車帶了兩輛大客車上來(lái)疏導(dǎo)被困的旅客們,但是因?yàn)楝F(xiàn)場(chǎng)太長(zhǎng)了,司機(jī)們還是走不了。
?
大概12點(diǎn)剛才和我們做記錄的小伙子叫我們跟他的車出去,我的車經(jīng)過(guò)那個(gè)江西司機(jī)時(shí),他對(duì)我招手。我開了窗子,他說(shuō)很羨慕我們能走了,他現(xiàn)在有點(diǎn)害怕,我說(shuō)咋了?他說(shuō)后面警車那小孩死了,不知道會(huì)不會(huì)找他麻煩。我下車安慰他,說(shuō)是后面的車撞的和你無(wú)關(guān),不要擔(dān)心。他說(shuō)那是個(gè)警察啊,他們?nèi)绻遥乙粋€(gè)老百姓咋辦啊。我這時(shí)只能說(shuō)那句老土的話安慰他了:你要相信法律是公正的。隨后我把我電話留給了他,如果有麻煩,我愿意為他作證。他說(shuō)他放心了一點(diǎn),我上車說(shuō)的最后一句是: 兄弟你是個(gè)好人,你救了一個(gè)小孩一個(gè)婦女,你會(huì)有好報(bào)的!
?
我車開到開辟出來(lái)路中間的一個(gè)岔口,警車上的小伙跑了下來(lái),問(wèn)我,你車上還能帶人嗎,我們把剩下的人盡量往下帶。我說(shuō),我就一個(gè)人,來(lái)吧。
?
?
警車帶了幾個(gè)旅客,我車上帶了三個(gè)司機(jī),這幾個(gè)司機(jī)都是其他車委托他們下去買吃的,這天案發(fā)到現(xiàn)在已經(jīng)16小時(shí)了,多少人到現(xiàn)在還是一口水一口干糧都沒(méi)吃的。出口下去后是江西農(nóng)業(yè)大學(xué),我和那幾個(gè)司機(jī)告別。
?
這個(gè)警車的小伙很負(fù)責(zé),一直帶了我們10來(lái)公里接近大道了,下車和我們告別,告誡我們小心,城區(qū)大橋也有冰,很感謝他,很棒的小伙子,從他身上看出了為人民服務(wù)的精神。
?
?
下午5點(diǎn),昌樟高速基本可以通行,我在8點(diǎn)半來(lái)到了吉安,住到了酒店里,感受到了溫暖,寫下了這篇回憶。愿上帝保佑大家平安!
?
--
?
※ 修改:·kuji 于 Jan 27 23:41:28 修改本文·[FROM: 202.96.60.*]
※ 來(lái)源:·水木社區(qū) newsmth.net·[FROM: 202.196.144.*]
2008年1月25日
昨晚聽別的項(xiàng)目組同事聯(lián)調(diào)我們這邊的功能,發(fā)現(xiàn)發(fā)包間隔改為1分鐘之后我們這邊不發(fā)包了,當(dāng)時(shí)就想事實(shí)既然存在那肯定有問(wèn)題。這個(gè)處理流程是在界面上設(shè)置的時(shí)間-1分鐘的間隔。這樣我這邊的任務(wù)調(diào)度間隔就變?yōu)?了,而在設(shè)計(jì)任務(wù)管理調(diào)度模塊時(shí),并沒(méi)有遇到間隔為0的情況,當(dāng)間隔為0時(shí)這個(gè)任務(wù)既沒(méi)有調(diào)度也沒(méi)有打印日志信息。從而導(dǎo)致不熟悉的同事調(diào)了半天發(fā)現(xiàn)有問(wèn)題。一定要用邊界值進(jìn)行完整的測(cè)試,如果發(fā)生邊界值問(wèn)題,設(shè)計(jì)時(shí)要聲明加到相關(guān)文檔中去。