C ++ open-source project summary and source code project summary

Source: Internet
Author: User
Tags naming convention

C ++ open-source project summary and source code project summary
Google's C ++ open-source code project v8-V8 JavaScript Engine
V8 is Google's open-source JavaScript Engine.
V8 is written in C ++ and can be used in Google's open-source browser.
V8 uses ECMAScript based on instructions in the third edition of ECMA-262 and runs in Windows XP and Vista, Mac OS X 10.5 (Leopard), and Linux systems that use IA-32 or ARM processors.
V8 can run independently or be embedded in any C ++ application.
 
Nativeclient-Native code for web apps
Native Client is an open-source research technology that runs local code (currently only supports x86 architecture) in Web applications, providing a better "rich Client" user experience. It allows network developers to write more powerful Web programs that run directly through the system instead of using a browser. According to Google, in the end, it will allow network developers to develop web programs that are the same as those of desktop software, which will lead to a faster speed. The Native Client is similar to Microsoft ActiveX technology and can run in Linux and Mac OS X. Currently, it does not support IE, but only Google Chrome, Firefox, Safari, and Opera.
 
Tesseract-ocr-An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
OCR (Optical Character Recognition): Optical Character Recognition refers to the process of analyzing, recognizing, and obtaining texts in image files.
Tesseract: an open-source OCR recognition engine. In the early stage, the Tesseract engine was developed by the HP lab. Later, it was contributed to the open-source software industry. Then it was improved through Google to eliminate bugs, optimize and re-release it. This version is 3.01.
 
Google-glog-Logging library for C ++
Google glog is a c ++ library that Records log information at the program level. The programming method is similar to the stream operation of c ++. For example:
LOG (INFO) <"Found" <num_cookies <"cookies ";
 
Double-conversion-Binary-decimal and decimal-binary routines for IEEE doubles.
Code related to numerical computation extracted from the V8 engine, including large number computation, numeric value to String Conversion, etc.
 
Googletest-Google C ++ Testing Framework
Gtest framework [1] is generated for compiling C ++ tests on different platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and Symbian. It is a test framework based on the xUnit architecture and supports automatic discovery and testing, rich assertion sets, user-defined assertion, death testing, fatal and non-fatal failures, type parameterized testing, various test options and XML test reports.
 
Googlemock-Google C ++ Mocking Framework
Googlemock mock technology allows you to modify function behavior at will in c ++ unit tests.
Googlemock is a gtest-based mock framework developed by google and is suitable for c ++ unit testing.
 
Libphonenumber-Google's phone number handling library, powering Android and more
A library dedicated to handling phone numbers
 
Google-diff-match-patch-Diff, Match and Patch libraries for Plain Text
The google-diff-match-patch Class Library provides powerful algorithms for comparing differences, matching, and patching of plain text content, and some operations are required to synchronize plain text. Multiple languages are supported: Java, JavaScript, C ++, C #, Objective C, Lua, and Python.
 
Libkml-a KML library written in C ++ with bindings to other ages
LibKML is the library for parsing, generating, and operating KML. Use the OGC KML2.2 standard.
KML, short for Keyhole Markup Language, is a Language that uses XML syntax and format, it is used to describe and store geographical information (such as points, lines, images, polygon and models) and can be identified and displayed by Google Earth and Google Maps. You can use KML to share landmarks and information with other Google Earth or Google Maps users. Of course, you can also get interesting KML files from the Google Earth community and other related websites. Google Earth and Google Maps process KML files in a similar way as Web browsers process HTML and XML files. Like HTML, KML uses tags containing names and attributes to determine the display mode. Therefore, you can regard Google Earth and Google Maps as KML file browsers. Click here for more information.
 
Gdata-cpp-util-Google Data APIs C ++ utility library
A tool library for Google Data APIs, which can be GET/POST/PUT/DELETE
 
Lutok-Lightweight C ++ API for Lua
Is a Lua C ++ wrapper
Lua is a small scripting language. It is a research group at the Pontifical Catholic University of Rio de Janeiro in Rio de Janeiro, developed in 1993 by Robert Ierusalimschy, Waldemar Celes, and Luiz Henrique de Figueiredo. It is designed to embed an application and provide flexible scalability and customization for the application. Lua is compiled by standard C and can be compiled and run on almost all operating systems and platforms. Lua does not provide a powerful library, which is determined by its positioning. Therefore, Lua is not suitable for developing independent applications. Lua has a simultaneous JIT project that provides real-time compilation on a specific platform.
 
Dcs-bwt-compressor-Data compressor program and library
Dcsbwt is a data compression library based on the Burrower-Wheeler transformation.
 
Treetree-generic n-ary trees for C ++
TreeTree (http://code.google.com/p/treetree/) is a C ++ Library that contains only header files. It implements a general tree structure container class (complying with STL conventions), and implements operator >>and operator <.
Its underlying layer contains a two-way linked list. In addition to the front and back pointers, each tree node also contains the third pointer-a list pointing to all child nodes. This implementation is efficient and the API is very clear. TreeTree can express anything that can be expressed using the S expression of Lisp (such as the inference tree (inference trees, programs ).
You can use pre-order and post-order traversal to traverse only the child nodes of a node, or just the leaf nodes. The options in the example also include traversing sub-trees (such as f (g (x, y), z) in the forward order, which is f (g (x, y), z ), g (x, y), x, y, and z.
 
Ctemplate-Powerful but simple template language for C ++
The design philosophy of ctemplate (Google-ctemplate) is lightweight, fast, and logically separated from the interface. Therefore, it differs from ClearSilver and Teng. For example, Ctemplate does not have a template function, and does not have conditional judgment or cyclic statements (of course, it can be implemented in a flexible way ). The ctemplate consists of two parts: a template and a data dictionary. The template defines the form of interface presentation (V). The data dictionary is the data (M) filled with the template. You can write your own business logic to control the interface presentation (C), a typical MVC model.
 
Sparsehash-An extremely memory-efficient hash_map implementation
Google Sparse Hash is a memory-saving hash map implementation of Google.
 
Gflags-Commandline flags module for C ++
Google GFlags is a command line mark processing library that can replace "getopt ()". It has built-in support for C ++, such as string.
 
Protobuf-Protocol Buffers-Google's data interchange format
Google Protocol Buffer is a platform-independent, language-independent serialization and deserialization tool for structured data.
Protocol buffer, which can be used to exchange data between different processes, machines, operating systems, and programming languages. Similar to Microsoft's com idl or XML, but the parsing speed is faster, requiring fewer bytes to be transmitted. (C +
+, Java, python)
 
Gperftools-Fast, multi-threaded malloc () and nifty performance analysis tools
TCMalloc, heap detection, is a google tool for performance detection. (C ++)
 
Google-breakpad-Crash reporting

Breakpad: What kind of infrastructure needs to be implemented at the beginning of a project. crash dump and running logging should undoubtedly exist. This project is responsible for collecting information during crash, issued the crash dump report.

Classic C ++ Library

STLport ------- the cross-platform portable version of the sgi stl library. It was useful when some compilers were far away from the standard. Of course, vc71 is close to the standard currently, so it is not used very much now.

Boost --------- quasi-standard library with powerful functions involving most non-special fields of algorithms that can be thought of, with support from a large C ++ community

WxWindows ----- A powerful cross-platform GUI library. Its functions and structure are similar to that of MFC. In principle, you can use WxWindows to port existing MFC programs to non-Win platforms.

Blitz --------- efficient numeric computing function library. You can customize and supplement the algorithms you need.

Log4cpp ------- log processing, similar to log4j in java

ACE ----------- adaptive communication environment, a heavyweight communication environment library.

Crypto ++ ----- encryption/decryption algorithm library, a very professional C ++ cryptography library

CppUnit --- A unit test framework of c ++ similar to java's JUnit

Loki ------- a library of experimental nature, trying to provide things similar to the design pattern through the library. He is a template library of C ++ and is a library of C ++ "Nobility ", it brings the functions of the C ++ template to the extreme

Academic C ++ Library:

FC ++ -------- The Functional C ++ Library, a masterpiece of Language extension using libraries, template Library

CGAL ------- Computational GeometryAlgorithms Library most of the important solutions and methods for geometric computing are provided to industrial and academic users in the form of a C ++ Library.

Other C ++ libraries that I feel are not very good at the moment:

Doxygen ---- annotation document generation tool. The hateful thing is that I cannot find the windows version.

QT ---------- a multi-platform C ++ graphic user interface application framework (GUI Library) at the top of the naming convention is that its Windows version is commercially available for purchase.

Xml4c -------- XML Parser developed by IBM. It is a super-heavyweight and suitable for large applications. Its DLL size is 12 Mb, Which is horrible. Its lightweight size is TinyXml.

Xerces c ++ -- Apache's XML project, but only supports a few character encodings, such as ASCII, UTF-8, UTF-16, etc., cannot process XML documents containing Chinese Characters

XMLBooster ----- is also an XML parsing Tool

Fox ------- another open source code (C ++) GUI library, which is not very powerful

 

C ++ Development Environment (except for Visual C ++ and Borland C ++ on the Win platform ):

Cygwin -------- a Unix simulation environment in Windows

MinGW -------- a Windows porting version of GCC

Dev C ++ -------- a C/C ++ integrated development environment, when the C ++ compiler on Windows has been at a distance from the standard, GCC is a compiler that allows developers to drool on Windows.

Eclipse-CDT-an integrated development environment developed by IMB, which is generally used as a Java development environment. However, since Eclipse extends functions through the plug-in system, after we install the CDT plug-in, it can be used as a C ++ integrated development environment tool.
50 well-known open-source websites

1. http://snippets.dzone.com/tag/c/--some useful clanguage source code snippets

2. http://www.hotscripts.com/category/c-cpp/scripts-programs/Hotscripts-provides hundreds of C and C ++ scripts and programs. All programs are classified into different categories.

3, http://www.planetsourcecode.com/vb/default.asp? LngWId = 3 -- more than 10 million lines of C and C ++ free source code

4. http://freshmeat.net/browse/164/-- 9000c compiled projects.

5. The verification code section of http://www.daniweb.com/code/c.html--daniweb.

6. The C programming resource on http://www.programmersheaven.com/tags/c/--programmersheaven.com.

7, http://www.ddj.com/code/ddj.html--Dr. Dobb's Journal source code.

8. http://www.cprogramming.com/cgi-bin/source/source.cgi--cand C ++ programming resources.

9. http://www.codecogs.com/--codecogsis a collaborative open-source code library with a combination of numbers in c/c.

Http://www.google.com/codesearch? Q = programming ++ lang: c & cs_r = lang: c -- C source code of Google Code.

11. http://www.codepedia.com/1/c--codepediais an open question about system programming and its computer.

12. http://www.cis.temple.edu /~ Ingargio/cis71/code/-- a list of simple C language programs provided for students.

13. http://www.codeproject.com /? Cat = 2 -- C/C ++ resource Code project provided by codeproject.

14. Renewal.

Http://people. SC .fsu.edu /~ Burkardt/cpp_src/cpp_src.html -- this is a comprehensive 345 source code list for C ++.

16. The general console program and windowsprogram code written in http://www.cplusplus.com/src/--c?+.

17. http://users.cs.fiu.edu /~ Weiss/dsaa_c ++/code/-- source code of Data Structure and algorithm analysis in C ++ language (version 2.

18. http://c.snippets.org/--csource code segment.

19. http://www.bbdsoft.com/downloads.html--c?#source code.

20. http://www.moshier.net/tianwen and the source code of the numeric Software

21. Renewal.

Http://cliodhna.cop.uop.edu /~ Hetrick/c-sources.html-free C/C ++ source code.

23. http://www.mathtools.net/c_c#/utilities/index.html--c/c##tool.

24. http://www.programmerworld.net/resources/c_library.htm--free c+++source code and its useful tools.

25. Timeout.

26. http://www.bertnz.net/cpp_site.html--this is a collection of webpages that have been linked to several c/c##websites.

27. Average.

28. ftp: // 66.77.27.238/sourcecode/cuj/-- C/C ++ user magazine

29. ftp: // 66.77.27.238/sourcecode/wd/-- Windows Developer Network

30. http://www.einet.net/directory/65892/developers.htm--c Program

31. http://www.daniweb.com/code/cplusplus.html--#code field.

32. http://snippets.dzone.com/tag/c--c?#source code

33. http://www.programmersheaven.com/tags/c--c?#program resources, programmersheaven.com

34, http://www.google.com/codesearch? Hl = en & lr = & q = programming -- Google Code Search-C ++ programming Language

35. Timeout.

36. http://www.codebeach.com/index.asp? TabID = 1 & CategoryID = 3--C ++ source code. Codebeach provides

37. http: // freshmeat.net/browse/165/--5000project Programming Language

38. Accept ++ and C #.

39, http://www.c.happycodings.com/--Visual Basic, PHP, ASP technology, C, C ++ Daquan.

40. http://www.blueparrots.com/--Borland C game, image and sound source code examples.

41. http://www.java2s.com/code/cpp/catalogcpp.htm--c?#source code.

42. http://www.yeohhs.com/modules/mydownloads/--cand c?+ and source code example.

43. http://www.brpreiss.com/books/opus4/programs/index.htmlc?+ and public source code.

44. http://users.cs.fiu.edu/c.

45. http://www.josutis.com/libbook/examples.html--c##standard library-tutorial and reference materials.

Http://emr.cs.uiuc.edu /~ Reingold/calendars.shtml Edward M. Reingold's Calendar Book, Papers, and Code.

47. http://cpp.snippets.org/--c?+source code file.

48, http://ubiety.uwaterloo.ca /~ Tveldhui/papers/techniques/-- solve scientific problems with C and C ++.

49. It tool box for http://c.ittoolbox.com/topics/core-c/--c/c.

50. Average


Next, I want to help new people with my years of development experience and where to write.

I. Network

The network library must master ACE and libevent, a heavyweight network library and a lightweight network library. Think about it. Now the program does not need a network. If you do not understand the network, you will be unable to proceed. The premise for getting familiar with these two open-source libraries is that you must understand the principle of socket. The recommended good book is UNIX network programming. You can simply read this book, you don't need to worry about other windows Network Programming. Because of network programming, you have learned the Berkeley socket, and you can perform network programming on any platform, you do not need to learn network programming in windows, because the network in windows is also made from Berkeley socket. If you are studying windows Network Programming, you are on linux that day, you have to learn about network programming in unix. No.

Ii. Database

For databases, open-source Mysql and open-source PostgreSQL only need to understand one of them. commercial databases can master one Oracle, and file databases can master sqlite. However, please note that you should not be confused by the above database name. The essence of the database is SQL statements. You must understand the basic principles of the database, be familiar with the SQL language, and understand database optimization, stored procedures. I understand the principles of the database and can easily master any database, so I don't care whether it is Mysql or Oracle.

Iii. Log operations

We recommend that you be familiar with the log4cpp logstore for log operations. It supports multiple threads and redirection of logs to the network. You can think of all the log functions. Log, one is to facilitate troubleshooting and easily record some situations where the program is running. This is required.

Iv. Management Background

As we all know, writing a program is intended for other users rather than for their own purposes. Therefore, in terms of ease of use of the program, it is important to give the other party more management interfaces that can be directly viewed. Provide a web management interface for the program, so that users can log on to view various information about the program.

5. Read the configuration file

All programs must have configuration files to facilitate the configuration of some projects and provide flexibility for the program. Therefore, write programs must have encapsulation classes for reading configuration files.

6. Memory Pool

All processes need to allocate memory. For C/C ++, It is very challenging to allocate and manage memory. We recommend nedmalloc, an open-source memory pool. Nedmalloc is a cross-platform high-performance multi-thread memory allocation library, which is used by many databases.

VII. cache Library

As we all know, memcache is the most used cache library. It is particularly useful for database development.

8. Script

Script is a very interesting thing and has many functions. In fact, we only need to write a script to complete it. The code is small and the development speed is fast. The scripts that must be mastered are commonly used in perl, an ancient language, but have powerful functions. I can assure that the. net and java jobs can definitely be done by perl. C is competent, and perl is not necessarily competent. As a script language integrated with linux and unix systems, perl must be learned.

Lua language is widely used in the gaming industry.

Python script, which has powerful functions and is recommended.

The above are common functions used by all programs.

In different application fields, you need to master different open-source libraries, such as game development. You may need to master the open-source UI libraries CEGUI, duilib, and open-source 3D engine OGRE.

I hope to recommend the source code of some excellent open-source projects and want to learn the programming of large programs (C/C ++/assembly)

CSDN is a powerful website. We suggest you look at it ,,,
 
Where can I obtain the questions and source code of the C language project, such as a small game or a database system?

Google. It's everywhere.

Or go to sf.net to find an open-source project to go over the wall.
Or go to code.google.com to find

The project code downloaded from the above two places is only for learning and research. Please do not use it for commercial purposes.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.