拥抱开源——Linux C/C++程序猿必须熟悉的开源项目

作为一个经验丰富的Linux C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类。 封装过UI界面库等。 也在实际的项目中应用过, 可是回过头细致想想。事实上曾经自己写过的这些代码,仅仅能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 仅仅须要复制代码, 改改也就能够了, 由于自己写的代码自己非常熟悉。

问题是, 你封装的这些库, 在给别人使用的时候,
别人用起来是否非常方便。 跨平台方面是不是也非常通用, 性能是不是足够的好。 是不是支持多线程, 功能是不是也足够强大,能够适用于各种不同的需求。假设你上面这些都做到了, 证明你在这个库上确实花费了一番功夫。 经过了持续的改进和优化。

在日常的开发中。 作为一个程序猿, 非常多东西已经没有必要再又一次开发了, 能够直接拿过来使用, 毕竟21世纪都已经过了N年了。我们没有必要又一次发明轮子(不可否认发明轮子的过程能够学到非常多东西,我就是这么走过来的)。

以下结合自己多年的开发经验, 想到哪里写到哪里, 希望对新人有一定的帮助。

一、网络

网络库必须掌握 ACE 和 libevent, 一个是重量级的网络库。 一个是轻量级的网络库。细致想想,如今那个程序不用网络啊。不懂网络, 你将寸步难行啊。 熟悉这两个开源库的前提是你必须懂socket的原理, 给大家推荐的好书就是 《UNIX网络编程》,看懂这本书就能够了。 其它的什么《windows网络编程》这些都不用看, 由于网络编程,你学会了伯克利的套接字。 你就能够在不论什么平台上进行网络编程了, 不须要学什么windows下的网络编程,
由于windows下的网络也是从伯克利套接字搞过来的, 假设你学习《windows网络编程》, 那么你那天在linux,unix下进行网络编程。你还得在学习一下。

没有那个必要。

二、数据库

数据库嘛。 开源的Mysql和开源的PostgreSQL仅仅要懂当中一个就能够了, 商业数据库在掌握一个Oracle就能够了。文件数据库掌握 sqlite。

只是请大家注意, 不要被上面数据库名字给迷惑了。 数据库的本质是SQL语句。 一定要懂数据库的基本原理,熟练应用SQL语言,懂数据库的优化,存储过程等。

数据库的原理搞懂了, 拿什么数据库过来都轻松掌握, 就不会在乎是Mysql还是Oracle了。

三、日志操作

日志操作推荐大家熟悉 log4cpp这个日志库, 支持多线程, 日志重定向到网络等都有, 反正你能想到的日志的功能, 都有。

日志嘛,一个是方便查找问题, 方便记录程序执行的一些情况。这是必须的。

四、管理后台

众所周知, 敲代码是给其它人用的,不是自己用, 所以在程序的易用性上。多给对方提供一些能够直接查看的管理界面。 显得分成重要。为程序提供一个web的管理界面,方便用户登录上去查看程序的各种信息, 非常有必要。

我这里有一个方便的web后台管理的http实现。 能够方便的集成到应用程序中。在IE里面输入监听的port。就能够查看程序的状态。

代码还没有细致整理。有须要的弟兄能够给我留言。 给大家发。

五、读取配置文件

全部的程序都必须有配置文件, 方便配置一些项目。 为程序提供灵活性。

所以敲代码,必须有读取配置文件的封装类。

六、内存池

全部的进程都须要分配内存, 对C/C++来说, 分配和管理内存是已经非常有挑战性的工作。

给大家推荐 nedmalloc 这个开源的内存池库。nedmalloc是一个跨平台的高性能多线程内存分配库。非常多库都使用它。

七、缓存库

众所周知。 缓存库用得最多的就是 memcache 了。在做数据库开发的时候特别实用。

八、脚本

脚本是一个非常有意思的东西,非常多功能,事实上我们仅仅要写个脚本就能够完毕。代码量少,开发速度快。

必须掌握的脚本。比較通用的要算 perl 了。 非常古老的语言,可是功能太强大了。

我能够保证的说,.net,java能干的工作,肯定能够让perl来干。 C能干的。 perl不一定能干。 perl作为linux, unix的系统集成的脚本语言。必须学会。

lua 语言, 这个语言。 在游戏行业用得比較多。不推荐学。

python 脚本, 功能非常强大, 推荐学。

九、文件系统

Linux下开源的文件系统真的挺多,EXT2/3/4,XFS,JFFS2还有近期火爆的Hadoop,Openstack等等。

时间: 2024-08-06 23:52:38

拥抱开源——Linux C/C++程序猿必须熟悉的开源项目的相关文章

拥抱开源——Linux C/C++程序员必须熟悉的开源项目

作为一个经验丰富的Linux C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉.问题是, 你封装的这些库, 在给别人使用的时候, 别人用起来是否很方便, 跨平台方面是不

java javaEE javaWEB J2EE程序猿是脑残的程序员,一辈子打工的程序员

这几天我越来越郁闷,现在程序猿很火----尤其javaEE成员.但是我感觉在火也是只能给人打工的程序猿. 原因 javaweb的项目都很大,没听过那个码农能单独接到什么项目.只能被人剥削. 有人不信,我来分析一下 C/C++: 都说c/c++落伍了 TMD ,也不看看现在 C/C++ 不去打工能活不,TMD ,C/C++ 随便写个小弄下就可以挂AD,实在不行可以玩反编译.TMD 不用打工,照样可以养家. PHP : mysql + PHP  随便写个小程序,实在不行,开源的cms项目太多了,自己

给程序猿简历的一些建议

近期一直郁闷投出去的简历没收到希望中的回复,自己认为自己技术也没那么不堪入目,问题可能出如今简历上,于是搜索了下,对于程序猿写简历的一些建议.希望对大家有所帮助.希望对自己也有帮助.最后让offer来的更猛烈些吧!! (声明:这是转载的几篇比較好的建议, 对于转载的别人的东西,须要特别声明.) * 没有必要撒谎 写简历最差的策略就是撒谎了.这样的欺骗本身就自相矛盾.你究竟希望和聪明人共事呢,还是笨人呢?大多数人希望和聪明人共事,可是聪明人你骗得了么, 或者说被你骗了的算是你觉得的聪明人么?你要和

OSChina 周二乱弹 —— 程序猿没妹纸的真相!

周二,刚起床就是老眼昏花啊,这字都看不清,认不出来了,都不好意思说上了六年的小学... @红薯  : 知道这两个字是什么吗?猜中有奖 听说,这就是"中国"的雏形,但是奖品就免了吧,红薯香吻一个... 刚起床,睡回笼觉的欲望已经饥不可耐了,黑黑@红薯  ,然后大家就散了吧... @首席撸破皮 : @红薯  只是比别人帅一点,为什么这么招人黑呢? 这一切的背后到底是人性的扭曲还是道德的沦丧? 敬请关注本期走进科学--<红薯的营养价值> 对啊,为啥要黑@红薯  ,红色的@红薯 不

做一个“有资格”程序猿

其实这篇文章是很早就想写一,一直忙到没时间,今天终于是空的,继本职业工作方案谈猿我个人的一些想法: 要想做一个我觉得是"亲密格"程序猿.该要做到下面几点: 代码规范,凝视清楚 要做一个好的程序猿,代码的质量是最重要的,代码是项目过程中最为重要的资源.有非常多程序猿认为写凝视太麻烦,还会花太多时间,尤其是非常多规模比較小的公司,更不会注重这一点,可是往往到了项目后期.乃至项目由他人接手后,维护的成本会变得非常高,代码阅读困难,凝视不具体甚至没有.维护人员须要靠自己去推測某个方法的具体功能

C/C++程序猿必须熟练应用的开源项目

作为一个经验丰富的C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类, 封装过UI界面库等, 也在实际的项目中应用过, 可是回过头细致想想,事实上曾经自己写过的这些代码,仅仅能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 仅仅须要复制代码, 改改也就能够了, 由于自己写的代码自己非常熟悉.问题是, 你封装的这些库, 在给别人使用的时候, 别人用起来是否非常方便, 跨平台方面是不是

开源Linux拥抱车载娱乐系统

关于Linux的学习,请参考书籍<Linux就该这么学> Apple CarPlay和Android Auto已经开始角力争夺车载娱乐系统市场,而现在开源Linux在也开始在该领域中发力.AutoMotive Grade Linux(AGL)项目宣布Unified Code Base 2.0,致力于汽车厂商和驾驶员提供全新的车载娱乐系统支持.新代码库支持语音导航.后座娱乐系统和应用等等,1.0版本于今年CES大展上亮相. 车载娱乐系统通常整合导航.多媒体播放.语音呼叫和第三方应用,但是这些通常

程序猿的相关

Javascript jQuery Fundamentals - jQuery 新手教程. JavaScript库 代码解构 - 将JavaScript流行框架源码条分缕析展现出来 深入理解Javascript系列 <Script>的defer和async的差别 Javascript面向对象基础 Backbone.js基础 JavaScript Madness: Keyboard Events Let's Make Frameworks 国内公司JS框架:Kissy - Taobao | Ar

一位Erlang程序猿的自白

12.00 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority