计算机视觉
图像处理

GitHub上C/C++开源项目总结

1. FreeNOS
lordsergioinspa/FreeNOS · GitHub这是一个用C++实现的微内核的操作系统,各种宏内核中的服务作为一个独立的services在微内核中,基于消息的通信方式,这点其实跟mac内核中的mach那部分机制相似。
除了是一个操作系统的实现,另外从中也能很好的学习到OOP的设计方式,整个代码风格特别好,完全基于面相对象,还有一些常见的设计模式,在接触了这个开源项目之后,才了解,代码风格,注释,doxygen,scons,设计模式。

2. Chromium
向左向右,怎么看现在只有Chromium是c++中最庞大的一个,自己在造轮子的时候,可以搜索下这个宝库,保证有各种型号的轮子。
Chromium涉及了几乎所有的平台,所以不仅能学到平台之上API的封装,还有包括Network的各种封装和借口,协议的C++的实现。
更甚至,webrtc,native client,sandbox,GPU,并行加速,debug,各种神奇的第三方的库,各种各样的技术,能潜心学深一个,就可以功力大增。

3. Node.js
红的发紫的项目,整个node.js 包括内部的核心V8都是C++的项目,完全的事件驱动,非阻塞IO,性能比nginx还快,可以说是把服务器彻底的榨干的节奏,这种设计模式,是现在比较流行的Reactor pattern ,concurrent computing。在构建一些大型的web services中,尤其凸显优势,现在移动互联网时代,在做app push services的时候,后端自己实现的推送服务,基本也是这种思路,An Open Source MQTT v3.1 Broker 并发量能到几十万,甚至对内核参数修改过后能到上百万。
Node.js另一个核心的组建是Marc Lehmann’s libev http://libev.schmorp.de , 基于event驱动的非阻塞IO库,在node-v0.9.0之后,node.js项目考虑到跨平台的实现,封装了一个项目libuv/libuv · GitHub,

  • Linux based on (epoll)
  • windows based on IOCP
  • Unix (mac os x) based on kevent

学习下,也能用在自己做不同平台高性能网络

4. Sandstorm
sandstorm-io/sandstorm · GitHub
Github上面最近比较火的一个项目,主页上面一句话的介绍“Personal Cloud Sandbox”。主要解决的问题是,在自己的私有人服务器上面,安装各种开源的云服务(GitLab, WordPress……),就像mobile上面的通过应用商店install app那样快速方便,实现这个目标,要在Linux之上,构建一个基于sandbox的平台,并且留给开发者porting这些web 服务 (.spk file)到应用商店。
个人觉得比较精华的是里面sandbox部分,每个web app都是跑在LXC的container里面的,这点是类似Docker的实现,非常高效和轻量。另外会用到seccomp机制,对web app进行系统调用过滤,保障云主机本身的安全,这一点sandbox的安全机制跟chrome在Linux上面的实现也是一致的。

  • Sandstorm’s server-side sandboxing is based on the same underlying Linux kernel features as LXC and Docker. We use the system calls directly for finer-grained control.
  • (Planned) The kernel attack surface is reduced using seccomp-bpf to block and/or virtualize system calls.

5. BitCoin
bitcoin/bitcoin · GitHub
BitCoin这两年很火,抛开比特币本身,看BitCoin实现,也是C++的项目,构建在P2P网络之上的一套虚拟的支付系统。我们可以利用的是背后的P2P Protocol,密码学,支付,去中心化这些。
现在有很多衍生的开源项目,就是利用BitCoin 的这套P2P的框架在做,bitmessage,
https://bitmessage.org/wiki/Main_Page
完全去中心化,能防止老大哥的监听,在现在云计算,大数据风行的时代,privacy问题会越来越多,可以借鉴P2P的思路,构建这些去中心化的服务。

6. CoreCLR
dotnet/coreclr · GitHub
没看错,微软最近一直在放大招,之前开放了 .NET Core的源代码,这次又把.NET的CoreCLR推到了GitHub。在Windows上运行一个.NET应用所需要的完整软件栈都已经开源,对Linux和Mac OS X的支持马上出来。微软.NET因为整个软件栈全部开源。开发者可以编译自己的CoreCLR,在上面跨平台运行.NET程序。
以前Mono做的就是这个事情。对语言,编译,相关感兴趣的可以学习学习,背后开放了RyuJIT,garbage collection等一些技术。
微软从产品公司变成服务公司,重点放在企业级市场,对桌面这块越来越开放,节奏很好。

7. Apache Mesos
apache/mesos · GitHub
简单介绍 下Mesos, 是twitter背后开源群集管理的核心,现在是apache上的top项目了。
下面是Mesos的architecture
有家云计算创业公司Mesosphere,正在将这一技术推向一个更广的高度,可以通过mesos构建的节点,抽象各个public cloud服务商,更可以方便快速的做云迁移,从AWS可以到GCE。
提到Mesos就会出现这样的组合,
Mesos + Docker
Docker(可能跑题了,Docker是用Go写的)是PaaS供应商dotCloud开源的一个基于LXC 的Container引擎,虚拟化解决方案上面杀出的一个新马。常见的搭配如下,Docker是 Mesos 的first class citizen。

 
8. Mongo Database
mongodb/mongo · GitHub
NoSQL, BigData9. DOOM-3
id-Software/DOOM-3 · GitHub
最牛的游戏engine code
还有一个cocos2d-x
cocos2d/cocos2d-x · GitHub
Itseez/opencv · GitHub

10. HHVM
facebook/hhvm · GitHub
编译,JIT

11、Linux(C)

地址是:https://github.com/torvalds/linux

12、mongodb(C++)

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。地址是:https://github.com/mongodb/mongo

13、Leetcode OJ的相关的解决代码(C++、Java;算法)

C++的实现版本:https://github.com/haoel/leetcode

Java的实现版本:https://github.com/yuzhangcmu/LeetCode

14、muduo(C++;网络)

陈硕使用C++开发的一款网络编程的代码库。因为C++的一个著名的网络编程的代码库ACE存在很多的问题(参看博客《学之者生,用之者死—-ACE历史与简评》),所以陈皓自己编写了自己的C++网络库

地址:https://github.com/chenshuo/muduo

陈硕的博客:http://blog.csdn.net/solstice/

15、my_toy_compiler(C++;编译)

一个大神用C++开发的一个“玩具”编译器

地址:https://github.com/lsegal/my_toy_compiler

16、SkyNet(C)

地址:https://github.com/cloudwu/skynet

云风的博客:http://blog.codingnow.com/

17、git(C)

版本控制工具,地址:https://github.com/git/git

18、cppparser

地址:https://github.com/nfer/cppparser

19、为知笔记开源

地址:https://github.com/WizTeam/WizQTClient

20、gozfree libraries

地址:https://github.com/gozfree/libraries

20、分布式内存对象缓存系统memcached/memcached · GitHub

21、高性能键值对存储系统antirez/redis · GitHub

22、Google的键/值对(Key/Value Pair)嵌入式数据库google/leveldb · GitHub

23、高性能web服务器nginx: download

24、轻量级web服务器,用c语言写的thttpd

25、C语言写的事件驱动框架libevent/libevent · GitHub

26、linux下使用的非常简单的网站压测工具LippiOuYang/WebBench · GitHub

27、基于 Java 语言的极速 WEB + ORM 框架jfinal/jfinal · GitHub

28、jsoup

地址:https://github.com/jhy/jsoup/

28、A C++ non-blocking network library for multi-threaded server in Linux

地址:https://github.com/chenshuo/muduo

28、How to Make a Computer Operating System

地址:https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-SystemSystem

29、用Nero Api 编写 DVD刻录软件,卖了3000块钱

地址:https://github.com/lutaf/burndvd

30、一个p2p文件分发项目的一部分,用tcp阻塞模式上传文件,里面的socket,streambuffer 类可以很方便的重用

地址:https://github.com/lutaf/uploadfile

转载注明来源:CV视觉网 » GitHub上C/C++开源项目总结

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 0超赞 0无聊 0扯淡 0不解 0路过

评论 抢沙发

评论前必须登录!