linux c/c++程序员必须熟悉的开源项目

linux c/c++程序员必须熟悉的开源项目

作为一个经验丰富的 Linux C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类,
封装过网络通信的类,封装过日志操作的类, 封 装过文件访问的类, 封装过 UI 界面库等, 也在实际的项目中应用过,
但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定 的环境中使用, 对于自己来说, 在不同的项目中应用,
只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉。 问题是, 你封装的这些库, 在 给别人使用的时候, 别人用起来是否很方便,
跨平台方面是不是也很通用, 性能是不是足够的好, 是不是支持多线程, 功能是不是也足够强大,可以适用
于各种不同的需求。如果你上面这些都做到了, 证明你在这个库上确实花费了一番功夫, 经过了持续的改进和优化。

很多可以参考的轮子:

一、网络

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

二、数据库

数据库嘛, 开源的 Mysql 和开源的 PostgreSQL 只要懂其中一个就可以了, 商业数据库在掌握一个 Oracle 就可以了,文件数据库掌握 sqlite 。 不过请 大家注意, 不要被上面数据库名字给迷惑了, 数据库的本质是 SQL 语句, 一定要懂数据库的基本原理, 熟练应用 SQL 语言, 懂数据库的优化, 存储过程等。 数据库的原理搞懂了, 拿什么数据库过来都轻松掌握, 就不会在乎是 Mysql 还是 Oracle 了。

三、日志操作

日志操作推荐大家熟悉 log4cpp 这个日志库, 支持多线程, 日志重定向到网络等都有, 反正你能想到的日志的功能, 都有。
日志嘛,一个是方便查找问题, 方便记录程序运行的一些情况。这是必须的。

四、管理后台

众所周知, 写程序是给其他人用的,不是自己用, 所以在程序的易用性上,多给对方提供一些可以直接查看的管理界面, 显得分成重要。为程序提 供一个 web 的管理界面,方便用户登录上去查看程序的各种信息, 很有必要。
我这里有一个方便的 web 后台管理的 http 实现, 可以方便的集成到应用程序中。在 IE 里面输入监听的端口,就可以查看程序的状态。代码还没有仔 细整理。有需要的弟兄可以给我留言, 给大家发。

五、读取配置文件

所有的程序都必须有配置文件, 方便配置一些项目, 为程序提供灵活性。 所以写程序,必须有读取配置文件的封装类。

六、内存池

所有的进程都需要分配内存, 对 C/C++来说, 分配和管理内存是已经很有挑战性的工作。
给大家推荐 nedmalloc 这个开源的内存池库。 nedmalloc 是一个跨平台的高性能多线程内存分配库,很多库都使用它。

七、缓存库

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

八、脚本

脚本是一个很有意思的东西,很多功能,其实我们只要写个脚本就可以完成,代码量少,开发速度快。
必须掌握的脚本, 比较通用的要算 perl 了, 很古老的语言, 但是功能太强大了。 我可以保证的说, .net , java 能干的工作, 肯定可以让 perl 来干。 C 能干的, perl 不一定能干。 perl 作为 linux , unix 的系统集成的脚本语言,必须学会。
lua 语言, 这个语言, 在游戏行业用得比较多。不推荐学。
python 脚本, 功能很强大, 推荐学。

九、文件系统

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

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值