v8 - V8 JavaScript Engine V8 是 Google 的開源 JavaScript 引擎。 V8 採用 C++ 編寫,可在谷歌瀏覽器(來自 Google 的開源瀏覽器)中使用。 V8 根據 ECMA-262 第三版中的說明使用 ECMAScript,並在使用 IA-32 或 ARM 處理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系統中運行。 V8 能夠獨立運行,也能夠嵌入任何 C++ 應用程序中。 nativeclient - Native code for web apps Native Client是一個在Web應用程序中運行本地代碼(目前只支持x86架構)的開源的研究性技術,提供更好的「富客戶端」用戶體驗。它容許網絡開發者編寫更強大的Web程序,這些程序直接經過系統運行而不用經過瀏覽器來進行,據Google稱,它到最後將容許網絡開發者開發和桌面軟件同樣的的web程序,這些程序將帶來更快的速度。Native Client相似於微軟的ActiveX技術,它還能在Linux和Mac OS X下運行。目前它還沒有支持IE,僅支持Google Chrome, Firefox, Safari 和Opera。 tesseract-ocr - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. OCR(Optical Character Recognition):光學字符識別,是指對圖片文件中的文字進行分析識別,獲取的過程。 Tesseract:開源的OCR識別引擎,初期Tesseract引擎由HP實驗室研發,後來貢獻給了開源軟件業,後經由Google進行改進,消除bug,優化,從新發布。當前版本爲3.01. google-glog - Logging library for C++ Google glog是一個基於程序級記錄日誌信息的c++庫,編程使用方式與c++的stream操做相似,例: LOG(INFO) << "Found " << num_cookies << " cookies"; double-conversion - Binary-decimal and decimal-binary routines for IEEE doubles. 從V8引擎中抽出的有關數值計算相關的代碼,包括大數計算,數值到字符串轉換等 googletest - Google C++ Testing Framework gtest測試框架[1]是在不一樣平臺上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)爲編寫C++測試而生成的。它是基於xUnit架構的測試框架,支持自動發現測試,豐富的斷言集,用戶定義的斷言,death測試,致命與非致命的失敗,類型參數化測試,各種運行測試的選項和XML的測試報告。 googlemock - Google C++ Mocking Framework googlemock mock技術,在c++單元測試能夠隨意修改函數行爲的技術。 googlemock是google基於gtest開發的mock框架,適用於c++單元測試。 libphonenumber - Google's phone number handling library, powering Android and more 一個專門用於處理電話號碼的庫 google-diff-match-patch - Diff, Match and Patch libraries for Plain Text google-diff-match-patch這個類庫提供了強大的算法用於純文本內容的差別比較,匹配,打補丁,實現同步純文本所須要執行一些操做。支持多種語言包括:Java、JavaScript、C++、C#、Objective C、Lua和Python。 libkml - a KML library written in C++ with bindings to other languages libKML是解析,生成和操做KML的庫。使用OGC KML2.2標準。 KML,是 Keyhole 標記語言(Keyhole Markup Language)的縮寫,是一種採用 XML 語法與格式的語言,用於描述和保存地理信息(如點、線、圖像、多邊形和模型等),能夠被 Google Earth 和 Google Maps 識別並顯示。您可使用 KML 來與其餘 Google Earth 或 Google Maps 用戶分享地標與信息。固然,您也能夠從 Google Earth 社區 等相關網站得到有趣的 KML 文件。Google Earth 和 Google Maps 處理 KML 文件的方式與網頁瀏覽器處理 HTML 和 XML 文件的方式相似。像 HTML 同樣,KML 使用包含名稱、屬性的標籤(tag)來肯定顯示方式。所以,您可將 Google Earth 和 Google Maps 視爲 KML 文件瀏覽器。單擊此處可得到更多信息。 gdata-cpp-util - Google Data APIs C++ utility library 一個Google Data APIs 的工具庫,能夠GET/POST/PUT/DELETE lutok - Lightweight C++ API for Lua 是一個 Lua 的 C++ wrapper Lua 是一個小巧的腳本語言。是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)裏的一個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發。 其設計目的是爲了嵌入應用程序中,從而爲應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在全部操做系統和平臺上均可以編譯,運行。Lua並無提供強大的庫,這是由它的定位決定的。因此Lua不適合做爲開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平臺上的即時編譯功能。 dcs-bwt-compressor - Data compressor program and library dcsbwt是一個基於Burrower-Wheeler變換的數據壓縮程序庫 treetree - generic n-ary trees for C++ TreeTree (http://code.google.com/p/treetree/)是一個只包含頭文件的 C++ Library。它實現了一個通用的 樹形結構容器類(遵照 STL約定),而且實現了 operator >> 和 operator <<。 它的底層包含一個雙向鏈表。在前項指針和後項指針之外,每一個樹節點還包含第三個指針--指向全部子節點的列表。這個實現高效,而且 API 很是清晰。TreeTree 能夠表達任何使用Lisp的S表達式能表達的東西(例如推理樹(inference trees, programs)等)。 可使用前序和後序遍歷,只遍歷某個節點的子節點,或者只是在葉子節點遍歷。示例的選項還包含遍歷子樹(如f(g(x,y),z) 前序遍歷,是f(g(x,y),z), g(x,y),x,y和z. ctemplate - Powerful but simple template language for C++ ctemplate (Google-ctemplate)的設計哲學是輕量級,快速,且邏輯和界面分離,所以和ClearSilver和Teng是有一些差別的。好比Ctemplate就沒有模板函數,沒有條件判斷和循環語句(固然,它能夠經過變通的方式來實現)。 ctemplate大致上分爲兩個部分,一部分是模板,另外一部分是數據字典。模板定義了界面展示的形式(V),數據字典就是填充模板的數據(M),你本身寫業務邏輯去控制界面展示(C),典型的MVC模型。 sparsehash - An extremely memory-efficient hash_map implementation Google Sparse Hash 是 Google 一個很節省內存的 hash map 實現 gflags - Commandline flags module for C++ Google GFlags 是一個命令行標記的處理庫,它能夠替代「getopt()」,其內置對C++的支持好比string。 protobuf - Protocol Buffers - Google's data interchange format Google Protocol Buffer 是一個平臺無關、語言無關的結構化數據的序列化與反序列化工具。 protocol buffer,能夠用來在跨進程、跨機器,不一樣操做系統,不一樣編程語言之間進行數據交換。相似於微軟的COM IDL或者XML,可是解析速度更快,須要傳輸字節數更少。(c+ +, java, python) gperftools - Fast, multi-threaded malloc() and nifty performance analysis tools TCMalloc,heap檢測,是一個google用於性能檢測的工具。(c++) google-breakpad - Crash reportinghtml
breakpad,一個項目的開始須要作一些什麼樣的基礎設施,crash dump和運行logging毫無疑問都是應該有的,這個項目就是負責在crash的時候收集信息,發出crash dump報告的。java
STLport-------SGI STL庫的跨平臺可移植版本,在之前有些編譯器離符合標準比較遠的狀況下那時仍是有用的,固然目前vc71已經比較接近標準了,故目前不怎麼用它了。python
Boost---------準標準庫,功能強大涉及能想的到的大部分非特別領域的算法,有一個大的C++社區支持linux
WxWindows-----功能強大的跨平臺GUI庫,它的功能和結構都相似MFC,故原則上能夠經過WxWindows把現有MFC程序移植到非Win平臺下c++
Blitz---------高效率的數值計算函數庫 ,你能夠訂製補充你須要的算法web
Log4cpp-------日誌處理,功能相似java中的log4j算法
ACE-----------自適應通信環境,重量級的通信環境庫。sql
Crypto++ -----加/解密算法庫, 很是專業的C++ 密碼學函式庫數據庫
CppUnit --- 一個c++的單元測試框架 相似 java 的JUnit編程
Loki ------- 一個實驗性質的庫,嘗試把相似設計模式這樣思想層面的東西經過庫來提供,他是C++的一個模板庫,系C++"貴族",它把C++模板的功能發揮到了極致
學術性的C++庫:
FC++ --------The Functional C++Library ,用庫來擴充語言的一個表明做 ,模板庫
CGAL ------- Computational GeometryAlgorithms Library計算幾何方面的大部分重要的解決方案和方法以C++庫的形式提供給工業和學術界的用戶。
其它目前我感受還不是很爽的C++庫:
Doxygen ----註釋文檔生成工具 ,可恨的是我找不到 windows版本
QT ----------大名頂頂的一個多平臺的C++圖形用戶界面應用程序框架(GUI庫)可氣的是他的Windows版是商業發佈的要付費
xml4c--------IBM開發的XML Parser,系超重量級的,適用大型應用中,其DLL有 12M,恐怖吧,輕量級的有TinyXml
Xerces c++ --Apache的XML項目, 但 只支持少數的字符編碼,如ASCII,UTF-8,UTF-16等,不能處理包含中文字符的XML文檔
XMLBooster ----- 也是一種 XML的 解析工具
Fox -------又一種開放源代碼(C++)的GUI庫,功能不是很強
C++開發環境(Win平臺下除了 VisualC++ 和 Borland C++之外的):
Cygwin --------Windows下的一個Unix仿真環境
MinGW --------GCC的一個Windows移植版本
Dev C++ -------- 一個C/C++ 的集成開發環境,在Windows上的C++編譯器一直和標準有着一段距離的時候,GCC就是一個讓Windows下開發者流口水的編譯器。
Eclipse-CDT ----IMB 開發的一個集成開發環境,通常用來做爲Java 開發環境,但因爲Eclipse 是經過插件體系來擴展功能,這裏咱們 安裝 CDT插件後,就能夠用來做爲C++集成開發環境工具。
一、http://snippets.dzone.com/tag/c/--數以千計的有用的C語言源代碼片斷
二、http://www.hotscripts.com/category/c-cpp/scripts-programs/Hotscripts --提供數以百計的C和C++腳本和程序。全部程序都分爲不一樣的類別。
三、http://www.planetsourcecode.com/vb/default.asp?lngWId=3--超過萬行C和C++免費的源代碼
四、http://freshmeat.net/browse/164/--超過9000個C編寫的項目。
五、http://www.daniweb.com/code/c.html--DANIWEB提供的實用代碼段。
六、http://www.programmersheaven.com/tags/C/--programmersheaven.com上的C編程資源。
七、http://www.ddj.com/code/ddj.html--Dr. Dobb’s Journal的源代碼。
八、http://www.cprogramming.com/cgi-bin/source/source.cgi--C和C + +編程資源。
九、http://www.codecogs.com/--CodeCogs是一項協做的開放源碼庫,C/C++的數值方面的組件。
十、http://www.google.com/codesearch?q=programming++lang:c&cs_r=lang:c--谷歌代碼的C源代碼。
十一、http://www.codepedia.com/1/C--CodePedia是一個開放的關於系統編程和其餘與電腦有關的議題。
十二、http://www.cis.temple.edu/~ingargio/cis71/code/--爲學生提供的一個簡單的C語言程序的列表。
1三、http://www.codeproject.com/?cat=2--codeproject提供的C/C++資源代碼項目。
1四、http://www.thefreecountry.com/sourcecode/cpp.shtml--如下是一些C和C++庫的DLL,VCLs,源代碼,元件,模塊,應用程序框架,類庫,源代碼片斷等,你能夠在您的項目中使用而不須要支付費用和版稅。
1五、http://people.sc.fsu.edu/~burkardt/cpp_src/cpp_src.html--這是一個全面的關於C++的345個源代碼清單。
1六、http://www.cplusplus.com/src/--C++寫的通用控制檯程序和Windows程序代碼清單。
1七、http://users.cs.fiu.edu/~weiss/dsaa_c++/code/--C++語言數據結構與算法分析(第二版)的源代碼。
1八、http://c.snippets.org/--C源代碼片斷。
1九、http://www.bbdsoft.com/downloads.html--C++源代碼。
20、http://www.moshier.net/天文學和數值軟件源代碼
2一、http://cplus.about.com/od/cgames/C_Games_with_Source_Code.htm--遊戲有關的C++源代碼。
2二、http://cliodhna.cop.uop.edu/~hetrick/c-sources.html--免費的C/C++數值計算源代碼。
2三、http://www.mathtools.net/C_C__/Utilities/index.html--C/C++工具。
2四、http://www.programmerworld.net/resources/c_library.htm--免費C++源代碼和其它有用的工具。
2五、http://www.cmcrossroads.com/bradapp/links/cplusplus-links.html--布拉德阿普爾頓的C++連接-資源,項目,圖書館,教學和編碼。
2六、http://www.robertnz.net/cpp_site.html--這是一個收集了數C/C++網站連接列表的網頁。
2七、http://www.josuttis.com/libbook/examples.html--在這裏,你能夠看到並下載全部的本書的C++標準庫例子。
2八、ftp://66.77.27.238/sourcecode/cuj/--C/C++用戶雜誌
2九、ftp://66.77.27.238/sourcecode/wd/--Windows開發者網絡
30、http://www.einet.net/directory/65892/Developers.htm--C程序
3一、http://www.daniweb.com/code/cplusplus.html--實用代碼段。
3二、http://snippets.dzone.com/tag/c--C++源代碼
3三、http://www.programmersheaven.com/tags/C--C++編程資源,programmersheaven.com
3四、http://www.google.com/codesearch?hl=en&lr=&q=programming--谷歌代碼搜索-C++編程語言
3五、http://www.codepedia.com/1/Cpp--CodePedia是一個開放的關於系統編程和其餘與電腦有關的議題的網站。
3六、http://www.codebeach.com/index.asp?TabID=1&CategoryID=3--C++源代碼,Codebeach提供
3七、http://freshmeat.net/browse/165/--5000項目寫的C++編程語言
3八、http://cplus.about.com/od/codelibrary/Code_Library_for_C_C_and_C.htm--代碼庫C、C + +和C#。
3九、http://www.c.happycodings.com/--Visual Basic、PHP、ASP技術、C、C++大全。
40、http://www.blueparrots.com/--Borland C遊戲,圖像和聲音源代碼範例。
4一、http://www.java2s.com/Code/Cpp/CatalogCpp.htm--C++源代碼。
4二、http://www.yeohhs.com/modules/mydownloads/--C與C++電子書和源代碼示例。
4三、http://www.brpreiss.com/books/opus4/programs/index.htmlC++的數學方程和公式源代碼。
4四、http://users.cs.fiu.edu/C++。
4五、http://www.josuttis.com/libbook/examples.html--C++標準庫-教程和參考資料。
4六、http://emr.cs.uiuc.edu/~reingold/calendars.shtmlEdward M. Reingold's Calendar Book, Papers, and Code。
4七、http://cpp.snippets.org/--c++源代碼檔案。
4八、http://ubiety.uwaterloo.ca/~tveldhui/papers/techniques/--用C和C++的解決科學問題。
4九、http://c.ittoolbox.com/topics/core-c/--C/C++的IT工具框。
50、http://www.le.ac.uk/cc/tutorials/c/ccccdbas.html--本文件中包含有大量的C示例程序
下面結合本身多年的開發經驗,想到哪裏寫到哪裏,但願對新人有必定的幫助。
1、網絡
網絡庫必須掌握 ACE 和 libevent, 一個是重量級的網絡庫, 一個是輕量級的網絡庫。仔細想一想,如今那個程序不用網絡啊。不懂網絡,你將步履維艱啊。熟悉這兩個開源庫的 前提是你必須懂socket的原理,給你們推薦的好書就是《UNIX網絡編程》,看懂這本書就能夠了,其餘的什麼《windows網絡編程》這些都不用看,由於網絡編程,你學會了伯克利的套接字,你就能夠在任何平臺上進行網絡編程了,不須要學什麼windows下的網絡編程,由於windows下的網絡也是從伯克利套接字搞過來的,若是你學習《windows網絡編程》,那麼你那天在linux,unix下進行網絡編程,你還得在學習一下。沒有那個必要。
2、數據庫
數據庫嘛,開源的Mysql和開源的PostgreSQL只要懂其中一個就能夠了,商業數據庫在掌握一個Oracle就能夠了,文件數據庫掌握 sqlite。不過請你們注意,不要被上面數據庫名字給迷惑了,數據庫的本質是SQL語句,必定要懂數據庫的基本原理,熟練應用SQL語言,懂數據庫的優化,存儲過程等。數據庫的原理搞懂了,拿什麼數據庫過來都輕鬆掌握,就不會在意是Mysql仍是Oracle了。
3、日誌操做
日誌操做推薦你們熟悉 log4cpp這個日誌庫, 支持多線程, 日誌重定向到網絡等都有, 反正你能想到的日誌的功能都有。日誌嘛,一個是方便查找問題,方便記錄程序運行的一些狀況。這是必須的。
4、管理後臺
衆所周知,寫程序是給其餘人用的,不是本身用,因此在程序的易用性上,多給對方提供一些能夠直接查看的管理界面,顯得分紅重要。爲程序提供一個web的管理界面,方便用戶登陸上去查看程序的各類信息,頗有必要。
5、讀取配置文件
全部的程序都必須有配置文件,方便配置一些項目,爲程序提供靈活性。 因此寫程序,必須有讀取配置文件的封裝類。
6、內存池
全部的進程都須要分配內存,對C/C++來講,分配和管理內存是已經頗有挑戰性的工做。給你們推薦 nedmalloc 這個開源的內存池庫。nedmalloc是一個跨平臺的高性能多線程內存分配庫,不少庫都使用它。
7、緩存庫
衆所周知,緩存庫用得最多的就是memcache了。在作數據庫開發的時候特別有用。
8、腳本
腳本是一個頗有意思的東西,不少功能,其實咱們只要寫個腳本就能夠完成,代碼量少,開發速度快。必須掌握的腳本,比較通用的要算 perl 了,很古老的語言,可是功能太強大了。我能夠保證的說,.net,java能幹的工做,確定可讓perl來幹。C能幹的, perl不必定能幹。perl做爲linux,unix的系統集成的腳本語言,必須學會。
lua 語言,在遊戲行業用得比較多。
python 腳本,功能很強大,推薦學。
上面這些是全部程序都會用到的比較通用的功能。
在不一樣的應用領域,須要掌握不一樣開源庫,好比搞遊戲開發的,可能須要掌握開源的UI庫CEGUI、duilib, 開源的3D引擎OGRE等。