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

原文转载于https://blog.csdn.net/langeldep/article/details/6293655


作为一个经验丰富的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 脚本, 功能很强大, 推荐学。


        上面这些是所有程序都会用到的比较通用的功能。


        在不同的应用领域, 需要掌握不同开源库, 比如搞游戏开发的, 可能需要掌握开源的UI库CEGUI, 开源的3D引擎OGRE等。

搞分布式开发的可能会有分布式的文件系统库等。

2019BAT等大厂工作推荐岗位集锦:0voice/enterprise_job_recommend

Lee哥推荐,Linux后台服务架构技术群:762073882

最新学习路线理解思路,欢迎大家进群学习交流进步

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容