Github上的几个C++开源项目
2017-09-01 20:18
417 查看
http://www.zhihu.com/question/28341521
有人吐槽怎么下手FreeNOS,上文档 FreeNOS: FreeNOS Documentation
--更新--
把平时关注的一些c++相关的github的project列下,欢迎补充。
1. FreeNOS
lordsergioinspa/FreeNOS · GitHub
这是我在大学的时候,接触完整学习的第一个开源的C++项目,当时简直是,各种惊叹,里面有太多值得学习的地方。
这是一个用C++实现的微内核的操作系统,各种宏内核中的服务作为一个独立的services在微内核中,基于消息的通信方式,这点其实跟mac内核中的mach那部分机制相似。
除了是一个操作系统的实现,另外从中也能很好的学习到OOP的设计方式,整个代码风格特别好,完全基于面相对象,还有一些常见的设计模式,在接触了这个开源项目之后,才了解,代码风格,注释,doxygen,scons,设计模式。
对于直接入手就啃Linux kernel的同学,个人觉得会门槛有点高,身体还不是特别棒的时候,直接攀登珠穆拉玛还是有点吃力的,可以先找个黄山爬爬。
2. Chromium
向左向右,怎么看现在只有Chromium是c++中最庞大的一个,自己在造轮子的时候,可以搜索下这个宝库,保证有各种型号的轮子。
Chromium涉及了几乎所有的平台,所以不仅能学到平台之上API的封装,还有包括Network的各种封装和借口,协议的C++的实现。
更甚至,webrtc,native client,sandbox,GPU,并行加速,debug,各种神奇的第三方的库,各种各样的技术,能潜心学深一个,就可以功力大增。
有空在补充。。。
////////////////////updated 2.28///////////////////////////
3. Node.js
红的发紫的项目,整个node.js 包括内部的核心V8都是C++的项目,完全的事件驱动,非阻塞I
4000
O,性能比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
学习下,也能用在自己做不同平台高性能网络
////////////////////updated 3.1///////////////////////////
收到好多点赞,对于每天风平浪静,只期待不给我弹error的生活,带来些小激动的。
平时喜欢接触一些新鲜的概念,产品,可能这也是自己选择这个行业的一个原因,虽没有一日如隔三秋的变化速度,但至少三月都会蹦出很多新奇的trend,技术,方向。总有一种学无止境的感觉,对于C++来说,基础的东西变化不大,哪怕是新的标准C++0x,我的理解是实践动手,如果有项目能去应用。
知识爆炸,我们可能无法穷尽学习所有的知识,但是可以通过github这个平台完善属于自己的知识wiki,觉得未来应该是。
看小说,看电影,看code。
这样一个进去我们习惯的行为。
废话太多~~~
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.
相关文章推荐
- Github上的几个C++开源项目
- Github上的几个C++开源项目
- github上的C++开源项目汇总
- 如何正确地给 github 的开源项目提交 pull request具体一些,比如 fork 之后创建几个分支,修改后如何和原项目同步
- 几个学习用的c语言开源项目 和c++工具
- 今天无意上了一下github,推荐几个好开源项目
- 几个Github开源项目(PKRevealController、Nimbus以及Reachability等)
- github上c++开源项目
- C/C++程序员必须熟练应用的开源项目
- 2017年 GitHub最受欢迎的机器学习、图像处理等开源项目
- 如何使用Github参与开源项目(以eoe的Android客户端为例)
- GitHub 优秀的 Android 开源项目
- Android github上优秀开源项目分类汇总
- 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」
- Android开源项目分包方式学习(eoe、oschina、github)
- 编译开源C或者C++项目最好像执行如下命令,否则可能会有这种奇葩问题
- 开源了as写的xmpp协议栈和多维运动图表motionchart项目在github
- C,C++开源项目中的100个Bugs
- 可能是国内最火的开源项目 —— C/C++ 篇
- [转]Android github上优秀开源项目分类汇总