作为一个经验丰富的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等等。

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

  1. Java全栈程序员之01:做个Linux下的程序猿

    Windows10正在成为史上口碑最差的Windows系统 (图侵删) 我曾经花了数次1小时去寻找解决方案去关闭自动更新,包括停掉服务.修改注册表等等.但是都没有成功. 微软自身是知道这个问题的,但就 ...

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

    作为一个经验丰富的C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类, 封装过UI界面库等, 也在实际的项目中应 ...

  3. 程序猿必知必会Linux命令之awk

    前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数 ...

  4. Visual Studio从此走入非Windows程序猿家

    (此文章同时发表在本人微信公众号"dotNET每日精华文章") 在Build 2015大会上,微软放了很多大招,其中一个让普通(不管是微软生态还是非微软生态的)程序猿都密切关注的就 ...

  5. 一位Erlang程序猿的自白

    12.00 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style De ...

  6. 【程序猿助手】Emacs,最强的编辑器,之间的不

     wx_fmt=png" alt="" style="max-width:100%; height:auto!important"> 内容简单 ...

  7. Java程序猿从底层到CTO的技术路线图

    首先.附一张图片展示所在各个阶段的工作职能: 其次.文字型描写叙述所在各个阶段的工作职能: Java程序猿 高级特性 反射.泛型.凝视符.自己主动装箱和拆箱.枚举类.可变參数.可变返回类型.增强循环. ...

  8. 戏说程序猿之cannot find the object

    “别开玩笑了,程序员哪里需要对象!” 程序员难找对象原因无非如下: 1.工作时间长,恋爱时间少 2.性格偏于内向,不主动 3.不注意个人形象 程序员爱情观: 爱情就是死循环,一旦执行就陷进去了: 爱上 ...

  9. 不懂Git,别说自己是程序猿–20分钟git快速上手(转)

    在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲试了,只是苦于没有借口(契机). 好吧,机会就在今天. 给我20分钟,是的,只要20分钟, 让你快速用上git. 我们 ...

随机推荐

  1. key-value键值型数据库:Redis

    key-value键值型数据库:Redis redis Redis是in-memory型(内存型)的键值数据库,数据在磁盘上是持久的,键类型是字符串,值类型是字符串.字符串集合(Set).sorted ...

  2. C语言入门100题,考算法的居多

    入门题,考算法的居多,共同学习! 1. 编程,统计在所输入的50个实数中有多少个正数.多少个负数.多少个零. 2. 编程,计算并输出方程X2+Y2=1989的所有整数解. 3. 编程,输入一个10进制 ...

  3. js正则表达式限制文本框只能输入数字,小数点,英文字母

    1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...

  4. HDU_1166_敌兵布阵

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. 个人作业Alpha项目测试

    这个作业属于哪个课程 软件工程原理 这个作业要求在哪里 作业要求 团队名称 TEAMPANTHER 这个作业的目标 每个同学必须选取非自己所在团队的3个项目进行测试. 在你所测试的项目的Alpha发布 ...

  6. 手机中快速看图,浏览编辑DWG 梦想极光CAD

    梦想极光CAD6.0(2016.3.1) 手机版最新更新 1.增加手机上,图纸浏览时预览功能 2.增加直接从手机,QQ接收目录下加载文件功能 3.手机交互界面优化 4.增加新建图纸功能 5.增加缓存功 ...

  7. Spring框架系列(九)--MyBatis面试题(转载)

    1.什么是Mybatis? 1.Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建 连接.创建statement ...

  8. 16Oracle Database 系统权限和对象权限

    Oracle Database 系统权限和对象权限 Oracle中的系统权限和对象权限 DCL 数据控制语言 -- 查看对象的权限 grant / revoke 查看登录用户 Show user 查看 ...

  9. manacher(马拉车)算法

    断断续续地看了两天的马拉车算法,可算是给搞明白了(贼开心),这算是自己搞懂的第一个算法了(23333333333333)这个算法照目前自己的理解来看,貌似就只能求个字符串中的回文串(接触这个算法是要求 ...

  10. Mybatis-generator插件

    Mybatis-generator插件 1.下载地址 https://github.com/mybatis/generator/releases mybatis-generator是一款在使用myba ...