C/C++程序猿必须熟练应用的开源项目
作为一个经验丰富的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 脚本, 功能非常强大, 推荐学。
上面这些是全部程序都会用到的比較通用的功能。
在不同的应用领域, 须要掌握不同开源库, 比方搞游戏开发的, 可能须要掌握开源的UI库CEGUI, 开源的3D引擎OGRE等。
搞分布式开发的可能会有分布式的文件系统库等。
今天就为大家介绍到这里, 慢慢完好慢慢补充。
C/C++程序猿必须熟练应用的开源项目的更多相关文章
- C/C++程序员必须熟练应用的开源项目
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...
- C/C++程序员必须熟练应用的开源项目[转]
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...
- C/C++程序员必须熟练应用的开源项目(转-清风小阁)
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...
- 【转】 C/C++程序员必须熟练应用的开源项目
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...
- 做一枚精致的程序猿,Fighting!
这几天我和我们的团队正在做一个公司管理系统的项目,团队分工根据成员的水平高低来分工,这样看似公平,但其实不公平,如此这样一来,那些水平稍不如别人的成员就没有发展的机会?那么问题来了,对于水平稍逊色的程 ...
- 送给和我一样曾经浮躁过的PHP程序猿
送给和我一样曾经浮躁过的PHP程序猿 2012年偶决定开始写博客了,不为别的,就希望可以通过博客记录我的成长历程,同时也希望可以帮助一些刚毕业,刚入行业的兄弟姐们 们.我们是一群充满浮躁.抱怨.迷 ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- unity3d游戏开发猜想——当程序猿老去
程序猿将代码注入生命去打造互联网的浪潮之巅.当有一天他们老了.会走向那里,会做些什么? 4.4.0" alt="" style="border:0px; ver ...
- 我的2011年总结--大明zeroson程序猿一周年总结
花絮:看到csdn举办"我的2011"年度征文活动,我恰好工作也一年多了,上个月写了篇博客,主要是我换工作方面的流水账,这篇我从主观.客观.多方位地谈谈我这一年的变化. ...
随机推荐
- PHP经验集锦
最近刚刚完成手中的项目,比较闲.来这儿转转,把积累的一些技巧分享给大家!1.关于PHP重定向 方法一:header("Location: index.php"); 方法二:echo ...
- java web 学习十三(使用session防止表单重复提交)
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- 滑动菜单栏开源项目SlidingMenu的使用
一.SlidingMenu简介相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了这 ...
- UI篇--Android中3种方法实现back键动作
方法一:重写onBackPressed方法 @Override public void onBackPressed() { // do something what you want super.on ...
- spoj 839 Optimal Marks(二进制位,最小割)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17875 [题意] 给定一个图,图的权定义为边的两端点相抑或值的 ...
- 自定义实现InputFormat、OutputFormat、输出到多个文件目录中去、hadoop1.x api写单词计数的例子、运行时接收命令行参数,代码例子
一:自定义实现InputFormat *数据源来自于内存 *1.InputFormat是用于处理各种数据源的,下面是实现InputFormat,数据源是来自于内存. *1.1 在程序的job.setI ...
- hibernate 连接数据库时报错
错误信息 : com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allo ...
- Java中快如闪电的线程间通讯
这个故事源自一个很简单的想法:创建一个对开发人员友好的.简单轻量的线程间通讯框架,完全不用锁.同步器.信号量.等待和通知,在Java里开发一个轻量.无锁的线程内通讯框架:并且也没有队列.消息.事件或任 ...
- 【现代程序设计】【homework-07】
C++11 中值得关注的几大变化 1.Lambda 表达式 Lambda表达式来源于函数式编程,说白就了就是在使用的地方定义函数,有的语言叫“闭包”,如果 lambda 函数没有传回值(例如 void ...
- homework03
代码实现真的是大问题……在第二次作业还没有真正实现的情况下只能写这么一篇博客来整理一下从各位大神那里看到的东西. 两个弱菜加起来同样是弱菜,所以我和我的小伙伴的配合就是悲剧的聚合. 首先,大家都说C# ...