拥抱开源——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里面输入监听的端口,就可以查看程序的状态。代码还没有仔细整理。有需要的弟兄可以给我留言, 给大家发。

五、读取配置文件

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

六、内存池

所有的进程都需要分配内存, 对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-10-14 19:04:42

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

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

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

Linux C/C++程序员CentOS 6.5安装YouCompleteMe使用vim语法自动补全

标题: Linux C/C++程序员CentOS 6.5安装YouCompleteMe使用vim语法自动补全 Ubuntu/Debian/Fedora比较好安装,各种软件包都比较新 CentOS6系列很难装,各种软件包版本太低了 新手不要尝试在CentOS6系上安装,会有一种挫败感! 步骤: 1, 安装操作系统 2, 文件下载 3, 更新vim 4, 安装ycm 和 Vundle 5, 编译clang 6, 编译ycm_core 7, 效果图 8, 清理工作 1, 安装操作系统: CentOS-

MySQL 创始人:写代码比打游戏爽,程序员应多泡开源社区

根据StackOverflow的最新调查,MySQL仍然是全世界最流行的数据库,受访的开发者中有44.3%的人在使用,超过了第二位的SQL Server 10多个百分点.可是你知道MySQL是怎么诞生的吗?openocean 的一篇有关MySQL开发者Michael “Monty” Widenius的传记为我们揭秘. 大学计算机专业的数量总是会随着技术公司的兴衰而起伏,而现在,计算机科学正处在全盛时期.这意味着,不管怎样,计算机科学专业的毕业生绝大部分可能都会去敲2年的代码,再转到产品管理,然后

c/c++程序员必须要掌握开源项目

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

程序员必备,C#各类项目、开源项目插件资料收藏

一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率. NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP.NKalore的语法简单.直观,它的编译器是基于Mono C#编译器(MCS).NKalore目前只能在命令行或#Develop内部使用.NKalore兼容公共语言规范CLS

“抛弃”javascript,拥抱typescript——给所有javascript程序员的一句忠告!

好久不来博客园,今天偶尔来逛逛,发现有不少文章写javascript的,比如面向对象什么的,代码组织管理什么的,看过之后有句话如鲠在喉,不吐不快——“抛弃”javascript,拥抱typescript吧,别再浪费你的青春.你的生命了!这是我给所有javascript前端程序员的一句忠告.不解释,能理解的自然会理解. 没有听说过typescript的同学猛戳这里:http://www.typescriptlang.org

windows/Linux下的程序员文档浏览工具

Dash + Alfred https://www.jianshu.com/p/77d2bf8df81f 对于程序员来说,查看api文档是非常频繁,经常窗口之间切换非常麻烦,mac下就有一个查文档的神器:Dash. 详细使用可以参考如上连接的说明. 本文重点整理下windows和linux下使用类似的功能如何操作. IntelliJ插件 https://github.com/gdelmas/IntelliJDashPlugin/releases ShortcutYou can change th

程序员应该具备的十个项目习惯

1.估计解决问题的时间.一方面要勇于承担责任,另一方面要记住最后解决问题的时间,工作中尽量多的使用Google.StackOverFlow等工具,但遇到重大问题时,需要及时反馈,大家共同讨论,切不可独自一个人摸索,要相信团队. 2.重视设计模式.大多数代码混乱,是由于缺乏良好的设计模式思维导致.当然如果脚本更能有效解决问题,优先考虑脚本. 3.做事对事不对人.出了问题,第一重要的是解决bug,而非指责写代码的同事,这才是真正有用的地方.团队应该互相帮助,共同发展.另外遇到比较烂的代码时,要先提出

程序员如何承接软件外包项目

现在外包的软件项目不断增长,但随之而来的,承接外包的软件公司.软件团队也越来越多,包括很多个人SOHO一族也加入到承接软件的竞争行列中来了,因此现在对于软件项目的争夺也很激烈.有很多人不知道上哪里去争取项目,总是抱怨没有项目做:也有的人虽然编程技术不错,但是对于与客户谈项目却是一窍不通,结果应该拿到的项目也拿不到手:也有的虽然已经接到了项目,却发现在实施开发的时候遇到好多从来没有遇到过的问题.作为一个多年从事外包项目接单的软件开发人士,我想从以下几方面谈谈我的经验,希望对大家会有所帮助.第一点,